@tangle-network/sandbox-ui 2.0.11 → 2.0.12

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.
@@ -1,5 +1,5 @@
1
1
  import { t as cn$1 } from "./utils-BER_bdgE.js";
2
- import { a as PortsList } from "./dashboard-FMrtIe9S.js";
2
+ import { a as PortsList } from "./dashboard-CaakZjMp.js";
3
3
  import { n as TerminalView } from "./terminal-nUCznZRj.js";
4
4
  import { RichFileTree } from "./files.js";
5
5
  import { a as CodeSurface, n as buildUnifiedPatch, r as computeDiffStats, t as DiffView } from "./diff-view-B9mNeTLF.js";
package/dist/workbench.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as DiffStatsBadge, c as PillTabs, i as FileBreadcrumb, n as SandboxArtifactPane, o as GitStatusBadge, r as CodeView, s as PanelHeader, t as ChangesPane } from "./workbench-BVnZNhP2.js";
1
+ import { a as DiffStatsBadge, c as PillTabs, i as FileBreadcrumb, n as SandboxArtifactPane, o as GitStatusBadge, r as CodeView, s as PanelHeader, t as ChangesPane } from "./workbench-Bailf8N4.js";
2
2
  import { a as CodeSurface, i as CODE_THEME, n as buildUnifiedPatch, r as computeDiffStats, t as DiffView } from "./diff-view-B9mNeTLF.js";
3
3
  import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-DXsoPale.js";
4
4
  export { CODE_THEME, ChangesPane, CodeSurface, CodeView, DiffStatsBadge, DiffView, EmbeddedAppView, FileBreadcrumb, GitStatusBadge, PanelHeader, PillTabs, PreviewView, SandboxArtifactPane, buildUnifiedPatch, computeDiffStats };
@@ -1,8 +1,9 @@
1
1
  import { n as ModelBrandStack, o as modelBrandFor, t as ModelBrandIdentity } from "./model-brand-ZwVS49Fq.js";
2
- import { a as AgentGraphTool, c as AgentGraphEdge, d as AgentGraphNode, f as AgentGraphStatus, i as AgentGraphCallKind, l as AgentGraphEdgeKind, n as AgentGraphProps, o as AgentGraphActivity, r as AgentGraphCall, s as AgentGraphDirection, t as AgentGraph, u as AgentGraphEvent } from "./AgentGraph-DzdpPFEI.js";
2
+ import { a as AgentGraphDirection, c as AgentGraphEvent, d as AgentGraphStatus, f as AgentGraphTool, i as AgentGraphCallKind, l as AgentGraphNode, n as AgentGraphActivity, o as AgentGraphEdge, r as AgentGraphCall, s as AgentGraphEdgeKind, t as AgentGraph, u as AgentGraphProps } from "./AgentGraph-P7l-jZwo.js";
3
3
  import { StatusTone } from "@tangle-network/ui/primitives";
4
- import { Component, ReactElement, ReactNode } from "react";
4
+ import { ReactElement } from "react";
5
5
  import { LucideIcon } from "lucide-react";
6
+ import { ActionPathParts, LeadCase, actionPathLabel, humanizeIdentifier, parseActionPath, shortModel } from "@tangle-network/charts/react/agent-graph/presentation";
6
7
  import "@xyflow/react";
7
8
  import "@xyflow/react/dist/style.css";
8
9
  /**
@@ -543,62 +544,6 @@ export declare function NodeMark({ kind, provider, model, accent, tile }: {
543
544
  /** Edge length of the square the mark is centered in. */
544
545
  tile: number;
545
546
  }): import("react").JSX.Element;
