@tangle-network/sandbox-ui 5.0.0 → 6.0.1

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/globals.css CHANGED
@@ -1472,6 +1472,9 @@
1472
1472
  .w-\[calc\(100vw-32px\)\] {
1473
1473
  width: calc(100vw - 32px);
1474
1474
  }
1475
+ .w-\[clamp\(320px\,32vw\,560px\)\] {
1476
+ width: clamp(320px, 32vw, 560px);
1477
+ }
1475
1478
  .w-\[min\(88vw\,24rem\)\] {
1476
1479
  width: min(88vw, 24rem);
1477
1480
  }
@@ -1916,6 +1919,9 @@
1916
1919
  .resize-none {
1917
1920
  resize: none;
1918
1921
  }
1922
+ .resize-x {
1923
+ resize: horizontal;
1924
+ }
1919
1925
  .resize-y {
1920
1926
  resize: vertical;
1921
1927
  }
@@ -36,6 +36,13 @@ interface TraceWorkspaceProps extends Omit<TraceWaterfallProps, "trace" | "marke
36
36
  conversationOpen?: boolean;
37
37
  /** Called with the agent the reader selected, or undefined when they close its drawer or press Escape. */
38
38
  onSelectAgent?: (agentId: string | undefined) => void;
39
+ /** Dock the conversation as a resizable pane in the layout instead of a fixed overlay over the right edge. */
40
+ docked?: boolean;
41
+ /** The words that created the selected agent — its parent's commission — pinned above its conversation. */
42
+ commission?: {
43
+ by?: string;
44
+ text?: string;
45
+ };
39
46
  /** The host's own account of the selected agent beyond its trace facts, such as its profile: its drawer shows it under them. */
40
47
  renderAgentDrawer?: (agentId: string) => ReactNode;
41
48
  /**
@@ -54,5 +61,5 @@ interface TraceWorkspaceProps extends Omit<TraceWaterfallProps, "trace" | "marke
54
61
  * streaming in a right-hand drawer, and the page's code workspace and scoreboard following the time cursor. Scrubbing is time travel:
55
62
  * every panel shows what was true at the cursor, and the conversation shows what had been said by then.
56
63
  */
57
- declare function TraceWorkspace({ trace, streamUrl, openEventSource, events, onTimeChange, files, scoreboard, selectedAgentId, conversationOpen, onSelectAgent, renderAgentDrawer, agentCards, agentGraph, className, ...waterfall }: TraceWorkspaceProps): import("react").JSX.Element;
64
+ declare function TraceWorkspace({ trace, streamUrl, openEventSource, events, onTimeChange, files, scoreboard, selectedAgentId, conversationOpen, onSelectAgent, renderAgentDrawer, docked, commission, agentCards, agentGraph, className, ...waterfall }: TraceWorkspaceProps): import("react").JSX.Element;
58
65
  export { ToolCallData$1 as A, taskProgress as B, RunStatusIcon$1 as C, TaskListItem as D, TaskList as E, isOpen as F, TraceWorkspace as G, LatestEvents as H, parseToolEvent as I, TraceWaterfallProps as J, TraceWorkspaceProps as K, runStatus$1 as L, ToolCallFeedProps as M, ToolCallStatus as N, TaskListProps as O, ToolCallType as P, showsTaskPriority as R, RunStatus as S, StatusMeta as T, LatestEventsProps as U, taskStatus as V, TraceEvent as W, traceSpanMark as Y, RunPhaseList as _, ApprovalPlanStep as a, RunRowStatus as b, FeedSegment as c, InlineToolItem as d, InlineToolItemProps as f, RunPhase as g, RunGroupProps as h, ApprovalDiffSummary as i, ToolCallFeed as j, TaskStatus as k, InlineThinkingItem as l, RunGroup as m, ApprovalCardProps as n, ExpandedToolDetail as o, LiveDuration as p, TraceWaterfall as q, ApprovalDiffFile as r, ExpandedToolDetailProps as s, ApprovalCard as t, InlineThinkingItemProps as u, RunRowShell as v, RunStatusIconProps as w, RunRowStatusDot as x, RunRowShellProps as y, statusMeta$1 as z };
