@tangle-network/sandbox-ui 2.0.6 → 2.0.8

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.
@@ -0,0 +1,12 @@
1
+ // \0rolldown/runtime.js
2
+ var __defProp = Object.defineProperty;
3
+ var __exportAll = (all, no_symbols) => {
4
+ let target = {};
5
+ for (var name in all) __defProp(target, name, {
6
+ get: all[name],
7
+ enumerable: true
8
+ });
9
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
10
+ return target;
11
+ };
12
+ export { __exportAll as t };
@@ -0,0 +1,2 @@
1
+ import { a as RecordIndex, c as model_d_exports, d as ConversationRecord, i as EventFlag, l as ConversationEvent, n as Conversation, o as ToolCall, r as ConversationProps, s as indexRecord, t as withPrompts, u as ConversationNode } from "../index-VKtnnRkt.js";
2
+ export { Conversation, type ConversationEvent, type ConversationNode, type ConversationProps, type ConversationRecord, type EventFlag, type RecordIndex, type ToolCall, indexRecord, model_d_exports as recordModel, withPrompts };
@@ -0,0 +1 @@
1
+ export { n as Conversation, r as indexRecord, i as recordModel, t as withPrompts } from "../record-DynwQWg_.js";
@@ -3,11 +3,12 @@ import { i as modelBrandFor, t as ModelBrandStack } from "./model-brand-bTcMjQtB
3
3
  import { t as ProviderIcon } from "./provider-logo-CPKRPHcS.js";
4
4
  import { f as syncAmbient, l as activityTiming, t as AgentGraph, u as ambientStyle } from "./AgentGraph-CFlI9qta.js";
5
5
  import { t as LatestEvents } from "./latest-events-v_vXRyd7.js";
6
+ import "./record-DynwQWg_.js";
6
7
  import { jsx, jsxs } from "react/jsx-runtime";
7
8
  import { useEffect, useLayoutEffect, useMemo, useReducer, useRef, useState } from "react";
8
9
  import { X } from "lucide-react";
9
10
  import { AgentTimeline } from "@tangle-network/ui/chat";
10
- import { ApprovalCard, ApprovalDiffSummary, ExpandedToolDetail, InlineThinkingItem, InlineThinkingItem as InlineThinkingItem$1, InlineToolItem, LiveDuration, RunGroup, RunPhaseList, RunRowShell, RunRowStatusDot, RunStatusIcon as RunStatusIcon$1, TaskList, ToolCallFeed, parseToolEvent, runStatus, runStatus as runStatus$1, showsTaskPriority, statusMeta as statusMeta$1, taskProgress, taskStatus } from "@tangle-network/ui/run";
11
+ import { ApprovalCard, ApprovalDiffSummary, ExpandedToolDetail, InlineThinkingItem, InlineThinkingItem as InlineThinkingItem$1, InlineToolItem, LiveDuration, RunGroup, RunPhaseList, RunRowShell as RunRowShell$1, RunRowStatusDot, RunStatusIcon as RunStatusIcon$1, TaskList, ToolCallFeed, parseToolEvent, runStatus, runStatus as runStatus$1, showsTaskPriority, statusMeta as statusMeta$1, taskProgress, taskStatus } from "@tangle-network/ui/run";
11
12
  import { FlowWaterfall, toolGlyph } from "@tangle-network/charts/react";
12
13
  // src/run/trace-waterfall.tsx
13
14
  /** Agent and model spans show their lab/host mark; tool spans show their provider's mark. Unknown keeps the kind glyph. */
@@ -609,4 +610,4 @@ function TraceWorkspace({ trace, streamUrl, events, onTimeChange, files, scorebo
609
610
  ]
610
611
  });
611
612
  }