546
- /**
547
- * Human-facing naming for workflow nodes. A definition addresses things by
548
- * machine identifier — an action kind (`agent.run`), a hub action path
549
- * (`github.pulls.reviews.create`), a profile slug (`pr-reviewer`) — and showing
550
- * those verbatim on a node makes the graph read like a config file. These turn
551
- * an identifier into the label a person would say out loud.
552
- *
553
- * Pure and dependency-free so the naming rules are unit-testable without the
554
- * YAML parser or a render.
555
- */
556
- /** How the first word of a humanized identifier is cased. An initialism is
557
- * ALWAYS upper-cased whichever is chosen — that is the whole point of the table
558
- * above, and `.toLowerCase()`ing the result afterwards silently undoes it
559
- * ("List API keys" → "list api keys"). */
560
- type LeadCase = "sentence" | "lower" | "title";
561
- /**
562
- * Humanize a machine identifier: `pr-reviewer` → "PR reviewer", `sandbox.spawn`
563
- * → "Sandbox spawn", `postMessage` → "Post message". Known initialisms are
564
- * upper-cased wherever they appear; `lead` picks the case of the rest.
565
- *
566
- * - `sentence` (default): "Create issue comment" — a label or a title.
567
- * - `lower`: "create issue comment" — a fragment that sits INSIDE a phrase
568
- * ("On pull request"), where a capital would read as a new sentence. An
569
- * initialism still wins: `ci_run_completed` → "CI run completed", never
570
- * "cI run completed".
571
- * - `title`: "Google Sheets" — a brand/proper name.
572
- *
573
- * An identifier that carries no word characters is returned verbatim rather than
574
- * blanked.
575
- */
576
- export declare function humanizeIdentifier(id: string, lead?: LeadCase): string;
577
- /** A model slug without its provider prefix (`anthropic/claude-sonnet-5` →
578
- * `claude-sonnet-5`) — the vendor is noise on a card whose width is the scarce
579
- * resource, and the full slug stays in the node's config for the detail view. */
580
- export declare function shortModel(model: string): string;
581
- /** The parts of a hub action path (`<provider>.<resource…>.<operation>`). */
582
- interface ActionPathParts {
583
- /** The connector the action runs against (`github`). */
584
- provider: string;
585
- /** The trailing verb (`create`). */
586
- operation: string;
587
- /** Everything between provider and operation (`pulls.reviews`), when present —
588
- * a two-segment path (`slack.postMessage`) has no resource. */
589
- resource?: string;
590
- }
591
- /** Split a hub action path into provider / resource / operation. Null when the
592
- * value isn't a dotted path (a `${…}` expression, or a bare word), so callers
593
- * fall back to showing it verbatim instead of inventing structure. */
594
- export declare function parseActionPath(path: string): ActionPathParts | null;
595
- /**
596
- * The operation label for an action path, in n8n's `operation: resource` shape:
597
- * `github.pulls.reviews.create` → "create: pulls.reviews", `slack.postMessage`
598
- * → "post message". The provider names the node itself (its title + logo), so
599
- * it is deliberately absent here. A path we can't split is shown verbatim.
600
- */
601
- export declare function actionPathLabel(path: string): string;
602
547
  /** The recovered shape of an output preview. */
603
548
  type OutputShape = {
604
549
  kind: "empty";
@@ -667,4 +612,4 @@ export declare function NodeOutputBody({ shape, rows, tone }: {
667
612
  rows?: number | "none";
668
613
  tone?: "default" | "error";
669
614
  }): ReactElement | null;
670
- export { type ActionPathParts, AgentGraph, type AgentGraphActivity, type AgentGraphCall, type AgentGraphCallKind, type AgentGraphDirection, type AgentGraphEdge, type AgentGraphEdgeKind, type AgentGraphEvent, type AgentGraphNode, type AgentGraphProps, type AgentGraphStatus, type AgentGraphTool, type BuildWorkflowGraphOptions, type LeadCase, type ModelBrandIdentity, ModelBrandStack, StatusPill as NodeStatusPill, type OutputShape, type WfEdge, type WfEdgeKind, type WfEdgeSpec, type WfGraph, type WfNode, type WfNodeData, type WfNodeState, type WfNodeStatus, type WfNodeTone, type WfProblem, type WfProblemSeverity, WorkflowGraph as WorkflowGraphLazy, type WorkflowGraphProps, modelBrandFor };
615
+ export { type ActionPathParts, AgentGraph, type AgentGraphActivity, type AgentGraphCall, type AgentGraphCallKind, type AgentGraphDirection, type AgentGraphEdge, type AgentGraphEdgeKind, type AgentGraphEvent, type AgentGraphNode, type AgentGraphProps, type AgentGraphStatus, type AgentGraphTool, type BuildWorkflowGraphOptions, type LeadCase, type ModelBrandIdentity, ModelBrandStack, StatusPill as NodeStatusPill, type OutputShape, type WfEdge, type WfEdgeKind, type WfEdgeSpec, type WfGraph, type WfNode, type WfNodeData, type WfNodeState, type WfNodeStatus, type WfNodeTone, type WfProblem, type WfProblemSeverity, WorkflowGraph as WorkflowGraphLazy, type WorkflowGraphProps, actionPathLabel, humanizeIdentifier, modelBrandFor, parseActionPath, shortModel };
package/dist/workflows.js CHANGED
@@ -1,5 +1,65 @@
1
1
  import { i as modelBrandFor, t as ModelBrandStack } from "./model-brand-bTcMjQtB.js";
2
- import { n as WorkflowGraph, t as AgentGraph } from "./AgentGraph-CFlI9qta.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-D8dbX86X.js";
2
+ 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, t as AgentGraph, u as STATUS_PILL, w as branchNodeId } from "./AgentGraph-CqLe8WCH.js";
4
3
  import { n as classifyOutput, r as condenseText, t as NodeOutputBody } from "./node-output-DlySTwxr.js";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { Suspense, lazy, useMemo, useState } from "react";
