@tangle-network/sandbox-ui 0.45.0 → 0.47.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.
Files changed (45) hide show
  1. package/dist/{WorkflowGraph-7YYGIBNV.js → WorkflowGraph-EOV2P5AM.js} +2 -1
  2. package/dist/assets.js +1 -0
  3. package/dist/assistant.js +2 -1
  4. package/dist/auth.js +1 -0
  5. package/dist/chat.js +4 -3
  6. package/dist/{chunk-6NDOA4SB.js → chunk-2ISY4R72.js} +112 -104
  7. package/dist/{chunk-KIRJZUX2.js → chunk-BR2LMUAE.js} +61 -34
  8. package/dist/{chunk-H7GMPMPB.js → chunk-GTJ5PSK5.js} +90 -3
  9. package/dist/{chunk-CUUUFJF5.js → chunk-KOUYJ6QP.js} +23 -23
  10. package/dist/{chunk-3RNYDTQ3.js → chunk-LQHTCM56.js} +21 -27
  11. package/dist/chunk-NXUSLH7H.js +7528 -0
  12. package/dist/{chunk-2XNT74ZX.js → chunk-OMUIPJQZ.js} +28 -20
  13. package/dist/{chunk-KCWIC3SJ.js → chunk-PZ62T5PM.js} +281 -214
  14. package/dist/chunk-U67V476Y.js +35 -0
  15. package/dist/chunk-VIREDUBF.js +215 -0
  16. package/dist/dashboard.d.ts +82 -66
  17. package/dist/dashboard.js +5 -4
  18. package/dist/editor.js +2 -0
  19. package/dist/files.d.ts +5 -0
  20. package/dist/files.js +1 -0
  21. package/dist/globals.css +1170 -47
  22. package/dist/hooks.js +1 -0
  23. package/dist/index.d.ts +3 -1
  24. package/dist/index.js +95 -65
  25. package/dist/integrations.d.ts +5 -6
  26. package/dist/integrations.js +158 -63
  27. package/dist/markdown.js +2 -0
  28. package/dist/openui.d.ts +0 -5
  29. package/dist/openui.js +1 -0
  30. package/dist/pages.d.ts +1 -1
  31. package/dist/pages.js +89 -88
  32. package/dist/ports-list-DfG0VfPt.d.ts +17 -0
  33. package/dist/primitives.js +1 -0
  34. package/dist/run.js +1 -0
  35. package/dist/sdk-hooks.js +1 -0
  36. package/dist/stores.js +1 -0
  37. package/dist/styles.css +1170 -47
  38. package/dist/terminal.js +5 -209
  39. package/dist/utils.js +1 -0
  40. package/dist/workbench.d.ts +227 -0
  41. package/dist/workbench.js +40 -0
  42. package/dist/workflows.js +2 -1
  43. package/dist/workspace.d.ts +6 -2
  44. package/dist/workspace.js +2 -1
  45. package/package.json +13 -7