612
- export { TraceWaterfall as C, useAgentStream as S, statusMeta$1 as _, InlineToolItem as a, TraceWorkspace as b, RunPhaseList as c, RunStatusIcon$1 as d, TaskList as f, showsTaskPriority as g, runStatus$1 as h, InlineThinkingItem$1 as i, RunRowShell as l, parseToolEvent as m, ApprovalDiffSummary as n, LiveDuration as o, ToolCallFeed as p, ExpandedToolDetail as r, RunGroup as s, ApprovalCard as t, RunRowStatusDot as u, taskProgress as v, traceSpanMark as w, foldAgentRows as x, taskStatus as y };
613
+ export { TraceWaterfall as C, useAgentStream as S, statusMeta$1 as _, InlineToolItem as a, TraceWorkspace as b, RunPhaseList as c, RunStatusIcon$1 as d, TaskList as f, showsTaskPriority as g, runStatus$1 as h, InlineThinkingItem$1 as i, RunRowShell$1 as l, parseToolEvent as m, ApprovalDiffSummary as n, LiveDuration as o, ToolCallFeed as p, ExpandedToolDetail as r, RunGroup as s, ApprovalCard as t, RunRowStatusDot as u, taskProgress as v, traceSpanMark as w, foldAgentRows as x, taskStatus as y };
package/dist/run.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- import { $ as traceSpanMark, A as ToolCallData, B as taskStatus, C as RunStatusIcon, D as TaskListItem, E as TaskList, F as parseToolEvent, G as AgentTranscriptEntry, H as LatestEventsProps, I as runStatus, J as TraceEvent, K as foldAgentRows, L as showsTaskPriority, M as ToolCallFeedProps, N as ToolCallStatus, O as TaskListProps, P as ToolCallType, Q as TraceWaterfallProps, R as statusMeta, S as RunStatus, T as StatusMeta, U as AgentStreamRow, V as LatestEvents, W as AgentStreamState, X as TraceWorkspaceProps, Y as TraceWorkspace, Z as TraceWaterfall, _ as RunPhaseList, a as ApprovalPlanStep, b as RunRowStatus, c as FeedSegment, d as InlineToolItem, f as InlineToolItemProps, g as RunPhase, h as RunGroupProps, i as ApprovalDiffSummary, j as ToolCallFeed, k as TaskStatus, l as InlineThinkingItem, m as RunGroup, n as ApprovalCardProps, o as ExpandedToolDetail, p as LiveDuration, q as useAgentStream, r as ApprovalDiffFile, s as ExpandedToolDetailProps, t as ApprovalCard, u as InlineThinkingItemProps, v as RunRowShell, w as RunStatusIconProps, x as RunRowStatusDot, y as RunRowShellProps, z as taskProgress } from "./index-DFNf9mJ2.js";
2
- export { type AgentStreamRow, type AgentStreamState, type AgentTranscriptEntry, ApprovalCard, type ApprovalCardProps, type ApprovalDiffFile, ApprovalDiffSummary, type ApprovalPlanStep, ExpandedToolDetail, type ExpandedToolDetailProps, type FeedSegment, InlineThinkingItem, type InlineThinkingItemProps, InlineToolItem, type InlineToolItemProps, LatestEvents, type LatestEventsProps, LiveDuration, RunGroup, type RunGroupProps, type RunPhase, RunPhaseList, RunRowShell, type RunRowShellProps, type RunRowStatus, RunRowStatusDot, type RunStatus, RunStatusIcon, type RunStatusIconProps, type StatusMeta, TaskList, type TaskListItem, type TaskListProps, type TaskStatus, type ToolCallData, ToolCallFeed, type ToolCallFeedProps, type ToolCallStatus, type ToolCallType, type TraceEvent, TraceWaterfall, type TraceWaterfallProps, TraceWorkspace, type TraceWorkspaceProps, foldAgentRows, parseToolEvent, runStatus, showsTaskPriority, statusMeta, taskProgress, taskStatus, traceSpanMark, useAgentStream };
1
+ import { $ as traceSpanMark, A as ToolCallData, B as taskStatus, C as RunStatusIcon, D as TaskListItem, E as TaskList, F as parseToolEvent, G as AgentTranscriptEntry, H as LatestEventsProps, I as runStatus, J as TraceEvent, K as foldAgentRows, L as showsTaskPriority, M as ToolCallFeedProps, N as ToolCallStatus, O as TaskListProps, P as ToolCallType, Q as TraceWaterfallProps, R as statusMeta, S as RunStatus, T as StatusMeta, U as AgentStreamRow, V as LatestEvents, W as AgentStreamState, X as TraceWorkspaceProps, Y as TraceWorkspace, Z as TraceWaterfall, _ as RunPhaseList, a as ApprovalPlanStep, b as RunRowStatus, c as FeedSegment, d as InlineToolItem, f as InlineToolItemProps, g as RunPhase, h as RunGroupProps, i as ApprovalDiffSummary, j as ToolCallFeed, k as TaskStatus, l as InlineThinkingItem, m as RunGroup, n as ApprovalCardProps, o as ExpandedToolDetail, p as LiveDuration, q as useAgentStream, r as ApprovalDiffFile, s as ExpandedToolDetailProps, t as ApprovalCard, u as InlineThinkingItemProps, v as RunRowShell, w as RunStatusIconProps, x as RunRowStatusDot, y as RunRowShellProps, z as taskProgress } from "./index-DDR9iOBQ.js";
2
+ import { a as RecordIndex, c as model_d_exports, d as ConversationRecord, i as EventFlag, l as ConversationEvent, n as Conversation, o as ToolCall, r as ConversationProps, s as indexRecord, t as withPrompts, u as ConversationNode } from "./index-VKtnnRkt.js";
3
+ export { type AgentStreamRow, type AgentStreamState, type AgentTranscriptEntry, ApprovalCard, type ApprovalCardProps, type ApprovalDiffFile, ApprovalDiffSummary, type ApprovalPlanStep, Conversation, type ConversationEvent, type ConversationNode, type ConversationProps, type ConversationRecord, type EventFlag, ExpandedToolDetail, type ExpandedToolDetailProps, type FeedSegment, InlineThinkingItem, type InlineThinkingItemProps, InlineToolItem, type InlineToolItemProps, LatestEvents, type LatestEventsProps, LiveDuration, type RecordIndex, RunGroup, type RunGroupProps, type RunPhase, RunPhaseList, RunRowShell, type RunRowShellProps, type RunRowStatus, RunRowStatusDot, type RunStatus, RunStatusIcon, type RunStatusIconProps, type StatusMeta, TaskList, type TaskListItem, type TaskListProps, type TaskStatus, type ToolCall, type ToolCallData, ToolCallFeed, type ToolCallFeedProps, type ToolCallStatus, type ToolCallType, type TraceEvent, TraceWaterfall, type TraceWaterfallProps, TraceWorkspace, type TraceWorkspaceProps, foldAgentRows, indexRecord, parseToolEvent, model_d_exports as recordModel, runStatus, showsTaskPriority, statusMeta, taskProgress, taskStatus, traceSpanMark, useAgentStream, withPrompts };
package/dist/run.js CHANGED
@@ -1,3 +1,4 @@
1
- import { C as TraceWaterfall, S as useAgentStream, _ as statusMeta, a as InlineToolItem, b as TraceWorkspace, c as RunPhaseList, d as RunStatusIcon, f as TaskList, g as showsTaskPriority, h as runStatus, i as InlineThinkingItem, l as RunRowShell, m as parseToolEvent, n as ApprovalDiffSummary, o as LiveDuration, p as ToolCallFeed, r as ExpandedToolDetail, s as RunGroup, t as ApprovalCard, u as RunRowStatusDot, v as taskProgress, w as traceSpanMark, x as foldAgentRows, y as taskStatus } from "./run-D996hHtq.js";
1
+ import { C as TraceWaterfall, S as useAgentStream, _ as statusMeta, a as InlineToolItem, b as TraceWorkspace, c as RunPhaseList, d as RunStatusIcon, f as TaskList, g as showsTaskPriority, h as runStatus, i as InlineThinkingItem, l as RunRowShell, m as parseToolEvent, n as ApprovalDiffSummary, o as LiveDuration, p as ToolCallFeed, r as ExpandedToolDetail, s as RunGroup, t as ApprovalCard, u as RunRowStatusDot, v as taskProgress, w as traceSpanMark, x as foldAgentRows, y as taskStatus } from "./run-GaIYaht-.js";
2
2
  import { t as LatestEvents } from "./latest-events-v_vXRyd7.js";