6
+ import { GraphErrorBoundary, retryImport } from "@tangle-network/charts/react/agent-graph/presentation";
7
+ // src/workflows/WorkflowGraphLazy.tsx
8
+ /**
9
+ * Lazy + error-isolated boundary for {@link WorkflowGraph}. React Flow (~50KB)
10
+ * is only needed on the workflow detail page and on workflow proposal cards, so
11
+ * it's code-split out of the always-loaded app shell. The Suspense fallback
12
+ * keeps the caller's height so layout doesn't jump; the error boundary degrades
13
+ * to the raw YAML if the chunk fails
14
+ * to load (offline) or React Flow throws, instead of crashing the panel tree.
15
+ *
16
+ * The chunk import auto-retries a transient failure (a flaky network or an
17
+ * HMR/cache miss) before degrading, and the fallback offers a manual retry that
18
+ * re-attempts the import — so a recoverable failure isn't permanently pinned to
19
+ * the YAML view. A chunk that is gone for good (e.g. an old hash after a deploy)
20
+ * still degrades to the fully-legible YAML; the host can recover those globally
21
+ * via a Vite `vite:preloadError` reload guard.
22
+ */
23
+ function lazyWorkflowGraph() {
24
+ return lazy(() => retryImport(() => import("./WorkflowGraph-s3RZ-ANZ.js").then((m) => ({ default: m.WorkflowGraph }))));
25
+ }
26
+ /** Graceful degradation when the graph can't render: the workflow is still
27
+ * fully legible as YAML, with a retry for a recoverable load failure. */
28
+ function GraphFallback({ yaml, className, onRetry }) {
29
+ return /* @__PURE__ */ jsxs("div", {
30
+ className: `overflow-auto rounded-lg border border-border bg-background p-2 ${className ?? ""}`,
31
+ children: [/* @__PURE__ */ jsxs("div", {
32
+ className: "mb-1 flex items-center justify-between gap-2",
33
+ children: [/* @__PURE__ */ jsx("p", {
34
+ className: "text-muted-foreground text-xs",
35
+ children: "Couldn't render the graph — showing the definition."
36
+ }), /* @__PURE__ */ jsx("button", {
37
+ type: "button",
38
+ onClick: onRetry,
39
+ className: "shrink-0 rounded border border-border px-1.5 py-0.5 text-muted-foreground text-xs transition hover:text-foreground",
40
+ children: "Retry"
41
+ })]
42
+ }), /* @__PURE__ */ jsx("pre", {
43
+ className: "text-foreground text-xs",
44
+ children: /* @__PURE__ */ jsx("code", { children: yaml })
45
+ })]
46
+ });
47
+ }
48
+ function WorkflowGraph(props) {
49
+ const [attempt, setAttempt] = useState(0);
50
+ const Impl = useMemo(() => lazyWorkflowGraph(), [attempt]);
51
+ return /* @__PURE__ */ jsx(GraphErrorBoundary, {
52
+ fallback: /* @__PURE__ */ jsx(GraphFallback, {
53
+ ...props,
54
+ onRetry: () => setAttempt((a) => a + 1)
55
+ }),
56
+ children: /* @__PURE__ */ jsx(Suspense, {
57
+ fallback: /* @__PURE__ */ jsx("div", {
58
+ className: `flex items-center justify-center rounded-lg border border-border border-dashed text-text-muted text-xs ${props.className ?? ""}`,
59
+ children: "Loading graph…"
60
+ }),
61
+ children: /* @__PURE__ */ jsx(Impl, { ...props })
62
+ })
63
+ }, `${props.yaml}::${attempt}`);
64
+ }
5
65
  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 };
@@ -1,6 +1,6 @@
1
1
  import { t as cn$1 } from "./utils-BER_bdgE.js";