package/dist/index.d.ts CHANGED
@@ -15,7 +15,7 @@ import { C as SandboxArtifactPane, D as SandboxArtifact, E as ChangesPaneProps,
15
15
  import { n as DiffViewProps, t as DiffView } from "./diff-view-DDHWtR6X.js";
16
16
  import { a as PreviewReadiness, i as PreviewAccess, n as EmbeddedAppView, r as EmbeddedAppViewProps, t as EmbeddedApp } from "./embedded-app-view-Ta5GI4hx.js";
17
17
  import { OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, OpenUIAction, OpenUIActionsNode, OpenUIArtifactRenderer, OpenUIArtifactRendererProps, OpenUIBadgeNode, OpenUICardNode, OpenUICodeNode, OpenUIComponentNode, OpenUIGridNode, OpenUIHeadingNode, OpenUIKeyValueNode, OpenUIMarkdownNode, OpenUIPrimitive, OpenUISchemaIssue, OpenUISchemaValidation, OpenUISeparatorNode, OpenUIStackNode, OpenUIStatNode, OpenUITableNode, OpenUITextNode, findUnsupportedOpenUINode, validateOpenUIJsonArtifact, validateOpenUIJsonNode } from "./openui.js";
18
- import { A as ToolCallData, B as taskProgress, C as RunStatusIcon, D as TaskListItem, E as TaskList, F as isOpen, G as TraceWorkspace, H as LatestEvents, I as parseToolEvent, J as TraceWaterfallProps, K as TraceWorkspaceProps, L as runStatus, M as ToolCallFeedProps, N as ToolCallStatus, O as TaskListProps, P as ToolCallType, R as showsTaskPriority, S as RunStatus, T as StatusMeta, U as LatestEventsProps, V as taskStatus, W as TraceEvent, Y as traceSpanMark, _ 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 TraceWaterfall, 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 statusMeta } from "./index-CeZgMx53.js";
18
+ import { A as ToolCallData, B as taskProgress, C as RunStatusIcon, D as TaskListItem, E as TaskList, F as isOpen, G as TraceWorkspace, H as LatestEvents, I as parseToolEvent, J as TraceWaterfallProps, K as TraceWorkspaceProps, L as runStatus, M as ToolCallFeedProps, N as ToolCallStatus, O as TaskListProps, P as ToolCallType, R as showsTaskPriority, S as RunStatus, T as StatusMeta, U as LatestEventsProps, V as taskStatus, W as TraceEvent, Y as traceSpanMark, _ 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 TraceWaterfall, 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 statusMeta } from "./index-D6fZ1Hgz.js";
19
19
  import { i as useEventStream, n as AgentStreamSource, r as EventStreamHandlers, t as AgentStreamOpener } from "./event-stream-DNEbvx4s.js";
20
20
  import { C as foldAgentRows, S as AgentTranscriptEntry, _ as ConversationRecord, a as VirtualList, b as AgentStreamRow, c as ConversationProps, d as ToolCall, f as indexRecord, g as ConversationNode, h as ConversationEvent, i as AgentTree, l as EventFlag, m as recordFlowTrace, n as ToolStep, o as withPrompts, p as model_d_exports, r as timelineItems, s as Conversation, t as PromptMore, u as RecordIndex, v as AgentStreamHistory, w as useAgentStream, x as AgentStreamState, y as AgentStreamPage } from "./index-Bv2iiZaN.js";
21
21
  import { n as filterFileNodes, t as fileTreeFromPaths } from "./index-CrN4d8gd.js";
package/dist/index.js CHANGED
@@ -15,7 +15,7 @@ import { n as FileBreadcrumb, t as CodeView } from "./code-view-BlhCS1SD.js";
15
15
  import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-DXsoPale.js";
16
16
  import { OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, OpenUIArtifactRenderer, findUnsupportedOpenUINode, validateOpenUIJsonArtifact, validateOpenUIJsonNode } from "./openui.js";
17
17
  import { S as ReasoningLevelPicker, _ as modelProvider, a as ChatMessage, b as DEFAULT_REASONING_LEVEL_OPTIONS, c as SpeakerHeader, d as UserMessage, f as agentTimelineStepKind, g as ArtifactAgentDock, h as partitionBySpeaker, i as ChatContainer, l as TRANSCRIPT_TEXT, m as isViewerMessage, n as AgentTimelineColumn, o as MessageAuthor, p as foldSummary, r as AgentTimelineStep, s as MessageList, t as AgentTimeline, u as ThinkingIndicator, v as snapHarnessToModel, x as HARNESS_REASONING_OPTIONS, y as AgentProfilePicker } from "./chat-BrlLa4rg.js";
18
- import { a as useEventStream, i as useAgentStream, n as LatestEvents, o as TraceWaterfall, r as foldAgentRows, s as traceSpanMark, t as TraceWorkspace } from "./trace-workspace-DtoQ3tio.js";
18
+ import { a as useEventStream, i as useAgentStream, n as LatestEvents, o as TraceWaterfall, r as foldAgentRows, s as traceSpanMark, t as TraceWorkspace } from "./trace-workspace-Cfil2Ma9.js";
19
19
  import { S as model_exports, i as ToolStep, r as PromptMore, s as timelineItems, w as recordFlowTrace, y as indexRecord } from "./use-follow-tail-DZFn7QDO.js";
20
20
  import { n as Conversation, t as AgentTree } from "./AgentTree-D4d06rfH.js";
21
21
  import { t as withPrompts } from "./record-C-EUpK-n.js";
package/dist/run/live.js CHANGED
@@ -1,21 +1,24 @@
1
1
  import { t as WorkspaceFilesPane } from "../workspace-files-pane-D24G7H_Z.js";
2
2
  import { t as DiffView } from "../diff-view-B9mNeTLF.js";
3
3
  import { t as CodeView } from "../code-view-BlhCS1SD.js";
4
- import { a as useEventStream, t as TraceWorkspace } from "../trace-workspace-DtoQ3tio.js";
4
+ import { a as useEventStream, t as TraceWorkspace } from "../trace-workspace-Cfil2Ma9.js";
5
5
  import { useDocument } from "../hooks/use-document.js";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
- import { useEffect, useMemo, useRef, useState } from "react";
7
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
8
8
  import { isOpen, runStatus } from "@tangle-network/ui/run/status-meta";
9
9
  // src/run/live-inspection.tsx
10
- /** The graph, conversation and files share one selected agent and one product-owned API. */
11
- function useLiveInspection(url, live, fetcher) {
12
- const inventory = useDocument(url ?? null, live ? 3e3 : void 0, false, fetcher);
10
+ /** The graph, conversation and files share one selected agent and one product-owned API. The inspection refetches
11
+ * when the agent's own activity moves (`activity`, its lastActivityAt from the snapshot) with a slow fallback poll —
12
+ * not a fixed 3 s tick for an agent that may think for minutes (#525). */
13
+ function useLiveInspection(url, live, fetcher, activity) {
14
+ const gate = url ? `${url}${url.includes("?") ? "&" : "?"}activity=${activity ?? "quiet"}` : null;
15
+ const inventory = useDocument(gate, live ? 3e4 : void 0, false, fetcher);
13
16
  const [selected, select] = useState();
14
17
  const [download, setDownload] = useState();
15
18
  const files = inventory.error ? [] : inventory.data?.files?.entries ?? [];
16
19
  const entry = files.find((file) => file.path === selected) ?? files[0];
17
20
  const fileUrl = entry && url ? `${url}/file?path=${encodeURIComponent(entry.path)}` : null;
18
- const content = useDocument(fileUrl, live ? 3e3 : void 0, false, fetcher);
21
+ const content = useDocument(fileUrl ? `${fileUrl}&activity=${activity ?? "quiet"}` : null, live ? 3e4 : void 0, false, fetcher);
19
22
  const file = content.data?.file;
20
23
  const valid = !inventory.error && !content.error && file && entry && file.path === entry.path && file.sha256 === entry.sha256 && file.byteLength === entry.byteLength;
21
24
  const fileKey = valid ? `${entry.path}:${entry.sha256}` : void 0;
@@ -127,13 +130,13 @@ const time = (value) => {
127
130
  };
128
131
  const iso = (ms) => ms !== void 0 && Number.isFinite(ms) ? new Date(ms).toISOString() : void 0;
129
132
  const withNodes = (run, nodes) => [...run.workers.map((worker) => {
130
- const node = nodes.find((node) => node.id === worker.id);
133
+ const node = nodes.get(worker.id);
131
134
  return {
132
135
  ...worker,
133
136
  startedAt: worker.startedAt ?? iso(node?.timing?.startedAt),
134
137
  endedAt: worker.endedAt ?? iso(node?.timing?.settledAt ?? node?.settledAt)
135
138
  };
136
- }), ...nodes.filter((node) => node.id !== run.id && !run.workers.some((worker) => worker.id === node.id)).map((node) => ({
139
+ }), ...[...nodes.values()].filter((node) => node.id !== run.id && !run.workers.some((worker) => worker.id === node.id)).map((node) => ({
137
140
  id: node.id,
138
141
  parent: node.parentId,
139
142
  label: node.label ?? node.id,
@@ -201,15 +204,20 @@ function LiveRunView({ api, transport }) {
201
204
  key: JSON.stringify([snapshot.root, run.id])
202
205
  })));
203
206
  const active = runs.find((run) => run.key === selected) ?? runs[0];
204
- const facts = active?.snapshot.pursuit?.nodes.filter((node) => node.runId === active.run.id) ?? [];
205
- const detail = (id) => {
206
- const node = facts.find((node) => node.id === id), receipt = active?.run.workers.find((worker) => worker.id === id)?.materialization;
207
- return [node?.model ?? (receipt?.model?.status === "known" ? receipt.model.id : void 0), node?.backend ?? receipt?.backend].filter(Boolean).join(" · ") || void 0;
208
- };
209
- const run = active && {
207
+ const nodeIndex = useMemo(() => {
208
+ const index = /* @__PURE__ */ new Map();
209
+ for (const node of active?.snapshot.pursuit?.nodes ?? []) if (node.runId === active.run.id) index.set(node.id, node);
210
+ return index;
211
+ }, [active?.snapshot, active?.run.id]);
212
+ const run = useMemo(() => active ? {
210
213
  ...active.run,
211
- workers: withNodes(active.run, facts)
212
- };
214
+ workers: withNodes(active.run, nodeIndex)
215
+ } : void 0, [active?.run, nodeIndex]);
216
+ const receiptIndex = useMemo(() => new Map((run?.workers ?? []).map((worker) => [worker.id, worker])), [run]);
217
+ const detail = useCallback((id) => {
218
+ const receipt = receiptIndex.get(id)?.materialization;
219
+ return [receipt?.model?.status === "known" ? receipt.model.id : void 0, receipt?.backend].filter(Boolean).join(" · ") || void 0;
220
+ }, [receiptIndex]);
213
221
  const outcome = run?.outcome;
214
222
  const outcomeText = outcome ? outcome.kind === "winner" ? "Winner" : `${outcome.kind === "no-winner" ? "No winner" : "Failed"}: ${outcome.reason}` : void 0;
215
223
  const startedAt = run ? Math.min(...[run.startedAt, ...run.workers.map((worker) => worker.startedAt)].flatMap((value) => value && Number.isFinite(Date.parse(value)) ? [Date.parse(value)] : [])) : void 0;
@@ -272,55 +280,65 @@ function LiveRunView({ api, transport }) {
272
280
  active?.run,
273
281
  startedAt
274
282
  ]);
275
- const workers = run?.workers.filter((worker) => worker.id !== run.id) ?? [];
276
- const nodes = run ? [{
277
- id: run.id,
278
- label: "root",
279
- status: runStatus(run.status),
280
- model: detail(run.id),
281
- costUsd: cost(run.driverSpend),
282
- startedAt: time(run.startedAt),
283
- lastActivityAt: run.lastActivityAt,
284
- medianEventGapMs: run.medianEventGapMs,
285
- result: outcomeText ?? run.reason ?? (runStatus(run.status) === "failed" ? "Failure cause not recorded" : void 0)
286
- }, ...workers.map((worker) => ({
287
- id: worker.id,
288
- label: worker.label,
289
- harness: worker.runtime,
290
- model: detail(worker.id),
291
- status: runStatus(worker.status),
292
- costUsd: cost(worker.spend, worker.metered),
293
- startedAt: time(worker.startedAt),
294
- lastActivityAt: worker.lastActivityAt,
295
- medianEventGapMs: worker.medianEventGapMs,
296
- turn: worker.liveTail?.at(-1),
297
- events: worker.liveTail?.slice(-3).map((label, index) => ({
298
- id: `${worker.id}:${index}:${label}`,
299
- label
300
- })),
301
- result: worker.reason ?? (runStatus(worker.status) === "failed" ? "Failure cause not recorded" : worker.verdict)
302
- }))] : [];
303
- const inspection = useLiveInspection(active && agent ? `${api}/agents/${active.root}/${encodeURIComponent(active.run.id)}/${encodeURIComponent(agent)}` : void 0, !!run && isOpen(run.status), transport?.fetch);
304
- const known = new Set(nodes.map((node) => node.id));
305
- const edges = workers.map((worker) => ({
306
- from: worker.parent && worker.parent !== worker.id && known.has(worker.parent) ? worker.parent : run.id,
307
- to: worker.id,
308
- kind: "spawn"
309
- }));
310
- const agentCards = Object.fromEntries(nodes.map(({ id, label, harness, model, turn, events, result, status, costUsd, startedAt, lastActivityAt, medianEventGapMs }) => [id, {
311
- label,
312
- harness,
313
- model,
314
- turn,
315
- events,
316
- result,
317
- ...startedAt === void 0 ? {
318
- status,
319
- costUsd,
320
- lastActivityAt,
321
- medianEventGapMs
322
- } : {}
323
- }]));
283
+ const { workers, nodes, edges, agentCards } = useMemo(() => {
284
+ const workers = run?.workers.filter((worker) => worker.id !== run.id) ?? [];
285
+ const nodes = run ? [{
286
+ id: run.id,
287
+ label: "root",
288
+ status: runStatus(run.status),
289
+ model: detail(run.id),
290
+ costUsd: cost(run.driverSpend),
291
+ startedAt: time(run.startedAt),
292
+ lastActivityAt: run.lastActivityAt,
293
+ medianEventGapMs: run.medianEventGapMs,
294
+ result: outcomeText ?? run.reason ?? (runStatus(run.status) === "failed" ? "Failure cause not recorded" : void 0)
295
+ }, ...workers.map((worker) => ({
296
+ id: worker.id,
297
+ label: worker.label,
298
+ harness: worker.runtime,
299
+ model: detail(worker.id),
300
+ status: runStatus(worker.status),
301
+ costUsd: cost(worker.spend, worker.metered),
302
+ startedAt: time(worker.startedAt),
303
+ lastActivityAt: worker.lastActivityAt,
304
+ medianEventGapMs: worker.medianEventGapMs,
305
+ turn: worker.liveTail?.at(-1),
306
+ events: worker.liveTail?.slice(-3).map((label, index) => ({
307
+ id: `${worker.id}:${index}:${label}`,
308
+ label
309
+ })),
310
+ result: worker.reason ?? (runStatus(worker.status) === "failed" ? "Failure cause not recorded" : worker.verdict)
311
+ }))] : [];
312
+ const known = new Set(nodes.map((node) => node.id));
313
+ return {
314
+ workers,
315
+ nodes,
316
+ edges: workers.map((worker) => ({
317
+ from: worker.parent && worker.parent !== worker.id && known.has(worker.parent) ? worker.parent : run.id,
318
+ to: worker.id,
319
+ kind: "spawn"
320
+ })),
321
+ agentCards: Object.fromEntries(nodes.map(({ id, label, harness, model, turn, events, result, status, costUsd, startedAt, lastActivityAt, medianEventGapMs }) => [id, {
322
+ label,
323
+ harness,
324
+ model,
325
+ turn,
326
+ events,
327
+ result,
328
+ ...startedAt === void 0 ? {
329
+ status,
330
+ costUsd,
331
+ lastActivityAt,
332
+ medianEventGapMs
333
+ } : {}
334
+ }]))
335
+ };
336
+ }, [
337
+ run,
338
+ detail,
339
+ outcomeText
340
+ ]);
341
+ const inspection = useLiveInspection(active && agent ? `${api}/agents/${active.root}/${encodeURIComponent(active.run.id)}/${encodeURIComponent(agent)}` : void 0, !!run && isOpen(run.status), transport?.fetch, run?.workers.find((worker) => worker.id === agent)?.lastActivityAt);
324
342
  return /* @__PURE__ */ jsxs("main", {
325
343
  className: "ws-live",
326
344
  "data-api": api,
package/dist/run.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { A as ToolCallData, B as taskProgress, C as RunStatusIcon, D as TaskListItem, E as TaskList, F as isOpen, G as TraceWorkspace, H as LatestEvents, I as parseToolEvent, J as TraceWaterfallProps, K as TraceWorkspaceProps, L as runStatus, M as ToolCallFeedProps, N as ToolCallStatus, O as TaskListProps, P as ToolCallType, R as showsTaskPriority, S as RunStatus, T as StatusMeta, U as LatestEventsProps, V as taskStatus, W as TraceEvent, Y as traceSpanMark, _ 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 TraceWaterfall, 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 statusMeta } from "./index-CeZgMx53.js";
1
+ import { A as ToolCallData, B as taskProgress, C as RunStatusIcon, D as TaskListItem, E as TaskList, F as isOpen, G as TraceWorkspace, H as LatestEvents, I as parseToolEvent, J as TraceWaterfallProps, K as TraceWorkspaceProps, L as runStatus, M as ToolCallFeedProps, N as ToolCallStatus, O as TaskListProps, P as ToolCallType, R as showsTaskPriority, S as RunStatus, T as StatusMeta, U as LatestEventsProps, V as taskStatus, W as TraceEvent, Y as traceSpanMark, _ 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 TraceWaterfall, 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 statusMeta } from "./index-D6fZ1Hgz.js";
2
2
  import { i as useEventStream, n as AgentStreamSource, r as EventStreamHandlers, t as AgentStreamOpener } from "./event-stream-DNEbvx4s.js";
3
3
  import { C as foldAgentRows, S as AgentTranscriptEntry, _ as ConversationRecord, a as VirtualList, b as AgentStreamRow, c as ConversationProps, d as ToolCall, f as indexRecord, g as ConversationNode, h as ConversationEvent, i as AgentTree, l as EventFlag, m as recordFlowTrace, n as ToolStep, o as withPrompts, p as model_d_exports, r as timelineItems, s as Conversation, t as PromptMore, u as RecordIndex, v as AgentStreamHistory, w as useAgentStream, x as AgentStreamState, y as AgentStreamPage } from "./index-Bv2iiZaN.js";
4
4
  export { type AgentStreamHistory, type AgentStreamOpener, type AgentStreamPage, type AgentStreamRow, type AgentStreamSource, type AgentStreamState, type AgentTranscriptEntry, AgentTree, ApprovalCard, type ApprovalCardProps, type ApprovalDiffFile, ApprovalDiffSummary, type ApprovalPlanStep, Conversation, type ConversationEvent, type ConversationNode, type ConversationProps, type ConversationRecord, type EventFlag, type EventStreamHandlers, ExpandedToolDetail, type ExpandedToolDetailProps, type FeedSegment, InlineThinkingItem, type InlineThinkingItemProps, InlineToolItem, type InlineToolItemProps, LatestEvents, type LatestEventsProps, LiveDuration, PromptMore, 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, ToolStep, type TraceEvent, TraceWaterfall, type TraceWaterfallProps, TraceWorkspace, type TraceWorkspaceProps, VirtualList, foldAgentRows, indexRecord, isOpen, parseToolEvent, recordFlowTrace, model_d_exports as recordModel, runStatus, showsTaskPriority, statusMeta, taskProgress, taskStatus, timelineItems, traceSpanMark, useAgentStream, useEventStream, withPrompts };
package/dist/run.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { t as VirtualList } from "./VirtualList-DcSGbEtA.js";
2
- import { a as useEventStream, i as useAgentStream, n as LatestEvents, o as TraceWaterfall, r as foldAgentRows, s as traceSpanMark, t as TraceWorkspace } from "./trace-workspace-DtoQ3tio.js";
2
+ import { a as useEventStream, i as useAgentStream, n as LatestEvents, o as TraceWaterfall, r as foldAgentRows, s as traceSpanMark, t as TraceWorkspace } from "./trace-workspace-Cfil2Ma9.js";
3
3
  import { S as model_exports, i as ToolStep, r as PromptMore, s as timelineItems, w as recordFlowTrace, y as indexRecord } from "./use-follow-tail-DZFn7QDO.js";
4
4
  import { n as Conversation, t as AgentTree } from "./AgentTree-D4d06rfH.js";
5
5
  import { t as withPrompts } from "./record-C-EUpK-n.js";
package/dist/styles.css CHANGED
@@ -1472,6 +1472,9 @@
1472
1472
  .w-\[calc\(100vw-32px\)\] {
1473
1473
  width: calc(100vw - 32px);
1474
1474
  }
1475
+ .w-\[clamp\(320px\,32vw\,560px\)\] {
1476
+ width: clamp(320px, 32vw, 560px);
1477
+ }
1475
1478
  .w-\[min\(88vw\,24rem\)\] {
1476
1479
  width: min(88vw, 24rem);
1477
1480
  }
@@ -1916,6 +1919,9 @@
1916
1919
  .resize-none {
1917
1920
  resize: none;
1918
1921
  }
1922
+ .resize-x {
1923
+ resize: horizontal;
1924
+ }
1919
1925
  .resize-y {
1920
1926
  resize: vertical;
1921
1927
  }