3
- export { ApprovalCard, ApprovalDiffSummary, ExpandedToolDetail, InlineThinkingItem, InlineToolItem, LatestEvents, LiveDuration, RunGroup, RunPhaseList, RunRowShell, RunRowStatusDot, RunStatusIcon, TaskList, ToolCallFeed, TraceWaterfall, TraceWorkspace, foldAgentRows, parseToolEvent, runStatus, showsTaskPriority, statusMeta, taskProgress, taskStatus, traceSpanMark, useAgentStream };
3
+ import { i as model_exports, n as Conversation, r as indexRecord, t as withPrompts } from "./record-DynwQWg_.js";
4
+ export { ApprovalCard, ApprovalDiffSummary, Conversation, ExpandedToolDetail, InlineThinkingItem, InlineToolItem, LatestEvents, LiveDuration, RunGroup, RunPhaseList, RunRowShell, RunRowStatusDot, RunStatusIcon, TaskList, ToolCallFeed, TraceWaterfall, TraceWorkspace, foldAgentRows, indexRecord, parseToolEvent, model_exports as recordModel, runStatus, showsTaskPriority, statusMeta, taskProgress, taskStatus, traceSpanMark, useAgentStream, withPrompts };
package/dist/styles.css CHANGED
@@ -9602,6 +9602,175 @@
9602
9602
  min-width: 44px;