@@ -0,0 +1,35 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __commonJS = (cb, mod) => function __require() {
8
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
+ };
10
+ var __export = (target, all) => {
11
+ for (var name in all)
12
+ __defProp(target, name, { get: all[name], enumerable: true });
13
+ };
14
+ var __copyProps = (to, from, except, desc) => {
15
+ if (from && typeof from === "object" || typeof from === "function") {
16
+ for (let key of __getOwnPropNames(from))
17
+ if (!__hasOwnProp.call(to, key) && key !== except)
18
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
28
+ mod
29
+ ));
30
+
31
+ export {
32
+ __commonJS,
33
+ __export,
34
+ __toESM
35
+ };
@@ -0,0 +1,215 @@
1
+ import {
2
+ usePtySession
3
+ } from "./chunk-77WVVJA4.js";
4
+
5
+ // src/terminal/terminal-view.tsx
6
+ import "@xterm/xterm/css/xterm.css";
7
+ import { useEffect, useRef, useCallback, useMemo } from "react";
8
+ import { Terminal } from "@xterm/xterm";
9
+ import { FitAddon } from "@xterm/addon-fit";
10
+ import { WebLinksAddon } from "@xterm/addon-web-links";
11
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
12
+ var DEFAULT_TERMINAL_THEME = {
13
+ background: "#0c0c0e",
14
+ foreground: "#d4d4d8",
15
+ cursor: "#34d399",
16
+ cursorAccent: "#0c0c0e",
17
+ selectionBackground: "#7c3aed33",
18
+ selectionForeground: "#d4d4d8",
19
+ black: "#18181b",
20
+ red: "#ef4444",
21
+ green: "#34d399",
22
+ yellow: "#fbbf24",
23
+ blue: "#60a5fa",
24
+ magenta: "#a78bfa",
25
+ cyan: "#22d3ee",
26
+ white: "#d4d4d8",
27
+ brightBlack: "#52525b",
28
+ brightRed: "#f87171",
29
+ brightGreen: "#6ee7b7",
30
+ brightYellow: "#fde68a",
31
+ brightBlue: "#93c5fd",
32
+ brightMagenta: "#c4b5fd",
33
+ brightCyan: "#67e8f9",
34
+ brightWhite: "#fafafa"
35
+ };
36
+ function TerminalView({
37
+ apiUrl,
38
+ token,
39
+ theme,
40
+ title = "Terminal",
41
+ subtitle = "Connected to PTY session",
42
+ isActive = true,
43
+ connectionId,
44
+ fontSize = 13
45
+ }) {
46
+ const resolvedTheme = useMemo(
47
+ () => ({ ...DEFAULT_TERMINAL_THEME, ...theme }),
48
+ [theme]
49
+ );
50
+ const resolvedFontSize = Number.isFinite(fontSize) && fontSize > 0 ? fontSize : 13;
51
+ const fontSizeRef = useRef(resolvedFontSize);
52
+ fontSizeRef.current = resolvedFontSize;
53
+ const containerRef = useRef(null);
54
+ const termRef = useRef(null);
55
+ const fitAddonRef = useRef(null);
56
+ const pendingWritesRef = useRef([]);
57
+ const writeRafRef = useRef(null);
58
+ const onData = useCallback((data) => {
59
+ if (!data) return;
60
+ pendingWritesRef.current.push(data);
61
+ if (writeRafRef.current !== null) return;
62
+ writeRafRef.current = requestAnimationFrame(() => {
63
+ writeRafRef.current = null;
64
+ const chunks = pendingWritesRef.current;
65
+ if (chunks.length === 0) return;
66
+ pendingWritesRef.current = [];
67
+ termRef.current?.write(chunks.length === 1 ? chunks[0] : chunks.join(""));
68
+ });
69
+ }, []);
70
+ const { isConnected, error, sendCommand, resizeTerminal, reconnect } = usePtySession({
71
+ apiUrl,
72
+ token,
73
+ onData,
74
+ connectionId
75
+ });
76
+ useEffect(() => {
77
+ if (!containerRef.current) return;
78
+ const term = new Terminal({
79
+ theme: resolvedTheme,
80
+ fontFamily: '"JetBrains Mono", "Fira Code", "Cascadia Code", Menlo, monospace',
81
+ fontSize: fontSizeRef.current,
82
+ lineHeight: 1.4,
83
+ cursorBlink: true,
84
+ cursorStyle: "bar",
85
+ scrollback: 5e3,
86
+ convertEol: true,
87
+ allowProposedApi: true
88
+ });
89
+ const fitAddon = new FitAddon();
90
+ const webLinksAddon = new WebLinksAddon();
91
+ term.loadAddon(fitAddon);
92
+ term.loadAddon(webLinksAddon);
93
+ term.open(containerRef.current);
94
+ let webglAddon = null;
95
+ let webglCancelled = false;
96
+ void (async () => {
97
+ try {
98
+ const mod = await import("@xterm/addon-webgl");
99
+ if (webglCancelled) return;
100
+ try {
101
+ const addon = new mod.WebglAddon();
102
+ addon.onContextLoss(() => {
103
+ webglAddon?.dispose();
104
+ webglAddon = null;
105
+ });
106
+ webglAddon = addon;
107
+ term.loadAddon(addon);
108
+ } catch {
109
+ }
110
+ } catch {
111
+ }
112
+ })();
113
+ requestAnimationFrame(() => {
114
+ fitAddon.fit();
115
+ });
116
+ termRef.current = term;
117
+ fitAddonRef.current = fitAddon;
118
+ term.onData((data) => {
119
+ if (data === "\f") {
120
+ termRef.current?.clear();
121
+ sendCommand("\r").catch(console.error);
122
+ return;
123
+ }
124
+ sendCommand(data).catch((err) => {
125
+ termRef.current?.writeln(
126
+ `\r
127
+ \x1B[31m${err instanceof Error ? err.message : "Send failed"}\x1B[0m`
128
+ );
129
+ });
130
+ });
131
+ term.onResize(({ cols, rows }) => {
132
+ resizeTerminal(cols, rows).catch(console.error);
133
+ });
134
+ const ro = new ResizeObserver(() => {
135
+ requestAnimationFrame(() => {
136
+ fitAddon.fit();
137
+ });
138
+ });
139
+ ro.observe(containerRef.current);
140
+ return () => {
141
+ webglCancelled = true;
142
+ ro.disconnect();
143
+ if (writeRafRef.current !== null) {
144
+ cancelAnimationFrame(writeRafRef.current);
145
+ writeRafRef.current = null;
146
+ }
147
+ pendingWritesRef.current = [];
148
+ webglAddon?.dispose();
149
+ term.dispose();
150
+ termRef.current = null;
151
+ fitAddonRef.current = null;
152
+ };
153
+ }, [sendCommand, resizeTerminal, title, subtitle]);
154
+ useEffect(() => {
155
+ if (termRef.current) {
156
+ termRef.current.options.theme = resolvedTheme;
157
+ }
158
+ }, [resolvedTheme]);
159
+ useEffect(() => {
160
+ const term = termRef.current;
161
+ if (!term || term.options.fontSize === resolvedFontSize) return;
162
+ term.options.fontSize = resolvedFontSize;
163
+ const rafId = requestAnimationFrame(() => fitAddonRef.current?.fit());
164
+ return () => cancelAnimationFrame(rafId);
165
+ }, [resolvedFontSize]);
166
+ useEffect(() => {
167
+ if (isConnected && termRef.current) {
168
+ resizeTerminal(termRef.current.cols, termRef.current.rows).catch(console.error);
169
+ if (isActive) {
170
+ termRef.current.focus();
171
+ }
172
+ }
173
+ }, [isConnected, resizeTerminal, isActive]);
174
+ useEffect(() => {
175
+ if (isActive && termRef.current && fitAddonRef.current) {
176
+ setTimeout(() => {
177
+ fitAddonRef.current?.fit();
178
+ termRef.current?.focus();
179
+ }, 50);
180
+ }
181
+ }, [isActive]);
182
+ return /* @__PURE__ */ jsxs(
183
+ "div",
184
+ {
185
+ className: "relative h-full w-full group cursor-text",
186
+ onClick: () => termRef.current?.focus(),
187
+ children: [
188
+ /* @__PURE__ */ jsx(
189
+ "div",
190
+ {
191
+ ref: containerRef,
192
+ className: "h-full w-full overflow-hidden relative z-0",
193
+ style: { backgroundColor: resolvedTheme.background }
194
+ }
195
+ ),
196
+ (!isConnected || error) && /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-surface-container-lowest", children: /* @__PURE__ */ jsx("div", { className: "text-center", children: error ? /* @__PURE__ */ jsxs(Fragment, { children: [
197
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-[var(--surface-danger-text)] mb-3", children: error }),
198
+ /* @__PURE__ */ jsx(
199
+ "button",
200
+ {
201
+ onClick: reconnect,
202
+ className: "text-sm text-[var(--surface-success-text)] hover:opacity-80 underline cursor-pointer",
203
+ children: "Retry connection"
204
+ }
205
+ )
206
+ ] }) : /* @__PURE__ */ jsx("p", { className: "text-[13px] text-muted-foreground", children: "Connecting to terminal..." }) }) })
207
+ ]
208
+ }
209
+ );
210
+ }
211
+
212
+ export {
213
+ DEFAULT_TERMINAL_THEME,
214
+ TerminalView
215
+ };
@@ -5,57 +5,7 @@ import { HarnessType } from '@tangle-network/agent-interface';
5
5
  export { HarnessType } from '@tangle-network/agent-interface';
