@tangle-network/sandbox-ui 2.0.0 → 2.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.
@@ -1247,7 +1247,7 @@ function retryImport(factory, retries = 2, delayMs = 350) {
1247
1247
  });
1248
1248
  }
1249
1249
  function lazyWorkflowGraph() {
1250
- return lazy(() => retryImport(() => import("./WorkflowGraph-BDjc7V_U.js").then((m) => ({ default: m.WorkflowGraph }))));
1250
+ return lazy(() => retryImport(() => import("./WorkflowGraph-BcGSF2W_.js").then((m) => ({ default: m.WorkflowGraph }))));
1251
1251
  }
1252
1252
  var GraphErrorBoundary = class extends Component {
1253
1253
  state = { hasError: false };
@@ -1307,7 +1307,7 @@ function WorkflowGraph(props) {
1307
1307
  * taking the pane down.
1308
1308
  */
1309
1309
  function lazyCanvas() {
1310
- return lazy(() => retryImport(() => import("./AgentGraphCanvas-Bcxq-e6E.js").then((m) => ({ default: m.AgentGraphCanvas }))));
1310
+ return lazy(() => retryImport(() => import("./AgentGraphCanvas-BwFppclI.js").then((m) => ({ default: m.AgentGraphCanvas }))));
1311
1311
  }
1312
1312
  /** The agents as a list, for when the canvas cannot load. */
1313
1313
  function AgentListFallback({ nodes, selectedId, onSelect, className, onRetry }) {
@@ -1,7 +1,7 @@
1
1
  import { t as MOTION_CONTROL } from "./motion-Bn7ESHrj.js";
2
- import { d as quietActivity, f as syncAmbient, g as useRunNow, h as useMotionAllowed, i as fmtCost, m as useAttention, o as fmtEventTime, p as tokenMilliseconds, s as fmtTokenTotal, u as ambientStyle } from "./AgentGraph-C1DsA-Rd.js";
3
- import { t as LatestEvents } from "./latest-events-B34ElSTE.js";
4
- import { P as shortModel, m as edgeColor, o as RESTING_BORDER, r as NodeMark, s as RESTING_SHADOW, t as KIND_ACCENT } from "./node-ui-Bfnh08U3.js";
2
+ import { d as quietActivity, f as syncAmbient, g as useRunNow, h as useMotionAllowed, i as fmtCost, m as useAttention, o as fmtEventTime, p as tokenMilliseconds, s as fmtTokenTotal, u as ambientStyle } from "./AgentGraph-P7V_oEOv.js";
3
+ import { t as LatestEvents } from "./latest-events-MXv4SYzc.js";
4
+ import { P as shortModel, m as edgeColor, o as RESTING_BORDER, r as NodeMark, s as RESTING_SHADOW, t as KIND_ACCENT } from "./node-ui-C1WEjoGO.js";
5
5
  import { i as loadElk, r as useColorMode, t as SELECTION_OUTLINE } from "./canvas-theme-DGd0fm1H.js";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
7
  import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
@@ -1093,9 +1093,12 @@ function AgentGraphCanvas({ nodes, edges, selectedId, onSelect, direction = "TB"
1093
1093
  };
1094
1094
  });
1095
1095
  const caption = /* @__PURE__ */ jsxs("div", {
1096
- className: "flex h-10 shrink-0 items-center gap-3 px-3 text-xs text-muted-foreground",
1096
+ className: "flex min-h-10 shrink-0 flex-wrap items-center gap-x-3 gap-y-1 px-3 py-1 text-xs text-muted-foreground",
1097
1097
  "aria-label": "Run status",
1098
- children: [/* @__PURE__ */ jsxs("span", { children: [nodes.length, " agents"] }), counts.filter((group) => group.matches.length).map((group) => /* @__PURE__ */ jsxs("button", {
1098
+ children: [/* @__PURE__ */ jsxs("span", {
1099
+ className: "shrink-0 whitespace-nowrap",
1100
+ children: [nodes.length, " agents"]
1101
+ }), counts.filter((group) => group.matches.length).map((group) => /* @__PURE__ */ jsxs("button", {
1099
1102
  type: "button",
1100
1103
  className: "ag-status-button rounded-full border border-border px-2 py-1",
1101
1104
  style: { color: group.status === "quiet" ? "var(--surface-warning-text)" : agentStatus(group.status).color },
@@ -1,5 +1,5 @@
1
- import { a as fmtDuration, c as fmtTokens, i as fmtCost, r as clampPreview } from "./AgentGraph-C1DsA-Rd.js";
2
- import { A as worstSeverity, E as isStructuralKind, O as triggerNodeIndex, P as shortModel, T as buildWorkflowGraph, _ as problemBorder, a as ProblemMessages, b as statusBorder, c as STATUS_COLOR, f as StatusFooter, g as kindAccent, h as emptySlotLabel, i as ProblemMarker, k as wfEdgeId, l as STATUS_LABEL, m as edgeColor, o as RESTING_BORDER, p as StatusPill, r as NodeMark, s as RESTING_SHADOW, v as problemSurface, x as COMPACT_NODE_SIZE, y as problemTitle } from "./node-ui-Bfnh08U3.js";
1
+ import { a as fmtDuration, c as fmtTokens, i as fmtCost, r as clampPreview } from "./AgentGraph-P7V_oEOv.js";
2
+ import { A as worstSeverity, E as isStructuralKind, O as triggerNodeIndex, P as shortModel, T as buildWorkflowGraph, _ as problemBorder, a as ProblemMessages, b as statusBorder, c as STATUS_COLOR, f as StatusFooter, g as kindAccent, h as emptySlotLabel, i as ProblemMarker, k as wfEdgeId, l as STATUS_LABEL, m as edgeColor, o as RESTING_BORDER, p as StatusPill, r as NodeMark, s as RESTING_SHADOW, v as problemSurface, x as COMPACT_NODE_SIZE, y as problemTitle } from "./node-ui-C1WEjoGO.js";
3
3
  import { n as classifyOutput, t as NodeOutputBody } from "./node-output-DlySTwxr.js";
4
4
  import { i as loadElk, n as motionAllowed, r as useColorMode, t as SELECTION_OUTLINE } from "./canvas-theme-DGd0fm1H.js";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
package/dist/globals.css CHANGED
@@ -9365,6 +9365,22 @@
9365
9365
  transition: opacity var(--duration-fast);
9366
9366
  }
9367
9367
  }
9368
+ .ag-status-button {
9369
+ display: inline-flex;
9370
+ align-items: center;
9371
+ min-width: 0;
9372
+ max-width: max-content;
9373
+ flex: 1 1 0%;
9374
+ gap: 6px;
9375
+ }
9376
+ .ag-caption-target {
9377
+ flex: 1;
9378
+ min-width: 0;
9379
+ overflow: hidden;
9380
+ text-overflow: ellipsis;
9381
+ white-space: nowrap;
9382
+ font-weight: 600;
9383
+ }
9368
9384
  @container (width < 600px) {
9369
9385
  .ag-live-card {
9370
9386
  height: auto;
@@ -9380,6 +9396,9 @@
9380
9396
  .ag-caption-target {
9381
9397
  display: none;
9382
9398
  }
9399
+ .ag-status-button {
9400
+ flex: 0 0 auto;
9401
+ }
9383
9402
  .ag-live-card.ag-live-chip {
9384
9403
  min-height: 40px;
9385
9404
  height: 40px;
@@ -9410,18 +9429,6 @@
9410
9429
  .ag-agent-card[data-status="needs-you"] p {
9411
9430
  -webkit-line-clamp: 1;
9412
9431
  }
9413
- .ag-status-button {
9414
- display: inline-flex;
9415
- align-items: center;
9416
- min-width: 0;
9417
- gap: 6px;
9418
- }
9419
- .ag-caption-target {
9420
- overflow: hidden;
9421
- text-overflow: ellipsis;
9422
- white-space: nowrap;
9423
- font-weight: 600;
9424
- }
9425
9432
  .ag-latest {
9426
9433
  flex: none;
9427
9434
  min-width: 0;
package/dist/index.js CHANGED
@@ -12,8 +12,8 @@ import { a as CodeSurface, i as CODE_THEME, n as buildUnifiedPatch, r as compute
12
12
  import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-DXsoPale.js";
13
13
  import { OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, OpenUIArtifactRenderer, findUnsupportedOpenUINode, validateOpenUIJsonArtifact, validateOpenUIJsonNode } from "./openui.js";
14
14
  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";
15
- 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-BqpdpP1K.js";
16
- import { t as LatestEvents } from "./latest-events-B34ElSTE.js";
15
+ 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-ByG1psJn.js";
16
+ import { t as LatestEvents } from "./latest-events-MXv4SYzc.js";
17
17
  import "./vault-tree.js";
18
18
  import { a as TangleLoginButton, i as UserMenu, n as GitHubLoginButton, r as LoginLayout, t as AuthHeader } from "./auth-BDpoZ_2f.js";
19
19
  import { t as AgentMessagingConnection } from "./connections-DymjzHe_.js";
@@ -1,4 +1,4 @@
1
- import { g as useRunNow, h as useMotionAllowed, o as fmtEventTime, p as tokenMilliseconds } from "./AgentGraph-C1DsA-Rd.js";
1
+ import { g as useRunNow, h as useMotionAllowed, o as fmtEventTime, p as tokenMilliseconds } from "./AgentGraph-P7V_oEOv.js";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
4
4
  import { RunStatusIcon, statusMeta } from "@tangle-network/ui/run";
@@ -1,6 +1,6 @@
1
1
  import { i as modelBrandFor, t as ModelBrandStack } from "./model-brand-bTcMjQtB.js";
2
2
  import { t as ProviderIcon } from "./provider-logo-CPKRPHcS.js";
3
- import { r as clampPreview } from "./AgentGraph-C1DsA-Rd.js";
3
+ import { r as clampPreview } from "./AgentGraph-P7V_oEOv.js";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import { AlertTriangle, Bell, Box, Cable, Camera, Circle, Clock, Code, GitBranch, Repeat, ScanSearch, Sparkles, UserCheck, Webhook, Zap } from "lucide-react";
6
6
  import { RunStatusIcon, statusMeta } from "@tangle-network/ui/run";
@@ -1,8 +1,8 @@
1
1
  import { t as cn } from "./utils-BER_bdgE.js";
2
2
  import { i as modelBrandFor, t as ModelBrandStack } from "./model-brand-bTcMjQtB.js";
3
3
  import { t as ProviderIcon } from "./provider-logo-CPKRPHcS.js";
4
- import { f as syncAmbient, l as activityTiming, t as AgentGraph, u as ambientStyle } from "./AgentGraph-C1DsA-Rd.js";
5
- import { t as LatestEvents } from "./latest-events-B34ElSTE.js";
4
+ import { f as syncAmbient, l as activityTiming, t as AgentGraph, u as ambientStyle } from "./AgentGraph-P7V_oEOv.js";
5
+ import { t as LatestEvents } from "./latest-events-MXv4SYzc.js";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  import { useEffect, useLayoutEffect, useMemo, useReducer, useRef, useState } from "react";
8
8
  import { X } from "lucide-react";
package/dist/run.js CHANGED
@@ -1,3 +1,3 @@
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-BqpdpP1K.js";
2
- import { t as LatestEvents } from "./latest-events-B34ElSTE.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-ByG1psJn.js";
2
+ import { t as LatestEvents } from "./latest-events-MXv4SYzc.js";
3
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 };
package/dist/styles.css CHANGED
@@ -9365,6 +9365,22 @@
9365
9365
  transition: opacity var(--duration-fast);
9366
9366
  }
9367
9367
  }
9368
+ .ag-status-button {
9369
+ display: inline-flex;
9370
+ align-items: center;
9371
+ min-width: 0;
9372
+ max-width: max-content;
9373
+ flex: 1 1 0%;
9374
+ gap: 6px;
9375
+ }
9376
+ .ag-caption-target {
9377
+ flex: 1;
9378
+ min-width: 0;
9379
+ overflow: hidden;
9380
+ text-overflow: ellipsis;
9381
+ white-space: nowrap;
9382
+ font-weight: 600;
9383
+ }
9368
9384
  @container (width < 600px) {
9369
9385
  .ag-live-card {
9370
9386
  height: auto;
@@ -9380,6 +9396,9 @@
9380
9396
  .ag-caption-target {
9381
9397
  display: none;
9382
9398
  }
9399
+ .ag-status-button {
9400
+ flex: 0 0 auto;
9401
+ }
9383
9402
  .ag-live-card.ag-live-chip {
9384
9403
  min-height: 40px;
9385
9404
  height: 40px;
@@ -9410,18 +9429,6 @@
9410
9429
  .ag-agent-card[data-status="needs-you"] p {
9411
9430
  -webkit-line-clamp: 1;
9412
9431
  }
9413
- .ag-status-button {
9414
- display: inline-flex;
9415
- align-items: center;
9416
- min-width: 0;
9417
- gap: 6px;
9418
- }
9419
- .ag-caption-target {
9420
- overflow: hidden;
9421
- text-overflow: ellipsis;
9422
- white-space: nowrap;
9423
- font-weight: 600;
9424
- }
9425
9432
  .ag-latest {
9426
9433
  flex: none;
9427
9434
  min-width: 0;
package/dist/tailwind.css CHANGED
@@ -921,11 +921,14 @@
921
921
  .ag-phone-select { width: 100%; height: 100%; text-align: left; background: transparent; padding: 0; border: 0; color: inherit; cursor: pointer; }
922
922
  .agent-graph .react-flow__node-liveAgent:focus-visible .ag-live-card, .agent-graph .react-flow__node-agent:focus-visible > div, .ag-phone-select:focus-visible { outline: 2px solid hsl(var(--foreground) / .7); outline-offset: 2px; }
923
923
  @media (prefers-reduced-motion: reduce) { .ag-live-card { animation: none; transition: opacity var(--duration-fast); } }
924
+ .ag-status-button { display: inline-flex; align-items: center; min-width: 0; max-width: max-content; flex: 1 1 0%; gap: 6px; }
925
+ .ag-caption-target { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
924
926
  @container (width < 600px) {
925
927
  .ag-live-card { height: auto; min-height: 164px; }
926
928
  .ag-live-card[data-sparse="true"] { min-height: 88px; }
927
929
  .ag-phone-select .ag-agent-card { height: auto; min-height: 88px; }
928
930
  .ag-caption-target { display: none; }
931
+ .ag-status-button { flex: 0 0 auto; }
929
932
  .ag-live-card.ag-live-chip { min-height: 40px; height: 40px; }
930
933
  }
931
934
  .ag-live-accounting { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
@@ -933,8 +936,6 @@
933
936
  .ag-live-chip-cost { flex: none; font-size: 12px; color: var(--ag-muted); font-variant-numeric: tabular-nums; }
934
937
  .ag-parent-label { color: var(--ag-muted); font-size: 12px; font-weight: 400; }
935
938
  .ag-agent-card[data-status="needs-you"] p { -webkit-line-clamp: 1; }
936
- .ag-status-button { display: inline-flex; align-items: center; min-width: 0; gap: 6px; }
937
- .ag-caption-target { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
938
939
  .ag-latest { flex: none; min-width: 0; border-bottom: 1px solid hsl(var(--border)); padding: 8px 12px; color: hsl(var(--foreground)); font-size: 12px; line-height: 16px; }
939
940
  .ag-latest header { display: flex; align-items: center; min-height: 24px; gap: 8px; }
940
941
  .ag-latest header > span { color: hsl(var(--muted-foreground)); }
package/dist/workflows.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { i as modelBrandFor, t as ModelBrandStack } from "./model-brand-bTcMjQtB.js";
2
- import { n as WorkflowGraph, t as AgentGraph } from "./AgentGraph-C1DsA-Rd.js";
3
- import { C as actionNodeId, D as triggerNodeId, M as humanizeIdentifier, N as parseActionPath, O as triggerNodeIndex, P as shortModel, S as TRIGGER_NODE_ID, T as buildWorkflowGraph, c as STATUS_COLOR, d as STATUS_TONE, j as actionPathLabel, l as STATUS_LABEL, n as KIND_ICON, p as StatusPill, r as NodeMark, u as STATUS_PILL, w as branchNodeId } from "./node-ui-Bfnh08U3.js";
2
+ import { n as WorkflowGraph, t as AgentGraph } from "./AgentGraph-P7V_oEOv.js";
3
+ import { C as actionNodeId, D as triggerNodeId, M as humanizeIdentifier, N as parseActionPath, O as triggerNodeIndex, P as shortModel, S as TRIGGER_NODE_ID, T as buildWorkflowGraph, c as STATUS_COLOR, d as STATUS_TONE, j as actionPathLabel, l as STATUS_LABEL, n as KIND_ICON, p as StatusPill, r as NodeMark, u as STATUS_PILL, w as branchNodeId } from "./node-ui-C1WEjoGO.js";
4
4
  import { n as classifyOutput, r as condenseText, t as NodeOutputBody } from "./node-output-DlySTwxr.js";
5
5
  export { AgentGraph, KIND_ICON, ModelBrandStack, NodeMark, NodeOutputBody, StatusPill as NodeStatusPill, STATUS_COLOR, STATUS_LABEL, STATUS_PILL, STATUS_TONE, TRIGGER_NODE_ID, WorkflowGraph as WorkflowGraphLazy, actionNodeId, actionPathLabel, branchNodeId, buildWorkflowGraph, classifyOutput, condenseText, humanizeIdentifier, modelBrandFor, parseActionPath, shortModel, triggerNodeId, triggerNodeIndex };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/sandbox-ui",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
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": {