9603
9603
  }
9604
9604
  }
9605
+ .record-conversation {
9606
+ height: 29rem;
9607
+ overflow: auto;
9608
+ scroll-behavior: auto;
9609
+ overscroll-behavior: contain;
9610
+ }
9611
+ .record-conversation .virtual-row {
9612
+ display: flow-root;
9613
+ overflow-anchor: auto;
9614
+ }
9615
+ .record-conversation .chat-empty {
9616
+ padding: 1rem;
9617
+ font: var(--font-size-base)/1.5 var(--font-sans);
9618
+ color: hsl(var(--muted-foreground));
9619
+ }
9620
+ .record-conversation .chat-row.selected {
9621
+ box-shadow: -10px 0 0 -8px var(--accent-text);
9622
+ }
9623
+ .record-conversation .chat-row.flagged {
9624
+ box-shadow: -10px 0 0 -8px hsl(var(--muted-foreground));
9625
+ }
9626
+ .record-conversation .chat-row > :is(.publication-note, .clip-note, .event-flags) {
9627
+ margin: 4px 0 8px;
9628
+ }
9629
+ .record-conversation .ar-prompt-more {
9630
+ display: flex;
9631
+ justify-content: flex-end;
9632
+ margin: 4px 0 0;
9633
+ }
9634
+ .record-conversation .tool-note {
9635
+ font: var(--font-size-sm)/20px var(--font-sans);
9636
+ color: hsl(var(--muted-foreground));
9637
+ white-space: nowrap;
9638
+ }
9639
+ .record-conversation .lifecycle-note {
9640
+ display: flex;
9641
+ gap: 8px;
9642
+ align-items: baseline;
9643
+ margin: 8px 0;
9644
+ padding: 0 12px;
9645
+ font: var(--font-size-sm)/1.5 var(--font-sans);
9646
+ color: hsl(var(--muted-foreground));
9647
+ }
9648
+ .record-conversation .lifecycle-note b {
9649
+ color: hsl(var(--foreground));
9650
+ font-weight: 600;
9651
+ }
9652
+ .record-conversation .lifecycle-note > span {
9653
+ min-width: 0;
9654
+ overflow-wrap: anywhere;
9655
+ }
9656
+ .record-conversation .poll-calls {
9657
+ margin: 0;
9658
+ padding: 4px 12px 8px;
9659
+ list-style: none;
9660
+ max-height: 18rem;
9661
+ overflow: auto;
9662
+ }
9663
+ .record-conversation .poll-calls li {
9664
+ display: flex;
9665
+ gap: 12px;
9666
+ padding: 2px 0;
9667
+ font: var(--font-size-sm)/1.5 var(--font-sans);
9668
+ color: hsl(var(--muted-foreground));
9669
+ }
9670
+ .record-conversation .poll-calls .mono {
9671
+ min-width: 0;
9672
+ overflow: hidden;
9673
+ text-overflow: ellipsis;
9674
+ white-space: nowrap;
9675
+ font-family: var(--font-mono);
9676
+ }
9677
+ .record-conversation .transcript-edge {
9678
+ display: flex;
9679
+ justify-content: center;
9680
+ gap: 16px;
9681
+ margin: 8px 0 0;
9682
+ }
9683
+ .record-conversation .publication-note {
9684
+ font: var(--font-size-sm)/1.4 var(--font-sans);
9685
+ color: hsl(var(--muted-foreground));
9686
+ overflow-wrap: anywhere;
9687
+ }
9688
+ .record-conversation .publication-note:empty {
9689
+ display: none;
9690
+ }
9691
+ .record-conversation .clip-note {
9692
+ display: flex;
9693
+ flex-wrap: wrap;
9694
+ gap: 8px;
9695
+ align-items: center;
9696
+ font: var(--font-size-sm)/1.5 var(--font-sans);
9697
+ color: hsl(var(--muted-foreground));
9698
+ }
9699
+ .record-conversation .event-flags {
9700
+ display: inline-flex;
9701
+ gap: 4px;
9702
+ margin-left: 8px;
9703
+ }
9704
+ .record-conversation .event-flag {
9705
+ padding: 0 4px;
9706
+ min-height: 0;
9707
+ border: 0;
9708
+ border-radius: var(--radius-control);
9709
+ font: 600 var(--font-size-sm)/1.6 var(--font-sans);
9710
+ cursor: pointer;
9711
+ }
9712
+ .record-conversation .event-flag.polarity-good {
9713
+ color: var(--accent-text);
9714
+ background: var(--accent-text);
9715
+ @supports (color: color-mix(in lab, red, red)) {
9716
+ background: color-mix(in srgb, var(--accent-text) 14%, transparent);
9717
+ }
9718
+ }
9719
+ .record-conversation .event-flag.polarity-bad {
9720
+ color: hsl(var(--muted-foreground));
9721
+ background: hsl(var(--muted-foreground));
9722
+ @supports (color: color-mix(in lab, red, red)) {
9723
+ background: color-mix(in srgb, hsl(var(--muted-foreground)) 14%, transparent);
9724
+ }
9725
+ }
9726
+ .record-conversation .event-flag.polarity-neutral {
9727
+ color: hsl(var(--foreground));
9728
+ background: hsl(var(--muted));
9729
+ }
9730
+ .record-conversation .event-flag:is(.polarity-unknown, .polarity-uncalibrated) {
9731
+ color: hsl(var(--muted-foreground));
9732
+ background: transparent;
9733
+ box-shadow: inset 0 0 0 1px hsl(var(--border));
9734
+ border-style: dashed;
9735
+ }
9736
+ .record-conversation .event-flag.polarity-none {
9737
+ color: hsl(var(--muted-foreground));
9738
+ background: transparent;
9739
+ }
9740
+ .record-conversation .link-button {
9741
+ display: inline;
9742
+ min-height: 0;
9743
+ padding: 0;
9744
+ border: 0;
9745
+ background: none;
9746
+ color: var(--accent-text);
9747
+ font: inherit;
9748
+ cursor: pointer;
9749
+ }
9750
+ .record-conversation .link-button:hover, .record-conversation .link-button:focus-visible {
9751
+ text-decoration: underline;
9752
+ }
9753
+ .record-conversation .ar-turn {
9754
+ display: flex;
9755
+ align-items: center;
9756
+ justify-content: space-between;
9757
+ gap: 16px;
9758
+ margin: 20px 0 8px;
9759
+ padding-top: 12px;
9760
+ border-top: 1px solid hsl(var(--border));
9761
+ }
9762
+ .record-conversation .ar-turn time, .record-conversation .ar-idle-event time {
9763
+ flex: none;
9764
+ color: hsl(var(--muted-foreground));
9765
+ font: var(--font-size-sm)/1.5 var(--font-sans);
9766
+ }
9767
+ .record-conversation .ar-idle-event {
9768
+ display: grid;
9769
+ grid-template-columns: auto minmax(0, 1fr);
9770
+ align-items: baseline;
9771
+ gap: 16px;
9772
+ padding: 4px 0;
9773
+ }
9605
9774
  @property --tw-translate-x {
9606
9775
  syntax: "*";
9607
9776
  inherits: false;
package/dist/tailwind.css CHANGED
@@ -963,6 +963,36 @@
963
963
  .ag-latest ol { grid-template-columns: 1fr; margin-left: 0; height: 64px; }
964
964
  }