2
2
  import { r as ShellHeader } from "./shell-header-CwqDzC4I.js";
3
- import { t as MOTION_CONTROL } from "./motion-Bn7ESHrj.js";
3
+ import { t as MOTION_CONTROL } from "./motion-2Ine0j_s.js";
4
4
  import { i as VaultTree, n as filterFileNodes, t as fileTreeFromPaths } from "./tree-data-C8CNt4WE.js";
5
5
  import { ArtifactPane, ArtifactPane as ArtifactPane$1, Button, EmptyState, Input, SegmentedControl, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@tangle-network/ui/primitives";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -1469,7 +1469,7 @@ function SessionSidebar({ title, subtitle, projectId = null, items, currentItemI
1469
1469
  type: "button",
1470
1470
  onClick: onCollapse,
1471
1471
  "aria-label": "Hide chats",
1472
- className: cn$1("flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-surface-container hover:text-foreground", "[transition:color_var(--motion-control),background-color_var(--motion-control),border-color_var(--motion-control),box-shadow_var(--motion-control),transform_var(--motion-control),scale_var(--motion-control),opacity_var(--motion-control)] motion-reduce:transition-none"),
1472
+ className: cn$1("flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-surface-container hover:text-foreground", MOTION_CONTROL),
1473
1473
  children: /* @__PURE__ */ jsx(PanelLeftClose, { className: "h-4 w-4" })
1474
1474
  })
1475
1475
  ]
@@ -1499,7 +1499,7 @@ function SessionSidebar({ title, subtitle, projectId = null, items, currentItemI
1499
1499
  type: "button",
1500
1500
  onClick: onCreate,
1501
1501
  title: createLabel,
1502
- className: cn$1("flex h-7 w-7 items-center justify-center rounded-[var(--radius-sm)] border border-[var(--md3-outline-variant)] text-muted-foreground transition-colors hover:bg-[var(--accent-surface-soft)] hover:text-foreground", "[transition:color_var(--motion-control),background-color_var(--motion-control),border-color_var(--motion-control),box-shadow_var(--motion-control),transform_var(--motion-control),scale_var(--motion-control),opacity_var(--motion-control)] motion-reduce:transition-none"),
1502
+ className: cn$1("flex h-7 w-7 items-center justify-center rounded-[var(--radius-sm)] border border-[var(--md3-outline-variant)] text-muted-foreground transition-colors hover:bg-[var(--accent-surface-soft)] hover:text-foreground", MOTION_CONTROL),
1503
1503
  children: /* @__PURE__ */ jsx(Plus, { className: "h-3.5 w-3.5" })
1504
1504
  })]
1505
1505
  })]
@@ -1513,7 +1513,7 @@ function SessionSidebar({ title, subtitle, projectId = null, items, currentItemI
1513
1513
  onChange: (event) => setQuery(event.target.value),
1514
1514
  placeholder: searchPlaceholder,
1515
1515
  "aria-label": searchPlaceholder,
1516
- className: cn$1(quiet ? `h-8 w-full rounded-md border-0 bg-transparent pl-7 pr-2 text-sm text-foreground placeholder:text-muted-foreground transition-colors focus-visible:bg-surface-container ${focusRing}` : `h-8 w-full rounded-[var(--radius-sm)] border bg-surface-container-lowest pl-7 pr-2 text-sm text-foreground placeholder:text-muted-foreground ${focusField}`, "[transition:color_var(--motion-control),background-color_var(--motion-control),border-color_var(--motion-control),box-shadow_var(--motion-control),transform_var(--motion-control),scale_var(--motion-control),opacity_var(--motion-control)] motion-reduce:transition-none")
1516
+ className: cn$1(quiet ? `h-8 w-full rounded-md border-0 bg-transparent pl-7 pr-2 text-sm text-foreground placeholder:text-muted-foreground transition-colors focus-visible:bg-surface-container ${focusRing}` : `h-8 w-full rounded-[var(--radius-sm)] border bg-surface-container-lowest pl-7 pr-2 text-sm text-foreground placeholder:text-muted-foreground ${focusField}`, MOTION_CONTROL)
1517
1517
  })]
