@tangle-network/sandbox-ui 2.0.11 → 2.0.13
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/{node-ui-D8dbX86X.js → AgentGraph-CqLe8WCH.js} +43 -123
- package/dist/AgentGraph-P7l-jZwo.d.ts +4 -0
- package/dist/{WorkflowGraph-BtJnA5iY.js → WorkflowGraph-s3RZ-ANZ.js} +6 -7
- package/dist/{dashboard-FMrtIe9S.js → dashboard-D3JhmRhe.js} +4 -4
- package/dist/dashboard.js +1 -1
- package/dist/globals.css +1550 -87
- package/dist/{index-BK8KKLNY.d.ts → index-CEtc2U5v.d.ts} +2 -2
- package/dist/{index-BKchjsHk.d.ts → index-q-I_XQu4.d.ts} +6 -16
- package/dist/index.d.ts +2 -2
- package/dist/index.js +6 -7
- package/dist/motion-2Ine0j_s.js +1 -0
- package/dist/primitives-znfPK9NP.js +23 -0
- package/dist/primitives.d.ts +1 -1
- package/dist/primitives.js +1 -1
- package/dist/{record-D-evY-c_.js → record-Dt9gqJee.js} +67 -24
- package/dist/run/record.js +1 -1
- package/dist/{run-CJyFiBG9.js → run-DBTbnQrC.js} +7 -6
- package/dist/run.d.ts +1 -1
- package/dist/run.js +2 -3
- package/dist/styles.css +1550 -87
- package/dist/tailwind.css +1800 -79
- package/dist/{workbench-BVnZNhP2.js → workbench-D9Bm4vMq.js} +1 -1
- package/dist/workbench.js +1 -1
- package/dist/workflows.d.ts +4 -59
- package/dist/workflows.js +62 -2
- package/dist/{workspace-CdcRUl-H.js → workspace-CJnBqCqj.js} +7 -7
- package/dist/workspace.js +1 -1
- package/package.json +5 -6
- package/dist/AgentGraph-CFlI9qta.js +0 -1380
- package/dist/AgentGraph-DzdpPFEI.d.ts +0 -132
- package/dist/AgentGraphCanvas-CmxReSqa.js +0 -1403
- package/dist/canvas-theme-aqWjGbfu.js +0 -55
- package/dist/latest-events-v_vXRyd7.js +0 -169
- package/dist/motion-Bn7ESHrj.js +0 -6
- package/dist/primitives-CCdx5Hh_.js +0 -23
|
@@ -1,9 +1,10 @@
|
|
|
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-CFlI9qta.js";
|
|
4
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
-
import { AlertTriangle, Bell, Box, Cable, Camera, Circle, Clock, Code, GitBranch, Repeat, ScanSearch, Sparkles, UserCheck, Webhook, Zap } from "lucide-react";
|
|
4
|
+
import { AlertTriangle, Bell, Bot, Box, Cable, Camera, Circle, Clock, Code, GitBranch, Repeat, ScanSearch, Sparkles, UserCheck, Webhook, Wrench, Zap } from "lucide-react";
|
|
5
|
+
import { RESTING_BORDER, RESTING_BORDER as RESTING_BORDER$1, RESTING_SHADOW, RESTING_SHADOW as RESTING_SHADOW$1, actionPathLabel, clampPreview, edgeColor, fmtCost, fmtDuration, fmtTokens, humanizeIdentifier, parseActionPath, shortModel } from "@tangle-network/charts/react/agent-graph/presentation";
|
|
6
6
|
import { RunStatusIcon, statusMeta } from "@tangle-network/ui/run";
|
|
7
|
+
import { AgentGraph } from "@tangle-network/charts/react/agent-graph";
|
|
7
8
|
import { parse } from "yaml";
|
|
8
9
|
// src/workflows/cron.ts
|
|
9
10
|
/**
|
|
@@ -125,121 +126,6 @@ function describeCron(expression) {
|
|
|
125
126
|
if (day !== null && day >= 1 && day <= 31) return `Monthly on the ${ordinal(day)} at ${time}`;
|
|
126
127
|
return raw;
|
|
127
128
|
}
|
|
128
|
-
// src/workflows/naming.ts
|
|
129
|
-
/**
|
|
130
|
-
* Human-facing naming for workflow nodes. A definition addresses things by
|
|
131
|
-
* machine identifier — an action kind (`agent.run`), a hub action path
|
|
132
|
-
* (`github.pulls.reviews.create`), a profile slug (`pr-reviewer`) — and showing
|
|
133
|
-
* those verbatim on a node makes the graph read like a config file. These turn
|
|
134
|
-
* an identifier into the label a person would say out loud.
|
|
135
|
-
*
|
|
136
|
-
* Pure and dependency-free so the naming rules are unit-testable without the
|
|
137
|
-
* YAML parser or a render.
|
|
138
|
-
*/
|
|
139
|
-
/** Identifier fragments that read as an initialism, so they are upper-cased
|
|
140
|
-
* whole rather than sentence-cased into "Pr" / "Api". */
|
|
141
|
-
const ACRONYMS = /* @__PURE__ */ new Set([
|
|
142
|
-
"ai",
|
|
143
|
-
"api",
|
|
144
|
-
"cd",
|
|
145
|
-
"ci",
|
|
146
|
-
"cli",
|
|
147
|
-
"cpu",
|
|
148
|
-
"css",
|
|
149
|
-
"csv",
|
|
150
|
-
"db",
|
|
151
|
-
"dns",
|
|
152
|
-
"gpu",
|
|
153
|
-
"html",
|
|
154
|
-
"http",
|
|
155
|
-
"https",
|
|
156
|
-
"id",
|
|
157
|
-
"io",
|
|
158
|
-
"ip",
|
|
159
|
-
"json",
|
|
160
|
-
"llm",
|
|
161
|
-
"mcp",
|
|
162
|
-
"ml",
|
|
163
|
-
"pr",
|
|
164
|
-
"qa",
|
|
165
|
-
"sdk",
|
|
166
|
-
"sla",
|
|
167
|
-
"sql",
|
|
168
|
-
"ssh",
|
|
169
|
-
"ui",
|
|
170
|
-
"url",
|
|
171
|
-
"uuid",
|
|
172
|
-
"vm",
|
|
173
|
-
"yaml"
|
|
174
|
-
]);
|
|
175
|
-
/** Split a machine identifier into its words, on separators and camelCase humps. */
|
|
176
|
-
function words(id) {
|
|
177
|
-
return id.replace(/[._\-/]+/g, " ").replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g, "$1 $2").trim().split(/\s+/).filter(Boolean);
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Humanize a machine identifier: `pr-reviewer` → "PR reviewer", `sandbox.spawn`
|
|
181
|
-
* → "Sandbox spawn", `postMessage` → "Post message". Known initialisms are
|
|
182
|
-
* upper-cased wherever they appear; `lead` picks the case of the rest.
|
|
183
|
-
*
|
|
184
|
-
* - `sentence` (default): "Create issue comment" — a label or a title.
|
|
185
|
-
* - `lower`: "create issue comment" — a fragment that sits INSIDE a phrase
|
|
186
|
-
* ("On pull request"), where a capital would read as a new sentence. An
|
|
187
|
-
* initialism still wins: `ci_run_completed` → "CI run completed", never
|
|
188
|
-
* "cI run completed".
|
|
189
|
-
* - `title`: "Google Sheets" — a brand/proper name.
|
|
190
|
-
*
|
|
191
|
-
* An identifier that carries no word characters is returned verbatim rather than
|
|
192
|
-
* blanked.
|
|
193
|
-
*/
|
|
194
|
-
function humanizeIdentifier(id, lead = "sentence") {
|
|
195
|
-
const parts = words(id);
|
|
196
|
-
if (parts.length === 0) return id;
|
|
197
|
-
return parts.map((word, i) => {
|
|
198
|
-
const lower = word.toLowerCase();
|
|
199
|
-
if (ACRONYMS.has(lower)) return lower.toUpperCase();
|
|
200
|
-
const capitalized = lower.charAt(0).toUpperCase() + lower.slice(1);
|
|
201
|
-
if (lead === "title") return capitalized;
|
|
202
|
-
if (i > 0) return lower;
|
|
203
|
-
return lead === "lower" ? lower : capitalized;
|
|
204
|
-
}).join(" ");
|
|
205
|
-
}
|
|
206
|
-
/** A model slug without its provider prefix (`anthropic/claude-sonnet-5` →
|
|
207
|
-
* `claude-sonnet-5`) — the vendor is noise on a card whose width is the scarce
|
|
208
|
-
* resource, and the full slug stays in the node's config for the detail view. */
|
|
209
|
-
function shortModel(model) {
|
|
210
|
-
const slash = model.lastIndexOf("/");
|
|
211
|
-
return slash === -1 ? model : model.slice(slash + 1);
|
|
212
|
-
}
|
|
213
|
-
/** The charset a hub action path is made of (mirrors the server's path schema:
|
|
214
|
-
* `<provider>.<action…>`, letters/digits/`_`/`-` per segment). A value that
|
|
215
|
-
* isn't one — most importantly a `${…}` mapping expression, which also contains
|
|
216
|
-
* dots — must not be split into a bogus provider (whose brand logo we'd then go
|
|
217
|
-
* and fetch). */
|
|
218
|
-
const ACTION_PATH = /^[a-z0-9_-]+(\.[a-z0-9_-]+)+$/i;
|
|
219
|
-
/** Split a hub action path into provider / resource / operation. Null when the
|
|
220
|
-
* value isn't a dotted path (a `${…}` expression, or a bare word), so callers
|
|
221
|
-
* fall back to showing it verbatim instead of inventing structure. */
|
|
222
|
-
function parseActionPath(path) {
|
|
223
|
-
if (!ACTION_PATH.test(path.trim())) return null;
|
|
224
|
-
const [provider, ...rest] = path.trim().split(".");
|
|
225
|
-
return {
|
|
226
|
-
provider,
|
|
227
|
-
operation: rest[rest.length - 1],
|
|
228
|
-
resource: rest.length > 1 ? rest.slice(0, -1).join(".") : void 0
|
|
229
|
-
};
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* The operation label for an action path, in n8n's `operation: resource` shape:
|
|
233
|
-
* `github.pulls.reviews.create` → "create: pulls.reviews", `slack.postMessage`
|
|
234
|
-
* → "post message". The provider names the node itself (its title + logo), so
|
|
235
|
-
* it is deliberately absent here. A path we can't split is shown verbatim.
|
|
236
|
-
*/
|
|
237
|
-
function actionPathLabel(path) {
|
|
238
|
-
const parts = parseActionPath(path);
|
|
239
|
-
if (!parts) return path;
|
|
240
|
-
const operation = humanizeIdentifier(parts.operation, "lower");
|
|
241
|
-
return parts.resource ? `${operation}: ${parts.resource}` : operation;
|
|
242
|
-
}
|
|
243
129
|
// src/workflows/provider-label.ts
|
|
244
130
|
/**
|
|
245
131
|
* Display label for a connector slug ("github" → "GitHub"). Separate from
|
|
@@ -1288,10 +1174,8 @@ function kindAccent(tone, kind) {
|
|
|
1288
1174
|
return (kind !== void 0 ? KIND_ACCENT[kind] : void 0) ?? TONE_ACCENT[tone];
|
|
1289
1175
|
}
|
|
1290
1176
|
/** Brand shadow channels stay black in dark mode. */
|
|
1291
|
-
const RESTING_SHADOW = "inset 0 1px 0 hsl(var(--foreground) / 0.06), 0 1px 3px hsl(var(--shadow-color) / 0.08)";
|
|
1292
1177
|
/** The resting card border: visible against the canvas in BOTH themes —
|
|
1293
1178
|
* `--border` vanished on dark. */
|
|
1294
|
-
const RESTING_BORDER = "hsl(var(--foreground) / 0.14)";
|
|
1295
1179
|
/** Workflow waiting means human approval; peer waiting remains neutral in agent views. */
|
|
1296
1180
|
const workflowStatus = (status) => status === "waiting" ? "needs-you" : status === "skipped" ? "stopped" : status;
|
|
1297
1181
|
const workflowMeta = (status) => statusMeta(workflowStatus(status));
|
|
@@ -1312,9 +1196,6 @@ const STATUS_PILL = Object.fromEntries(workflowStatuses.map((status) => [status,
|
|
|
1312
1196
|
background: "transparent",
|
|
1313
1197
|
borderColor: "hsl(var(--border))"
|
|
1314
1198
|
}]));
|
|
1315
|
-
function edgeColor(status) {
|
|
1316
|
-
return status === "failed" || status === "waiting" ? STATUS_COLOR[status] : "color-mix(in srgb, hsl(var(--muted-foreground)) 80%, transparent)";
|
|
1317
|
-
}
|
|
1318
1199
|
function statusBorder(status) {
|
|
1319
1200
|
return {
|
|
1320
1201
|
borderColor: status === "failed" || status === "waiting" ? STATUS_COLOR[status] : RESTING_BORDER,
|
|
@@ -1583,4 +1464,43 @@ function NodeMark({ kind, provider, model, accent, tile }) {
|
|
|
1583
1464
|
})
|
|
1584
1465
|
});
|
|
1585
1466
|
}
|
|
1586
|
-
|
|
1467
|
+
// src/workflows/AgentGraph.tsx
|
|
1468
|
+
/** Sandbox identity around the canonical Charts multi-agent topology. */
|
|
1469
|
+
function agentMark(agent, layout, size) {
|
|
1470
|
+
if (layout === "tree") return /* @__PURE__ */ jsx(NodeMark, {
|
|
1471
|
+
kind: "agent.run",
|
|
1472
|
+
model: agent.model ?? void 0,
|
|
1473
|
+
accent: KIND_ACCENT["agent.run"],
|
|
1474
|
+
tile: size
|
|
1475
|
+
});
|
|
1476
|
+
const brand = agent.model ? modelBrandFor(agent.model) : null;
|
|
1477
|
+
return brand ? /* @__PURE__ */ jsx("span", {
|
|
1478
|
+
className: "ag-model-mark",
|
|
1479
|
+
children: /* @__PURE__ */ jsx(ModelBrandStack, {
|
|
1480
|
+
identity: brand,
|
|
1481
|
+
size: "sm"
|
|
1482
|
+
})
|
|
1483
|
+
}) : /* @__PURE__ */ jsx(Bot, {
|
|
1484
|
+
size: 16,
|
|
1485
|
+
"aria-hidden": true
|
|
1486
|
+
});
|
|
1487
|
+
}
|
|
1488
|
+
function toolMark(tool, label, size) {
|
|
1489
|
+
return tool?.provider ? /* @__PURE__ */ jsx(ProviderIcon, {
|
|
1490
|
+
id: tool.provider,
|
|
1491
|
+
displayName: label,
|
|
1492
|
+
size: Math.round(size * .46),
|
|
1493
|
+
className: "ag-model-mark"
|
|
1494
|
+
}) : /* @__PURE__ */ jsx(Wrench, {
|
|
1495
|
+
size: size * .4,
|
|
1496
|
+
"aria-hidden": true
|
|
1497
|
+
});
|
|
1498
|
+
}
|
|
1499
|
+
function AgentGraph$1(props) {
|
|
1500
|
+
return /* @__PURE__ */ jsx(AgentGraph, {
|
|
1501
|
+
renderAgentMark: agentMark,
|
|
1502
|
+
renderToolMark: toolMark,
|
|
1503
|
+
...props
|
|
1504
|
+
});
|
|
1505
|
+
}
|
|
1506
|
+
export { worstSeverity as A, actionNodeId as C, triggerNodeId as D, isStructuralKind as E, clampPreview as F, fmtCost as I, fmtDuration as L, humanizeIdentifier as M, parseActionPath as N, triggerNodeIndex as O, shortModel as P, fmtTokens as R, TRIGGER_NODE_ID as S, buildWorkflowGraph as T, problemBorder as _, ProblemMessages as a, statusBorder as b, STATUS_COLOR as c, STATUS_TONE as d, StatusFooter as f, kindAccent as g, emptySlotLabel as h, ProblemMarker as i, actionPathLabel as j, wfEdgeId as k, STATUS_LABEL as l, edgeColor as m, KIND_ICON as n, RESTING_BORDER$1 as o, StatusPill as p, NodeMark as r, RESTING_SHADOW$1 as s, AgentGraph$1 as t, STATUS_PILL as u, problemSurface as v, branchNodeId as w, COMPACT_NODE_SIZE as x, problemTitle as y };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { AgentGraphActivity, AgentGraphCall, AgentGraphCallKind, AgentGraphDirection, AgentGraphEdge, AgentGraphEdgeKind, AgentGraphEvent, AgentGraphNode, AgentGraphProps, AgentGraphStatus, AgentGraphTool } from "@tangle-network/charts/react/agent-graph";
|
|
2
|
+
interface AgentGraphProps$1 extends AgentGraphProps {}
|
|
3
|
+
declare function AgentGraph$1(props: AgentGraphProps$1): import("react").JSX.Element;
|
|
4
|
+
export { AgentGraphDirection as a, AgentGraphEvent as c, AgentGraphStatus as d, AgentGraphTool as f, AgentGraphCallKind as i, AgentGraphNode as l, AgentGraphActivity as n, AgentGraphEdge as o, AgentGraphCall as r, AgentGraphEdgeKind as s, AgentGraph$1 as t, AgentGraphProps$1 as u };
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
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-D8dbX86X.js";
|
|
1
|
+
import { A as worstSeverity, E as isStructuralKind, F as clampPreview, I as fmtCost, L as fmtDuration, O as triggerNodeIndex, P as shortModel, R as fmtTokens, 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$1, p as StatusPill, r as NodeMark, s as RESTING_SHADOW$1, v as problemSurface, x as COMPACT_NODE_SIZE, y as problemTitle } from "./AgentGraph-CqLe8WCH.js";
|
|
3
2
|
import { n as classifyOutput, t as NodeOutputBody } from "./node-output-DlySTwxr.js";
|
|
4
|
-
import { i as loadElk, n as motionAllowed, r as useColorMode, t as SELECTION_OUTLINE } from "./canvas-theme-aqWjGbfu.js";
|
|
5
3
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
4
|
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
7
5
|
import { Expand, Maximize2, Minimize2, Plus, Shrink, X } from "lucide-react";
|
|
6
|
+
import { SELECTION_OUTLINE, loadElk, motionAllowed, useColorMode } from "@tangle-network/charts/react/agent-graph/presentation";
|
|
8
7
|
import { Background, BaseEdge, Controls, EdgeLabelRenderer, Handle, MarkerType, MiniMap, Panel, Position, ReactFlow, ViewportPortal, getSmoothStepPath, getViewportForBounds, useEdgesState, useNodesState, useStore } from "@xyflow/react";
|
|
9
8
|
import "@xyflow/react/dist/style.css";
|
|
10
9
|
// src/workflows/flow-graph.ts
|
|
@@ -1190,8 +1189,8 @@ function WorkflowNode({ id, data, sourcePosition, targetPosition }) {
|
|
|
1190
1189
|
width: 76,
|
|
1191
1190
|
height: 76,
|
|
1192
1191
|
...state ? statusBorder(state.status) : problemSeverity ? problemBorder(problemSeverity) : {
|
|
1193
|
-
borderColor: RESTING_BORDER,
|
|
1194
|
-
boxShadow: RESTING_SHADOW
|
|
1192
|
+
borderColor: RESTING_BORDER$1,
|
|
1193
|
+
boxShadow: RESTING_SHADOW$1
|
|
1195
1194
|
},
|
|
1196
1195
|
...selected ? SELECTION_OUTLINE : {}
|
|
1197
1196
|
},
|
|
@@ -1260,8 +1259,8 @@ function WorkflowNode({ id, data, sourcePosition, targetPosition }) {
|
|
|
1260
1259
|
className: "relative flex h-full w-full flex-col overflow-hidden rounded-xl border bg-card shadow-sm transition-colors",
|
|
1261
1260
|
style: {
|
|
1262
1261
|
...runStatus ? statusBorder(runStatus) : problemSeverity ? problemBorder(problemSeverity) : {
|
|
1263
|
-
borderColor: RESTING_BORDER,
|
|
1264
|
-
boxShadow: RESTING_SHADOW
|
|
1262
|
+
borderColor: RESTING_BORDER$1,
|
|
1263
|
+
boxShadow: RESTING_SHADOW$1
|
|
1265
1264
|
},
|
|
1266
1265
|
...selected ? SELECTION_OUTLINE : {}
|
|
1267
1266
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { D as Button$1, zr as Logo } from "./primitives-
|
|
1
|
+
import { D as Button$1, zr as Logo } from "./primitives-znfPK9NP.js";
|
|
2
2
|
import { t as cn$1 } from "./utils-BER_bdgE.js";
|
|
3
3
|
import { r as ShellHeader } from "./shell-header-CwqDzC4I.js";
|
|
4
|
-
import { n as MOTION_SURFACE, t as MOTION_CONTROL } from "./motion-
|
|
4
|
+
import { n as MOTION_SURFACE, t as MOTION_CONTROL } from "./motion-2Ine0j_s.js";
|
|
5
5
|
import { a as moonshot_default } from "./model-brand-bTcMjQtB.js";
|
|
6
6
|
import "./page-layout-CuOpvZys.js";
|
|
7
7
|
import { Avatar, AvatarFallback, AvatarImage, Dialog, DialogClose, DialogContent, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Sheet, SheetClose, SheetContent, SheetTitle, SheetTrigger, Skeleton, StatCard, StatusPill } from "@tangle-network/ui/primitives";
|
|
@@ -555,7 +555,7 @@ function RailFlyout({ icon: Icon, label, description, isActive, showLabel, title
|
|
|
555
555
|
className: "text-sm font-medium",
|
|
556
556
|
children: label
|
|
557
557
|
}),
|
|
558
|
-
showLabel && /* @__PURE__ */ jsx(ChevronRightIcon, { className: cn$1("ml-auto h-4 w-4 shrink-0 text-muted-foreground/60 transition-transform",
|
|
558
|
+
showLabel && /* @__PURE__ */ jsx(ChevronRightIcon, { className: cn$1("ml-auto h-4 w-4 shrink-0 text-muted-foreground/60 transition-transform", MOTION_CONTROL, open && "rotate-180") })
|
|
559
559
|
]
|
|
560
560
|
})
|
|
561
561
|
}), open && /* @__PURE__ */ jsxs("div", {
|
|
@@ -3039,7 +3039,7 @@ function SidebarLayoutInner({ children, navItems, activeId, panel, logo, logoHre
|
|
|
3039
3039
|
"aria-expanded": mobileNavOpen,
|
|
3040
3040
|
"aria-controls": "sidebar-mobile-nav",
|
|
3041
3041
|
"aria-haspopup": "dialog",
|
|
3042
|
-
className: cn$1("flex size-10 shrink-0 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-[var(--accent-surface-soft)] hover:text-foreground",
|
|
3042
|
+
className: cn$1("flex size-10 shrink-0 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-[var(--accent-surface-soft)] hover:text-foreground", MOTION_CONTROL),
|
|
3043
3043
|
children: /* @__PURE__ */ jsx(MenuIcon, { className: "size-5" })
|
|
3044
3044
|
})
|
|
3045
3045
|
}),
|
package/dist/dashboard.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as useSidebar, A as parseInsufficientBalance, B as SidebarPanel, C as SandboxStatusPill, D as ResourceMeter, E as ResourceSnapshot, F as RailHeader, G as SidebarRailNav, H as SidebarPanelHeader, I as RailModeButton, J as SIDEBAR_PANEL_WIDTH, K as RailTooltip, L as RailSeparator, M as RailButton, N as RailExpandable, O as INSUFFICIENT_BALANCE_CODE, P as RailFlyout, Q as SidebarProvider, R as Sidebar, S as SANDBOX_STATUS, T as ActivityFeed, U as SidebarRail, V as SidebarPanelContent, W as SidebarRailFooter, X as SIDEBAR_RAIL_WIDTH, Y as SIDEBAR_RAIL_LABELED_WIDTH, Z as SIDEBAR_TOTAL_WIDTH, _ as BackendSelector, a as PortsList, b as SandboxCard, c as SystemLogsViewer, d as DashboardLayout, f as HARNESS_OPTIONS, g as HarnessLogo, h as HARNESS_BRAND, i as TemplateCard, j as ProfileAvatar, k as OutOfCreditsModal, l as MetricAreaChart, m as chatCapableHarnesses, n as SnapshotList, o as GitPanel, p as HarnessPicker, q as SIDEBAR_MOBILE_WIDTH, r as ProcessList, s as UsageSummary, t as PromoBanner, u as SidebarLayout, v as SandboxTable, w as sandboxStatus, x as canAdminSandbox, y as NewSandboxCard, z as SidebarContent } from "./dashboard-
|
|
1
|
+
import { $ as useSidebar, A as parseInsufficientBalance, B as SidebarPanel, C as SandboxStatusPill, D as ResourceMeter, E as ResourceSnapshot, F as RailHeader, G as SidebarRailNav, H as SidebarPanelHeader, I as RailModeButton, J as SIDEBAR_PANEL_WIDTH, K as RailTooltip, L as RailSeparator, M as RailButton, N as RailExpandable, O as INSUFFICIENT_BALANCE_CODE, P as RailFlyout, Q as SidebarProvider, R as Sidebar, S as SANDBOX_STATUS, T as ActivityFeed, U as SidebarRail, V as SidebarPanelContent, W as SidebarRailFooter, X as SIDEBAR_RAIL_WIDTH, Y as SIDEBAR_RAIL_LABELED_WIDTH, Z as SIDEBAR_TOTAL_WIDTH, _ as BackendSelector, a as PortsList, b as SandboxCard, c as SystemLogsViewer, d as DashboardLayout, f as HARNESS_OPTIONS, g as HarnessLogo, h as HARNESS_BRAND, i as TemplateCard, j as ProfileAvatar, k as OutOfCreditsModal, l as MetricAreaChart, m as chatCapableHarnesses, n as SnapshotList, o as GitPanel, p as HarnessPicker, q as SIDEBAR_MOBILE_WIDTH, r as ProcessList, s as UsageSummary, t as PromoBanner, u as SidebarLayout, v as SandboxTable, w as sandboxStatus, x as canAdminSandbox, y as NewSandboxCard, z as SidebarContent } from "./dashboard-D3JhmRhe.js";
|
|
2
2
|
import { i as modelBrandFor, n as ProviderMark, r as canonicalModelId, t as ModelBrandStack } from "./model-brand-bTcMjQtB.js";
|
|
3
3
|
import { a as formatPrice, i as PricingPage, n as SandboxPageShell, o as BillingDashboard, r as UsageChart, t as DashboardPageHeader } from "./page-layout-CuOpvZys.js";
|
|
4
4
|
export { ActivityFeed, BackendSelector, BillingDashboard, DashboardLayout, DashboardPageHeader, GitPanel, HARNESS_BRAND, HARNESS_OPTIONS, HarnessLogo, HarnessPicker, INSUFFICIENT_BALANCE_CODE, MetricAreaChart, ModelBrandStack, NewSandboxCard, OutOfCreditsModal, PortsList, PricingPage, ProcessList, ProfileAvatar, PromoBanner, ProviderMark, RailButton, RailExpandable, RailFlyout, RailHeader, RailModeButton, RailSeparator, RailTooltip, ResourceMeter, ResourceSnapshot, SANDBOX_STATUS, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, SandboxPageShell, SandboxStatusPill, SandboxTable, Sidebar, SidebarContent, SidebarLayout, SidebarPanel, SidebarPanelContent, SidebarPanelHeader, SidebarProvider, SidebarRail, SidebarRailFooter, SidebarRailNav, SnapshotList, SystemLogsViewer, TemplateCard, UsageChart, UsageSummary, canAdminSandbox, canonicalModelId, chatCapableHarnesses, formatPrice, modelBrandFor, parseInsufficientBalance, sandboxStatus, useSidebar };
|