6
6
  export { D as DEFAULT_FEATURED_MODEL_IDS, M as ModelInfo, a as ModelPicker, b as ModelPickerProps, c as ModelPickerVariant, d as canonicalModelId, e as dedupeModels, f as formatContext, g as formatPricing, m as modelDedupKey } from './model-picker-NOWFpRY4.js';
7
7
  export { B as BillingBalance, a as BillingDashboard, b as BillingDashboardProps, c as BillingSubscription, d as BillingUsage, P as PricingPage, e as PricingPageProps, f as PricingTier, T as TemplateCard, g as TemplateCardData, h as TemplateCardProps, U as UsageChart, i as UsageChartProps, j as UsageDataPoint, k as formatPrice } from './template-card-UhV3pmRC.js';
8
-
9
- interface Backend {
10
- type: string;
11
- label: string;
12
- description?: string;
13
- /** Optional leading brand glyph (e.g. a HarnessLogo) shown in the trigger and rows. */
14
- icon?: ReactNode;
15
- }
16
- interface BackendSelectorProps {
17
- backends: Backend[];
18
- selected: string;
19
- onChange: (selected: string) => void;
20
- label?: string;
21
- placeholder?: string;
22
- className?: string;
23
- }
24
- declare function BackendSelector({ backends, selected, onChange, label, placeholder, className, }: BackendSelectorProps): react_jsx_runtime.JSX.Element;
25
-
26
- interface HarnessOption extends Backend {
27
- type: HarnessType;
28
- /**
29
- * Whether this harness can drive an interactive chat session. `false` for
30
- * shell-only backends (`cli-base`) that have no conversational agent — the
31
- * chat composer filters these out (see {@link chatCapableHarnesses}) while
32
- * scheduled/non-chat surfaces keep them.
33
- */
34
- chatCapable: boolean;
35
- }
36
- /**
37
- * Default option list with human-readable copy. Order is curated so the
38
- * recommended choice (`opencode`) appears first; `cli-base` (no agent) last.
39
- */
40
- declare const HARNESS_OPTIONS: readonly HarnessOption[];
41
- /** Harness types that can drive an interactive chat session. */
42
- declare const chatCapableHarnesses: ReadonlyArray<HarnessType>;
43
- interface HarnessPickerProps extends Omit<BackendSelectorProps, "backends" | "selected" | "onChange"> {
44
- value: HarnessType;
45
- onChange: (next: HarnessType) => void;
46
- /** Filter the available harnesses (e.g. by plan tier). Defaults to all. */
47
- available?: ReadonlyArray<HarnessType>;
48
- /** Override or extend the option metadata. Keys are HarnessType. */
49
- optionsOverride?: Partial<Record<HarnessType, Partial<Omit<HarnessOption, "type">>>>;
50
- }
51
- /**
52
- * Type-safe harness/backend selector for sandbox-backed agent products.
53
- *
54
- * Wraps the generic {@link BackendSelector} with the canonical harness list
55
- * baked in, so consumers don't have to re-declare it (or risk drifting from
56
- * the SDK enum).
57
- */
58
- declare function HarnessPicker({ value, onChange, available, optionsOverride, label, ...rest }: HarnessPickerProps): react_jsx_runtime.JSX.Element;
8
+ export { E as ExposedPort, P as PortsList, a as PortsListProps } from './ports-list-DfG0VfPt.js';
59
9
 