1518
1518
  }), filters.length > 0 && /* @__PURE__ */ jsx("div", {
1519
1519
  className: cn$1("flex flex-wrap gap-1", enableSearch && items.length > 0 && "mt-2"),
@@ -1522,7 +1522,7 @@ function SessionSidebar({ title, subtitle, projectId = null, items, currentItemI
1522
1522
  return /* @__PURE__ */ jsxs("button", {
1523
1523
  type: "button",
1524
1524
  onClick: () => setActiveFilterId(filter.id),
1525
- className: cn$1("inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs font-medium transition-colors", "[transition:color_var(--motion-control),background-color_var(--motion-control),border-color_var(--motion-control),box-shadow_var(--motion-control),transform_var(--motion-control),scale_var(--motion-control),opacity_var(--motion-control)] motion-reduce:transition-none", isSelected ? "border-[var(--border-accent)] bg-[var(--accent-surface-soft)] text-primary" : "border-[var(--md3-outline-variant)] text-muted-foreground hover:text-foreground"),
1525
+ className: cn$1("inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs font-medium transition-colors", MOTION_CONTROL, isSelected ? "border-[var(--border-accent)] bg-[var(--accent-surface-soft)] text-primary" : "border-[var(--md3-outline-variant)] text-muted-foreground hover:text-foreground"),
1526
1526
  children: [/* @__PURE__ */ jsx("span", { children: filter.label }), /* @__PURE__ */ jsx("span", {
1527
1527
  className: "text-[11px] opacity-60",
1528
1528
  children: filterCounts[filter.id] ?? 0
@@ -1574,7 +1574,7 @@ function SessionSidebar({ title, subtitle, projectId = null, items, currentItemI
1574
1574
  }
1575
1575
  navigateToHref(link.href);
1576
1576
  },
1577
- className: cn$1("flex w-full items-center gap-2 rounded-[var(--radius-sm)] px-3 py-2 text-left text-sm text-muted-foreground transition-colors hover:bg-accent/30 hover:text-foreground", "[transition:color_var(--motion-control),background-color_var(--motion-control),border-color_var(--motion-control),box-shadow_var(--motion-control),transform_var(--motion-control),scale_var(--motion-control),opacity_var(--motion-control)] motion-reduce:transition-none"),
1577
+ className: cn$1("flex w-full items-center gap-2 rounded-[var(--radius-sm)] px-3 py-2 text-left text-sm text-muted-foreground transition-colors hover:bg-accent/30 hover:text-foreground", MOTION_CONTROL),
1578
1578
  children: [/* @__PURE__ */ jsx(Icon, { className: "h-4 w-4 shrink-0" }), /* @__PURE__ */ jsx("span", {
1579
1579
  className: "truncate",
1580
1580
  children: link.label
@@ -1584,7 +1584,7 @@ function SessionSidebar({ title, subtitle, projectId = null, items, currentItemI
1584
1584
  })
1585
1585
  }),
1586
1586
  resizable && /* @__PURE__ */ jsx("div", {
1587
- className: cn$1("absolute top-0 right-0 bottom-0 w-1 cursor-col-resize hover:bg-[var(--accent-surface-soft)] active:bg-[var(--border-accent)] transition-colors", "[transition:color_var(--motion-control),background-color_var(--motion-control),border-color_var(--motion-control),box-shadow_var(--motion-control),transform_var(--motion-control),scale_var(--motion-control),opacity_var(--motion-control)] motion-reduce:transition-none"),
1587
+ className: cn$1("absolute top-0 right-0 bottom-0 w-1 cursor-col-resize hover:bg-[var(--accent-surface-soft)] active:bg-[var(--border-accent)] transition-colors", MOTION_CONTROL),
1588
1588
  onPointerDown: resize.onPointerDown,
1589
1589
  onPointerMove: resize.onPointerMove,
1590
1590
  onPointerUp: resize.onPointerUp,
package/dist/workspace.js CHANGED
@@ -1,3 +1,3 @@
1
1
  import { i as WorkspacePaneHeader, n as SHELL_INSET_GUTTER, r as ShellHeader, t as SHELL_HEADER_HEIGHT } from "./shell-header-CwqDzC4I.js";
2
- import { C as WorkspaceSurfaceTitle, S as WorkspaceSurfaceFrame, _ as StatusBar, a as TaskBoard, b as WorkspaceLayout, c as createShellShouldRevalidate, d as SESSION_CREATED_EVENT, f as dispatchSessionCreated, g as TerminalPanel, h as RuntimePane, i as CalendarView, l as shellShouldRevalidate, m as formatRelativeAge, n as WorkspaceFilesPane, o as SandboxWorkbench, p as useOptimisticSessionItems, r as ApprovalQueue, s as WorkspaceArtifactView, t as ArtifactPane, u as SessionSidebar, v as StatusBanner, x as WorkspaceSurface, y as DirectoryPane } from "./workspace-CdcRUl-H.js";
2
+ import { C as WorkspaceSurfaceTitle, S as WorkspaceSurfaceFrame, _ as StatusBar, a as TaskBoard, b as WorkspaceLayout, c as createShellShouldRevalidate, d as SESSION_CREATED_EVENT, f as dispatchSessionCreated, g as TerminalPanel, h as RuntimePane, i as CalendarView, l as shellShouldRevalidate, m as formatRelativeAge, n as WorkspaceFilesPane, o as SandboxWorkbench, p as useOptimisticSessionItems, r as ApprovalQueue, s as WorkspaceArtifactView, t as ArtifactPane, u as SessionSidebar, v as StatusBanner, x as WorkspaceSurface, y as DirectoryPane } from "./workspace-CJnBqCqj.js";
3
3
  export { ApprovalQueue, ArtifactPane, CalendarView, DirectoryPane, RuntimePane, SESSION_CREATED_EVENT, SHELL_HEADER_HEIGHT, SHELL_INSET_GUTTER, SandboxWorkbench, SessionSidebar, ShellHeader, StatusBanner, StatusBar, TaskBoard, TerminalPanel, WorkspaceArtifactView, WorkspaceFilesPane, WorkspaceLayout, WorkspacePaneHeader, WorkspaceSurface, WorkspaceSurfaceFrame, WorkspaceSurfaceTitle, createShellShouldRevalidate, dispatchSessionCreated, formatRelativeAge, shellShouldRevalidate, useOptimisticSessionItems };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/sandbox-ui",
3
- "version": "2.0.11",
3
+ "version": "2.0.12",
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": {
@@ -142,7 +142,7 @@
142
142
  "@nanostores/react": ">=0.8.4 <2.0.0",
143
143
  "@tangle-network/agent-interface": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^5.2.0",
144
144
  "@tangle-network/brand": "^1.31.1",
145
- "@tangle-network/charts": "^2.0.9",
145
+ "@tangle-network/charts": "^2.0.14",
146
146
  "@tangle-network/ui": "^11.51.1",
147
147
  "@tanstack/react-query": "^5.0.0",
148
148
  "@tiptap/core": ">=3.20.4 <4.0.0",
@@ -241,7 +241,7 @@
241
241
  "@tailwindcss/postcss": "^4.3.3",
242
242
  "@tangle-network/agent-interface": "5.10.2",
243
243
  "@tangle-network/brand": "^1.31.1",
244
- "@tangle-network/charts": "^2.0.9",
244
+ "@tangle-network/charts": "2.0.14",
245
245
  "@tanstack/react-query": "^5.104.5",
246
246
  "@testing-library/dom": "^10.4.2",
247
247
  "@testing-library/jest-dom": "^7.0.1",
@@ -284,12 +284,11 @@
284
284
  "storybook": "storybook dev -p 6006",
285
285
  "build-storybook": "storybook build",
286
286
  "test:visual": "pnpm build-storybook --quiet && playwright test --grep-invert '17 agents stream' && playwright test tests/visual/run-ui.spec.mjs --grep '17 agents stream' --workers=1 --retries=0",
287
- "signoff": "pnpm lint:motion && pnpm typecheck && pnpm build && pnpm test && pnpm test:package && pnpm test:bridge && pnpm test:visual",
287
+ "signoff": "pnpm typecheck && pnpm build && pnpm test && pnpm test:package && pnpm test:bridge && pnpm test:visual",
288
288
  "test": "vitest run",
289
289
  "test:package": "node scripts/package-smoke.mjs && PACKAGE_OMIT_OPTIONAL_PEERS='[\"@hocuspocus/provider\",\"@tiptap/core\",\"@tiptap/extension-collaboration\",\"@tiptap/extension-collaboration-caret\",\"@tiptap/react\",\"@tiptap/starter-kit\",\"pdfjs-dist\",\"yjs\"]' node scripts/package-smoke.mjs",
290
290
  "test:watch": "vitest",
291
291
  "test:embedded-app-package": "node scripts/embedded-app-package-smoke.mjs",
292
- "test:bridge": "pnpm build && vitest run src/__tests__/re-export-identity.test.ts",
293
- "lint:motion": "node scripts/lint-run-motion.mjs"
292
+ "test:bridge": "pnpm build && vitest run src/__tests__/re-export-identity.test.ts"
294
293
  }
295
294
  }