@tangle-network/sandbox-ui 0.91.5 → 0.93.0
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/{WorkflowGraph-GUX7XN7Y.js → WorkflowGraph-TKDBFK3V.js} +187 -36
- package/dist/chat.js +1 -1
- package/dist/{chunk-QMY3XVH3.js → chunk-GUULFESL.js} +13 -11
- package/dist/{chunk-H237JF3H.js → chunk-UB3V2YAZ.js} +303 -117
- package/dist/{chunk-S6J6JIIP.js → chunk-UKQOHN73.js} +1 -1
- package/dist/{chunk-2NS724P4.js → chunk-YOSNN3QU.js} +205 -12
- package/dist/dashboard.js +1 -1
- package/dist/globals.css +63 -0
- package/dist/index.js +3 -3
- package/dist/styles.css +63 -0
- package/dist/workbench.js +2 -2
- package/dist/workflows.d.ts +121 -3
- package/dist/workflows.js +14 -4
- package/package.json +1 -1
|
@@ -214,9 +214,26 @@ function providerLabel(provider) {
|
|
|
214
214
|
|
|
215
215
|
// src/workflows/model.ts
|
|
216
216
|
import { parse as parseYaml } from "yaml";
|
|
217
|
+
var TRIGGER_NODE_ID = "trigger";
|
|
218
|
+
var TRIGGER_NODE_ID_PATTERN = new RegExp(`^${TRIGGER_NODE_ID}:(\\d+)$`);
|
|
219
|
+
function triggerNodeId(index) {
|
|
220
|
+
return index === 0 ? TRIGGER_NODE_ID : `${TRIGGER_NODE_ID}:${index}`;
|
|
221
|
+
}
|
|
222
|
+
function triggerNodeIndex(nodeId) {
|
|
223
|
+
if (nodeId === TRIGGER_NODE_ID) return 0;
|
|
224
|
+
const match = TRIGGER_NODE_ID_PATTERN.exec(nodeId);
|
|
225
|
+
return match ? Number(match[1]) : null;
|
|
226
|
+
}
|
|
227
|
+
function actionNodeId(index) {
|
|
228
|
+
return `a${index}`;
|
|
229
|
+
}
|
|
230
|
+
function branchNodeId(actionIndex, branchIndex) {
|
|
231
|
+
return `${actionNodeId(actionIndex)}-b${branchIndex}`;
|
|
232
|
+
}
|
|
217
233
|
var NODE_W = 292;
|
|
218
234
|
var RANK_SEP = 72;
|
|
219
235
|
var CROSS_SEP = 24;
|
|
236
|
+
var EDGE_LABEL_LANE = 180;
|
|
220
237
|
var CARD_CHROME = 20;
|
|
221
238
|
var HEADER_ROW = 34;
|
|
222
239
|
var DESCRIPTION_ROW = 40;
|
|
@@ -372,6 +389,50 @@ function describeActionBase(action) {
|
|
|
372
389
|
tone: "structural"
|
|
373
390
|
};
|
|
374
391
|
}
|
|
392
|
+
case "script.run": {
|
|
393
|
+
const connections = Array.isArray(cfg.connections) ? cfg.connections.filter((c) => typeof c === "string") : [];
|
|
394
|
+
return {
|
|
395
|
+
title: "Script",
|
|
396
|
+
kind,
|
|
397
|
+
// What the box is GRANTED is the thing that distinguishes one script
|
|
398
|
+
// step from another at a glance; the timeout is a bound, and bounds read
|
|
399
|
+
// in the detail view with the rest of the config.
|
|
400
|
+
subtitle: connections.length > 0 ? `TypeScript \xB7 ${connections.length} connection${connections.length === 1 ? "" : "s"}` : "TypeScript",
|
|
401
|
+
// The head of the module — the same role the prompt plays on an agent:
|
|
402
|
+
// the text that says what this particular step actually does.
|
|
403
|
+
description: describeText(cfg.source),
|
|
404
|
+
isRoot: false,
|
|
405
|
+
tone: "action"
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
case "sandbox.snapshot":
|
|
409
|
+
return {
|
|
410
|
+
title: "Snapshot",
|
|
411
|
+
kind,
|
|
412
|
+
// WHICH sandbox is the only thing separating one snapshot step from
|
|
413
|
+
// another, and it is usually a `${steps…}` reference — so the subtitle
|
|
414
|
+
// reads as the step whose disk is being captured.
|
|
415
|
+
subtitle: str(cfg.sandbox) ?? "Capture a sandbox",
|
|
416
|
+
isRoot: false,
|
|
417
|
+
tone: "action"
|
|
418
|
+
};
|
|
419
|
+
case "trace.analyze": {
|
|
420
|
+
const kinds = Array.isArray(cfg.kinds) ? cfg.kinds.filter((k) => typeof k === "string") : [];
|
|
421
|
+
return {
|
|
422
|
+
title: "Trace analysis",
|
|
423
|
+
kind,
|
|
424
|
+
// The analysts that run ARE the step. The model it runs them on is
|
|
425
|
+
// incidental here (unlike agent.run, where the model IS the identity),
|
|
426
|
+
// so it stays in the config for the detail view and the node keeps its
|
|
427
|
+
// own glyph rather than borrowing a lab's brand mark.
|
|
428
|
+
subtitle: kinds.length > 0 ? describeText(
|
|
429
|
+
kinds.map((k) => humanizeIdentifier(k, "lower")).join(", ")
|
|
430
|
+
) : "Default analysts",
|
|
431
|
+
description: describeText(cfg.trace),
|
|
432
|
+
isRoot: false,
|
|
433
|
+
tone: "action"
|
|
434
|
+
};
|
|
435
|
+
}
|
|
375
436
|
default:
|
|
376
437
|
return {
|
|
377
438
|
// An action kind this version doesn't model yet still gets a readable
|
|
@@ -465,6 +526,18 @@ function describeTrigger(on) {
|
|
|
465
526
|
sch
|
|
466
527
|
);
|
|
467
528
|
}
|
|
529
|
+
if (rec.webhook !== void 0) {
|
|
530
|
+
return withConfig(
|
|
531
|
+
{
|
|
532
|
+
title: "Webhook",
|
|
533
|
+
kind: "webhook",
|
|
534
|
+
subtitle: "On an inbound POST",
|
|
535
|
+
isRoot: true,
|
|
536
|
+
tone: "trigger"
|
|
537
|
+
},
|
|
538
|
+
asRecord(rec.webhook)
|
|
539
|
+
);
|
|
540
|
+
}
|
|
468
541
|
const [kind] = Object.keys(rec);
|
|
469
542
|
return withConfig(
|
|
470
543
|
{
|
|
@@ -519,10 +592,74 @@ function layoutLayers(nodes, direction, rankSep, crossSep) {
|
|
|
519
592
|
}
|
|
520
593
|
return out;
|
|
521
594
|
}
|
|
595
|
+
function classifyBackEdges(orderedIds, edges) {
|
|
596
|
+
const outgoing = /* @__PURE__ */ new Map();
|
|
597
|
+
const hasIncoming = /* @__PURE__ */ new Set();
|
|
598
|
+
for (const e of edges) {
|
|
599
|
+
const list = outgoing.get(e.source);
|
|
600
|
+
if (list) list.push(e);
|
|
601
|
+
else outgoing.set(e.source, [e]);
|
|
602
|
+
hasIncoming.add(e.target);
|
|
603
|
+
}
|
|
604
|
+
const walkOrder = [
|
|
605
|
+
...orderedIds.filter((id) => !hasIncoming.has(id)),
|
|
606
|
+
...orderedIds.filter((id) => hasIncoming.has(id))
|
|
607
|
+
];
|
|
608
|
+
const back = /* @__PURE__ */ new Set();
|
|
609
|
+
const color = new Map(orderedIds.map((id) => [id, 0]));
|
|
610
|
+
for (const start of walkOrder) {
|
|
611
|
+
if (color.get(start) !== 0) continue;
|
|
612
|
+
color.set(start, 1);
|
|
613
|
+
const stack = [{ id: start, next: 0 }];
|
|
614
|
+
while (stack.length > 0) {
|
|
615
|
+
const frame = stack[stack.length - 1];
|
|
616
|
+
const out = outgoing.get(frame.id);
|
|
617
|
+
if (!out || frame.next >= out.length) {
|
|
618
|
+
color.set(frame.id, 2);
|
|
619
|
+
stack.pop();
|
|
620
|
+
continue;
|
|
621
|
+
}
|
|
622
|
+
const edge = out[frame.next];
|
|
623
|
+
frame.next += 1;
|
|
624
|
+
const target = color.get(edge.target);
|
|
625
|
+
if (target === 1) {
|
|
626
|
+
back.add(edge.id);
|
|
627
|
+
} else if (target === 0) {
|
|
628
|
+
color.set(edge.target, 1);
|
|
629
|
+
stack.push({ id: edge.target, next: 0 });
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
return back;
|
|
634
|
+
}
|
|
635
|
+
function rankByTopology(orderedIds, edges, backEdgeIds) {
|
|
636
|
+
const outgoing = /* @__PURE__ */ new Map();
|
|
637
|
+
const indegree = new Map(orderedIds.map((id) => [id, 0]));
|
|
638
|
+
for (const e of edges) {
|
|
639
|
+
if (backEdgeIds.has(e.id)) continue;
|
|
640
|
+
const list = outgoing.get(e.source);
|
|
641
|
+
if (list) list.push(e);
|
|
642
|
+
else outgoing.set(e.source, [e]);
|
|
643
|
+
indegree.set(e.target, (indegree.get(e.target) ?? 0) + 1);
|
|
644
|
+
}
|
|
645
|
+
const rank = new Map(orderedIds.map((id) => [id, 0]));
|
|
646
|
+
const queue = orderedIds.filter((id) => indegree.get(id) === 0);
|
|
647
|
+
for (let head = 0; head < queue.length; head += 1) {
|
|
648
|
+
const id = queue[head];
|
|
649
|
+
for (const e of outgoing.get(id) ?? []) {
|
|
650
|
+
rank.set(e.target, Math.max(rank.get(e.target) ?? 0, (rank.get(id) ?? 0) + 1));
|
|
651
|
+
const remaining = (indegree.get(e.target) ?? 0) - 1;
|
|
652
|
+
indegree.set(e.target, remaining);
|
|
653
|
+
if (remaining === 0) queue.push(e.target);
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
return rank;
|
|
657
|
+
}
|
|
522
658
|
function buildWorkflowGraph(yaml, options) {
|
|
523
659
|
const reserveRunState = options?.reserveRunState ?? false;
|
|
524
660
|
const direction = options?.direction ?? "LR";
|
|
525
661
|
const compact = options?.compact ?? false;
|
|
662
|
+
const declared = options?.edges;
|
|
526
663
|
if (!yaml || yaml.trim() === "") {
|
|
527
664
|
return { nodes: [], edges: [], error: "No definition" };
|
|
528
665
|
}
|
|
@@ -534,7 +671,8 @@ function buildWorkflowGraph(yaml, options) {
|
|
|
534
671
|
}
|
|
535
672
|
const def = asRecord(parsed);
|
|
536
673
|
const actions = Array.isArray(def.do) ? def.do : [];
|
|
537
|
-
|
|
674
|
+
const triggers = !def.on ? [] : Array.isArray(def.on) ? def.on : [def.on];
|
|
675
|
+
if (triggers.length === 0 && actions.length === 0) {
|
|
538
676
|
return { nodes: [], edges: [], error: "Empty workflow" };
|
|
539
677
|
}
|
|
540
678
|
const logical = [];
|
|
@@ -547,24 +685,39 @@ function buildWorkflowGraph(yaml, options) {
|
|
|
547
685
|
};
|
|
548
686
|
logical.push({ id, data, width: dims.width, height: dims.height, rank: rank2 });
|
|
549
687
|
};
|
|
550
|
-
const
|
|
551
|
-
|
|
688
|
+
const edgeIds = /* @__PURE__ */ new Set();
|
|
689
|
+
const addEdge = (source, target, kind, whenLabel) => {
|
|
690
|
+
const id = `${source}->${target}`;
|
|
691
|
+
if (edgeIds.has(id)) return;
|
|
692
|
+
edgeIds.add(id);
|
|
693
|
+
edges.push({
|
|
694
|
+
id,
|
|
695
|
+
source,
|
|
696
|
+
target,
|
|
697
|
+
kind,
|
|
698
|
+
...whenLabel ? { whenLabel } : {}
|
|
699
|
+
});
|
|
552
700
|
};
|
|
553
701
|
let rank = 0;
|
|
554
702
|
let prevExits = [];
|
|
555
703
|
const branchLeafIds = /* @__PURE__ */ new Set();
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
704
|
+
const triggerIds = triggers.map((_, i) => triggerNodeId(i));
|
|
705
|
+
triggers.forEach((trigger, i) => {
|
|
706
|
+
addNode(triggerNodeId(i), describeTrigger(trigger), rank, false);
|
|
707
|
+
});
|
|
708
|
+
if (triggers.length > 0) {
|
|
709
|
+
prevExits = [...triggerIds];
|
|
559
710
|
rank += 1;
|
|
560
711
|
}
|
|
561
712
|
actions.forEach((action, i) => {
|
|
562
|
-
const id =
|
|
713
|
+
const id = actionNodeId(i);
|
|
563
714
|
const data = describeAction(action);
|
|
564
|
-
if (i === 0 &&
|
|
715
|
+
if (i === 0 && triggers.length === 0) data.isRoot = true;
|
|
565
716
|
addNode(id, data, rank, reserveRunState);
|
|
566
|
-
|
|
567
|
-
|
|
717
|
+
if (!declared) {
|
|
718
|
+
for (const from of prevExits) {
|
|
719
|
+
addEdge(from, id, branchLeafIds.has(from) ? "join" : "spine");
|
|
720
|
+
}
|
|
568
721
|
}
|
|
569
722
|
const rec = asRecord(action);
|
|
570
723
|
const children = "parallel" in rec ? Array.isArray(asRecord(rec.parallel).branches) ? asRecord(rec.parallel).branches : [] : "foreach" in rec ? (
|
|
@@ -575,7 +728,7 @@ function buildWorkflowGraph(yaml, options) {
|
|
|
575
728
|
const branchRank = rank + 1;
|
|
576
729
|
const branchIds = [];
|
|
577
730
|
children.forEach((child, j) => {
|
|
578
|
-
const cid =
|
|
731
|
+
const cid = branchNodeId(i, j);
|
|
579
732
|
addNode(cid, describeAction(child), branchRank, reserveRunState);
|
|
580
733
|
addEdge(id, cid, "fork");
|
|
581
734
|
branchIds.push(cid);
|
|
@@ -588,8 +741,43 @@ function buildWorkflowGraph(yaml, options) {
|
|
|
588
741
|
rank += 1;
|
|
589
742
|
}
|
|
590
743
|
});
|
|
744
|
+
if (declared) {
|
|
745
|
+
const known = new Set(logical.map((n) => n.id));
|
|
746
|
+
for (const spec of declared) {
|
|
747
|
+
const missing = !known.has(spec.from) ? spec.from : !known.has(spec.to) ? spec.to : null;
|
|
748
|
+
if (missing !== null) {
|
|
749
|
+
return {
|
|
750
|
+
nodes: [],
|
|
751
|
+
edges: [],
|
|
752
|
+
error: `Declared topology names "${missing}", which this definition has no step for`
|
|
753
|
+
};
|
|
754
|
+
}
|
|
755
|
+
addEdge(spec.from, spec.to, "spine", spec.whenLabel);
|
|
756
|
+
}
|
|
757
|
+
const rootward = new Set(edges.map((e) => e.target));
|
|
758
|
+
for (const n of logical) {
|
|
759
|
+
if (triggerNodeIndex(n.id) !== null) continue;
|
|
760
|
+
if (rootward.has(n.id)) continue;
|
|
761
|
+
for (const triggerId of triggerIds) addEdge(triggerId, n.id, "spine");
|
|
762
|
+
}
|
|
763
|
+
const orderedIds = logical.map((n) => n.id);
|
|
764
|
+
const backEdgeIds = classifyBackEdges(orderedIds, edges);
|
|
765
|
+
for (const e of edges) {
|
|
766
|
+
if (backEdgeIds.has(e.id)) e.backEdge = true;
|
|
767
|
+
}
|
|
768
|
+
const rankById = rankByTopology(orderedIds, edges, backEdgeIds);
|
|
769
|
+
const incoming = new Set(edges.map((e) => e.target));
|
|
770
|
+
for (const n of logical) {
|
|
771
|
+
n.rank = rankById.get(n.id) ?? 0;
|
|
772
|
+
n.data = { ...n.data, isRoot: !incoming.has(n.id) };
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
const labelled = edges.some(
|
|
776
|
+
(e) => e.whenLabel !== void 0 || e.backEdge === true
|
|
777
|
+
);
|
|
778
|
+
const rankSep = labelled ? Math.max(geo.rankSep, EDGE_LABEL_LANE) : geo.rankSep;
|
|
591
779
|
return {
|
|
592
|
-
nodes: layoutLayers(logical, direction,
|
|
780
|
+
nodes: layoutLayers(logical, direction, rankSep, geo.crossSep),
|
|
593
781
|
edges,
|
|
594
782
|
error: null
|
|
595
783
|
};
|
|
@@ -602,6 +790,11 @@ export {
|
|
|
602
790
|
fmtTokens,
|
|
603
791
|
shortModel,
|
|
604
792
|
providerLabel,
|
|
793
|
+
TRIGGER_NODE_ID,
|
|
794
|
+
triggerNodeId,
|
|
795
|
+
triggerNodeIndex,
|
|
796
|
+
actionNodeId,
|
|
797
|
+
branchNodeId,
|
|
605
798
|
COMPACT_TILE,
|
|
606
799
|
COMPACT_NODE_SIZE,
|
|
607
800
|
buildWorkflowGraph
|
package/dist/dashboard.js
CHANGED
package/dist/globals.css
CHANGED
|
@@ -707,6 +707,10 @@
|
|
|
707
707
|
width: calc(var(--spacing) * 9);
|
|
708
708
|
height: calc(var(--spacing) * 9);
|
|
709
709
|
}
|
|
710
|
+
.size-10 {
|
|
711
|
+
width: calc(var(--spacing) * 10);
|
|
712
|
+
height: calc(var(--spacing) * 10);
|
|
713
|
+
}
|
|
710
714
|
.size-11 {
|
|
711
715
|
width: calc(var(--spacing) * 11);
|
|
712
716
|
height: calc(var(--spacing) * 11);
|
|
@@ -714,6 +718,9 @@
|
|
|
714
718
|
.\!h-2 {
|
|
715
719
|
height: calc(var(--spacing) * 2) !important;
|
|
716
720
|
}
|
|
721
|
+
.\!h-2\.5 {
|
|
722
|
+
height: calc(var(--spacing) * 2.5) !important;
|
|
723
|
+
}
|
|
717
724
|
.h-1 {
|
|
718
725
|
height: var(--spacing);
|
|
719
726
|
}
|
|
@@ -792,6 +799,9 @@
|
|
|
792
799
|
.h-\[24rem\] {
|
|
793
800
|
height: 24rem;
|
|
794
801
|
}
|
|
802
|
+
.h-\[26rem\] {
|
|
803
|
+
height: 26rem;
|
|
804
|
+
}
|
|
795
805
|
.h-\[28rem\] {
|
|
796
806
|
height: 28rem;
|
|
797
807
|
}
|
|
@@ -963,6 +973,9 @@
|
|
|
963
973
|
.\!w-2 {
|
|
964
974
|
width: calc(var(--spacing) * 2) !important;
|
|
965
975
|
}
|
|
976
|
+
.\!w-2\.5 {
|
|
977
|
+
width: calc(var(--spacing) * 2.5) !important;
|
|
978
|
+
}
|
|
966
979
|
.w-0 {
|
|
967
980
|
width: 0px;
|
|
968
981
|
}
|
|
@@ -1206,6 +1219,9 @@
|
|
|
1206
1219
|
.max-w-6xl {
|
|
1207
1220
|
max-width: var(--container-6xl);
|
|
1208
1221
|
}
|
|
1222
|
+
.max-w-40 {
|
|
1223
|
+
max-width: calc(var(--spacing) * 40);
|
|
1224
|
+
}
|
|
1209
1225
|
.max-w-\[14rem\] {
|
|
1210
1226
|
max-width: 14rem;
|
|
1211
1227
|
}
|
|
@@ -1221,6 +1237,9 @@
|
|
|
1221
1237
|
.max-w-\[85\%\] {
|
|
1222
1238
|
max-width: 85%;
|
|
1223
1239
|
}
|
|
1240
|
+
.max-w-\[85vw\] {
|
|
1241
|
+
max-width: 85vw;
|
|
1242
|
+
}
|
|
1224
1243
|
.max-w-\[90vw\] {
|
|
1225
1244
|
max-width: 90vw;
|
|
1226
1245
|
}
|
|
@@ -1445,6 +1464,9 @@
|
|
|
1445
1464
|
.resize-y {
|
|
1446
1465
|
resize: vertical;
|
|
1447
1466
|
}
|
|
1467
|
+
.\[scrollbar-width\:none\] {
|
|
1468
|
+
scrollbar-width: none;
|
|
1469
|
+
}
|
|
1448
1470
|
.\[scrollbar-gutter\:stable\] {
|
|
1449
1471
|
scrollbar-gutter: stable;
|
|
1450
1472
|
}
|
|
@@ -1685,6 +1707,12 @@
|
|
|
1685
1707
|
.overflow-y-auto {
|
|
1686
1708
|
overflow-y: auto;
|
|
1687
1709
|
}
|
|
1710
|
+
.overscroll-x-contain {
|
|
1711
|
+
overscroll-behavior-x: contain;
|
|
1712
|
+
}
|
|
1713
|
+
.\!rounded-full {
|
|
1714
|
+
border-radius: calc(infinity * 1px) !important;
|
|
1715
|
+
}
|
|
1688
1716
|
.rounded {
|
|
1689
1717
|
border-radius: 0.25rem;
|
|
1690
1718
|
}
|
|
@@ -1768,6 +1796,10 @@
|
|
|
1768
1796
|
.rounded-bl-lg {
|
|
1769
1797
|
border-bottom-left-radius: var(--radius-lg);
|
|
1770
1798
|
}
|
|
1799
|
+
.\!border {
|
|
1800
|
+
border-style: var(--tw-border-style) !important;
|
|
1801
|
+
border-width: 1px !important;
|
|
1802
|
+
}
|
|
1771
1803
|
.\!border-0 {
|
|
1772
1804
|
border-style: var(--tw-border-style) !important;
|
|
1773
1805
|
border-width: 0px !important;
|
|
@@ -1828,6 +1860,9 @@
|
|
|
1828
1860
|
--tw-border-style: none;
|
|
1829
1861
|
border-style: none;
|
|
1830
1862
|
}
|
|
1863
|
+
.\!border-border {
|
|
1864
|
+
border-color: var(--color-border) !important;
|
|
1865
|
+
}
|
|
1831
1866
|
.border-\[var\(--accent-text\)\] {
|
|
1832
1867
|
border-color: var(--accent-text);
|
|
1833
1868
|
}
|
|
@@ -2068,6 +2103,12 @@
|
|
|
2068
2103
|
.border-b-primary {
|
|
2069
2104
|
border-bottom-color: var(--color-primary);
|
|
2070
2105
|
}
|
|
2106
|
+
.\!bg-muted-foreground\/70 {
|
|
2107
|
+
background-color: color-mix(in srgb, hsl(var(--muted-foreground)) 70%, transparent) !important;
|
|
2108
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2109
|
+
background-color: color-mix(in oklab, var(--color-muted-foreground) 70%, transparent) !important;
|
|
2110
|
+
}
|
|
2111
|
+
}
|
|
2071
2112
|
.\!bg-transparent {
|
|
2072
2113
|
background-color: transparent !important;
|
|
2073
2114
|
}
|
|
@@ -2287,6 +2328,12 @@
|
|
|
2287
2328
|
background-color: color-mix(in oklab, var(--color-card) 80%, transparent);
|
|
2288
2329
|
}
|
|
2289
2330
|
}
|
|
2331
|
+
.bg-card\/90 {
|
|
2332
|
+
background-color: color-mix(in srgb, hsl(var(--card)) 90%, transparent);
|
|
2333
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2334
|
+
background-color: color-mix(in oklab, var(--color-card) 90%, transparent);
|
|
2335
|
+
}
|
|
2336
|
+
}
|
|
2290
2337
|
.bg-destructive {
|
|
2291
2338
|
background-color: var(--color-destructive);
|
|
2292
2339
|
}
|
|
@@ -3476,6 +3523,10 @@
|
|
|
3476
3523
|
--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
|
3477
3524
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
3478
3525
|
}
|
|
3526
|
+
.shadow-xl {
|
|
3527
|
+
--tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
|
3528
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
3529
|
+
}
|
|
3479
3530
|
.ring {
|
|
3480
3531
|
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
3481
3532
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
@@ -3654,6 +3705,9 @@
|
|
|
3654
3705
|
-webkit-user-select: none;
|
|
3655
3706
|
user-select: none;
|
|
3656
3707
|
}
|
|
3708
|
+
.\[-ms-overflow-style\:none\] {
|
|
3709
|
+
-ms-overflow-style: none;
|
|
3710
|
+
}
|
|
3657
3711
|
.ring-inset {
|
|
3658
3712
|
--tw-ring-inset: inset;
|
|
3659
3713
|
}
|
|
@@ -3873,6 +3927,9 @@
|
|
|
3873
3927
|
border-color: color-mix(in oklab, var(--color-primary) 50%, transparent);
|
|
3874
3928
|
}
|
|
3875
3929
|
}
|
|
3930
|
+
.hover\:\!bg-primary:hover {
|
|
3931
|
+
background-color: var(--color-primary) !important;
|
|
3932
|
+
}
|
|
3876
3933
|
.hover\:bg-\[var\(--accent-surface-soft\)\]:hover {
|
|
3877
3934
|
background-color: var(--accent-surface-soft);
|
|
3878
3935
|
}
|
|
@@ -4569,6 +4626,9 @@
|
|
|
4569
4626
|
.md\:flex {
|
|
4570
4627
|
display: flex;
|
|
4571
4628
|
}
|
|
4629
|
+
.md\:hidden {
|
|
4630
|
+
display: none;
|
|
4631
|
+
}
|
|
4572
4632
|
.md\:grid-cols-2 {
|
|
4573
4633
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
4574
4634
|
}
|
|
@@ -4687,6 +4747,9 @@
|
|
|
4687
4747
|
.\[\&\:\:-moz-range-track\]\:bg-border::-moz-range-track {
|
|
4688
4748
|
background-color: var(--color-border);
|
|
4689
4749
|
}
|
|
4750
|
+
.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar {
|
|
4751
|
+
display: none;
|
|
4752
|
+
}
|
|
4690
4753
|
.\[\&\:\:-webkit-slider-runnable-track\]\:h-1\.5::-webkit-slider-runnable-track {
|
|
4691
4754
|
height: calc(var(--spacing) * 1.5);
|
|
4692
4755
|
}
|
package/dist/index.js
CHANGED
|
@@ -91,7 +91,7 @@ import {
|
|
|
91
91
|
snapHarnessToModel,
|
|
92
92
|
snapModelToHarness,
|
|
93
93
|
validateComposerFiles
|
|
94
|
-
} from "./chunk-
|
|
94
|
+
} from "./chunk-GUULFESL.js";
|
|
95
95
|
import {
|
|
96
96
|
TOOL_CATEGORY_ICONS,
|
|
97
97
|
cn,
|
|
@@ -152,7 +152,7 @@ import {
|
|
|
152
152
|
buildUnifiedPatch,
|
|
153
153
|
computeDiffStats,
|
|
154
154
|
resolveLanguage
|
|
155
|
-
} from "./chunk-
|
|
155
|
+
} from "./chunk-UKQOHN73.js";
|
|
156
156
|
import {
|
|
157
157
|
FileArtifactPane,
|
|
158
158
|
FilePreview,
|
|
@@ -217,7 +217,7 @@ import {
|
|
|
217
217
|
canAdminSandbox,
|
|
218
218
|
parseInsufficientBalance,
|
|
219
219
|
useSidebar
|
|
220
|
-
} from "./chunk-
|
|
220
|
+
} from "./chunk-UB3V2YAZ.js";
|
|
221
221
|
import {
|
|
222
222
|
BillingDashboard,
|
|
223
223
|
InfoPanel,
|
package/dist/styles.css
CHANGED
|
@@ -707,6 +707,10 @@
|
|
|
707
707
|
width: calc(var(--spacing) * 9);
|
|
708
708
|
height: calc(var(--spacing) * 9);
|
|
709
709
|
}
|
|
710
|
+
.size-10 {
|
|
711
|
+
width: calc(var(--spacing) * 10);
|
|
712
|
+
height: calc(var(--spacing) * 10);
|
|
713
|
+
}
|
|
710
714
|
.size-11 {
|
|
711
715
|
width: calc(var(--spacing) * 11);
|
|
712
716
|
height: calc(var(--spacing) * 11);
|
|
@@ -714,6 +718,9 @@
|
|
|
714
718
|
.\!h-2 {
|
|
715
719
|
height: calc(var(--spacing) * 2) !important;
|
|
716
720
|
}
|
|
721
|
+
.\!h-2\.5 {
|
|
722
|
+
height: calc(var(--spacing) * 2.5) !important;
|
|
723
|
+
}
|
|
717
724
|
.h-1 {
|
|
718
725
|
height: var(--spacing);
|
|
719
726
|
}
|
|
@@ -792,6 +799,9 @@
|
|
|
792
799
|
.h-\[24rem\] {
|
|
793
800
|
height: 24rem;
|
|
794
801
|
}
|
|
802
|
+
.h-\[26rem\] {
|
|
803
|
+
height: 26rem;
|
|
804
|
+
}
|
|
795
805
|
.h-\[28rem\] {
|
|
796
806
|
height: 28rem;
|
|
797
807
|
}
|
|
@@ -963,6 +973,9 @@
|
|
|
963
973
|
.\!w-2 {
|
|
964
974
|
width: calc(var(--spacing) * 2) !important;
|
|
965
975
|
}
|
|
976
|
+
.\!w-2\.5 {
|
|
977
|
+
width: calc(var(--spacing) * 2.5) !important;
|
|
978
|
+
}
|
|
966
979
|
.w-0 {
|
|
967
980
|
width: 0px;
|
|
968
981
|
}
|
|
@@ -1206,6 +1219,9 @@
|
|
|
1206
1219
|
.max-w-6xl {
|
|
1207
1220
|
max-width: var(--container-6xl);
|
|
1208
1221
|
}
|
|
1222
|
+
.max-w-40 {
|
|
1223
|
+
max-width: calc(var(--spacing) * 40);
|
|
1224
|
+
}
|
|
1209
1225
|
.max-w-\[14rem\] {
|
|
1210
1226
|
max-width: 14rem;
|
|
1211
1227
|
}
|
|
@@ -1221,6 +1237,9 @@
|
|
|
1221
1237
|
.max-w-\[85\%\] {
|
|
1222
1238
|
max-width: 85%;
|
|
1223
1239
|
}
|
|
1240
|
+
.max-w-\[85vw\] {
|
|
1241
|
+
max-width: 85vw;
|
|
1242
|
+
}
|
|
1224
1243
|
.max-w-\[90vw\] {
|
|
1225
1244
|
max-width: 90vw;
|
|
1226
1245
|
}
|
|
@@ -1445,6 +1464,9 @@
|
|
|
1445
1464
|
.resize-y {
|
|
1446
1465
|
resize: vertical;
|
|
1447
1466
|
}
|
|
1467
|
+
.\[scrollbar-width\:none\] {
|
|
1468
|
+
scrollbar-width: none;
|
|
1469
|
+
}
|
|
1448
1470
|
.\[scrollbar-gutter\:stable\] {
|
|
1449
1471
|
scrollbar-gutter: stable;
|
|
1450
1472
|
}
|
|
@@ -1685,6 +1707,12 @@
|
|
|
1685
1707
|
.overflow-y-auto {
|
|
1686
1708
|
overflow-y: auto;
|
|
1687
1709
|
}
|
|
1710
|
+
.overscroll-x-contain {
|
|
1711
|
+
overscroll-behavior-x: contain;
|
|
1712
|
+
}
|
|
1713
|
+
.\!rounded-full {
|
|
1714
|
+
border-radius: calc(infinity * 1px) !important;
|
|
1715
|
+
}
|
|
1688
1716
|
.rounded {
|
|
1689
1717
|
border-radius: 0.25rem;
|
|
1690
1718
|
}
|
|
@@ -1768,6 +1796,10 @@
|
|
|
1768
1796
|
.rounded-bl-lg {
|
|
1769
1797
|
border-bottom-left-radius: var(--radius-lg);
|
|
1770
1798
|
}
|
|
1799
|
+
.\!border {
|
|
1800
|
+
border-style: var(--tw-border-style) !important;
|
|
1801
|
+
border-width: 1px !important;
|
|
1802
|
+
}
|
|
1771
1803
|
.\!border-0 {
|
|
1772
1804
|
border-style: var(--tw-border-style) !important;
|
|
1773
1805
|
border-width: 0px !important;
|
|
@@ -1828,6 +1860,9 @@
|
|
|
1828
1860
|
--tw-border-style: none;
|
|
1829
1861
|
border-style: none;
|
|
1830
1862
|
}
|
|
1863
|
+
.\!border-border {
|
|
1864
|
+
border-color: var(--color-border) !important;
|
|
1865
|
+
}
|
|
1831
1866
|
.border-\[var\(--accent-text\)\] {
|
|
1832
1867
|
border-color: var(--accent-text);
|
|
1833
1868
|
}
|
|
@@ -2068,6 +2103,12 @@
|
|
|
2068
2103
|
.border-b-primary {
|
|
2069
2104
|
border-bottom-color: var(--color-primary);
|
|
2070
2105
|
}
|
|
2106
|
+
.\!bg-muted-foreground\/70 {
|
|
2107
|
+
background-color: color-mix(in srgb, hsl(var(--muted-foreground)) 70%, transparent) !important;
|
|
2108
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2109
|
+
background-color: color-mix(in oklab, var(--color-muted-foreground) 70%, transparent) !important;
|
|
2110
|
+
}
|
|
2111
|
+
}
|
|
2071
2112
|
.\!bg-transparent {
|
|
2072
2113
|
background-color: transparent !important;
|
|
2073
2114
|
}
|
|
@@ -2287,6 +2328,12 @@
|
|
|
2287
2328
|
background-color: color-mix(in oklab, var(--color-card) 80%, transparent);
|
|
2288
2329
|
}
|
|
2289
2330
|
}
|
|
2331
|
+
.bg-card\/90 {
|
|
2332
|
+
background-color: color-mix(in srgb, hsl(var(--card)) 90%, transparent);
|
|
2333
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2334
|
+
background-color: color-mix(in oklab, var(--color-card) 90%, transparent);
|
|
2335
|
+
}
|
|
2336
|
+
}
|
|
2290
2337
|
.bg-destructive {
|
|
2291
2338
|
background-color: var(--color-destructive);
|
|
2292
2339
|
}
|
|
@@ -3476,6 +3523,10 @@
|
|
|
3476
3523
|
--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
|
3477
3524
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
3478
3525
|
}
|
|
3526
|
+
.shadow-xl {
|
|
3527
|
+
--tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
|
3528
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
3529
|
+
}
|
|
3479
3530
|
.ring {
|
|
3480
3531
|
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
3481
3532
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
@@ -3654,6 +3705,9 @@
|
|
|
3654
3705
|
-webkit-user-select: none;
|
|
3655
3706
|
user-select: none;
|
|
3656
3707
|
}
|
|
3708
|
+
.\[-ms-overflow-style\:none\] {
|
|
3709
|
+
-ms-overflow-style: none;
|
|
3710
|
+
}
|
|
3657
3711
|
.ring-inset {
|
|
3658
3712
|
--tw-ring-inset: inset;
|
|
3659
3713
|
}
|
|
@@ -3873,6 +3927,9 @@
|
|
|
3873
3927
|
border-color: color-mix(in oklab, var(--color-primary) 50%, transparent);
|
|
3874
3928
|
}
|
|
3875
3929
|
}
|
|
3930
|
+
.hover\:\!bg-primary:hover {
|
|
3931
|
+
background-color: var(--color-primary) !important;
|
|
3932
|
+
}
|
|
3876
3933
|
.hover\:bg-\[var\(--accent-surface-soft\)\]:hover {
|
|
3877
3934
|
background-color: var(--accent-surface-soft);
|
|
3878
3935
|
}
|
|
@@ -4569,6 +4626,9 @@
|
|
|
4569
4626
|
.md\:flex {
|
|
4570
4627
|
display: flex;
|
|
4571
4628
|
}
|
|
4629
|
+
.md\:hidden {
|
|
4630
|
+
display: none;
|
|
4631
|
+
}
|
|
4572
4632
|
.md\:grid-cols-2 {
|
|
4573
4633
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
4574
4634
|
}
|
|
@@ -4687,6 +4747,9 @@
|
|
|
4687
4747
|
.\[\&\:\:-moz-range-track\]\:bg-border::-moz-range-track {
|
|
4688
4748
|
background-color: var(--color-border);
|
|
4689
4749
|
}
|
|
4750
|
+
.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar {
|
|
4751
|
+
display: none;
|
|
4752
|
+
}
|
|
4690
4753
|
.\[\&\:\:-webkit-slider-runnable-track\]\:h-1\.5::-webkit-slider-runnable-track {
|
|
4691
4754
|
height: calc(var(--spacing) * 1.5);
|
|
4692
4755
|
}
|
package/dist/workbench.js
CHANGED
|
@@ -12,9 +12,9 @@ import {
|
|
|
12
12
|
buildUnifiedPatch,
|
|
13
13
|
computeDiffStats,
|
|
14
14
|
resolveLanguage
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-UKQOHN73.js";
|
|
16
16
|
import "./chunk-3J6FG3FJ.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-UB3V2YAZ.js";
|
|
18
18
|
import "./chunk-OMUIPJQZ.js";
|
|
19
19
|
import "./chunk-WYMAC3T3.js";
|
|
20
20
|
import "./chunk-KEYPUGS3.js";
|