965
965
  @media (pointer: coarse) { .ag-live-respond { min-height: 44px; min-width: 44px; } }
966
+ .record-conversation { height: 29rem; overflow: auto; scroll-behavior: auto; overscroll-behavior: contain; }
967
+ .record-conversation .virtual-row { display: flow-root; overflow-anchor: auto; }
968
+ .record-conversation .chat-empty { padding: 1rem; font: var(--font-size-base)/1.5 var(--font-sans); color: hsl(var(--muted-foreground)); }
969
+ .record-conversation .chat-row.selected { box-shadow: -10px 0 0 -8px var(--accent-text); }
970
+ .record-conversation .chat-row.flagged { box-shadow: -10px 0 0 -8px hsl(var(--muted-foreground)); }
971
+ .record-conversation .chat-row > :is(.publication-note, .clip-note, .event-flags) { margin: 4px 0 8px; }
972
+ .record-conversation .ar-prompt-more { display: flex; justify-content: flex-end; margin: 4px 0 0; }
973
+ .record-conversation .tool-note { font: var(--font-size-sm)/20px var(--font-sans); color: hsl(var(--muted-foreground)); white-space: nowrap; }
974
+ .record-conversation .lifecycle-note { display: flex; gap: 8px; align-items: baseline; margin: 8px 0; padding: 0 12px; font: var(--font-size-sm)/1.5 var(--font-sans); color: hsl(var(--muted-foreground)); }
975
+ .record-conversation .lifecycle-note b { color: hsl(var(--foreground)); font-weight: 600; }
976
+ .record-conversation .lifecycle-note > span { min-width: 0; overflow-wrap: anywhere; }
977
+ .record-conversation .poll-calls { margin: 0; padding: 4px 12px 8px; list-style: none; max-height: 18rem; overflow: auto; }
978
+ .record-conversation .poll-calls li { display: flex; gap: 12px; padding: 2px 0; font: var(--font-size-sm)/1.5 var(--font-sans); color: hsl(var(--muted-foreground)); }
979
+ .record-conversation .poll-calls .mono { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-family: var(--font-mono); }
980
+ .record-conversation .transcript-edge { display: flex; justify-content: center; gap: 16px; margin: 8px 0 0; }
981
+ .record-conversation .publication-note { font: var(--font-size-sm)/1.4 var(--font-sans); color: hsl(var(--muted-foreground)); overflow-wrap: anywhere; }
982
+ .record-conversation .publication-note:empty { display: none; }
983
+ .record-conversation .clip-note { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; font: var(--font-size-sm)/1.5 var(--font-sans); color: hsl(var(--muted-foreground)); }
984
+ .record-conversation .event-flags { display: inline-flex; gap: 4px; margin-left: 8px; }
985
+ .record-conversation .event-flag { padding: 0 4px; min-height: 0; border: 0; border-radius: var(--radius-control); font: 600 var(--font-size-sm)/1.6 var(--font-sans); cursor: pointer; }
986
+ .record-conversation .event-flag.polarity-good { color: var(--accent-text); background: color-mix(in srgb, var(--accent-text) 14%, transparent); }
987
+ .record-conversation .event-flag.polarity-bad { color: hsl(var(--muted-foreground)); background: color-mix(in srgb, hsl(var(--muted-foreground)) 14%, transparent); }
988
+ .record-conversation .event-flag.polarity-neutral { color: hsl(var(--foreground)); background: hsl(var(--muted)); }
989
+ .record-conversation .event-flag:is(.polarity-unknown, .polarity-uncalibrated) { color: hsl(var(--muted-foreground)); background: transparent; box-shadow: inset 0 0 0 1px hsl(var(--border)); border-style: dashed; }
990
+ .record-conversation .event-flag.polarity-none { color: hsl(var(--muted-foreground)); background: transparent; }
991
+ .record-conversation .link-button { display: inline; min-height: 0; padding: 0; border: 0; background: none; color: var(--accent-text); font: inherit; cursor: pointer; }
992
+ .record-conversation .link-button:hover, .record-conversation .link-button:focus-visible { text-decoration: underline; }
993
+ .record-conversation .ar-turn { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 20px 0 8px; padding-top: 12px; border-top: 1px solid hsl(var(--border)); }
994
+ .record-conversation .ar-turn time, .record-conversation .ar-idle-event time { flex: none; color: hsl(var(--muted-foreground)); font: var(--font-size-sm)/1.5 var(--font-sans); }
995
+ .record-conversation .ar-idle-event { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: baseline; gap: 16px; padding: 4px 0; }
966
996
 
