@tangle-network/ui 11.5.0 → 11.7.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 (66) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +70 -2
  3. package/dist/chat.d.ts +18 -8
  4. package/dist/chat.js +6 -5
  5. package/dist/{chunk-XROQW5J7.js → chunk-4ENFLPWQ.js} +1 -1
  6. package/dist/{chunk-XPYPZMYT.js → chunk-6RIX7M27.js} +1 -1
  7. package/dist/{chunk-R5GVQDL3.js → chunk-CVX53NCC.js} +7 -5
  8. package/dist/{chunk-ULDNFLIM.js → chunk-EIUE5GV2.js} +10 -14
  9. package/dist/chunk-L57WRIND.js +59 -0
  10. package/dist/chunk-LFVF2HFB.js +19 -0
  11. package/dist/{chunk-7O22XQ4D.js → chunk-PLWRAS5Z.js} +1 -1
  12. package/dist/{chunk-NZLLDHEG.js → chunk-QGTIBEPX.js} +608 -420
  13. package/dist/{chunk-AZWDI2JG.js → chunk-UYTRNR7Z.js} +1 -1
  14. package/dist/{chunk-RKC3GXHE.js → chunk-VDCZHOOO.js} +99 -104
  15. package/dist/{chunk-J2G7KCYH.js → chunk-XT4JMYVB.js} +109 -67
  16. package/dist/{document-editor-pane-MX3FIZSE.js → document-editor-pane-A3JURPW5.js} +1 -1
  17. package/dist/{document-editor-pane-C3cYEDWZ.d.ts → document-editor-pane-IAEQn_Dl.d.ts} +8 -4
  18. package/dist/editor.d.ts +5 -4
  19. package/dist/editor.js +1 -1
  20. package/dist/files.d.ts +1 -1
  21. package/dist/files.js +1 -1
  22. package/dist/hooks.js +6 -5
  23. package/dist/index.d.ts +2 -2
  24. package/dist/index.js +16 -11
  25. package/dist/primitives.d.ts +15 -1
  26. package/dist/primitives.js +5 -1
  27. package/dist/run.d.ts +22 -17
  28. package/dist/run.js +8 -6
  29. package/dist/sdk-hooks.js +6 -5
  30. package/dist/utils.d.ts +6 -0
  31. package/dist/utils.js +1 -1
  32. package/package.json +1 -1
  33. package/src/chat/agent-timeline.stories.tsx +163 -10
  34. package/src/chat/agent-timeline.test.tsx +114 -7
  35. package/src/chat/agent-timeline.tsx +120 -158
  36. package/src/chat/chat-container.test.tsx +59 -0
  37. package/src/chat/user-message.test.tsx +33 -0
  38. package/src/chat/user-message.tsx +13 -8
  39. package/src/editor/document-editor-pane.test.tsx +58 -0
  40. package/src/editor/editor-lazy.test.tsx +102 -0
  41. package/src/editor/editor-lazy.ts +40 -0
  42. package/src/editor/editor-loading.tsx +25 -0
  43. package/src/editor/editor-peers.test.ts +250 -0
  44. package/src/editor/editor-peers.ts +272 -0
  45. package/src/editor/editor-provider.test.tsx +226 -0
  46. package/src/editor/editor-provider.tsx +301 -265
  47. package/src/editor/editor-toolbar.tsx +1 -1
  48. package/src/editor/markdown-document-editor.test.tsx +121 -0
  49. package/src/editor/markdown-document-editor.tsx +114 -82
  50. package/src/editor/tiptap-editor.test.tsx +228 -0
  51. package/src/editor/tiptap-editor.tsx +162 -130
  52. package/src/primitives/index.ts +3 -0
  53. package/src/primitives/text-shimmer.test.tsx +34 -0
  54. package/src/primitives/text-shimmer.tsx +82 -0
  55. package/src/run/inline-thinking-item.stories.tsx +2 -2
  56. package/src/run/inline-thinking-item.tsx +2 -2
  57. package/src/run/inline-tool-item.test.tsx +76 -0
  58. package/src/run/inline-tool-item.tsx +9 -7
  59. package/src/run/run-group.tsx +4 -3
  60. package/src/run/run-row-shell.test.tsx +74 -4
  61. package/src/run/run-row-shell.tsx +81 -53
  62. package/src/run/tool-call-step.tsx +9 -7
  63. package/src/utils/tool-display.test.ts +53 -0
  64. package/src/utils/tool-display.ts +16 -15
  65. package/dist/chunk-LQS34IGP.js +0 -0
  66. /package/dist/{chunk-EJ5NBW7V.js → chunk-LDLOJKPC.js} +0 -0
