@tangle-network/sandbox-ui 0.10.9 → 0.12.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/chunk-LQNEZDRM.js +109 -0
- package/dist/{chunk-Z5PSS3VD.js → chunk-NKUPJC34.js} +453 -80
- package/dist/dashboard.d.ts +1 -1
- package/dist/dashboard.js +13 -1
- package/dist/files.d.ts +64 -4
- package/dist/files.js +4 -0
- package/dist/globals.css +24 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +17 -1
- package/dist/styles.css +24 -0
- package/dist/{variant-list-DAhiR-7S.d.ts → variant-list-BrHYcBCk.d.ts} +120 -1
- package/package.json +2 -1
package/dist/dashboard.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { B as Backend, a as BackendSelector, b as BackendSelectorProps, C as ClusterStatusBar, c as ClusterStatusBarProps, d as ClusterStatusItem, e as CreditBalance, f as CreditBalanceProps, D as DashboardLayout, g as DashboardLayoutProps,
|
|
1
|
+
export { B as Backend, a as BackendSelector, b as BackendSelectorProps, C as ClusterStatusBar, c as ClusterStatusBarProps, d as ClusterStatusItem, e as CreditBalance, f as CreditBalanceProps, D as DashboardLayout, g as DashboardLayoutProps, at as DashboardProfile, h as DashboardUser, H as HARNESS_OPTIONS, i as HarnessPicker, j as HarnessPickerProps, k as HarnessType, I as Invoice, l as InvoiceTable, m as InvoiceTableProps, M as ModelInfo, n as ModelPicker, o as ModelPickerProps, p as ModelPickerVariant, q as ModelPreset, N as NavItem, r as NewSandboxCard, s as NewSandboxCardProps, t as PlanCardData, u as PlanCards, v as PlanCardsProps, au as PlanFeature, w as ProductVariant, x as ProfileAvatar, y as ProfileAvatarProps, z as ProfileComparison, A as ProfileComparisonProps, E as ProfileSelector, F as ProfileSelectorProps, R as RailButton, G as RailButtonProps, J as RailModeButton, K as RailModeButtonProps, L as RailSeparator, O as RailSeparatorProps, Q as ResourceMeter, S as ResourceMeterProps, T as SIDEBAR_MOBILE_WIDTH, U as SIDEBAR_PANEL_WIDTH, V as SIDEBAR_RAIL_WIDTH, W as SIDEBAR_TOTAL_WIDTH, X as SandboxCard, Y as SandboxCardData, Z as SandboxCardProps, _ as SandboxStatus, $ as SandboxTable, a0 as SandboxTableProps, a1 as Sidebar, a2 as SidebarContent, a3 as SidebarContentProps, a4 as SidebarPanel, a5 as SidebarPanelContent, a6 as SidebarPanelContentProps, a7 as SidebarPanelHeader, a8 as SidebarPanelHeaderProps, a9 as SidebarPanelProps, aa as SidebarProps, ab as SidebarProvider, ac as SidebarProviderProps, ad as SidebarRail, ae as SidebarRailFooter, af as SidebarRailFooterProps, ag as SidebarRailHeader, ah as SidebarRailHeaderProps, ai as SidebarRailNav, aj as SidebarRailNavProps, ak as SidebarRailProps, al as SidebarUser, av as TeamRole, aw as Variant, an as VariantList, ao as VariantListProps, ax as VariantOutcome, ay as VariantStatus, az as canAdminSandbox, ap as canonicalModelId, aq as formatContext, ar as formatPricing, as as useSidebar } from './variant-list-BrHYcBCk.js';
|
|
2
2
|
export { a as BillingBalance, c as BillingDashboard, d as BillingDashboardProps, B as BillingSubscription, b as BillingUsage, e as PricingPage, f as PricingPageProps, P as PricingTier, g as UsageChart, h as UsageChartProps, U as UsageDataPoint, i as formatPrice } from './usage-chart-CPTcNlGs.js';
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
4
|
export { a as TemplateCard, T as TemplateCardData, b as TemplateCardProps } from './template-card-BAtvcAkU.js';
|
package/dist/dashboard.js
CHANGED
|
@@ -7,7 +7,10 @@ import {
|
|
|
7
7
|
ClusterStatusBar,
|
|
8
8
|
CreditBalance,
|
|
9
9
|
DashboardLayout,
|
|
10
|
+
HARNESS_OPTIONS,
|
|
11
|
+
HarnessPicker,
|
|
10
12
|
InvoiceTable,
|
|
13
|
+
ModelPicker,
|
|
11
14
|
NewSandboxCard,
|
|
12
15
|
PlanCards,
|
|
13
16
|
ProfileAvatar,
|
|
@@ -35,8 +38,11 @@ import {
|
|
|
35
38
|
SidebarRailNav,
|
|
36
39
|
VariantList,
|
|
37
40
|
canAdminSandbox,
|
|
41
|
+
canonicalModelId,
|
|
42
|
+
formatContext,
|
|
43
|
+
formatPricing,
|
|
38
44
|
useSidebar
|
|
39
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-NKUPJC34.js";
|
|
40
46
|
import {
|
|
41
47
|
BillingDashboard,
|
|
42
48
|
PricingPage,
|
|
@@ -931,8 +937,11 @@ export {
|
|
|
931
937
|
CreditBalance,
|
|
932
938
|
DashboardLayout,
|
|
933
939
|
GitPanel,
|
|
940
|
+
HARNESS_OPTIONS,
|
|
941
|
+
HarnessPicker,
|
|
934
942
|
InfoPanel,
|
|
935
943
|
InvoiceTable,
|
|
944
|
+
ModelPicker,
|
|
936
945
|
NetworkConfig,
|
|
937
946
|
NewSandboxCard,
|
|
938
947
|
PlanCards,
|
|
@@ -970,6 +979,9 @@ export {
|
|
|
970
979
|
UsageSummary,
|
|
971
980
|
VariantList,
|
|
972
981
|
canAdminSandbox,
|
|
982
|
+
canonicalModelId,
|
|
983
|
+
formatContext,
|
|
973
984
|
formatPrice,
|
|
985
|
+
formatPricing,
|
|
974
986
|
useSidebar
|
|
975
987
|
};
|
package/dist/files.d.ts
CHANGED
|
@@ -1,12 +1,72 @@
|
|
|
1
|
-
import { a as FileTabData } from './file-tabs-BLfxfmAH.js';
|
|
2
|
-
export {
|
|
1
|
+
import { F as FileNode, a as FileTabData } from './file-tabs-BLfxfmAH.js';
|
|
2
|
+
export { b as FileTabs, c as FileTabsProps, d as FileTree, e as FileTreeProps, f as FileTreeVisibilityOptions, g as filterFileTree } from './file-tabs-BLfxfmAH.js';
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
|
+
import { GitStatusEntry, ContextMenuItem, ContextMenuOpenContext, GitStatus } from '@pierre/trees';
|
|
5
|
+
import { ReactNode, CSSProperties } from 'react';
|
|
4
6
|
import { b as DocumentEditorMode, D as DocumentEditorBackend, d as DocumentEditorPaneCollaborationConfig } from './document-editor-pane-A70-EhdQ.js';
|
|
5
7
|
import { A as ArtifactPaneProps } from './artifact-pane-Bh45Ssco.js';
|
|
6
|
-
import 'react';
|
|
7
8
|
import '@hocuspocus/provider';
|
|
8
9
|
import 'yjs';
|
|
9
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Re-export Pierre's git-status union under a stable name so consumers
|
|
13
|
+
* don't import directly from the dep. If we ever swap the underlying
|
|
14
|
+
* implementation, only this file changes.
|
|
15
|
+
*/
|
|
16
|
+
type RichFileTreeGitStatus = GitStatus;
|
|
17
|
+
type RichFileTreeGitEntry = GitStatusEntry;
|
|
18
|
+
interface RichFileTreeProps {
|
|
19
|
+
/**
|
|
20
|
+
* Either a recursive `FileNode` tree (matches the existing FileTree
|
|
21
|
+
* input) or a flat list of canonical paths. Pass exactly one.
|
|
22
|
+
*/
|
|
23
|
+
root?: FileNode;
|
|
24
|
+
paths?: ReadonlyArray<string>;
|
|
25
|
+
/** Currently-selected path. Pierre supports multi-select internally; the
|
|
26
|
+
* wrapper exposes a single string for parity with FileTree. */
|
|
27
|
+
selectedPath?: string;
|
|
28
|
+
/** Called whenever the selection changes (single-select fan-out). */
|
|
29
|
+
onSelect?: (path: string) => void;
|
|
30
|
+
/** Show the inline search input. Defaults to true. */
|
|
31
|
+
search?: boolean;
|
|
32
|
+
/** Open / closed initial expansion. Defaults to "open" — match FileTree. */
|
|
33
|
+
initialExpansion?: "open" | "closed";
|
|
34
|
+
/** Optional git-status decorations per path. */
|
|
35
|
+
gitStatus?: ReadonlyArray<RichFileTreeGitEntry>;
|
|
36
|
+
/**
|
|
37
|
+
* Right-click / button-lane menu content. Receives the row and the
|
|
38
|
+
* trigger context (which interaction opened the menu).
|
|
39
|
+
*/
|
|
40
|
+
renderContextMenu?: (item: ContextMenuItem, context: ContextMenuOpenContext) => ReactNode;
|
|
41
|
+
/** Optional header rendered above the tree rows. */
|
|
42
|
+
header?: ReactNode;
|
|
43
|
+
/**
|
|
44
|
+
* Theme override map for shadow-DOM CSS variables. Most consumers can
|
|
45
|
+
* leave this — defaults derive from the host element's computed
|
|
46
|
+
* tokens via `cssVarFromToken()`.
|
|
47
|
+
*/
|
|
48
|
+
themeOverrides?: Partial<RichFileTreeThemeVars>;
|
|
49
|
+
className?: string;
|
|
50
|
+
style?: CSSProperties;
|
|
51
|
+
/** Inline height (or set via `style.height`). Defaults to 100% of parent. */
|
|
52
|
+
height?: number | string;
|
|
53
|
+
}
|
|
54
|
+
interface RichFileTreeThemeVars {
|
|
55
|
+
/** Selected-row background. */
|
|
56
|
+
selectedBg: string;
|
|
57
|
+
/** Selected-row foreground. */
|
|
58
|
+
selectedFg: string;
|
|
59
|
+
/** Default row foreground. */
|
|
60
|
+
fg: string;
|
|
61
|
+
/** Hover background. */
|
|
62
|
+
hoverBg: string;
|
|
63
|
+
/** Border / divider color. */
|
|
64
|
+
border: string;
|
|
65
|
+
/** Muted (parent path, breadcrumb) foreground. */
|
|
66
|
+
mutedFg: string;
|
|
67
|
+
}
|
|
68
|
+
declare function RichFileTree({ root, paths, selectedPath, onSelect, search, initialExpansion, gitStatus, renderContextMenu, header, themeOverrides, className, style, height, }: RichFileTreeProps): react_jsx_runtime.JSX.Element;
|
|
69
|
+
|
|
10
70
|
/**
|
|
11
71
|
* FilePreview — universal file renderer.
|
|
12
72
|
*
|
|
@@ -66,4 +126,4 @@ interface FileArtifactPaneProps extends Omit<FilePreviewProps, "className"> {
|
|
|
66
126
|
*/
|
|
67
127
|
declare function FileArtifactPane({ filename, content, blobUrl, mimeType, onClose, onDownload, path, tabs, activeTabId, onTabSelect, onTabClose, eyebrow, meta, toolbar, footer, className, editor, }: FileArtifactPaneProps): react_jsx_runtime.JSX.Element;
|
|
68
128
|
|
|
69
|
-
export { FileArtifactPane, type FileArtifactPaneProps, FilePreview, type FilePreviewProps, FileTabData };
|
|
129
|
+
export { FileArtifactPane, type FileArtifactPaneProps, FileNode, FilePreview, type FilePreviewProps, FileTabData, RichFileTree, type RichFileTreeGitEntry, type RichFileTreeGitStatus, type RichFileTreeProps, type RichFileTreeThemeVars };
|
package/dist/files.js
CHANGED
package/dist/globals.css
CHANGED
|
@@ -1082,6 +1082,9 @@
|
|
|
1082
1082
|
.h-\[380px\] {
|
|
1083
1083
|
height: 380px;
|
|
1084
1084
|
}
|
|
1085
|
+
.h-\[480px\] {
|
|
1086
|
+
height: 480px;
|
|
1087
|
+
}
|
|
1085
1088
|
.h-\[500px\] {
|
|
1086
1089
|
height: 500px;
|
|
1087
1090
|
}
|
|
@@ -1139,6 +1142,9 @@
|
|
|
1139
1142
|
.max-h-\[160px\] {
|
|
1140
1143
|
max-height: 160px;
|
|
1141
1144
|
}
|
|
1145
|
+
.max-h-\[440px\] {
|
|
1146
|
+
max-height: 440px;
|
|
1147
|
+
}
|
|
1142
1148
|
.min-h-0 {
|
|
1143
1149
|
min-height: calc(var(--spacing) * 0);
|
|
1144
1150
|
}
|
|
@@ -1343,6 +1349,9 @@
|
|
|
1343
1349
|
.w-\[var\(--indicator-dot-size\)\] {
|
|
1344
1350
|
width: var(--indicator-dot-size);
|
|
1345
1351
|
}
|
|
1352
|
+
.w-\[var\(--radix-dropdown-menu-trigger-width\)\] {
|
|
1353
|
+
width: var(--radix-dropdown-menu-trigger-width);
|
|
1354
|
+
}
|
|
1346
1355
|
.w-\[var\(--radix-select-trigger-width\)\] {
|
|
1347
1356
|
width: var(--radix-select-trigger-width);
|
|
1348
1357
|
}
|
|
@@ -1403,12 +1412,18 @@
|
|
|
1403
1412
|
.max-w-\[150px\] {
|
|
1404
1413
|
max-width: 150px;
|
|
1405
1414
|
}
|
|
1415
|
+
.max-w-\[160px\] {
|
|
1416
|
+
max-width: 160px;
|
|
1417
|
+
}
|
|
1406
1418
|
.max-w-\[250px\] {
|
|
1407
1419
|
max-width: 250px;
|
|
1408
1420
|
}
|
|
1409
1421
|
.max-w-\[300px\] {
|
|
1410
1422
|
max-width: 300px;
|
|
1411
1423
|
}
|
|
1424
|
+
.max-w-\[460px\] {
|
|
1425
|
+
max-width: 460px;
|
|
1426
|
+
}
|
|
1412
1427
|
.max-w-full {
|
|
1413
1428
|
max-width: 100%;
|
|
1414
1429
|
}
|
|
@@ -1448,6 +1463,9 @@
|
|
|
1448
1463
|
.min-w-\[180px\] {
|
|
1449
1464
|
min-width: 180px;
|
|
1450
1465
|
}
|
|
1466
|
+
.min-w-\[320px\] {
|
|
1467
|
+
min-width: 320px;
|
|
1468
|
+
}
|
|
1451
1469
|
.min-w-\[var\(--radix-select-trigger-width\)\] {
|
|
1452
1470
|
min-width: var(--radix-select-trigger-width);
|
|
1453
1471
|
}
|
|
@@ -2602,6 +2620,9 @@
|
|
|
2602
2620
|
.pt-1 {
|
|
2603
2621
|
padding-top: calc(var(--spacing) * 1);
|
|
2604
2622
|
}
|
|
2623
|
+
.pt-1\.5 {
|
|
2624
|
+
padding-top: calc(var(--spacing) * 1.5);
|
|
2625
|
+
}
|
|
2605
2626
|
.pt-2 {
|
|
2606
2627
|
padding-top: calc(var(--spacing) * 2);
|
|
2607
2628
|
}
|
|
@@ -2641,6 +2662,9 @@
|
|
|
2641
2662
|
.pb-0 {
|
|
2642
2663
|
padding-bottom: calc(var(--spacing) * 0);
|
|
2643
2664
|
}
|
|
2665
|
+
.pb-0\.5 {
|
|
2666
|
+
padding-bottom: calc(var(--spacing) * 0.5);
|
|
2667
|
+
}
|
|
2644
2668
|
.pb-1 {
|
|
2645
2669
|
padding-bottom: calc(var(--spacing) * 1);
|
|
2646
2670
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,8 +14,8 @@ import * as React$1 from 'react';
|
|
|
14
14
|
import { b as ToolPart } from './parts-CyGkM6Fp.js';
|
|
15
15
|
export { R as ReasoningPart, S as SessionMessage, a as SessionPart, T as TextPart, c as ToolState, d as ToolStatus, e as ToolTime } from './parts-CyGkM6Fp.js';
|
|
16
16
|
export { F as FileNode, a as FileTabData, b as FileTabs, c as FileTabsProps, d as FileTree, e as FileTreeProps, f as FileTreeVisibilityOptions, g as filterFileTree } from './file-tabs-BLfxfmAH.js';
|
|
17
|
-
export { FileArtifactPane, FileArtifactPaneProps, FilePreview, FilePreviewProps } from './files.js';
|
|
18
|
-
export { B as Backend, a as BackendSelector, b as BackendSelectorProps, C as ClusterStatusBar, c as ClusterStatusBarProps, d as ClusterStatusItem, e as CreditBalance, f as CreditBalanceProps, D as DashboardLayout, g as DashboardLayoutProps, h as DashboardUser, I as Invoice,
|
|
17
|
+
export { FileArtifactPane, FileArtifactPaneProps, FilePreview, FilePreviewProps, RichFileTree, RichFileTreeGitEntry, RichFileTreeGitStatus, RichFileTreeProps, RichFileTreeThemeVars } from './files.js';
|
|
18
|
+
export { B as Backend, a as BackendSelector, b as BackendSelectorProps, C as ClusterStatusBar, c as ClusterStatusBarProps, d as ClusterStatusItem, e as CreditBalance, f as CreditBalanceProps, D as DashboardLayout, g as DashboardLayoutProps, h as DashboardUser, H as HARNESS_OPTIONS, i as HarnessPicker, j as HarnessPickerProps, k as HarnessType, I as Invoice, l as InvoiceTable, m as InvoiceTableProps, M as ModelInfo, n as ModelPicker, o as ModelPickerProps, p as ModelPickerVariant, q as ModelPreset, N as NavItem, r as NewSandboxCard, s as NewSandboxCardProps, P as PanelConfig, t as PlanCardData, u as PlanCards, v as PlanCardsProps, w as ProductVariant, x as ProfileAvatar, y as ProfileAvatarProps, z as ProfileComparison, A as ProfileComparisonProps, E as ProfileSelector, F as ProfileSelectorProps, R as RailButton, G as RailButtonProps, J as RailModeButton, K as RailModeButtonProps, L as RailSeparator, O as RailSeparatorProps, Q as ResourceMeter, S as ResourceMeterProps, T as SIDEBAR_MOBILE_WIDTH, U as SIDEBAR_PANEL_WIDTH, V as SIDEBAR_RAIL_WIDTH, W as SIDEBAR_TOTAL_WIDTH, X as SandboxCard, Y as SandboxCardData, Z as SandboxCardProps, _ as SandboxStatus, $ as SandboxTable, a0 as SandboxTableProps, a1 as Sidebar, a2 as SidebarContent, a3 as SidebarContentProps, a4 as SidebarPanel, a5 as SidebarPanelContent, a6 as SidebarPanelContentProps, a7 as SidebarPanelHeader, a8 as SidebarPanelHeaderProps, a9 as SidebarPanelProps, aa as SidebarProps, ab as SidebarProvider, ac as SidebarProviderProps, ad as SidebarRail, ae as SidebarRailFooter, af as SidebarRailFooterProps, ag as SidebarRailHeader, ah as SidebarRailHeaderProps, ai as SidebarRailNav, aj as SidebarRailNavProps, ak as SidebarRailProps, al as SidebarUser, am as TopNavLink, an as VariantList, ao as VariantListProps, ap as canonicalModelId, aq as formatContext, ar as formatPricing, as as useSidebar } from './variant-list-BrHYcBCk.js';
|
|
19
19
|
export { c as BillingDashboard, d as BillingDashboardProps, e as PricingCards, f as PricingPageProps, g as UsageChart, h as UsageChartProps, U as UsageDataPoint } from './usage-chart-CPTcNlGs.js';
|
|
20
20
|
export { AuthHeader, GitHubLoginButton, LoginLayout, LoginLayoutProps, UserMenu } from './auth.js';
|
|
21
21
|
export { CodeBlock, CodeBlock as CodeBlockDisplay, CopyButton, Markdown, MarkdownProps } from './markdown.js';
|
|
@@ -40,6 +40,7 @@ import '@radix-ui/react-label';
|
|
|
40
40
|
import '@hocuspocus/provider';
|
|
41
41
|
import 'yjs';
|
|
42
42
|
import '@tiptap/react';
|
|
43
|
+
import '@pierre/trees';
|
|
43
44
|
import 'nanostores';
|
|
44
45
|
import 'clsx';
|
|
45
46
|
|
package/dist/index.js
CHANGED
|
@@ -169,6 +169,9 @@ import {
|
|
|
169
169
|
TableHeader,
|
|
170
170
|
TableRow
|
|
171
171
|
} from "./chunk-34I7UFSX.js";
|
|
172
|
+
import {
|
|
173
|
+
RichFileTree
|
|
174
|
+
} from "./chunk-LQNEZDRM.js";
|
|
172
175
|
import {
|
|
173
176
|
FileArtifactPane,
|
|
174
177
|
FilePreview,
|
|
@@ -189,7 +192,10 @@ import {
|
|
|
189
192
|
ClusterStatusBar,
|
|
190
193
|
CreditBalance,
|
|
191
194
|
DashboardLayout,
|
|
195
|
+
HARNESS_OPTIONS,
|
|
196
|
+
HarnessPicker,
|
|
192
197
|
InvoiceTable,
|
|
198
|
+
ModelPicker,
|
|
193
199
|
NewSandboxCard,
|
|
194
200
|
PlanCards,
|
|
195
201
|
ProfileAvatar,
|
|
@@ -216,8 +222,11 @@ import {
|
|
|
216
222
|
SidebarRailHeader,
|
|
217
223
|
SidebarRailNav,
|
|
218
224
|
VariantList,
|
|
225
|
+
canonicalModelId,
|
|
226
|
+
formatContext,
|
|
227
|
+
formatPricing,
|
|
219
228
|
useSidebar
|
|
220
|
-
} from "./chunk-
|
|
229
|
+
} from "./chunk-NKUPJC34.js";
|
|
221
230
|
import {
|
|
222
231
|
BillingDashboard,
|
|
223
232
|
PricingPage,
|
|
@@ -428,6 +437,8 @@ export {
|
|
|
428
437
|
GitHubLoginButton,
|
|
429
438
|
GlobResultsPreview,
|
|
430
439
|
GrepResultsPreview,
|
|
440
|
+
HARNESS_OPTIONS,
|
|
441
|
+
HarnessPicker,
|
|
431
442
|
InlineCode,
|
|
432
443
|
InlineThinkingItem,
|
|
433
444
|
InlineToolItem,
|
|
@@ -438,6 +449,7 @@ export {
|
|
|
438
449
|
Logo,
|
|
439
450
|
Markdown,
|
|
440
451
|
MessageList,
|
|
452
|
+
ModelPicker,
|
|
441
453
|
NewSandboxCard,
|
|
442
454
|
OpenUIArtifactRenderer,
|
|
443
455
|
PlanCards,
|
|
@@ -452,6 +464,7 @@ export {
|
|
|
452
464
|
RailSeparator,
|
|
453
465
|
RealtimeSessionRegistry,
|
|
454
466
|
ResourceMeter,
|
|
467
|
+
RichFileTree,
|
|
455
468
|
RunGroup,
|
|
456
469
|
RuntimePane,
|
|
457
470
|
SIDEBAR_MOBILE_WIDTH,
|
|
@@ -530,12 +543,15 @@ export {
|
|
|
530
543
|
WriteFilePreview,
|
|
531
544
|
badgeVariants,
|
|
532
545
|
buttonVariants,
|
|
546
|
+
canonicalModelId,
|
|
533
547
|
cn,
|
|
534
548
|
copyText,
|
|
535
549
|
createAuthFetcher,
|
|
536
550
|
filterFileTree,
|
|
537
551
|
formatBytes,
|
|
552
|
+
formatContext,
|
|
538
553
|
formatDuration,
|
|
554
|
+
formatPricing,
|
|
539
555
|
formatUptime,
|
|
540
556
|
getToolCategory,
|
|
541
557
|
getToolDisplayMetadata,
|
package/dist/styles.css
CHANGED
|
@@ -1082,6 +1082,9 @@
|
|
|
1082
1082
|
.h-\[380px\] {
|
|
1083
1083
|
height: 380px;
|
|
1084
1084
|
}
|
|
1085
|
+
.h-\[480px\] {
|
|
1086
|
+
height: 480px;
|
|
1087
|
+
}
|
|
1085
1088
|
.h-\[500px\] {
|
|
1086
1089
|
height: 500px;
|
|
1087
1090
|
}
|
|
@@ -1139,6 +1142,9 @@
|
|
|
1139
1142
|
.max-h-\[160px\] {
|
|
1140
1143
|
max-height: 160px;
|
|
1141
1144
|
}
|
|
1145
|
+
.max-h-\[440px\] {
|
|
1146
|
+
max-height: 440px;
|
|
1147
|
+
}
|
|
1142
1148
|
.min-h-0 {
|
|
1143
1149
|
min-height: calc(var(--spacing) * 0);
|
|
1144
1150
|
}
|
|
@@ -1343,6 +1349,9 @@
|
|
|
1343
1349
|
.w-\[var\(--indicator-dot-size\)\] {
|
|
1344
1350
|
width: var(--indicator-dot-size);
|
|
1345
1351
|
}
|
|
1352
|
+
.w-\[var\(--radix-dropdown-menu-trigger-width\)\] {
|
|
1353
|
+
width: var(--radix-dropdown-menu-trigger-width);
|
|
1354
|
+
}
|
|
1346
1355
|
.w-\[var\(--radix-select-trigger-width\)\] {
|
|
1347
1356
|
width: var(--radix-select-trigger-width);
|
|
1348
1357
|
}
|
|
@@ -1403,12 +1412,18 @@
|
|
|
1403
1412
|
.max-w-\[150px\] {
|
|
1404
1413
|
max-width: 150px;
|
|
1405
1414
|
}
|
|
1415
|
+
.max-w-\[160px\] {
|
|
1416
|
+
max-width: 160px;
|
|
1417
|
+
}
|
|
1406
1418
|
.max-w-\[250px\] {
|
|
1407
1419
|
max-width: 250px;
|
|
1408
1420
|
}
|
|
1409
1421
|
.max-w-\[300px\] {
|
|
1410
1422
|
max-width: 300px;
|
|
1411
1423
|
}
|
|
1424
|
+
.max-w-\[460px\] {
|
|
1425
|
+
max-width: 460px;
|
|
1426
|
+
}
|
|
1412
1427
|
.max-w-full {
|
|
1413
1428
|
max-width: 100%;
|
|
1414
1429
|
}
|
|
@@ -1448,6 +1463,9 @@
|
|
|
1448
1463
|
.min-w-\[180px\] {
|
|
1449
1464
|
min-width: 180px;
|
|
1450
1465
|
}
|
|
1466
|
+
.min-w-\[320px\] {
|
|
1467
|
+
min-width: 320px;
|
|
1468
|
+
}
|
|
1451
1469
|
.min-w-\[var\(--radix-select-trigger-width\)\] {
|
|
1452
1470
|
min-width: var(--radix-select-trigger-width);
|
|
1453
1471
|
}
|
|
@@ -2602,6 +2620,9 @@
|
|
|
2602
2620
|
.pt-1 {
|
|
2603
2621
|
padding-top: calc(var(--spacing) * 1);
|
|
2604
2622
|
}
|
|
2623
|
+
.pt-1\.5 {
|
|
2624
|
+
padding-top: calc(var(--spacing) * 1.5);
|
|
2625
|
+
}
|
|
2605
2626
|
.pt-2 {
|
|
2606
2627
|
padding-top: calc(var(--spacing) * 2);
|
|
2607
2628
|
}
|
|
@@ -2641,6 +2662,9 @@
|
|
|
2641
2662
|
.pb-0 {
|
|
2642
2663
|
padding-bottom: calc(var(--spacing) * 0);
|
|
2643
2664
|
}
|
|
2665
|
+
.pb-0\.5 {
|
|
2666
|
+
padding-bottom: calc(var(--spacing) * 0.5);
|
|
2667
|
+
}
|
|
2644
2668
|
.pb-1 {
|
|
2645
2669
|
padding-bottom: calc(var(--spacing) * 1);
|
|
2646
2670
|
}
|
|
@@ -358,6 +358,125 @@ interface BackendSelectorProps {
|
|
|
358
358
|
}
|
|
359
359
|
declare function BackendSelector({ backends, selected, onChange, label, placeholder, className, }: BackendSelectorProps): react_jsx_runtime.JSX.Element;
|
|
360
360
|
|
|
361
|
+
/**
|
|
362
|
+
* Sandbox agent harness types — mirrors `BackendType` from
|
|
363
|
+
* `@tangle-network/sandbox` SDK. Kept in lockstep with that enum:
|
|
364
|
+
* if the SDK adds a backend, add it here too.
|
|
365
|
+
*/
|
|
366
|
+
type HarnessType = "opencode" | "claude-code" | "codex" | "amp" | "factory-droids" | "cli-base";
|
|
367
|
+
interface HarnessOption extends Backend {
|
|
368
|
+
type: HarnessType;
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Default option list with human-readable copy. Order is curated so the
|
|
372
|
+
* recommended choice (`opencode`) appears first; `cli-base` (no agent) last.
|
|
373
|
+
*/
|
|
374
|
+
declare const HARNESS_OPTIONS: readonly HarnessOption[];
|
|
375
|
+
interface HarnessPickerProps extends Omit<BackendSelectorProps, "backends" | "selected" | "onChange"> {
|
|
376
|
+
value: HarnessType;
|
|
377
|
+
onChange: (next: HarnessType) => void;
|
|
378
|
+
/** Filter the available harnesses (e.g. by plan tier). Defaults to all. */
|
|
379
|
+
available?: ReadonlyArray<HarnessType>;
|
|
380
|
+
/** Override or extend the option metadata. Keys are HarnessType. */
|
|
381
|
+
optionsOverride?: Partial<Record<HarnessType, Partial<Omit<HarnessOption, "type">>>>;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Type-safe harness/backend selector for sandbox-backed agent products.
|
|
385
|
+
*
|
|
386
|
+
* Wraps the generic {@link BackendSelector} with the canonical harness list
|
|
387
|
+
* baked in, so consumers don't have to re-declare it (or risk drifting from
|
|
388
|
+
* the SDK enum).
|
|
389
|
+
*/
|
|
390
|
+
declare function HarnessPicker({ value, onChange, available, optionsOverride, label, ...rest }: HarnessPickerProps): react_jsx_runtime.JSX.Element;
|
|
391
|
+
|
|
392
|
+
/**
|
|
393
|
+
* Wire-format model entry as returned by `/v1/models` on the Tangle Router
|
|
394
|
+
* (and most OpenAI-compatible gateways). Field names match the upstream
|
|
395
|
+
* response so consumers can pass `data.data` straight through.
|
|
396
|
+
*/
|
|
397
|
+
interface ModelInfo {
|
|
398
|
+
/** Provider-local id, e.g. "gpt-5.4" or "anthropic/claude-sonnet-4-6". */
|
|
399
|
+
id: string;
|
|
400
|
+
/** Human label (defaults to id if absent). */
|
|
401
|
+
name?: string;
|
|
402
|
+
/** Provider key, e.g. "openai", "anthropic". Underscored for compat with router. */
|
|
403
|
+
_provider?: string;
|
|
404
|
+
/** Alternative provider field on some gateways. */
|
|
405
|
+
provider?: string;
|
|
406
|
+
/**
|
|
407
|
+
* Per-token prices in USD as decimal strings. Multiply by 1_000_000 for
|
|
408
|
+
* the conventional $/M tokens display.
|
|
409
|
+
*/
|
|
410
|
+
pricing?: {
|
|
411
|
+
prompt?: string | null;
|
|
412
|
+
completion?: string | null;
|
|
413
|
+
};
|
|
414
|
+
context_length?: number;
|
|
415
|
+
description?: string | null;
|
|
416
|
+
architecture?: {
|
|
417
|
+
modality?: string;
|
|
418
|
+
input_modalities?: string[];
|
|
419
|
+
output_modalities?: string[];
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Curated preset bucket. Three are surfaced by default — they map to typical
|
|
424
|
+
* cost/quality tradeoffs without forcing the consumer to pick a specific
|
|
425
|
+
* model. `match` resolves the preset against the loaded model list.
|
|
426
|
+
*/
|
|
427
|
+
interface ModelPreset {
|
|
428
|
+
id: "fast" | "balanced" | "best" | string;
|
|
429
|
+
label: string;
|
|
430
|
+
hint: string;
|
|
431
|
+
icon?: React.ComponentType<{
|
|
432
|
+
className?: string;
|
|
433
|
+
}>;
|
|
434
|
+
/**
|
|
435
|
+
* Pick the canonical model id for this preset given the loaded list.
|
|
436
|
+
* Should return undefined if no acceptable model is loaded yet.
|
|
437
|
+
*/
|
|
438
|
+
match: (models: ModelInfo[]) => string | undefined;
|
|
439
|
+
}
|
|
440
|
+
type ModelPickerVariant = "field" | "pill";
|
|
441
|
+
interface ModelPickerProps {
|
|
442
|
+
/** Canonical model id (provider-prefixed, e.g. "openai/gpt-5.4"). */
|
|
443
|
+
value: string;
|
|
444
|
+
onChange: (modelId: string) => void;
|
|
445
|
+
/** Models to choose from. Pass `[]` while loading. */
|
|
446
|
+
models: ModelInfo[];
|
|
447
|
+
/** Show the loading state (overrides empty-list copy). */
|
|
448
|
+
loading?: boolean;
|
|
449
|
+
/** Recently-used canonical ids to surface at the top. */
|
|
450
|
+
recents?: ReadonlyArray<string>;
|
|
451
|
+
/**
|
|
452
|
+
* Curated presets shown above the full list. Defaults to Fast/Balanced/Best
|
|
453
|
+
* resolved against common gpt-5/Claude families.
|
|
454
|
+
*/
|
|
455
|
+
presets?: ReadonlyArray<ModelPreset>;
|
|
456
|
+
/** Drop providers from the picker entirely (e.g. "audio", "embedding"). */
|
|
457
|
+
excludeProviders?: ReadonlyArray<string>;
|
|
458
|
+
/** Restrict to these architectures (e.g. ["text"]). Default: all. */
|
|
459
|
+
modalities?: ReadonlyArray<string>;
|
|
460
|
+
/** Trigger appearance. "field" = full-width form field; "pill" = inline chat input pill. */
|
|
461
|
+
variant?: ModelPickerVariant;
|
|
462
|
+
label?: string;
|
|
463
|
+
placeholder?: string;
|
|
464
|
+
className?: string;
|
|
465
|
+
disabled?: boolean;
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Resolve the canonical id for a model. Some upstreams already prefix the
|
|
469
|
+
* provider in the id (e.g. "anthropic/claude-haiku-4.5"); others put it in
|
|
470
|
+
* `_provider` and leave the id bare. Always returns "<provider>/<model>"
|
|
471
|
+
* unless the id is already prefixed.
|
|
472
|
+
*/
|
|
473
|
+
declare function canonicalModelId(model: ModelInfo): string;
|
|
474
|
+
/** Format $/M tokens. Returns null if pricing is missing or zero. */
|
|
475
|
+
declare function formatPricing(pricing: ModelInfo["pricing"]): string | null;
|
|
476
|
+
/** Format context length compactly (e.g. 200_000 → "200k"). */
|
|
477
|
+
declare function formatContext(ctx: number | undefined): string | null;
|
|
478
|
+
declare function ModelPicker({ value, onChange, models, loading, recents, presets, excludeProviders, modalities, variant, label, placeholder, className, disabled, }: ModelPickerProps): react_jsx_runtime.JSX.Element;
|
|
479
|
+
|
|
361
480
|
interface Profile {
|
|
362
481
|
id: string;
|
|
363
482
|
name: string;
|
|
@@ -418,4 +537,4 @@ interface VariantListProps {
|
|
|
418
537
|
}
|
|
419
538
|
declare function VariantList({ variants, selectedId, onSelect, onAccept, onReject, isActioning, className, }: VariantListProps): react_jsx_runtime.JSX.Element;
|
|
420
539
|
|
|
421
|
-
export {
|
|
540
|
+
export { SandboxTable as $, type ProfileComparisonProps as A, type Backend as B, ClusterStatusBar as C, DashboardLayout as D, ProfileSelector as E, type ProfileSelectorProps as F, type RailButtonProps as G, HARNESS_OPTIONS as H, type Invoice as I, RailModeButton as J, type RailModeButtonProps as K, RailSeparator as L, type ModelInfo as M, type NavItem as N, type RailSeparatorProps as O, type PanelConfig as P, ResourceMeter as Q, RailButton as R, type ResourceMeterProps as S, SIDEBAR_MOBILE_WIDTH as T, SIDEBAR_PANEL_WIDTH as U, SIDEBAR_RAIL_WIDTH as V, SIDEBAR_TOTAL_WIDTH as W, SandboxCard as X, type SandboxCardData as Y, type SandboxCardProps as Z, type SandboxStatus as _, BackendSelector as a, type SandboxTableProps as a0, Sidebar as a1, SidebarContent as a2, type SidebarContentProps as a3, SidebarPanel as a4, SidebarPanelContent as a5, type SidebarPanelContentProps as a6, SidebarPanelHeader as a7, type SidebarPanelHeaderProps as a8, type SidebarPanelProps as a9, type SidebarProps as aa, SidebarProvider as ab, type SidebarProviderProps as ac, SidebarRail as ad, SidebarRailFooter as ae, type SidebarRailFooterProps as af, SidebarRailHeader as ag, type SidebarRailHeaderProps as ah, SidebarRailNav as ai, type SidebarRailNavProps as aj, type SidebarRailProps as ak, type SidebarUser as al, type TopNavLink as am, VariantList as an, type VariantListProps as ao, canonicalModelId as ap, formatContext as aq, formatPricing as ar, useSidebar as as, type Profile as at, type PlanFeature as au, type TeamRole as av, type Variant as aw, type VariantOutcome as ax, type VariantStatus as ay, canAdminSandbox as az, type BackendSelectorProps as b, type ClusterStatusBarProps as c, type ClusterStatusItem as d, CreditBalance as e, type CreditBalanceProps as f, type DashboardLayoutProps as g, type DashboardUser as h, HarnessPicker as i, type HarnessPickerProps as j, type HarnessType as k, InvoiceTable as l, type InvoiceTableProps as m, ModelPicker as n, type ModelPickerProps as o, type ModelPickerVariant as p, type ModelPreset as q, NewSandboxCard as r, type NewSandboxCardProps as s, type PlanCardData as t, PlanCards as u, type PlanCardsProps as v, type ProductVariant as w, ProfileAvatar as x, type ProfileAvatarProps as y, ProfileComparison as z };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tangle-network/sandbox-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "Unified UI component library for Tangle Sandbox — primitives, chat, dashboard, terminal, editor, and workspace components",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -151,6 +151,7 @@
|
|
|
151
151
|
},
|
|
152
152
|
"dependencies": {
|
|
153
153
|
"@nanostores/react": "^1.1.0",
|
|
154
|
+
"@pierre/trees": "1.0.0-beta.3",
|
|
154
155
|
"@radix-ui/react-avatar": "^1.1.0",
|
|
155
156
|
"@radix-ui/react-collapsible": "^1.1.0",
|
|
156
157
|
"@radix-ui/react-dialog": "^1.1.0",
|