967
997
  /* Published sources: this package's dist and its @tangle-network/ui peer. */
968
998
  @source "./**/*.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/sandbox-ui",
3
- "version": "2.0.6",
3
+ "version": "2.0.8",
4
4
  "license": "MIT",
5
5
  "description": "Unified UI component library for Tangle Sandbox — primitives, chat, dashboard, terminal, editor, and workspace components",
6
6
  "repository": {
@@ -127,7 +127,11 @@
127
127
  "./globals.css": "./dist/globals.css",
128
128
  "./tokens.css": "./dist/tokens.css",
129
129
  "./tailwind.css": "./dist/tailwind.css",
130
- "./tailwind": "./tailwind.config.cjs"
130
+ "./tailwind": "./tailwind.config.cjs",
131
+ "./run/record": {
132
+ "import": "./dist/run/record.js",
133
+ "types": "./dist/run/record.d.ts"
134
+ }
131
135
  },
132
136
  "files": [
133
137
  "dist",
@@ -270,7 +274,8 @@
270
274
  "typescript": "^7.0.2",
271
275
  "vite": "^8.3.5",
272
276
  "vitest": "^5.0.5",
273
- "yjs": "^13.6.33"
277
+ "yjs": "^13.6.33",
278
+ "@drewstone/agent-record": "https://github.com/drewstone/agent-record/releases/download/v1.0.2/drewstone-agent-record-1.0.2.tgz"
274
279
  },
275
280
  "scripts": {
276
281
  "build": "tsdown",