@@ -2,7 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
3
  import { a as ArtifactPaneProps } from './artifact-pane-DpuWcAiF.js';
4
4
  import { HocuspocusProvider } from '@hocuspocus/provider';
5
- import * as Y from 'yjs';
5
+ import * as Yjs from 'yjs';
6
6
 
7
7
  /**
8
8
  * Connection state for the Hocuspocus provider.
@@ -24,7 +24,7 @@ interface Collaborator {
24
24
  */
25
25
  interface EditorContextValue {
26
26
  /** The Y.Doc instance for collaboration */
27
- doc: Y.Doc;
27
+ doc: Yjs.Doc;
28
28
  /** The Hocuspocus provider instance */
29
29
  provider: HocuspocusProvider | null;
30
30
  /** Current connection state */
@@ -83,9 +83,13 @@ interface EditorProviderProps {
83
83
  }
84
84
  /**
85
85
  * EditorProvider wraps children with Hocuspocus collaboration context.
86
- * Manages WebSocket connection, Y.Doc, and awareness state.
86
+ * Manages WebSocket connection, Y.Doc, and awareness state. Loads `yjs` and
87
+ * `@hocuspocus/provider` — and no tiptap package — before it renders children,
88
+ * because every child hook reads a context that only the loaded provider can
89
+ * supply. A consumer that drives its own editor from that context therefore
90
+ * needs those two peers alone.
87
91
  */
88
- declare function EditorProvider({ websocketUrl, documentName, token, tokenExpiresAt, user, autoConnect, autoReconnect, maxReconnectAttempts, onConnectionChange, onSync, onAuthError, onRefreshToken, children, }: EditorProviderProps): react_jsx_runtime.JSX.Element;
92
+ declare function EditorProvider(props: EditorProviderProps): react_jsx_runtime.JSX.Element;
89
93
  /**
90
94
  * Hook to access the editor context.
91
95
  * Must be used within an EditorProvider.
package/dist/editor.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { C as Collaborator, a as ConnectionState } from './document-editor-pane-C3cYEDWZ.js';
2
- export { D as DocumentEditorBackend, b as DocumentEditorMode, c as DocumentEditorPane, d as DocumentEditorPaneCollaborationConfig, e as DocumentEditorPaneProps, E as EditorContextValue, f as EditorProvider, g as EditorProviderProps, h as EditorTokenRefreshResult, i as EditorUser, u as useEditorContext } from './document-editor-pane-C3cYEDWZ.js';
1
+ import { C as Collaborator, a as ConnectionState } from './document-editor-pane-IAEQn_Dl.js';
2
+ export { D as DocumentEditorBackend, b as DocumentEditorMode, c as DocumentEditorPane, d as DocumentEditorPaneCollaborationConfig, e as DocumentEditorPaneProps, E as EditorContextValue, f as EditorProvider, g as EditorProviderProps, h as EditorTokenRefreshResult, i as EditorUser, u as useEditorContext } from './document-editor-pane-IAEQn_Dl.js';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { Editor } from '@tiptap/react';
5
5
  import { HocuspocusProvider } from '@hocuspocus/provider';
@@ -41,9 +41,10 @@ interface TiptapEditorProps {
41
41
  }
42
42
  /**
43
43
  * TiptapEditor - Collaborative markdown editor with Y.js sync.
44
- * Must be used within an EditorProvider.
44
+ * Must be used within an EditorProvider. Loads its tiptap, Hocuspocus and
45
+ * yjs peers on first render.
45
46
  */
46
- declare function TiptapEditor({ initialContent, placeholder, readOnly, autoFocus, className, contentClassName, onUpdate, onSelectionUpdate, onReady, }: TiptapEditorProps): react_jsx_runtime.JSX.Element;
47
+ declare function TiptapEditor(props: TiptapEditorProps): react_jsx_runtime.JSX.Element;
47
48
  /**
48
49
  * Collaborators list component.
49
50
  * Shows active users in the document.
package/dist/editor.js CHANGED
@@ -11,7 +11,7 @@ import {
11
11
  useEditorConnection,
12
12
  useEditorContext,
13
13
  useYjsState
14
- } from "./chunk-NZLLDHEG.js";
14
+ } from "./chunk-QGTIBEPX.js";
15
15
  import "./chunk-Q56BYXQF.js";
16
16
  import "./chunk-LTEKI7YJ.js";
17
17
  import "./chunk-P5F43A65.js";
package/dist/files.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { GitStatusEntry, ContextMenuItem, ContextMenuOpenContext, GitStatus } from '@pierre/trees';
3
3
  import { ReactNode, CSSProperties } from 'react';
4
- import { b as DocumentEditorMode, D as DocumentEditorBackend, d as DocumentEditorPaneCollaborationConfig } from './document-editor-pane-C3cYEDWZ.js';
4
+ import { b as DocumentEditorMode, D as DocumentEditorBackend, d as DocumentEditorPaneCollaborationConfig } from './document-editor-pane-IAEQn_Dl.js';
5
5
  import { a as ArtifactPaneProps } from './artifact-pane-DpuWcAiF.js';
6
6
  import '@hocuspocus/provider';
7
7
  import 'yjs';
package/dist/files.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  FileTree,
6
6
  RichFileTree,
7
7
  filterFileTree
8
- } from "./chunk-7O22XQ4D.js";
8
+ } from "./chunk-PLWRAS5Z.js";
9
9
  import {
10
10
  detectFileFormat,
11
11
  fileExtension,
package/dist/hooks.js CHANGED
@@ -11,17 +11,18 @@ import {
11
11
  useSSEStream,
12
12
  useSdkSession,
13
13
  useToolCallStream
14
- } from "./chunk-XROQW5J7.js";
14
+ } from "./chunk-4ENFLPWQ.js";
15
15
  import "./chunk-OEX7NZE3.js";
16
16
  import {
17
17
  useAutoScroll,
18
18
  useRunCollapseState,
19
19
  useRunGroups
20
- } from "./chunk-AZWDI2JG.js";
21
- import "./chunk-XPYPZMYT.js";
22
- import "./chunk-J2G7KCYH.js";
23
- import "./chunk-ULDNFLIM.js";
20
+ } from "./chunk-UYTRNR7Z.js";
21
+ import "./chunk-6RIX7M27.js";
22
+ import "./chunk-XT4JMYVB.js";
23
+ import "./chunk-EIUE5GV2.js";
24
24
  import "./chunk-AAUNOHVL.js";
25
+ import "./chunk-L57WRIND.js";
25
26
  import "./chunk-ZRVH3WCA.js";
26
27
  import "./chunk-P5F43A65.js";
27
28
  import "./chunk-WUQDUBJG.js";
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { B as Button, a as ButtonProps, b as buttonVariants } from './button-CMQuQEW_.js';
2
- export { Avatar, AvatarFallback, AvatarImage, Badge, BadgeProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropZone, DropZoneProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EmptyStateProps, FilterField, FilterFieldProps, InlineCode, InlineCodeProps, Input, InputProps, Label, Metric, MetricProps, MetricStrip, MetricStripProps, PageHeader, PageHeaderProps, Progress, SegmentedControl, SegmentedControlOption, SegmentedControlProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SidebarDropZone, SidebarDropZoneProps, Skeleton, SkeletonCard, SkeletonTable, StatCard, StatCardProps, StatusPill, StatusPillProps, StatusTone, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, Textarea, TextareaProps, ThemeToggle, Toast, ToastContainer, ToastProvider, Toolbar, ToolbarProps, UploadFile, UploadProgress, UploadProgressProps, badgeVariants, useTheme, useToast } from './primitives.js';
2
+ export { Avatar, AvatarFallback, AvatarImage, Badge, BadgeProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropZone, DropZoneProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EmptyStateProps, FilterField, FilterFieldProps, InlineCode, InlineCodeProps, Input, InputProps, Label, Metric, MetricProps, MetricStrip, MetricStripProps, PageHeader, PageHeaderProps, Progress, SegmentedControl, SegmentedControlOption, SegmentedControlProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SidebarDropZone, SidebarDropZoneProps, Skeleton, SkeletonCard, SkeletonTable, StatCard, StatCardProps, StatusPill, StatusPillProps, StatusTone, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, TextShimmerProps, Textarea, TextareaProps, ThemeToggle, Toast, ToastContainer, ToastProvider, Toolbar, ToolbarProps, UploadFile, UploadProgress, UploadProgressProps, badgeVariants, useTheme, useToast } from './primitives.js';
3
3
  export { Logo, LogoProps, TangleKnot } from '@tangle-network/brand';
4
4
  export { A as ArtifactPane, a as ArtifactPaneProps } from './artifact-pane-DpuWcAiF.js';
5
5
  export { AgentTimeline, AgentTimelineArtifactItem, AgentTimelineCustomItem, AgentTimelineItem, AgentTimelineMessageItem, AgentTimelineProps, AgentTimelineStatusItem, AgentTimelineTone, AgentTimelineToolGroupItem, AgentTimelineToolItem, ChatContainer, ChatContainerProps, ChatMessage, ChatMessageProps, MessageList, MessageListProps, MessageRole, ThinkingIndicator, ThinkingIndicatorProps, UserMessage, UserMessageProps } from './chat.js';
@@ -35,7 +35,7 @@ import '@radix-ui/react-progress';
35
35
  import '@radix-ui/react-switch';
36
36
  import '@radix-ui/react-label';
37
37
  import '@pierre/trees';
38
- import './document-editor-pane-C3cYEDWZ.js';
38
+ import './document-editor-pane-IAEQn_Dl.js';
39
39
  import '@hocuspocus/provider';
40
40
  import 'yjs';
41
41
  import 'nanostores';
package/dist/index.js CHANGED
@@ -20,7 +20,7 @@ import {
20
20
  useSSEStream,
21
21
  useSdkSession,
22
22
  useToolCallStream
23
- } from "./chunk-XROQW5J7.js";
23
+ } from "./chunk-4ENFLPWQ.js";
24
24
  import {
25
25
  addMessage,
26
26
  addParts,
@@ -118,7 +118,7 @@ import {
118
118
  UploadProgress,
119
119
  useTheme,
120
120
  useToast
121
- } from "./chunk-EJ5NBW7V.js";
121
+ } from "./chunk-LDLOJKPC.js";
122
122
  import {
123
123
  Avatar,
124
124
  AvatarFallback,
@@ -146,28 +146,29 @@ import {
146
146
  MessageList,
147
147
  ThinkingIndicator,
148
148
  UserMessage
149
- } from "./chunk-RKC3GXHE.js";
149
+ } from "./chunk-VDCZHOOO.js";
150
150
  import {
151
151
  useAutoScroll,
152
152
  useRunCollapseState,
153
153
  useRunGroups
154
- } from "./chunk-AZWDI2JG.js";
155
- import "./chunk-LQS34IGP.js";
154
+ } from "./chunk-UYTRNR7Z.js";
155
+ import {
156
+ LiveDuration
157
+ } from "./chunk-LFVF2HFB.js";
156
158
  import {
157
159
  ToolCallFeed,
158
160
  parseToolEvent
159
- } from "./chunk-XPYPZMYT.js";
161
+ } from "./chunk-6RIX7M27.js";
160
162
  import {
161
163
  InlineThinkingItem,
162
164
  RunGroup
163
- } from "./chunk-R5GVQDL3.js";
165
+ } from "./chunk-CVX53NCC.js";
164
166
  import {
165
167
  ExpandedToolDetail,
166
168
  InlineToolItem,
167
- LiveDuration,
168
169
  RunRowShell,
169
170
  RunRowStatusDot
170
- } from "./chunk-J2G7KCYH.js";
171
+ } from "./chunk-XT4JMYVB.js";
171
172
  import {
172
173
  TOOL_CATEGORY_ICONS,
173
174
  formatBytes,
@@ -177,7 +178,7 @@ import {
177
178
  getToolDisplayMetadata,
178
179
  getToolErrorText,
179
180
  truncateText
180
- } from "./chunk-ULDNFLIM.js";
181
+ } from "./chunk-EIUE5GV2.js";
181
182
  import {
182
183
  CommandPreview,
183
184
  DiffPreview,
@@ -187,6 +188,9 @@ import {
187
188
  WebSearchPreview,
188
189
  WriteFilePreview
189
190
  } from "./chunk-AAUNOHVL.js";
191
+ import {
192
+ TextShimmer
193
+ } from "./chunk-L57WRIND.js";
190
194
  import "./chunk-RQGKSCEZ.js";
191
195
  import {
192
196
  OpenUIArtifactRenderer
@@ -221,7 +225,7 @@ import {
221
225
  FileTree,
222
226
  RichFileTree,
223
227
  filterFileTree
224
- } from "./chunk-7O22XQ4D.js";
228
+ } from "./chunk-PLWRAS5Z.js";
225
229
  import {
226
230
  detectFileFormat,
227
231
  fileExtension,
@@ -364,6 +368,7 @@ export {
364
368
  TerminalDisplay,
365
369
  TerminalInput,
366
370
  TerminalLine,
371
+ TextShimmer,
367
372
  Textarea,
368
373
  ThemeToggle,
369
374
  ThinkingIndicator,
@@ -192,6 +192,20 @@ declare function SkeletonTable({ rows }: {
192
192
  rows?: number;
193
193
  }): react_jsx_runtime.JSX.Element;
194
194
 
195
+ interface TextShimmerProps {
196
+ children: ReactNode;
197
+ className?: string;
198
+ /** One sweep across the text, in milliseconds. */
199
+ durationMs?: number;
200
+ }
201
+ /**
202
+ * Inline text with a gradient-mask sweep — the in-flight signal for a run row
203
+ * label ("Thinking…", a tool verb while its call is running). Carries the
204
+ * styles it needs, so a consumer that only scans this package for Tailwind
205
+ * classes still gets the animation.
206
+ */
207
+ declare function TextShimmer({ children, className, durationMs, }: TextShimmerProps): react_jsx_runtime.JSX.Element;
208
+
195
209
  interface Toast {
196
210
  id: string;
197
211
  title: string;
@@ -506,4 +520,4 @@ interface FilterFieldProps extends React$1.HTMLAttributes<HTMLDivElement> {
506
520
  }
507
521
  declare const FilterField: React$1.ForwardRefExoticComponent<FilterFieldProps & React$1.RefAttributes<HTMLDivElement>>;
508
522
 
509
- export { Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropZone, type DropZoneProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, FilterField, type FilterFieldProps, InlineCode, type InlineCodeProps, Input, type InputProps, Label, Metric, type MetricProps, MetricStrip, type MetricStripProps, PageHeader, type PageHeaderProps, Progress, SegmentedControl, type SegmentedControlOption, type SegmentedControlProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SidebarDropZone, type SidebarDropZoneProps, Skeleton, SkeletonCard, SkeletonTable, StatCard, type StatCardProps, StatusPill, type StatusPillProps, type StatusTone, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, Textarea, type TextareaProps, ThemeToggle, type Toast, ToastContainer, ToastProvider, Toolbar, type ToolbarProps, type UploadFile, UploadProgress, type UploadProgressProps, badgeVariants, useTheme, useToast };
523
+ export { Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropZone, type DropZoneProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, FilterField, type FilterFieldProps, InlineCode, type InlineCodeProps, Input, type InputProps, Label, Metric, type MetricProps, MetricStrip, type MetricStripProps, PageHeader, type PageHeaderProps, Progress, SegmentedControl, type SegmentedControlOption, type SegmentedControlProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SidebarDropZone, type SidebarDropZoneProps, Skeleton, SkeletonCard, SkeletonTable, StatCard, type StatCardProps, StatusPill, type StatusPillProps, type StatusTone, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, type TextShimmerProps, Textarea, type TextareaProps, ThemeToggle, type Toast, ToastContainer, ToastProvider, Toolbar, type ToolbarProps, type UploadFile, UploadProgress, type UploadProgressProps, badgeVariants, useTheme, useToast };
@@ -50,7 +50,7 @@ import {
50
50
  UploadProgress,
51
51
  useTheme,
52
52
  useToast
53
- } from "./chunk-EJ5NBW7V.js";
53
+ } from "./chunk-LDLOJKPC.js";
54
54
  import {
55
55
  Avatar,
56
56
  AvatarFallback,
@@ -71,6 +71,9 @@ import {
71
71
  DropdownMenuSubTrigger,
72
72
  DropdownMenuTrigger
73
73
  } from "./chunk-34A66VBG.js";
74
+ import {
75
+ TextShimmer
76
+ } from "./chunk-L57WRIND.js";
74
77
  import {
75
78
  Badge,
76
79
  Card,
@@ -194,6 +197,7 @@ export {
194
197
  TerminalDisplay,
195
198
  TerminalInput,
196
199
  TerminalLine,
200
+ TextShimmer,
197
201
  Textarea,
198
202
  ThemeToggle,
199
203
  ToastContainer,
package/dist/run.d.ts CHANGED
@@ -30,28 +30,31 @@ declare const RunGroup: React.MemoExoticComponent<({ run, partMap, collapsed, on
30
30
 
31
31
  type RunRowStatus = "running" | "success" | "error" | "idle";
32
32
  /**
33
- * Trailing status indicator shared by every run row: a spinner while running,
34
- * a green/red dot on terminal states, nothing when idle. Status is shown here
35
- * — it never replaces the row's semantic lead icon.
33
+ * Trailing status indicator shared by every run row. Only `error` draws a
34
+ * mark (a red dot). Success is silence, and a running row carries its state in
35
+ * the title — a `TextShimmer` sweep — so neither renders anything here.
36
36
  */
37
37
  declare function RunRowStatusDot({ status }: {
38
38
  status: RunRowStatus;
39
39
  }): react_jsx_runtime.JSX.Element | null;
40
40
  interface RunRowShellProps {
41
- /** Semantic lead glyph — always visible; never replaced by status. */
41
+ /** Semantic lead glyph (14px). At rest it is the row's only ornament; on
42
+ * hover and while open the expand chevron takes its slot. */
42
43
  icon: ReactNode;
43
44
  /** Row title. A string in the common case; a node when the title carries its
44
- * own treatment (e.g. an active-state shimmer sweep) — it renders inline in
45
- * the shell's title slot either way. */
45
+ * own treatment — a running row passes `<TextShimmer>` here, which is the
46
+ * whole in-flight signal (the shell draws no spinner). */
46
47
  title: ReactNode;
47
48
  /** Secondary inline text (tool path/command, or a reasoning preview). */
48
49
  description?: string;
49
50
  /** Render the description in mono (tools) vs prose (reasoning). */
50
51
  descriptionMono?: boolean;
51
52
  status?: RunRowStatus;
52
- /** Live-ticks a duration while running. */
53
+ /** @deprecated The shell no longer ticks a live duration while running; the
54
+ * running state lives in the title (`TextShimmer`). Accepted and ignored so
55
+ * existing callers keep compiling. */
53
56
  startTime?: number;
54
- /** Static duration shown once the row is no longer running. */
57
+ /** Static duration, revealed on hover once the row is no longer running. */
55
58
  durationMs?: number;
56
59
  /** Radius shaping when rows are stacked into a group. */
57
60
  groupPosition?: "single" | "first" | "middle" | "last";
@@ -68,12 +71,13 @@ interface RunRowShellProps {
68
71
  children?: ReactNode;
69
72
  }
70
73
  /**
71
- * Shared shell for the agent activity rows (reasoning + tool). Owns the
72
- * bordered container, the lead icon badge, title/description, the trailing
73
- * meta cluster (duration + status + chevron) and the collapsible body, so
74
- * both row kinds read as one family instead of two bespoke layouts.
74
+ * Shared shell for the agent activity rows (reasoning + tool). A quiet
75
+ * one-liner at rest — bare glyph, muted title and description, no fill, no
76
+ * border — that becomes a bordered card only while open. The border is always
77
+ * present (transparent at rest) so hover and expand never shift layout.
78
+ * Both row kinds render through it so they read as one family.
75
79
  */
76
- declare function RunRowShell({ icon, title, description, descriptionMono, status, startTime, durationMs, groupPosition, collapsedError, actions, open: openProp, onOpenChange, defaultOpen, className, contentClassName, children, }: RunRowShellProps): react_jsx_runtime.JSX.Element;
80
+ declare function RunRowShell({ icon, title, description, descriptionMono, status, durationMs, groupPosition, collapsedError, actions, open: openProp, onOpenChange, defaultOpen, className, contentClassName, children, }: RunRowShellProps): react_jsx_runtime.JSX.Element;
77
81
 
78
82
  interface InlineToolItemProps {
79
83
  part: ToolPart;
@@ -88,10 +92,11 @@ interface InlineToolItemProps {
88
92
  description?: string;
89
93
  }
90
94
  /**
91
- * Compact single-line tool call display. Shows a category icon, title,
92
- * description, duration and status, and expands on click to show
93
- * ExpandedToolDetail. Rendered through the shared RunRowShell so it stays
94
- * consistent with the reasoning row.
95
+ * Compact single-line tool call display: a category glyph, the tool verb, and
96
+ * the path or command it acted on. While the call runs the verb shimmers;
97
+ * once it completes the row goes quiet (duration on hover, a red dot only on
98
+ * error). Expands on click to show ExpandedToolDetail. Rendered through the
99
+ * shared RunRowShell so it stays consistent with the reasoning row.
95
100
  */
96
101
  declare const InlineToolItem: React.MemoExoticComponent<({ part, renderToolDetail, groupPosition, className, contentClassName, actions, title: titleOverride, description: descriptionOverride, }: InlineToolItemProps) => react_jsx_runtime.JSX.Element>;
97
102
 
package/dist/run.js CHANGED
@@ -1,21 +1,23 @@
1
- import "./chunk-LQS34IGP.js";
1
+ import {
2
+ LiveDuration
3
+ } from "./chunk-LFVF2HFB.js";
2
4
  import {
3
5
  ToolCallFeed,
4
6
  parseToolEvent
5
- } from "./chunk-XPYPZMYT.js";
7
+ } from "./chunk-6RIX7M27.js";
6
8
  import {
7
9
  InlineThinkingItem,
8
10
  RunGroup
9
- } from "./chunk-R5GVQDL3.js";
11
+ } from "./chunk-CVX53NCC.js";
10
12
  import {
11
13
  ExpandedToolDetail,
12
14
  InlineToolItem,
13
- LiveDuration,
14
15
  RunRowShell,
15
16
  RunRowStatusDot
16
- } from "./chunk-J2G7KCYH.js";
17
- import "./chunk-ULDNFLIM.js";
17
+ } from "./chunk-XT4JMYVB.js";
18
+ import "./chunk-EIUE5GV2.js";
18
19
  import "./chunk-AAUNOHVL.js";
20
+ import "./chunk-L57WRIND.js";
19
21
  import "./chunk-3M7BPSSW.js";
20
22
  import "./chunk-GYPQXTJU.js";
21
23
  import "./chunk-MKTSMWVD.js";
package/dist/sdk-hooks.js CHANGED
@@ -5,17 +5,18 @@ import {
5
5
  useSSEStream,
6
6
  useSdkSession,
7
7
  useToolCallStream
8
- } from "./chunk-XROQW5J7.js";
8
+ } from "./chunk-4ENFLPWQ.js";
9
9
  import "./chunk-OEX7NZE3.js";
10
10
  import {
11
11
  useAutoScroll,
12
12
  useRunCollapseState,
13
13
  useRunGroups
14
- } from "./chunk-AZWDI2JG.js";
15
- import "./chunk-XPYPZMYT.js";
16
- import "./chunk-J2G7KCYH.js";
17
- import "./chunk-ULDNFLIM.js";
14
+ } from "./chunk-UYTRNR7Z.js";
15
+ import "./chunk-6RIX7M27.js";
16
+ import "./chunk-XT4JMYVB.js";
17
+ import "./chunk-EIUE5GV2.js";
18
18
  import "./chunk-AAUNOHVL.js";
19
+ import "./chunk-L57WRIND.js";
19
20
  import "./chunk-ZRVH3WCA.js";
20
21
  import "./chunk-P5F43A65.js";
21
22
  import "./chunk-WUQDUBJG.js";
package/dist/utils.d.ts CHANGED
@@ -36,6 +36,12 @@ declare function timeAgo(ts: number): string;
36
36
 
37
37
  declare const TOOL_CATEGORY_ICONS: Record<ToolCategory, string>;
38
38
  declare function getToolCategory(toolName: string): ToolCategory;
39
+ /**
40
+ * Title is the bare verb ("Read", "Edit", "Shell"); the path, command, pattern
41
+ * or query lives in `description` only, so a row prints its subject once.
42
+ * `targetPath` / `commandSnippet` carry the untruncated value for consumers
43
+ * that need it (diff headers, expanded detail).
44
+ */
39
45
  declare function getToolDisplayMetadata(part: ToolPart): ToolDisplayMetadata;
40
46
  /** Extract error text from a tool part, if any. */
41
47
  declare function getToolErrorText(part: ToolPart, fallback?: string): string | undefined;
package/dist/utils.js CHANGED
@@ -11,7 +11,7 @@ import {
11
11
  getToolDisplayMetadata,
12
12
  getToolErrorText,
13
13
  truncateText
14
- } from "./chunk-ULDNFLIM.js";
14
+ } from "./chunk-EIUE5GV2.js";
15
15
  import {
16
16
  cn
17
17
  } from "./chunk-RQHJBTEU.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/ui",
3
- "version": "11.5.0",
3
+ "version": "11.7.0",
4
4
  "description": "Generic React UI components for Tangle products — primitives, chat, run, files, editor, markdown.",
5
5
  "type": "module",
6
6
  "license": "MIT",