60
10
  interface SidebarUser {
61
11
  email: string;
@@ -462,11 +412,30 @@ interface SandboxCardData {
462
412
  name: string;
463
413
  nodeId?: string;
464
414
  status: SandboxStatus;
415
+ /**
416
+ * A user-customized container image (e.g. `ghcr.io/acme/api:sha-1a2b`).
417
+ * Surfaced only when set — sandboxes run a managed agent runtime image by
418
+ * default, which is not operator-relevant and is intentionally not shown.
419
+ */
420
+ customImage?: string;
421
+ /** @deprecated The product has no user-selectable environment. Use `customImage`. */
465
422
  image?: string;
423
+ /** @deprecated No longer rendered; the card derives its glyph from status. */
466
424
  imageIcon?: React.ReactNode;
425
+ /** Allocated vCPU count. */
426
+ vcpu?: number;
427
+ /** Live CPU utilization, 0–100. */
467
428
  cpuPercent?: number;
429
+ /** Live RAM in use (GB). */
468
430
  ramUsed?: number;
431
+ /** Allocated RAM (GB). */
469
432
  ramTotal?: number;
433
+ /** Disk in use (GB). */
434
+ diskUsed?: number;
435
+ /** Allocated disk (GB). */
436
+ diskTotal?: number;
437
+ /** Human-readable uptime since last start, e.g. "3d 4h" or "12m". */
438
+ uptime?: string;
470
439
  provisioningMessage?: string;
471
440
  provisioningPercent?: number;
472
441
  archivedAt?: string;
@@ -584,6 +553,67 @@ interface PlanCardsProps {
584
553
  }
585
554
  declare function PlanCards({ plans, className }: PlanCardsProps): react_jsx_runtime.JSX.Element;
586
555
 
556
+ interface Backend {
557
+ type: string;
558
+ label: string;
559
+ description?: string;
560
+ /** Optional leading brand glyph (e.g. a HarnessLogo) shown in the trigger and rows. */
561
+ icon?: ReactNode;
562
+ }
563
+ type BackendSelectorVariant = "field" | "pill";
564
+ interface BackendSelectorProps {
565
+ backends: Backend[];
566
+ selected: string;
567
+ onChange: (selected: string) => void;
568
+ /**
569
+ * Trigger appearance. "pill" (default) = compact inline pill matching the
570
+ * ModelPicker pill — logo + short label only. "field" = full-width form
571
+ * field with a label above. Either way the long descriptor lives only as
572
+ * subtext inside the open dropdown, never on the closed trigger.
573
+ */
574
+ variant?: BackendSelectorVariant;
575
+ label?: string;
576
+ placeholder?: string;
577
+ className?: string;
578
+ /** Extra classes merged onto the trigger itself (after the built-in defaults). */
579
+ triggerClassName?: string;
580
+ }
581
+ declare function BackendSelector({ backends, selected, onChange, variant, label, placeholder, className, triggerClassName, }: BackendSelectorProps): react_jsx_runtime.JSX.Element;
582
+
583
+ interface HarnessOption extends Backend {
584
+ type: HarnessType;
585
+ /**
586
+ * Whether this harness can drive an interactive chat session. `false` for
587
+ * shell-only backends (`cli-base`) that have no conversational agent — the
588
+ * chat composer filters these out (see {@link chatCapableHarnesses}) while
589
+ * scheduled/non-chat surfaces keep them.
590
+ */
591
+ chatCapable: boolean;
592
+ }
593
+ /**
594
+ * Default option list with human-readable copy. Order is curated so the
595
+ * recommended choice (`opencode`) appears first; `cli-base` (no agent) last.
596
+ */
597
+ declare const HARNESS_OPTIONS: readonly HarnessOption[];
598
+ /** Harness types that can drive an interactive chat session. */
599
+ declare const chatCapableHarnesses: ReadonlyArray<HarnessType>;
600
+ interface HarnessPickerProps extends Omit<BackendSelectorProps, "backends" | "selected" | "onChange"> {
601
+ value: HarnessType;
602
+ onChange: (next: HarnessType) => void;
603
+ /** Filter the available harnesses (e.g. by plan tier). Defaults to all. */
604
+ available?: ReadonlyArray<HarnessType>;
605
+ /** Override or extend the option metadata. Keys are HarnessType. */
606
+ optionsOverride?: Partial<Record<HarnessType, Partial<Omit<HarnessOption, "type">>>>;
607
+ }
608
+ /**
609
+ * Type-safe harness/backend selector for sandbox-backed agent products.
610
+ *
611
+ * Wraps the generic {@link BackendSelector} with the canonical harness list
612
+ * baked in, so consumers don't have to re-declare it (or risk drifting from
613
+ * the SDK enum).
614
+ */
615
+ declare function HarnessPicker({ value, onChange, available, optionsOverride, label, ...rest }: HarnessPickerProps): react_jsx_runtime.JSX.Element;
616
+
587
617
  /**
588
618
  * Per-harness brand glyph. `logoUrl` is a bundled lobehub data-url rendered
589
619
  * as a CSS mask filled with the foreground token (single-color brand mark,
@@ -962,20 +992,6 @@ interface GitPanelProps {
962
992
  }
963
993
  declare function GitPanel({ status, log, loading, onRefresh, className }: GitPanelProps): react_jsx_runtime.JSX.Element;
964
994
 
965
- interface ExposedPort {
966
- port: number;
967
- url: string;
968
- status: "active" | "pending";
969
- }
970
- interface PortsListProps {
971
- ports: ExposedPort[];
972
- onExposePort: (port: number) => void;
973
- onRemovePort?: (port: number) => void;
974
- isExposing?: boolean;
975
- className?: string;
976
- }
977
- declare function PortsList({ ports, onExposePort, onRemovePort, isExposing, className }: PortsListProps): react_jsx_runtime.JSX.Element;
978
-
979
995
  interface ProcessInfo {
980
996
  pid: number;
981
997
  command: string;
@@ -1068,4 +1084,4 @@ interface InfoPanelProps {
1068
1084
  }
1069
1085
  declare function InfoPanel({ label, title, description, className }: InfoPanelProps): react_jsx_runtime.JSX.Element;
1070
1086
 
1071
- export { ActivityFeed, type ActivityFeedProps, type ActivityItem, type Backend, BackendConfig, type BackendConfigProps, BackendSelector, type BackendSelectorProps, type BackendStatusData, ClusterStatusBar, type ClusterStatusBarProps, type ClusterStatusItem, CreditBalance, type CreditBalanceProps, DashboardLayout, type DashboardLayoutProps, type Profile as DashboardProfile, type SnapshotInfo as DashboardSnapshotInfo, type DashboardUser, type ExposedPort, type GitCommitData, GitPanel, type GitPanelProps, type GitStatusData, HARNESS_BRAND, HARNESS_OPTIONS, type HarnessBrand, HarnessLogo, type HarnessLogoProps, HarnessPicker, type HarnessPickerProps, INSUFFICIENT_BALANCE_CODE, InfoPanel, type InfoPanelProps, type InsufficientBalance, type Invoice, InvoiceTable, type InvoiceTableProps, type McpServer, MetricAreaChart, type MetricAreaChartProps, type MetricChartPoint, type MetricChartTone, type NavItem, NetworkConfig, type NetworkConfigData, type NetworkConfigProps, NewSandboxCard, type NewSandboxCardProps, OutOfCreditsModal, type OutOfCreditsModalProps, type PlanCardData, PlanCards, type PlanCardsProps, type PlanFeature, PortsList, type PortsListProps, type ProcessInfo, ProcessList, type ProcessListProps, type ProductVariant, ProfileAvatar, type ProfileAvatarProps, ProfileComparison, type ProfileComparisonProps, ProfileSelector, type ProfileSelectorProps, PromoBanner, type PromoBannerProps, RailButton, type RailButtonProps, RailCollapseToggle, type RailCollapseToggleProps, RailFlyout, type RailFlyoutProps, RailModeButton, type RailModeButtonProps, RailSeparator, type RailSeparatorProps, RailThemeToggle, RailTooltip, type RailTooltipProps, ResourceMeter, type ResourceMeterProps, ResourceSnapshot, type ResourceSnapshotItem, type ResourceSnapshotProps, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, type SandboxCardData, type SandboxCardProps, type SandboxStatus, SandboxTable, type SandboxTableProps, Sidebar, SidebarContent, type SidebarContentProps, SidebarLayout, type SidebarLayoutFlyoutItem, type SidebarLayoutNavItem, type SidebarLayoutProps, SidebarPanel, SidebarPanelContent, type SidebarPanelContentProps, SidebarPanelHeader, type SidebarPanelHeaderProps, type SidebarPanelProps, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarRail, SidebarRailFooter, type SidebarRailFooterProps, SidebarRailHeader, type SidebarRailHeaderProps, SidebarRailNav, type SidebarRailNavProps, type SidebarRailProps, type SidebarUser, SnapshotList, type SnapshotListProps, SystemLogsViewer, type SystemLogsViewerProps, type TeamRole, UsageSummary, type UsageSummaryData, type UsageSummaryProps, type Variant, VariantList, type VariantListProps, type VariantOutcome, type VariantStatus, canAdminSandbox, chatCapableHarnesses, parseInsufficientBalance, useSidebar };
1087
+ export { ActivityFeed, type ActivityFeedProps, type ActivityItem, type Backend, BackendConfig, type BackendConfigProps, BackendSelector, type BackendSelectorProps, type BackendStatusData, ClusterStatusBar, type ClusterStatusBarProps, type ClusterStatusItem, CreditBalance, type CreditBalanceProps, DashboardLayout, type DashboardLayoutProps, type Profile as DashboardProfile, type SnapshotInfo as DashboardSnapshotInfo, type DashboardUser, type GitCommitData, GitPanel, type GitPanelProps, type GitStatusData, HARNESS_BRAND, HARNESS_OPTIONS, type HarnessBrand, HarnessLogo, type HarnessLogoProps, HarnessPicker, type HarnessPickerProps, INSUFFICIENT_BALANCE_CODE, InfoPanel, type InfoPanelProps, type InsufficientBalance, type Invoice, InvoiceTable, type InvoiceTableProps, type McpServer, MetricAreaChart, type MetricAreaChartProps, type MetricChartPoint, type MetricChartTone, type NavItem, NetworkConfig, type NetworkConfigData, type NetworkConfigProps, NewSandboxCard, type NewSandboxCardProps, OutOfCreditsModal, type OutOfCreditsModalProps, type PlanCardData, PlanCards, type PlanCardsProps, type PlanFeature, type ProcessInfo, ProcessList, type ProcessListProps, type ProductVariant, ProfileAvatar, type ProfileAvatarProps, ProfileComparison, type ProfileComparisonProps, ProfileSelector, type ProfileSelectorProps, PromoBanner, type PromoBannerProps, RailButton, type RailButtonProps, RailCollapseToggle, type RailCollapseToggleProps, RailFlyout, type RailFlyoutProps, RailModeButton, type RailModeButtonProps, RailSeparator, type RailSeparatorProps, RailThemeToggle, RailTooltip, type RailTooltipProps, ResourceMeter, type ResourceMeterProps, ResourceSnapshot, type ResourceSnapshotItem, type ResourceSnapshotProps, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, type SandboxCardData, type SandboxCardProps, type SandboxStatus, SandboxTable, type SandboxTableProps, Sidebar, SidebarContent, type SidebarContentProps, SidebarLayout, type SidebarLayoutFlyoutItem, type SidebarLayoutNavItem, type SidebarLayoutProps, SidebarPanel, SidebarPanelContent, type SidebarPanelContentProps, SidebarPanelHeader, type SidebarPanelHeaderProps, type SidebarPanelProps, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarRail, SidebarRailFooter, type SidebarRailFooterProps, SidebarRailHeader, type SidebarRailHeaderProps, SidebarRailNav, type SidebarRailNavProps, type SidebarRailProps, type SidebarUser, SnapshotList, type SnapshotListProps, SystemLogsViewer, type SystemLogsViewerProps, type TeamRole, UsageSummary, type UsageSummaryData, type UsageSummaryProps, type Variant, VariantList, type VariantListProps, type VariantOutcome, type VariantStatus, canAdminSandbox, chatCapableHarnesses, parseInsufficientBalance, useSidebar };
package/dist/dashboard.js CHANGED
@@ -52,7 +52,7 @@ import {
52
52
  canAdminSandbox,
53
53
  parseInsufficientBalance,
54
54
  useSidebar
55
- } from "./chunk-KCWIC3SJ.js";
55
+ } from "./chunk-PZ62T5PM.js";
56
56
  import {
57
57
  BillingDashboard,
58
58
  InfoPanel,
@@ -60,7 +60,7 @@ import {
60
60
  TemplateCard,
61
61
  UsageChart,
62
62
  formatPrice
63
- } from "./chunk-2XNT74ZX.js";
63
+ } from "./chunk-OMUIPJQZ.js";
64
64
  import "./chunk-4ZZUMXPX.js";
65
65
  import {
66
66
  BackendSelector,
@@ -69,7 +69,7 @@ import {
69
69
  HarnessLogo,
70
70
  HarnessPicker,
71
71
  chatCapableHarnesses
72
- } from "./chunk-KIRJZUX2.js";
72
+ } from "./chunk-BR2LMUAE.js";
73
73
  import {
74
74
  DEFAULT_FEATURED_MODEL_IDS,
75
75
  ModelPicker,
@@ -78,8 +78,9 @@ import {
78
78
  formatContext,
79
79
  formatPricing,
80
80
  modelDedupKey
81
- } from "./chunk-3RNYDTQ3.js";
81
+ } from "./chunk-LQHTCM56.js";
82
82
  import "./chunk-EI44GEQ5.js";
83
+ import "./chunk-U67V476Y.js";
83
84
  export {
84
85
  ActivityFeed,
85
86
  BackendConfig,
package/dist/editor.js CHANGED
@@ -1,3 +1,5 @@
1
+ import "./chunk-U67V476Y.js";
2
+
1
3
  // src/editor/index.ts
2
4
  import {
3
5
  CollaboratorsList,
package/dist/files.d.ts CHANGED
@@ -1 +1,6 @@
1
1
  export { FileArtifactPane, FileArtifactPaneProps, FileNode, FilePreview, FilePreviewProps, FileTabData, FileTabs, FileTabsProps, FileTree, FileTreeProps, FileTreeVisibilityOptions, RichFileTree, RichFileTreeGitEntry, RichFileTreeGitStatus, RichFileTreeProps, RichFileTreeThemeVars, filterFileTree } from '@tangle-network/ui/files';
2
+ import '@tangle-network/ui/openui';
3
+ import '@tangle-network/ui/run';
4
+ import '@tangle-network/ui/utils';
5
+ import '@tangle-network/ui/editor';
6
+ import '@tangle-network/ui/markdown';
package/dist/files.js CHANGED
@@ -6,6 +6,7 @@ import {
6
6
  RichFileTree,
7
7
  filterFileTree
8
8
  } from "./chunk-3J6FG3FJ.js";
9
+ import "./chunk-U67V476Y.js";
9
10
  export {
10
11
  FileArtifactPane,
11
12
  FilePreview,