@tangle-network/sandbox-ui 0.122.2 → 0.123.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/README.md +3 -1
- package/dist/{WorkflowGraph-E2Gqe8sl.js → WorkflowGraph-B4mkYGe3.js} +2 -521
- package/dist/{dashboard-BpEeXRo1.js → dashboard-C2VXLIQC.js} +229 -155
- package/dist/dashboard.d.ts +1 -1
- package/dist/dashboard.js +2 -2
- package/dist/globals.css +23 -32
- package/dist/{index-wLVwzOsB.d.ts → index-BUooECWO.d.ts} +2 -2
- package/dist/{index-CZ2ErGhV.d.ts → index-B_70pkX2.d.ts} +6 -3
- package/dist/{index-D1YmTvf3.d.ts → index-v1lfd9oE.d.ts} +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +4 -4
- package/dist/{model-I-NIxeM-.js → node-output-D-fYilAu.js} +528 -3
- package/dist/{page-layout-Cf90DTWr.js → page-layout-DJV7cbxx.js} +1 -1
- package/dist/pages.js +2 -2
- package/dist/primitives-Db_ASpuT.js +25 -0
- package/dist/primitives.d.ts +1 -1
- package/dist/primitives.js +1 -1
- package/dist/styles.css +23 -32
- package/dist/{workbench-CggAsIMv.js → workbench-BAPaCOCB.js} +1 -1
- package/dist/workbench.d.ts +1 -1
- package/dist/workbench.js +1 -1
- package/dist/workflows.d.ts +166 -1
- package/dist/workflows.js +3 -3
- package/package.json +1 -1
- package/dist/primitives-C4qn9fZ8.js +0 -25
package/dist/styles.css
CHANGED
|
@@ -300,6 +300,9 @@
|
|
|
300
300
|
.inset-y-0 {
|
|
301
301
|
inset-block: 0px;
|
|
302
302
|
}
|
|
303
|
+
.-top-0\.5 {
|
|
304
|
+
top: calc(var(--spacing) * -0.5);
|
|
305
|
+
}
|
|
303
306
|
.-top-1 {
|
|
304
307
|
top: calc(var(--spacing) * -1);
|
|
305
308
|
}
|
|
@@ -339,15 +342,9 @@
|
|
|
339
342
|
.top-4 {
|
|
340
343
|
top: calc(var(--spacing) * 4);
|
|
341
344
|
}
|
|
342
|
-
.top-14 {
|
|
343
|
-
top: calc(var(--spacing) * 14);
|
|
344
|
-
}
|
|
345
345
|
.top-\[50\%\] {
|
|
346
346
|
top: 50%;
|
|
347
347
|
}
|
|
348
|
-
.top-full {
|
|
349
|
-
top: 100%;
|
|
350
|
-
}
|
|
351
348
|
.-right-0\.5 {
|
|
352
349
|
right: calc(var(--spacing) * -0.5);
|
|
353
350
|
}
|
|
@@ -441,9 +438,6 @@
|
|
|
441
438
|
.z-20 {
|
|
442
439
|
z-index: 20;
|
|
443
440
|
}
|
|
444
|
-
.z-30 {
|
|
445
|
-
z-index: 30;
|
|
446
|
-
}
|
|
447
441
|
.z-40 {
|
|
448
442
|
z-index: 40;
|
|
449
443
|
}
|
|
@@ -930,6 +924,9 @@
|
|
|
930
924
|
.h-auto {
|
|
931
925
|
height: auto;
|
|
932
926
|
}
|
|
927
|
+
.h-dvh {
|
|
928
|
+
height: 100dvh;
|
|
929
|
+
}
|
|
933
930
|
.h-full {
|
|
934
931
|
height: 100%;
|
|
935
932
|
}
|
|
@@ -1464,6 +1461,9 @@
|
|
|
1464
1461
|
.max-w-\[calc\(100vw-5rem\)\] {
|
|
1465
1462
|
max-width: calc(100vw - 5rem);
|
|
1466
1463
|
}
|
|
1464
|
+
.max-w-\[calc\(100vw-24px\)\] {
|
|
1465
|
+
max-width: calc(100vw - 24px);
|
|
1466
|
+
}
|
|
1467
1467
|
.max-w-\[min\(640px\,calc\(100vw-2rem\)\)\] {
|
|
1468
1468
|
max-width: min(640px, calc(100vw - 2rem));
|
|
1469
1469
|
}
|
|
@@ -1629,6 +1629,10 @@
|
|
|
1629
1629
|
--tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
|
|
1630
1630
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
1631
1631
|
}
|
|
1632
|
+
.translate-y-0 {
|
|
1633
|
+
--tw-translate-y: 0px;
|
|
1634
|
+
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
1635
|
+
}
|
|
1632
1636
|
.translate-y-\[-50\%\] {
|
|
1633
1637
|
--tw-translate-y: -50%;
|
|
1634
1638
|
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
@@ -1778,6 +1782,9 @@
|
|
|
1778
1782
|
.justify-start {
|
|
1779
1783
|
justify-content: flex-start;
|
|
1780
1784
|
}
|
|
1785
|
+
.gap-0 {
|
|
1786
|
+
gap: 0px;
|
|
1787
|
+
}
|
|
1781
1788
|
.gap-0\.5 {
|
|
1782
1789
|
gap: calc(var(--spacing) * 0.5);
|
|
1783
1790
|
}
|
|
@@ -2071,6 +2078,10 @@
|
|
|
2071
2078
|
border-style: var(--tw-border-style);
|
|
2072
2079
|
border-width: 2px;
|
|
2073
2080
|
}
|
|
2081
|
+
.border-y-0 {
|
|
2082
|
+
border-block-style: var(--tw-border-style);
|
|
2083
|
+
border-block-width: 0px;
|
|
2084
|
+
}
|
|
2074
2085
|
.border-t {
|
|
2075
2086
|
border-top-style: var(--tw-border-style);
|
|
2076
2087
|
border-top-width: 1px;
|
|
@@ -3018,9 +3029,6 @@
|
|
|
3018
3029
|
.pt-12 {
|
|
3019
3030
|
padding-top: calc(var(--spacing) * 12);
|
|
3020
3031
|
}
|
|
3021
|
-
.pt-16 {
|
|
3022
|
-
padding-top: calc(var(--spacing) * 16);
|
|
3023
|
-
}
|
|
3024
3032
|
.pr-1 {
|
|
3025
3033
|
padding-right: var(--spacing);
|
|
3026
3034
|
}
|
|
@@ -3834,6 +3842,9 @@
|
|
|
3834
3842
|
--tw-ring-color: color-mix(in oklab, hsl(var(--primary)) 25%, transparent);
|
|
3835
3843
|
}
|
|
3836
3844
|
}
|
|
3845
|
+
.ring-surface-container-low {
|
|
3846
|
+
--tw-ring-color: var(--md3-surface-container-low);
|
|
3847
|
+
}
|
|
3837
3848
|
.outline-hidden {
|
|
3838
3849
|
--tw-outline-style: none;
|
|
3839
3850
|
outline-style: none;
|
|
@@ -3898,11 +3909,6 @@
|
|
|
3898
3909
|
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
3899
3910
|
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
|
3900
3911
|
}
|
|
3901
|
-
.transition-\[left\,width\] {
|
|
3902
|
-
transition-property: left,width;
|
|
3903
|
-
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
3904
|
-
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
|
3905
|
-
}
|
|
3906
3912
|
.transition-\[margin-left\] {
|
|
3907
3913
|
transition-property: margin-left;
|
|
3908
3914
|
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
@@ -4113,10 +4119,6 @@
|
|
|
4113
4119
|
content: var(--tw-content);
|
|
4114
4120
|
background-color: hsl(var(--primary));
|
|
4115
4121
|
}
|
|
4116
|
-
.last\:border-0:last-child {
|
|
4117
|
-
border-style: var(--tw-border-style);
|
|
4118
|
-
border-width: 0px;
|
|
4119
|
-
}
|
|
4120
4122
|
.last\:border-b-0:last-child {
|
|
4121
4123
|
border-bottom-style: var(--tw-border-style);
|
|
4122
4124
|
border-bottom-width: 0px;
|
|
@@ -4432,14 +4434,6 @@
|
|
|
4432
4434
|
.hover\:bg-surface-container-highest:hover {
|
|
4433
4435
|
background-color: var(--md3-surface-container-highest);
|
|
4434
4436
|
}
|
|
4435
|
-
.hover\:bg-white\/5:hover {
|
|
4436
|
-
background-color: color-mix(in srgb, #fff 5%, transparent);
|
|
4437
|
-
}
|
|
4438
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
4439
|
-
.hover\:bg-white\/5:hover {
|
|
4440
|
-
background-color: color-mix(in oklab, var(--color-white) 5%, transparent);
|
|
4441
|
-
}
|
|
4442
|
-
}
|
|
4443
4437
|
.hover\:bg-yellow-600\/30:hover {
|
|
4444
4438
|
background-color: color-mix(in srgb, oklch(68.1% 0.162 75.834) 30%, transparent);
|
|
4445
4439
|
}
|
|
@@ -5078,9 +5072,6 @@
|
|
|
5078
5072
|
}
|
|
5079
5073
|
}
|
|
5080
5074
|
@media (width >= 64rem) {
|
|
5081
|
-
.lg\:left-\[var\(--sb-content-margin\)\] {
|
|
5082
|
-
left: var(--sb-content-margin);
|
|
5083
|
-
}
|
|
5084
5075
|
.lg\:col-span-1 {
|
|
5085
5076
|
grid-column: span 1 / span 1;
|
|
5086
5077
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as cn$1 } from "./utils-DzWbktWG.js";
|
|
2
|
-
import { s as PortsList } from "./dashboard-
|
|
2
|
+
import { s as PortsList } from "./dashboard-C2VXLIQC.js";
|
|
3
3
|
import { n as TerminalView } from "./terminal-DmSUfGha.js";
|
|
4
4
|
import { RichFileTree } from "./files.js";
|
|
5
5
|
import { n as PreviewView } from "./embedded-app-view-CMRPEvon.js";
|
package/dist/workbench.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { A as SandboxArtifactTerminal, C as ChangesPane, D as ChangesPaneProps, E as ChangedFile, O as SandboxArtifact, S as PillTabsProps, T as ArtifactView, _ as DiffStats, a as PreviewView, b as PillTabItem, c as DiffViewProps, d as FileBreadcrumb, f as FileBreadcrumbProps, g as PanelHeaderProps, h as PanelHeader, i as resolveLanguage, k as SandboxArtifactPaneProps, l as CodeView, m as GitStatusBadge, n as CodeSurface, o as PreviewViewProps, p as DiffStatsBadge, r as CodeSurfaceProps, s as DiffView, t as BRAND_PRISM_THEME, u as CodeViewProps, v as buildUnifiedPatch, w as SandboxArtifactPane, x as PillTabs, y as computeDiffStats } from "./index-
|
|
1
|
+
import { A as SandboxArtifactTerminal, C as ChangesPane, D as ChangesPaneProps, E as ChangedFile, O as SandboxArtifact, S as PillTabsProps, T as ArtifactView, _ as DiffStats, a as PreviewView, b as PillTabItem, c as DiffViewProps, d as FileBreadcrumb, f as FileBreadcrumbProps, g as PanelHeaderProps, h as PanelHeader, i as resolveLanguage, k as SandboxArtifactPaneProps, l as CodeView, m as GitStatusBadge, n as CodeSurface, o as PreviewViewProps, p as DiffStatsBadge, r as CodeSurfaceProps, s as DiffView, t as BRAND_PRISM_THEME, u as CodeViewProps, v as buildUnifiedPatch, w as SandboxArtifactPane, x as PillTabs, y as computeDiffStats } from "./index-v1lfd9oE.js";
|
|
2
2
|
import { a as PreviewReadiness, i as PreviewAccess, n as EmbeddedAppView, r as EmbeddedAppViewProps, t as EmbeddedApp } from "./embedded-app-view-B_vMTtJn.js";
|
|
3
3
|
export { type ArtifactView, BRAND_PRISM_THEME, type ChangedFile, ChangesPane, type ChangesPaneProps, CodeSurface, type CodeSurfaceProps, CodeView, type CodeViewProps, type DiffStats, DiffStatsBadge, DiffView, type DiffViewProps, type EmbeddedApp, EmbeddedAppView, type EmbeddedAppViewProps, FileBreadcrumb, type FileBreadcrumbProps, GitStatusBadge, PanelHeader, type PanelHeaderProps, type PillTabItem, PillTabs, type PillTabsProps, type PreviewAccess, type PreviewReadiness, PreviewView, type PreviewViewProps, type SandboxArtifact, SandboxArtifactPane, type SandboxArtifactPaneProps, type SandboxArtifactTerminal, buildUnifiedPatch, computeDiffStats, resolveLanguage };
|
package/dist/workbench.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as computeDiffStats, c as BRAND_PRISM_THEME, d as DiffStatsBadge, f as GitStatusBadge, i as buildUnifiedPatch, l as CodeSurface, m as PillTabs, n as SandboxArtifactPane, o as CodeView, p as PanelHeader, r as DiffView, s as FileBreadcrumb, t as ChangesPane, u as resolveLanguage } from "./workbench-
|
|
1
|
+
import { a as computeDiffStats, c as BRAND_PRISM_THEME, d as DiffStatsBadge, f as GitStatusBadge, i as buildUnifiedPatch, l as CodeSurface, m as PillTabs, n as SandboxArtifactPane, o as CodeView, p as PanelHeader, r as DiffView, s as FileBreadcrumb, t as ChangesPane, u as resolveLanguage } from "./workbench-BAPaCOCB.js";
|
|
2
2
|
import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-CMRPEvon.js";
|
|
3
3
|
export { BRAND_PRISM_THEME, ChangesPane, CodeSurface, CodeView, DiffStatsBadge, DiffView, EmbeddedAppView, FileBreadcrumb, GitStatusBadge, PanelHeader, PillTabs, PreviewView, SandboxArtifactPane, buildUnifiedPatch, computeDiffStats, resolveLanguage };
|
package/dist/workflows.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { a as modelBrandFor, n as ModelBrandStack, t as ModelBrandIdentity } from "./model-brand-B9A4H9pJ.js";
|
|
2
|
+
import { ReactElement } from "react";
|
|
3
|
+
import { LucideIcon } from "lucide-react";
|
|
2
4
|
import "@xyflow/react";
|
|
3
5
|
import "@xyflow/react/dist/style.css";
|
|
4
6
|
//#region src/workflows/model.d.ts
|
|
@@ -488,4 +490,167 @@ interface WorkflowGraphProps {
|
|
|
488
490
|
//#region src/workflows/WorkflowGraphLazy.d.ts
|
|
489
491
|
declare function WorkflowGraph(props: WorkflowGraphProps): import("react").JSX.Element;
|
|
490
492
|
//#endregion
|
|
491
|
-
|
|
493
|
+
//#region src/workflows/node-ui.d.ts
|
|
494
|
+
export declare const STATUS_COLOR: Record<WfNodeStatus, string>;
|
|
495
|
+
export declare const STATUS_LABEL: Record<WfNodeStatus, string>;
|
|
496
|
+
/** Status pill styling — a tinted well in the status color. Built from the
|
|
497
|
+
* semantic surface trio (bg/border/text) so the pill keeps its contrast in both
|
|
498
|
+
* themes rather than washing out in one of them. */
|
|
499
|
+
export declare const STATUS_PILL: Record<WfNodeStatus, {
|
|
500
|
+
background: string;
|
|
501
|
+
color: string;
|
|
502
|
+
borderColor: string;
|
|
503
|
+
}>;
|
|
504
|
+
export declare const KIND_ICON: Record<string, LucideIcon>;
|
|
505
|
+
/** The status pill in a card's header — the one place the run state is spelled
|
|
506
|
+
* out in words. */
|
|
507
|
+
declare function StatusPill({ status }: {
|
|
508
|
+
status: WfNodeStatus;
|
|
509
|
+
}): import("react").JSX.Element;
|
|
510
|
+
/**
|
|
511
|
+
* A node's MARK, centered in a tile the caller sizes: the provider's brand logo
|
|
512
|
+
* when the step runs against a connector — the way n8n makes a node recognizable
|
|
513
|
+
* before a word of it is read — else the kind's glyph, tinted by tone. Both
|
|
514
|
+
* densities render the same mark at different sizes, so a node looks like itself
|
|
515
|
+
* whether it's an icon tile or a full card.
|
|
516
|
+
*/
|
|
517
|
+
export declare function NodeMark({ kind, provider, model, accent, tile }: {
|
|
518
|
+
kind?: string;
|
|
519
|
+
provider?: string;
|
|
520
|
+
/** The model an agent runs, e.g. "anthropic/claude-sonnet-4-5". Its lab/host
|
|
521
|
+
* brand mark identifies the node far faster than a generic sparkle. */
|
|
522
|
+
model?: string;
|
|
523
|
+
accent: string;
|
|
524
|
+
/** Edge length of the square the mark is centered in. */
|
|
525
|
+
tile: number;
|
|
526
|
+
}): import("react").JSX.Element;
|
|
527
|
+
//#endregion
|
|
528
|
+
//#region src/workflows/naming.d.ts
|
|
529
|
+
/**
|
|
530
|
+
* Human-facing naming for workflow nodes. A definition addresses things by
|
|
531
|
+
* machine identifier — an action kind (`agent.run`), a hub action path
|
|
532
|
+
* (`github.pulls.reviews.create`), a profile slug (`pr-reviewer`) — and showing
|
|
533
|
+
* those verbatim on a node makes the graph read like a config file. These turn
|
|
534
|
+
* an identifier into the label a person would say out loud.
|
|
535
|
+
*
|
|
536
|
+
* Pure and dependency-free so the naming rules are unit-testable without the
|
|
537
|
+
* YAML parser or a render.
|
|
538
|
+
*/
|
|
539
|
+
/** How the first word of a humanized identifier is cased. An initialism is
|
|
540
|
+
* ALWAYS upper-cased whichever is chosen — that is the whole point of the table
|
|
541
|
+
* above, and `.toLowerCase()`ing the result afterwards silently undoes it
|
|
542
|
+
* ("List API keys" → "list api keys"). */
|
|
543
|
+
type LeadCase = "sentence" | "lower" | "title";
|
|
544
|
+
/**
|
|
545
|
+
* Humanize a machine identifier: `pr-reviewer` → "PR reviewer", `sandbox.spawn`
|
|
546
|
+
* → "Sandbox spawn", `postMessage` → "Post message". Known initialisms are
|
|
547
|
+
* upper-cased wherever they appear; `lead` picks the case of the rest.
|
|
548
|
+
*
|
|
549
|
+
* - `sentence` (default): "Create issue comment" — a label or a title.
|
|
550
|
+
* - `lower`: "create issue comment" — a fragment that sits INSIDE a phrase
|
|
551
|
+
* ("On pull request"), where a capital would read as a new sentence. An
|
|
552
|
+
* initialism still wins: `ci_run_completed` → "CI run completed", never
|
|
553
|
+
* "cI run completed".
|
|
554
|
+
* - `title`: "Google Sheets" — a brand/proper name.
|
|
555
|
+
*
|
|
556
|
+
* An identifier that carries no word characters is returned verbatim rather than
|
|
557
|
+
* blanked.
|
|
558
|
+
*/
|
|
559
|
+
export declare function humanizeIdentifier(id: string, lead?: LeadCase): string;
|
|
560
|
+
/** A model slug without its provider prefix (`anthropic/claude-sonnet-5` →
|
|
561
|
+
* `claude-sonnet-5`) — the vendor is noise on a card whose width is the scarce
|
|
562
|
+
* resource, and the full slug stays in the node's config for the detail view. */
|
|
563
|
+
export declare function shortModel(model: string): string;
|
|
564
|
+
/** The parts of a hub action path (`<provider>.<resource…>.<operation>`). */
|
|
565
|
+
interface ActionPathParts {
|
|
566
|
+
/** The connector the action runs against (`github`). */
|
|
567
|
+
provider: string;
|
|
568
|
+
/** The trailing verb (`create`). */
|
|
569
|
+
operation: string;
|
|
570
|
+
/** Everything between provider and operation (`pulls.reviews`), when present —
|
|
571
|
+
* a two-segment path (`slack.postMessage`) has no resource. */
|
|
572
|
+
resource?: string;
|
|
573
|
+
}
|
|
574
|
+
/** Split a hub action path into provider / resource / operation. Null when the
|
|
575
|
+
* value isn't a dotted path (a `${…}` expression, or a bare word), so callers
|
|
576
|
+
* fall back to showing it verbatim instead of inventing structure. */
|
|
577
|
+
export declare function parseActionPath(path: string): ActionPathParts | null;
|
|
578
|
+
/**
|
|
579
|
+
* The operation label for an action path, in n8n's `operation: resource` shape:
|
|
580
|
+
* `github.pulls.reviews.create` → "create: pulls.reviews", `slack.postMessage`
|
|
581
|
+
* → "post message". The provider names the node itself (its title + logo), so
|
|
582
|
+
* it is deliberately absent here. A path we can't split is shown verbatim.
|
|
583
|
+
*/
|
|
584
|
+
export declare function actionPathLabel(path: string): string;
|
|
585
|
+
//#endregion
|
|
586
|
+
//#region src/workflows/node-output.d.ts
|
|
587
|
+
/** The recovered shape of an output preview. */
|
|
588
|
+
type OutputShape = {
|
|
589
|
+
kind: "empty";
|
|
590
|
+
} |
|
|
591
|
+
/** A shallow JSON object, flattened to top-level key/value pairs for a
|
|
592
|
+
* key-value render. `truncated` when more pairs exist than we kept. */
|
|
593
|
+
{
|
|
594
|
+
kind: "json";
|
|
595
|
+
entries: [string, string][];
|
|
596
|
+
truncated: boolean;
|
|
597
|
+
} |
|
|
598
|
+
/** Structured-looking text we won't key/value render — a JSON array, a nested
|
|
599
|
+
* object, or a fragment the host clamped mid-token so it won't parse. Shown in
|
|
600
|
+
* monospace so it still reads as data, not prose. */
|
|
601
|
+
{
|
|
602
|
+
kind: "code";
|
|
603
|
+
text: string;
|
|
604
|
+
} |
|
|
605
|
+
/** Free-form prose (agent output, a status line, an error message). */
|
|
606
|
+
{
|
|
607
|
+
kind: "text";
|
|
608
|
+
text: string;
|
|
609
|
+
};
|
|
610
|
+
/**
|
|
611
|
+
* Flatten an agent's markdown answer into the sentence a person would read out
|
|
612
|
+
* of it. On a two-line card preview the syntax IS the noise: a `## Heading` mid
|
|
613
|
+
* paragraph, a `**bold**` run and a bullet's `-` all survive the clamp while the
|
|
614
|
+
* words that carry the meaning get pushed past it. Stripping the markup (never
|
|
615
|
+
* the words) is what turns the preview back into prose — the full text, markup
|
|
616
|
+
* and all, is still rendered by the node's detail view.
|
|
617
|
+
*
|
|
618
|
+
* Structure-only lines (a fence, a table rule) are dropped; everything else keeps
|
|
619
|
+
* its text and is joined into one flowing line.
|
|
620
|
+
*/
|
|
621
|
+
export declare function condenseText(text: string): string;
|
|
622
|
+
/**
|
|
623
|
+
* Recover the shape of an output preview string. Only text that *begins* like
|
|
624
|
+
* JSON (`{`/`[`) is parse-attempted, so ordinary prose starting with a brace-free
|
|
625
|
+
* sentence is never mis-parsed. A begins-like-JSON string that fails to parse
|
|
626
|
+
* (the host clamped it mid-value) still renders as `code`, not prose, so it keeps
|
|
627
|
+
* its monospace/data affordance.
|
|
628
|
+
*
|
|
629
|
+
* `condenseMarkdown` says the prose IS markdown and may be flattened for the
|
|
630
|
+
* preview ({@link condenseText}). It is OFF by default, and the caller must only
|
|
631
|
+
* turn it on for text an agent actually authored as markdown. Applied to anything
|
|
632
|
+
* else it does not merely look wrong — it silently REWRITES the text: a stack
|
|
633
|
+
* trace's `__init__.py` loses its underscores, and a shell glob `src/**` pairs
|
|
634
|
+
* with a later `**` and both vanish. An error message is the one string a person
|
|
635
|
+
* reads to find out what broke; it must reach them exactly as it was thrown.
|
|
636
|
+
*/
|
|
637
|
+
export declare function classifyOutput(preview: string | undefined, condenseMarkdown?: boolean): OutputShape;
|
|
638
|
+
/**
|
|
639
|
+
* Render a classified output preview's CONTENT (no surrounding frame — each node
|
|
640
|
+
* design supplies its own container/label). `rows` caps the visible lines so the
|
|
641
|
+
* body stays within a card's reserved output space; `tone="error"` colors it for
|
|
642
|
+
* a failure message.
|
|
643
|
+
*
|
|
644
|
+
* `rows="none"` renders the body UNCLAMPED, for a container that scrolls or is
|
|
645
|
+
* sized by its content — a drawer, a detail panel, a selection overlay. It is a
|
|
646
|
+
* word rather than a large number because there is no number that means "do not
|
|
647
|
+
* clamp": a count outside {@link CLAMP_BY_ROWS} falls back to two lines, so
|
|
648
|
+
* `rows={99}` asks for everything and silently shows the least.
|
|
649
|
+
*/
|
|
650
|
+
export declare function NodeOutputBody({ shape, rows, tone }: {
|
|
651
|
+
shape: OutputShape;
|
|
652
|
+
rows?: number | "none";
|
|
653
|
+
tone?: "default" | "error";
|
|
654
|
+
}): ReactElement | null;
|
|
655
|
+
//#endregion
|
|
656
|
+
export { type ActionPathParts, 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 };
|
package/dist/workflows.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as modelBrandFor, t as ModelBrandStack } from "./model-brand-hMyDTUqB.js";
|
|
2
|
-
import { a as
|
|
2
|
+
import { A as actionPathLabel, C as branchNodeId, D as triggerNodeIndex, E as triggerNodeId, M as parseActionPath, N as shortModel, S as actionNodeId, a as NodeMark, c as STATUS_COLOR, f as StatusPill, i as KIND_ICON, j as humanizeIdentifier, l as STATUS_LABEL, n as classifyOutput, r as condenseText, t as NodeOutputBody, u as STATUS_PILL, w as buildWorkflowGraph, x as TRIGGER_NODE_ID } from "./node-output-D-fYilAu.js";
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
4
|
import { Component, Suspense, lazy, useMemo, useState } from "react";
|
|
5
5
|
//#region src/workflows/WorkflowGraphLazy.tsx
|
|
@@ -30,7 +30,7 @@ function retryImport(factory, retries = 2, delayMs = 350) {
|
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
function lazyWorkflowGraph() {
|
|
33
|
-
return lazy(() => retryImport(() => import("./WorkflowGraph-
|
|
33
|
+
return lazy(() => retryImport(() => import("./WorkflowGraph-B4mkYGe3.js").then((m) => ({ default: m.WorkflowGraph }))));
|
|
34
34
|
}
|
|
35
35
|
var GraphErrorBoundary = class extends Component {
|
|
36
36
|
state = { hasError: false };
|
|
@@ -81,4 +81,4 @@ function WorkflowGraph(props) {
|
|
|
81
81
|
}, `${props.yaml}::${attempt}`);
|
|
82
82
|
}
|
|
83
83
|
//#endregion
|
|
84
|
-
export { ModelBrandStack, TRIGGER_NODE_ID, WorkflowGraph as WorkflowGraphLazy, actionNodeId, branchNodeId, buildWorkflowGraph, modelBrandFor, triggerNodeId, triggerNodeIndex };
|
|
84
|
+
export { KIND_ICON, ModelBrandStack, NodeMark, NodeOutputBody, StatusPill as NodeStatusPill, STATUS_COLOR, STATUS_LABEL, STATUS_PILL, TRIGGER_NODE_ID, WorkflowGraph as WorkflowGraphLazy, actionNodeId, actionPathLabel, branchNodeId, buildWorkflowGraph, classifyOutput, condenseText, humanizeIdentifier, modelBrandFor, parseActionPath, shortModel, triggerNodeId, triggerNodeIndex };
|
package/package.json
CHANGED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { ArtifactPane as ArtifactPane$1, Avatar as Avatar$1, AvatarFallback as AvatarFallback$1, AvatarImage as AvatarImage$1, Badge as Badge$1, Button as Button$1, Card as Card$1, CardContent as CardContent$1, CardDescription as CardDescription$1, CardFooter, CardHeader as CardHeader$1, CardTitle as CardTitle$1, CodeBlock, CopyButton, Dialog as Dialog$1, DialogClose, DialogContent as DialogContent$1, DialogDescription as DialogDescription$1, DialogFooter as DialogFooter$1, DialogHeader as DialogHeader$1, DialogOverlay, DialogPortal, DialogTitle as DialogTitle$1, DialogTrigger, DropZone, DropdownMenu as DropdownMenu$1, DropdownMenuCheckboxItem, DropdownMenuContent as DropdownMenuContent$1, DropdownMenuGroup, DropdownMenuItem as DropdownMenuItem$1, DropdownMenuLabel as DropdownMenuLabel$1, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator as DropdownMenuSeparator$1, DropdownMenuShortcut, DropdownMenuSub as DropdownMenuSub$1, DropdownMenuSubContent as DropdownMenuSubContent$1, DropdownMenuSubTrigger as DropdownMenuSubTrigger$1, DropdownMenuTrigger as DropdownMenuTrigger$1, EmptyState as EmptyState$1, FilterField, Heading, InlineCode, Input as Input$1, Label as Label$1, Metric, MetricStrip, PageHeader, PageHeader as PageHeader$1, PageShell as PageShell$1, Progress as Progress$1, SegmentedControl, Select as Select$1, SelectContent as SelectContent$1, SelectGroup, SelectItem as SelectItem$1, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger as SelectTrigger$1, SelectValue as SelectValue$1, SidebarDropZone, Skeleton as Skeleton$1, SkeletonCard as SkeletonCard$1, SkeletonTable, StatCard as StatCard$1, StatusPill, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs as Tabs$1, TabsContent as TabsContent$1, TabsList as TabsList$1, TabsTrigger as TabsTrigger$1, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, Textarea as Textarea$1, ThemeToggle, ToastContainer, ToastProvider, Toolbar, UploadProgress, badgeVariants, buttonVariants, useTheme as useTheme$1, useToast } from "@tangle-network/ui/primitives";
|
|
2
|
-
import { Logo, TangleKnot as TangleKnot$1 } from "@tangle-network/brand";
|
|
3
|
-
import { jsx } from "react/jsx-runtime";
|
|
4
|
-
//#region src/primitives/logo.tsx
|
|
5
|
-
/** Keep the Sandbox wordmark API while Brand owns the mark and layout. */
|
|
6
|
-
function Logo$1({ variant = "sandbox", size = "md", className, iconOnly = false }) {
|
|
7
|
-
return /* @__PURE__ */ jsx(Logo, {
|
|
8
|
-
size,
|
|
9
|
-
variant: iconOnly ? "icon" : "full",
|
|
10
|
-
suffix: variant === "sandbox" ? "Sandbox" : null,
|
|
11
|
-
className
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
Logo$1.displayName = "Logo";
|
|
15
|
-
//#endregion
|
|
16
|
-
//#region src/primitives/heading.tsx
|
|
17
|
-
/** Compatibility name for the canonical nested (h2) page header. */
|
|
18
|
-
function SectionTitle(props) {
|
|
19
|
-
return /* @__PURE__ */ jsx(PageHeader, {
|
|
20
|
-
...props,
|
|
21
|
-
level: 2
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
//#endregion
|
|
25
|
-
export { Select$1 as $, DropdownMenuItem$1 as A, TerminalInput as At, DropdownMenuTrigger$1 as B, buttonVariants as Bt, DialogTitle$1 as C, TableRow as Ct, DropdownMenuCheckboxItem as D, TabsTrigger$1 as Dt, DropdownMenu$1 as E, TabsList$1 as Et, DropdownMenuSeparator$1 as F, ToastContainer as Ft, Input$1 as G, TangleKnot$1 as Gt, FilterField as H, useToast as Ht, DropdownMenuShortcut as I, ToastProvider as It, MetricStrip as J, Label$1 as K, DropdownMenuSub$1 as L, Toolbar as Lt, DropdownMenuPortal as M, TextShimmer as Mt, DropdownMenuRadioGroup as N, Textarea$1 as Nt, DropdownMenuContent$1 as O, TerminalCursor as Ot, DropdownMenuRadioItem as P, ThemeToggle as Pt, SegmentedControl as Q, DropdownMenuSubContent$1 as R, UploadProgress as Rt, DialogPortal as S, TableHeader as St, DropZone as T, TabsContent$1 as Tt, Heading as U, SectionTitle as Ut, EmptyState$1 as V, useTheme$1 as Vt, InlineCode as W, Logo$1 as Wt, PageShell$1 as X, PageHeader$1 as Y, Progress$1 as Z, DialogContent$1 as _, TableBody as _t, Badge$1 as a, SelectScrollUpButton as at, DialogHeader$1 as b, TableFooter as bt, CardContent$1 as c, SelectValue$1 as ct, CardHeader$1 as d, SkeletonCard$1 as dt, SelectContent$1 as et, CardTitle$1 as f, SkeletonTable as ft, DialogClose as g, Table as gt, Dialog$1 as h, Switch as ht, AvatarImage$1 as i, SelectScrollDownButton as it, DropdownMenuLabel$1 as j, TerminalLine as jt, DropdownMenuGroup as k, TerminalDisplay as kt, CardDescription$1 as l, SidebarDropZone as lt, CopyButton as m, StatusPill as mt, Avatar$1 as n, SelectItem$1 as nt, Button$1 as o, SelectSeparator as ot, CodeBlock as p, StatCard$1 as pt, Metric as q, AvatarFallback$1 as r, SelectLabel as rt, Card$1 as s, SelectTrigger$1 as st, ArtifactPane$1 as t, SelectGroup as tt, CardFooter as u, Skeleton$1 as ut, DialogDescription$1 as v, TableCaption as vt, DialogTrigger as w, Tabs$1 as wt, DialogOverlay as x, TableHead as xt, DialogFooter$1 as y, TableCell as yt, DropdownMenuSubTrigger$1 as z, badgeVariants as zt };
|