@tangle-network/sandbox-ui 0.118.0 → 0.119.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.
@@ -1,4 +1,4 @@
1
- import { Wt as Logo, o as Button$1 } from "./primitives-N-59i3-7.js";
1
+ import { Wt as Logo, o as Button$1 } from "./primitives-BQGtwZX3.js";
2
2
  import { t as cn$1 } from "./utils-DzWbktWG.js";
3
3
  import { n as MOTION_SURFACE, r as MOTION_TRAVEL, t as MOTION_CONTROL } from "./motion-DkyBRJb9.js";
4
4
  import { i as moonshot_default } from "./model-brand-hMyDTUqB.js";
@@ -10,7 +10,7 @@ import { useEffect, useRef, useState } from "react";
10
10
  import { createPortal } from "react-dom";
11
11
  import { Activity, BarChart2, Bell, Bot, Box, Camera, Check, CheckCircle2, ChevronDown, ChevronLeft, ChevronRight, Clock, Code2, Copy, Cpu, DollarSign, Download, ExternalLink, File, FileEdit, FilePlus, FileText, GitBranch, GitCommit, Globe, HardDrive, Key, Layers, Loader2, MemoryStick, MessageSquare, Monitor, MoreHorizontal, MoreVertical, Network, PanelLeft, Play, Plug, Plus, Power, PowerOff, RefreshCw, RotateCcw, Server, Settings, ShieldAlert, Skull, Terminal, Timer, Trash2, User, Users, Wrench, X, XCircle } from "lucide-react";
12
12
  import { focusField, focusFieldWithin, focusRing, focusRingInset, timeAgo } from "@tangle-network/ui/utils";
13
- import * as Select from "@radix-ui/react-select";
13
+ import * as Select$1 from "@radix-ui/react-select";
14
14
  //#region src/dashboard/sidebar-context.tsx
15
15
  const PANEL_OPEN_KEY = "sandbox-sidebar-panel-open";
16
16
  const RAIL_COLLAPSED_KEY = "sandbox-sidebar-rail-collapsed";
@@ -2415,7 +2415,7 @@ function BackendSelector({ backends, selected, onChange, variant = "pill", label
2415
2415
  const current = backends.find((b) => b.type === selected);
2416
2416
  const triggerText = current?.label ?? placeholder;
2417
2417
  const ariaLabel = label ? `${label}: ${triggerText}` : triggerText;
2418
- const trigger = variant === "pill" ? /* @__PURE__ */ jsxs(Select.Trigger, {
2418
+ const trigger = variant === "pill" ? /* @__PURE__ */ jsxs(Select$1.Trigger, {
2419
2419
  "aria-label": ariaLabel,
2420
2420
  className: cn$1("inline-flex h-8 items-center gap-1.5 rounded-lg border border-[var(--md3-outline-variant)] bg-surface-container", "px-2.5 text-xs font-medium text-foreground shadow-sm", "transition-colors duration-[var(--transition-fast)]", "hover:border-[var(--md3-outline-variant)] hover:bg-surface-container-high", focusRing, "data-[state=open]:border-[var(--md3-outline)] data-[state=open]:bg-surface-container-high", "disabled:opacity-50 disabled:cursor-not-allowed", triggerClassName),
2421
2421
  children: [
@@ -2428,12 +2428,12 @@ function BackendSelector({ backends, selected, onChange, variant = "pill", label
2428
2428
  className: "sr-only",
2429
2429
  children: current.description
2430
2430
  }),
2431
- /* @__PURE__ */ jsx(Select.Icon, {
2431
+ /* @__PURE__ */ jsx(Select$1.Icon, {
2432
2432
  asChild: true,
2433
2433
  children: /* @__PURE__ */ jsx(ChevronDown, { className: "h-3 w-3 shrink-0 text-muted-foreground transition-transform duration-[var(--transition-fast)] data-[state=open]:rotate-180" })
2434
2434
  })
2435
2435
  ]
2436
- }) : /* @__PURE__ */ jsxs(Select.Trigger, {
2436
+ }) : /* @__PURE__ */ jsxs(Select$1.Trigger, {
2437
2437
  "aria-label": ariaLabel,
2438
2438
  className: cn$1("flex w-full items-center justify-between gap-2 rounded-[var(--radius-md)]", "border border-[var(--md3-outline-variant)] bg-surface-container px-3 py-2.5 text-sm text-left", "transition-colors duration-[var(--transition-fast)]", "hover:border-[var(--md3-outline-variant)] hover:bg-surface-container-high", focusRing, "data-[state=open]:border-[var(--md3-outline)] data-[state=open]:bg-surface-container-high", "disabled:opacity-50 disabled:cursor-not-allowed", triggerClassName),
2439
2439
  children: [/* @__PURE__ */ jsxs("span", {
@@ -2449,7 +2449,7 @@ function BackendSelector({ backends, selected, onChange, variant = "pill", label
2449
2449
  children: current.description
2450
2450
  })
2451
2451
  ]
2452
- }), /* @__PURE__ */ jsx(Select.Icon, {
2452
+ }), /* @__PURE__ */ jsx(Select$1.Icon, {
2453
2453
  asChild: true,
2454
2454
  children: /* @__PURE__ */ jsx(ChevronDown, { className: "h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-[var(--transition-fast)] data-[state=open]:rotate-180" })
2455
2455
  })]
@@ -2459,16 +2459,16 @@ function BackendSelector({ backends, selected, onChange, variant = "pill", label
2459
2459
  children: [variant === "field" && label && /* @__PURE__ */ jsx("label", {
2460
2460
  className: "block text-xs font-medium text-muted-foreground uppercase tracking-[0.06em]",
2461
2461
  children: label
2462
- }), /* @__PURE__ */ jsxs(Select.Root, {
2462
+ }), /* @__PURE__ */ jsxs(Select$1.Root, {
2463
2463
  value: selected,
2464
2464
  onValueChange: onChange,
2465
- children: [trigger, /* @__PURE__ */ jsx(Select.Portal, { children: /* @__PURE__ */ jsx(Select.Content, {
2465
+ children: [trigger, /* @__PURE__ */ jsx(Select$1.Portal, { children: /* @__PURE__ */ jsx(Select$1.Content, {
2466
2466
  position: "popper",
2467
2467
  sideOffset: 4,
2468
2468
  className: cn$1("z-50 max-h-[var(--radix-select-content-available-height)] overflow-hidden", variant === "pill" ? "min-w-[240px] max-w-[320px]" : "w-[var(--radix-select-trigger-width)]", "rounded-[var(--radius-md)] border border-[var(--md3-outline-variant)]", "bg-surface-container-highest shadow-[0_8px_30px_rgba(0,0,0,0.45)] ring-1 ring-[#ffffff14]", "data-[state=open]:animate-in data-[state=closed]:animate-out", "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95", "data-[side=bottom]:slide-in-from-top-1"),
2469
- children: /* @__PURE__ */ jsx(Select.Viewport, {
2469
+ children: /* @__PURE__ */ jsx(Select$1.Viewport, {
2470
2470
  className: "max-h-[min(24rem,calc(var(--radix-select-content-available-height)-2px))] overflow-y-auto overscroll-contain p-1",
2471
- children: backends.map((backend) => /* @__PURE__ */ jsxs(Select.Item, {
2471
+ children: backends.map((backend) => /* @__PURE__ */ jsxs(Select$1.Item, {
2472
2472
  value: backend.type,
2473
2473
  className: cn$1("relative flex cursor-pointer select-none items-start gap-2.5 rounded-[var(--radius-sm)]", "px-3 py-2 text-sm outline-none", "transition-colors duration-[var(--transition-fast)]", "hover:bg-accent/50 focus:bg-accent/50", "data-[state=checked]:bg-[var(--accent-surface-soft)] data-[state=checked]:text-[var(--brand-primary)]"),
2474
2474
  children: [backend.icon && /* @__PURE__ */ jsx("span", {
@@ -2476,7 +2476,7 @@ function BackendSelector({ backends, selected, onChange, variant = "pill", label
2476
2476
  children: backend.icon
2477
2477
  }), /* @__PURE__ */ jsxs("span", {
2478
2478
  className: "flex min-w-0 flex-col",
2479
- children: [/* @__PURE__ */ jsx(Select.ItemText, { children: /* @__PURE__ */ jsx("span", {
2479
+ children: [/* @__PURE__ */ jsx(Select$1.ItemText, { children: /* @__PURE__ */ jsx("span", {
2480
2480
  className: "font-medium",
2481
2481
  children: backend.label
2482
2482
  }) }), backend.description && /* @__PURE__ */ jsx("span", {
package/dist/dashboard.js CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as SidebarRailNav, A as ResourceMeter, B as RailFlyout, C as InvoiceTable, D as canAdminSandbox, E as SandboxCard, F as CreditBalance, G as Sidebar, H as RailModeButton, I as ProfileAvatar, J as SidebarPanelContent, K as SidebarContent, L as RailButton, M as INSUFFICIENT_BALANCE_CODE, N as OutOfCreditsModal, O as ActivityFeed, P as parseInsufficientBalance, Q as SidebarRailHeader, R as RailCollapseToggle, S as PlanCards, T as NewSandboxCard, U as RailSeparator, V as RailHeader, W as RailThemeToggle, X as SidebarRail, Y as SidebarPanelHeader, Z as SidebarRailFooter, _ as HarnessPicker, a as ProcessList, at as SIDEBAR_TOTAL_WIDTH, b as HarnessLogo, c as UsageSummary, d as MetricAreaChart, et as RailTooltip, f as ProfileComparison, g as HARNESS_OPTIONS, h as DashboardLayout, i as NetworkConfig, it as SIDEBAR_RAIL_WIDTH, j as ClusterStatusBar, k as ResourceSnapshot, l as SystemLogsViewer, m as SidebarLayout, n as SnapshotList, nt as SIDEBAR_PANEL_WIDTH, o as PortsList, ot as SidebarProvider, p as ProfileSelector, q as SidebarPanel, r as BackendConfig, rt as SIDEBAR_RAIL_LABELED_WIDTH, s as GitPanel, st as useSidebar, t as PromoBanner, tt as SIDEBAR_MOBILE_WIDTH, u as VariantList, v as chatCapableHarnesses, w as SandboxTable, x as BackendSelector, y as HARNESS_BRAND, z as RailExpandable } from "./dashboard-D4un5GtD.js";
1
+ import { $ as SidebarRailNav, A as ResourceMeter, B as RailFlyout, C as InvoiceTable, D as canAdminSandbox, E as SandboxCard, F as CreditBalance, G as Sidebar, H as RailModeButton, I as ProfileAvatar, J as SidebarPanelContent, K as SidebarContent, L as RailButton, M as INSUFFICIENT_BALANCE_CODE, N as OutOfCreditsModal, O as ActivityFeed, P as parseInsufficientBalance, Q as SidebarRailHeader, R as RailCollapseToggle, S as PlanCards, T as NewSandboxCard, U as RailSeparator, V as RailHeader, W as RailThemeToggle, X as SidebarRail, Y as SidebarPanelHeader, Z as SidebarRailFooter, _ as HarnessPicker, a as ProcessList, at as SIDEBAR_TOTAL_WIDTH, b as HarnessLogo, c as UsageSummary, d as MetricAreaChart, et as RailTooltip, f as ProfileComparison, g as HARNESS_OPTIONS, h as DashboardLayout, i as NetworkConfig, it as SIDEBAR_RAIL_WIDTH, j as ClusterStatusBar, k as ResourceSnapshot, l as SystemLogsViewer, m as SidebarLayout, n as SnapshotList, nt as SIDEBAR_PANEL_WIDTH, o as PortsList, ot as SidebarProvider, p as ProfileSelector, q as SidebarPanel, r as BackendConfig, rt as SIDEBAR_RAIL_LABELED_WIDTH, s as GitPanel, st as useSidebar, t as PromoBanner, tt as SIDEBAR_MOBILE_WIDTH, u as VariantList, v as chatCapableHarnesses, w as SandboxTable, x as BackendSelector, y as HARNESS_BRAND, z as RailExpandable } from "./dashboard-CnGK2S3A.js";
2
2
  import { n as canonicalModelId, r as modelBrandFor, t as ModelBrandStack } from "./model-brand-hMyDTUqB.js";
3
3
  import { a as formatPrice, i as PricingPage, n as TemplateCard, o as BillingDashboard, r as UsageChart, t as InfoPanel } from "./info-panel-C9cqDzOL.js";
4
4
  export { ActivityFeed, BackendConfig, BackendSelector, BillingDashboard, ClusterStatusBar, CreditBalance, DashboardLayout, GitPanel, HARNESS_BRAND, HARNESS_OPTIONS, HarnessLogo, HarnessPicker, INSUFFICIENT_BALANCE_CODE, InfoPanel, InvoiceTable, MetricAreaChart, ModelBrandStack, NetworkConfig, NewSandboxCard, OutOfCreditsModal, PlanCards, PortsList, PricingPage, ProcessList, ProfileAvatar, ProfileComparison, ProfileSelector, PromoBanner, RailButton, RailCollapseToggle, RailExpandable, RailFlyout, RailHeader, RailModeButton, RailSeparator, RailThemeToggle, RailTooltip, ResourceMeter, ResourceSnapshot, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, SandboxTable, Sidebar, SidebarContent, SidebarLayout, SidebarPanel, SidebarPanelContent, SidebarPanelHeader, SidebarProvider, SidebarRail, SidebarRailFooter, SidebarRailHeader, SidebarRailNav, SnapshotList, SystemLogsViewer, TemplateCard, UsageChart, UsageSummary, VariantList, canAdminSandbox, canonicalModelId, chatCapableHarnesses, formatPrice, modelBrandFor, parseInsufficientBalance, useSidebar };
package/dist/globals.css CHANGED
@@ -1293,6 +1293,9 @@
1293
1293
  .w-\[var\(--tool-icon-size\)\] {
1294
1294
  width: var(--tool-icon-size);
1295
1295
  }
1296
+ .w-auto {
1297
+ width: auto;
1298
+ }
1296
1299
  .w-fit {
1297
1300
  width: fit-content;
1298
1301
  }
@@ -1494,6 +1497,9 @@
1494
1497
  .min-w-14 {
1495
1498
  min-width: calc(var(--spacing) * 14);
1496
1499
  }
1500
+ .min-w-32 {
1501
+ min-width: calc(var(--spacing) * 32);
1502
+ }
1497
1503
  .min-w-40 {
1498
1504
  min-width: calc(var(--spacing) * 40);
1499
1505
  }
@@ -1566,6 +1572,9 @@
1566
1572
  .basis-1\/3 {
1567
1573
  flex-basis: calc(1 / 3 * 100%);
1568
1574
  }
1575
+ .basis-64 {
1576
+ flex-basis: calc(var(--spacing) * 64);
1577
+ }
1569
1578
  .table-fixed {
1570
1579
  table-layout: fixed;
1571
1580
  }
@@ -2233,9 +2242,6 @@
2233
2242
  border-color: color-mix(in oklab, var(--color-emerald-500) 40%, transparent);
2234
2243
  }
2235
2244
  }
2236
- .border-foreground {
2237
- border-color: hsl(var(--foreground));
2238
- }
2239
2245
  .border-green-500\/30 {
2240
2246
  border-color: color-mix(in srgb, oklch(72.3% 0.219 149.579) 30%, transparent);
2241
2247
  @supports (color: color-mix(in lab, red, red)) {
@@ -2245,9 +2251,6 @@
2245
2251
  .border-input {
2246
2252
  border-color: hsl(var(--input));
2247
2253
  }
2248
- .border-muted-foreground {
2249
- border-color: hsl(var(--muted-foreground));
2250
- }
2251
2254
  .border-primary {
2252
2255
  border-color: hsl(var(--primary));
2253
2256
  }
@@ -3057,12 +3060,18 @@
3057
3060
  .pb-8 {
3058
3061
  padding-bottom: calc(var(--spacing) * 8);
3059
3062
  }
3063
+ .pl-1 {
3064
+ padding-left: var(--spacing);
3065
+ }
3060
3066
  .pl-2 {
3061
3067
  padding-left: calc(var(--spacing) * 2);
3062
3068
  }
3063
3069
  .pl-3 {
3064
3070
  padding-left: calc(var(--spacing) * 3);
3065
3071
  }
3072
+ .pl-4 {
3073
+ padding-left: calc(var(--spacing) * 4);
3074
+ }
3066
3075
  .pl-6 {
3067
3076
  padding-left: calc(var(--spacing) * 6);
3068
3077
  }
@@ -4506,6 +4515,9 @@
4506
4515
  .focus\:border-\[var\(--focus-border-danger\)\]:focus {
4507
4516
  border-color: var(--focus-border-danger);
4508
4517
  }
4518
+ .focus\:bg-\[var\(--accent-surface-strong\)\]:focus {
4519
+ background-color: var(--accent-surface-strong);
4520
+ }
4509
4521
  .focus\:bg-accent:focus {
4510
4522
  background-color: hsl(var(--accent));
4511
4523
  }
@@ -4736,6 +4748,9 @@
4736
4748
  .data-\[state\=checked\]\:bg-\[var\(--accent-surface-soft\)\][data-state="checked"] {
4737
4749
  background-color: var(--accent-surface-soft);
4738
4750
  }
4751
+ .data-\[state\=checked\]\:bg-\[var\(--accent-surface-strong\)\][data-state="checked"] {
4752
+ background-color: var(--accent-surface-strong);
4753
+ }
4739
4754
  .data-\[state\=checked\]\:bg-primary[data-state="checked"] {
4740
4755
  background-color: hsl(var(--primary));
4741
4756
  }
@@ -4745,6 +4760,9 @@
4745
4760
  .data-\[state\=checked\]\:text-\[var\(--brand-primary\)\][data-state="checked"] {
4746
4761
  color: var(--brand-primary);
4747
4762
  }
4763
+ .data-\[state\=checked\]\:text-foreground[data-state="checked"] {
4764
+ color: hsl(var(--foreground));
4765
+ }
4748
4766
  .data-\[state\=inactive\]\:text-muted-foreground[data-state="inactive"] {
4749
4767
  color: hsl(var(--muted-foreground));
4750
4768
  }
@@ -4762,6 +4780,9 @@
4762
4780
  .data-\[state\=open\]\:border-\[var\(--md3-outline-variant\)\][data-state="open"] {
4763
4781
  border-color: var(--md3-outline-variant);
4764
4782
  }
4783
+ .data-\[state\=open\]\:border-primary[data-state="open"] {
4784
+ border-color: hsl(var(--primary));
4785
+ }
4765
4786
  .data-\[state\=open\]\:bg-\[var\(--accent-surface-strong\)\][data-state="open"] {
4766
4787
  background-color: var(--accent-surface-strong);
4767
4788
  }
@@ -4869,6 +4890,9 @@
4869
4890
  .sm\:w-auto {
4870
4891
  width: auto;
4871
4892
  }
4893
+ .sm\:min-w-40 {
4894
+ min-width: calc(var(--spacing) * 40);
4895
+ }
4872
4896
  .sm\:shrink-0 {
4873
4897
  flex-shrink: 0;
4874
4898
  }
@@ -4902,6 +4926,9 @@
4902
4926
  .sm\:gap-2 {
4903
4927
  gap: calc(var(--spacing) * 2);
4904
4928
  }
4929
+ .sm\:gap-3 {
4930
+ gap: calc(var(--spacing) * 3);
4931
+ }
4905
4932
  .sm\:gap-x-2 {
4906
4933
  column-gap: calc(var(--spacing) * 2);
4907
4934
  }
@@ -4927,17 +4954,14 @@
4927
4954
  .sm\:px-4 {
4928
4955
  padding-inline: calc(var(--spacing) * 4);
4929
4956
  }
4930
- .sm\:px-5 {
4931
- padding-inline: calc(var(--spacing) * 5);
4932
- }
4933
4957
  .sm\:px-6 {
4934
4958
  padding-inline: calc(var(--spacing) * 6);
4935
4959
  }
4936
4960
  .sm\:py-1 {
4937
4961
  padding-block: var(--spacing);
4938
4962
  }
4939
- .sm\:py-4 {
4940
- padding-block: calc(var(--spacing) * 4);
4963
+ .sm\:pr-6 {
4964
+ padding-right: calc(var(--spacing) * 6);
4941
4965
  }
4942
4966
  .sm\:text-left {
4943
4967
  text-align: left;
@@ -4946,9 +4970,9 @@
4946
4970
  font-size: var(--text-5xl);
4947
4971
  line-height: var(--tw-leading, var(--text-5xl--line-height));
4948
4972
  }
4949
- .sm\:break-normal {
4950
- overflow-wrap: normal;
4951
- word-break: normal;
4973
+ .sm\:text-sm {
4974
+ font-size: var(--text-sm);
4975
+ line-height: var(--tw-leading, var(--text-sm--line-height));
4952
4976
  }
4953
4977
  .sm\:opacity-0 {
4954
4978
  opacity: 0%;
@@ -4978,6 +5002,9 @@
4978
5002
  .md\:hidden {
4979
5003
  display: none;
4980
5004
  }
5005
+ .md\:table-cell {
5006
+ display: table-cell;
5007
+ }
4981
5008
  .md\:grid-cols-2 {
4982
5009
  grid-template-columns: repeat(2, minmax(0, 1fr));
4983
5010
  }
@@ -1,4 +1,4 @@
1
- import { ArtifactPane as ArtifactPane$1, ArtifactPaneProps, Avatar as Avatar$1, AvatarFallback as AvatarFallback$1, AvatarImage as AvatarImage$1, Badge as Badge$1, BadgeProps, Button as Button$1, ButtonProps as ButtonProps$1, Card as Card$1, CardContent as CardContent$1, CardDescription as CardDescription$1, CardFooter, CardHeader as CardHeader$1, CardTitle as CardTitle$1, CardTitleProps, CodeBlock, CodeBlockProps, 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, DropZoneProps, 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, EmptyStateProps, FilterField, FilterFieldProps, Heading, HeadingVariant, HeadingVariant as HeadingVariant$1, InlineCode, InlineCodeProps, Input as Input$1, InputProps, Label as Label$1, Metric, MetricProps, MetricStrip, MetricStripProps, PageHeader as PageHeader$1, PageHeaderProps, PageHeaderProps as PageHeaderProps$1, PageShell, PageShellProps, Progress as Progress$1, SegmentedControl, SegmentedControlOption, SegmentedControlProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SidebarDropZone, SidebarDropZoneProps, Skeleton as Skeleton$1, SkeletonCard as SkeletonCard$1, SkeletonTable, StatCard as StatCard$1, StatCardProps, StatusPill, StatusPillProps, StatusTone, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableProps, TableRow, Tabs as Tabs$1, TabsContent as TabsContent$1, TabsList as TabsList$1, TabsTrigger as TabsTrigger$1, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, TextShimmerProps, Textarea as Textarea$1, TextareaProps, ThemeToggle, Toast, ToastContainer, ToastProvider, Toolbar, ToolbarProps, UploadFile, UploadProgress, UploadProgressProps, badgeVariants, buttonVariants, useTheme as useTheme$1, useToast } from "@tangle-network/ui/primitives";
1
+ import { ArtifactPane as ArtifactPane$1, ArtifactPaneProps, Avatar as Avatar$1, AvatarFallback as AvatarFallback$1, AvatarImage as AvatarImage$1, Badge as Badge$1, BadgeProps, Button as Button$1, ButtonProps as ButtonProps$1, Card as Card$1, CardContent as CardContent$1, CardDescription as CardDescription$1, CardFooter, CardHeader as CardHeader$1, CardTitle as CardTitle$1, CardTitleProps, CodeBlock, CodeBlockProps, 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, DropZoneProps, 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, EmptyStateProps, FilterField, FilterFieldProps, Heading, HeadingVariant, HeadingVariant as HeadingVariant$1, InlineCode, InlineCodeProps, Input as Input$1, InputProps, Label as Label$1, Metric, MetricProps, MetricStrip, MetricStripProps, PageHeader as PageHeader$1, PageHeaderProps, PageHeaderProps as PageHeaderProps$1, PageShell, PageShellProps, Progress as Progress$1, SegmentedControl, SegmentedControlOption, SegmentedControlProps, 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, SidebarDropZoneProps, Skeleton as Skeleton$1, SkeletonCard as SkeletonCard$1, SkeletonTable, StatCard as StatCard$1, StatCardProps, StatusPill, StatusPillProps, StatusTone, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableProps, TableRow, Tabs as Tabs$1, TabsContent as TabsContent$1, TabsList as TabsList$1, TabsTrigger as TabsTrigger$1, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, TextShimmer, TextShimmerProps, Textarea as Textarea$1, TextareaProps, ThemeToggle, Toast, ToastContainer, ToastProvider, Toolbar, ToolbarProps, UploadFile, UploadProgress, UploadProgressProps, badgeVariants, buttonVariants, useTheme as useTheme$1, useToast } from "@tangle-network/ui/primitives";
2
2
  import { TangleKnot as TangleKnot$1 } from "@tangle-network/brand";
3
3
  import { ElementType, HTMLAttributes, ReactNode } from "react";
4
4
  //#region src/primitives/logo.d.ts
@@ -27,4 +27,4 @@ type SectionTitleProps = Pick<PageHeaderProps, "title" | "description" | "action
27
27
  /** Compatibility name for the canonical nested (h2) page header. */
28
28
  declare function SectionTitle(props: SectionTitleProps): import("react").JSX.Element;
29
29
  //#endregion
30
- export { InlineCode as $, TerminalLine as $t, DropZone as A, SkeletonTable as At, DropdownMenuRadioItem as B, TableCell as Bt, DialogDescription$1 as C, SelectSeparator as Ct, DialogPortal as D, SidebarDropZoneProps as Dt, DialogOverlay as E, SidebarDropZone as Et, DropdownMenuGroup as F, StatusTone as Ft, DropdownMenuSubTrigger$1 as G, TableRow as Gt, DropdownMenuShortcut as H, TableHead as Ht, DropdownMenuItem$1 as I, Switch as It, EmptyStateProps as J, TabsList$1 as Jt, DropdownMenuTrigger$1 as K, Tabs$1 as Kt, DropdownMenuLabel$1 as L, Table as Lt, DropdownMenu$1 as M, StatCardProps as Mt, DropdownMenuCheckboxItem as N, StatusPill as Nt, DialogTitle$1 as O, Skeleton$1 as Ot, DropdownMenuContent$1 as P, StatusPillProps as Pt, HeadingVariant$1 as Q, TerminalInput as Qt, DropdownMenuPortal as R, TableBody as Rt, DialogContent$1 as S, TangleKnot$1 as Sn, SelectScrollUpButton as St, DialogHeader$1 as T, SelectValue as Tt, DropdownMenuSub$1 as U, TableHeader as Ut, DropdownMenuSeparator$1 as V, TableFooter as Vt, DropdownMenuSubContent$1 as W, TableProps as Wt, FilterFieldProps as X, TerminalCursor as Xt, FilterField as Y, TabsTrigger$1 as Yt, Heading as Z, TerminalDisplay as Zt, CodeBlock as _, HeadingProps as _n, SelectContent as _t, AvatarImage$1 as a, Toast as an, MetricProps as at, Dialog$1 as b, Logo$1 as bn, SelectLabel as bt, Button$1 as c, Toolbar as cn, PageHeader$1 as ct, CardContent$1 as d, UploadProgress as dn, PageShellProps as dt, TextShimmer as en, InlineCodeProps as et, CardDescription$1 as f, UploadProgressProps as fn, Progress$1 as ft, CardTitleProps as g, useToast as gn, Select as gt, CardTitle$1 as h, useTheme$1 as hn, SegmentedControlProps as ht, AvatarFallback$1 as i, ThemeToggle as in, Metric as it, DropZoneProps as j, StatCard$1 as jt, DialogTrigger as k, SkeletonCard$1 as kt, ButtonProps$1 as l, ToolbarProps as ln, PageHeaderProps$1 as lt, CardHeader$1 as m, buttonVariants as mn, SegmentedControlOption as mt, ArtifactPaneProps as n, Textarea$1 as nn, InputProps as nt, Badge$1 as o, ToastContainer as on, MetricStrip as ot, CardFooter as p, badgeVariants as pn, SegmentedControl as pt, EmptyState$1 as q, TabsContent$1 as qt, Avatar$1 as r, TextareaProps as rn, Label$1 as rt, BadgeProps as s, ToastProvider as sn, MetricStripProps as st, ArtifactPane$1 as t, TextShimmerProps as tn, Input$1 as tt, Card$1 as u, UploadFile as un, PageShell as ut, CodeBlockProps as v, SectionTitle as vn, SelectGroup as vt, DialogFooter$1 as w, SelectTrigger as wt, DialogClose as x, LogoProps as xn, SelectScrollDownButton as xt, CopyButton as y, SectionTitleProps as yn, SelectItem as yt, DropdownMenuRadioGroup as z, TableCaption as zt };
30
+ export { InlineCode as $, TerminalLine as $t, DropZone as A, SkeletonTable as At, DropdownMenuRadioItem as B, TableCell as Bt, DialogDescription$1 as C, SelectSeparator as Ct, DialogPortal as D, SidebarDropZoneProps as Dt, DialogOverlay as E, SidebarDropZone as Et, DropdownMenuGroup as F, StatusTone as Ft, DropdownMenuSubTrigger$1 as G, TableRow as Gt, DropdownMenuShortcut as H, TableHead as Ht, DropdownMenuItem$1 as I, Switch as It, EmptyStateProps as J, TabsList$1 as Jt, DropdownMenuTrigger$1 as K, Tabs$1 as Kt, DropdownMenuLabel$1 as L, Table as Lt, DropdownMenu$1 as M, StatCardProps as Mt, DropdownMenuCheckboxItem as N, StatusPill as Nt, DialogTitle$1 as O, Skeleton$1 as Ot, DropdownMenuContent$1 as P, StatusPillProps as Pt, HeadingVariant$1 as Q, TerminalInput as Qt, DropdownMenuPortal as R, TableBody as Rt, DialogContent$1 as S, TangleKnot$1 as Sn, SelectScrollUpButton as St, DialogHeader$1 as T, SelectValue$1 as Tt, DropdownMenuSub$1 as U, TableHeader as Ut, DropdownMenuSeparator$1 as V, TableFooter as Vt, DropdownMenuSubContent$1 as W, TableProps as Wt, FilterFieldProps as X, TerminalCursor as Xt, FilterField as Y, TabsTrigger$1 as Yt, Heading as Z, TerminalDisplay as Zt, CodeBlock as _, HeadingProps as _n, SelectContent$1 as _t, AvatarImage$1 as a, Toast as an, MetricProps as at, Dialog$1 as b, Logo$1 as bn, SelectLabel as bt, Button$1 as c, Toolbar as cn, PageHeader$1 as ct, CardContent$1 as d, UploadProgress as dn, PageShellProps as dt, TextShimmer as en, InlineCodeProps as et, CardDescription$1 as f, UploadProgressProps as fn, Progress$1 as ft, CardTitleProps as g, useToast as gn, Select$1 as gt, CardTitle$1 as h, useTheme$1 as hn, SegmentedControlProps as ht, AvatarFallback$1 as i, ThemeToggle as in, Metric as it, DropZoneProps as j, StatCard$1 as jt, DialogTrigger as k, SkeletonCard$1 as kt, ButtonProps$1 as l, ToolbarProps as ln, PageHeaderProps$1 as lt, CardHeader$1 as m, buttonVariants as mn, SegmentedControlOption as mt, ArtifactPaneProps as n, Textarea$1 as nn, InputProps as nt, Badge$1 as o, ToastContainer as on, MetricStrip as ot, CardFooter as p, badgeVariants as pn, SegmentedControl as pt, EmptyState$1 as q, TabsContent$1 as qt, Avatar$1 as r, TextareaProps as rn, Label$1 as rt, BadgeProps as s, ToastProvider as sn, MetricStripProps as st, ArtifactPane$1 as t, TextShimmerProps as tn, Input$1 as tt, Card$1 as u, UploadFile as un, PageShell as ut, CodeBlockProps as v, SectionTitle as vn, SelectGroup as vt, DialogFooter$1 as w, SelectTrigger$1 as wt, DialogClose as x, LogoProps as xn, SelectScrollDownButton as xt, CopyButton as y, SectionTitleProps as yn, SelectItem$1 as yt, DropdownMenuRadioGroup as z, TableCaption as zt };
package/dist/index.d.ts CHANGED
@@ -9,7 +9,7 @@ import { n as UsePtySessionReturn, r as usePtySession, t as UsePtySessionOptions
9
9
  import { t as Session } from "./sidecar-DgH_vQ6m.js";
10
10
  import { d as useSessionStream, l as UseSessionStreamOptions, n as UseSidecarAuthOptions, o as SessionDegradation, r as useSidecarAuth, s as SessionInfo, t as SidecarAuth, u as UseSessionStreamResult } from "./use-sidecar-auth-CCTJcrq7.js";
11
11
  import { AgentStreamEvent, AppendUserMessageOptions, ApplySdkEventOptions, AuthUser, AutomationStreamEvent, BeginAssistantMessageOptions, BotStreamEvent, CompleteAssistantMessageOptions, RealtimeSessionOptions, RealtimeSessionRegistry, RealtimeSessionRegistryProps, RealtimeSessionState, RealtimeSessionTarget, SSEEvent, SandboxMetrics, SdkSessionAttachment, SdkSessionEvent, SdkSessionSeed, SidecarMetricsPayload, TaskStreamEvent, TerminalStreamEvent, UseAuthOptions, UseAuthResult, UseRunGroupsOptions, UseSSEStreamOptions, UseSSEStreamResult, UseSandboxMetricsOptions, UseSandboxMetricsResult, UseSdkSessionOptions, UseSdkSessionReturn, UseToolCallStreamReturn, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useCreateSession, useDeleteSession, useDropdownMenu, useLiveTime, useRealtimeSession, useRenameSession, useRunCollapseState, useRunGroups, useSSEStream, useSandboxMetrics, useSdkSession, useSessions, useToolCallStream } from "./hooks.js";
12
- import { $ as InlineCode, A as DropZone, At as SkeletonTable, B as DropdownMenuRadioItem, Bt as TableCell, C as DialogDescription, Ct as SelectSeparator, D as DialogPortal, Dt as SidebarDropZoneProps, E as DialogOverlay, Et as SidebarDropZone, F as DropdownMenuGroup, Ft as StatusTone, G as DropdownMenuSubTrigger, Gt as TableRow, H as DropdownMenuShortcut, Ht as TableHead, I as DropdownMenuItem, It as Switch, J as EmptyStateProps, Jt as TabsList, K as DropdownMenuTrigger, Kt as Tabs, L as DropdownMenuLabel, Lt as Table, M as DropdownMenu, Mt as StatCardProps, N as DropdownMenuCheckboxItem, Nt as StatusPill, O as DialogTitle, Ot as Skeleton, P as DropdownMenuContent, Pt as StatusPillProps, Q as HeadingVariant, R as DropdownMenuPortal, Rt as TableBody, S as DialogContent, Sn as TangleKnot, St as SelectScrollUpButton, T as DialogHeader, Tt as SelectValue, U as DropdownMenuSub, Ut as TableHeader, V as DropdownMenuSeparator, Vt as TableFooter, W as DropdownMenuSubContent, Wt as TableProps, X as FilterFieldProps, Y as FilterField, Yt as TabsTrigger, Z as Heading, Zt as TerminalDisplay, _ as CodeBlock, _n as HeadingProps, _t as SelectContent, a as AvatarImage, an as Toast, at as MetricProps, b as Dialog, bn as Logo, bt as SelectLabel, c as Button, cn as Toolbar, ct as PageHeader, d as CardContent, dn as UploadProgress, dt as PageShellProps, en as TextShimmer, et as InlineCodeProps, f as CardDescription, fn as UploadProgressProps, ft as Progress, g as CardTitleProps, gn as useToast, gt as Select, h as CardTitle, hn as useTheme, ht as SegmentedControlProps, i as AvatarFallback, in as ThemeToggle, it as Metric, j as DropZoneProps, jt as StatCard, k as DialogTrigger, kt as SkeletonCard, l as ButtonProps, ln as ToolbarProps, lt as PageHeaderProps, m as CardHeader, mn as buttonVariants, mt as SegmentedControlOption, nn as Textarea, nt as InputProps, o as Badge, on as ToastContainer, ot as MetricStrip, p as CardFooter, pn as badgeVariants, pt as SegmentedControl, q as EmptyState, qt as TabsContent, r as Avatar, rn as TextareaProps, rt as Label, s as BadgeProps, sn as ToastProvider, st as MetricStripProps, tn as TextShimmerProps, tt as Input, u as Card, un as UploadFile, ut as PageShell, v as CodeBlockProps, vn as SectionTitle, vt as SelectGroup, w as DialogFooter, wt as SelectTrigger, x as DialogClose, xn as LogoProps, xt as SelectScrollDownButton, y as CopyButton, yn as SectionTitleProps, yt as SelectItem, z as DropdownMenuRadioGroup, zt as TableCaption } from "./index-BHopt1SR.js";
12
+ import { $ as InlineCode, A as DropZone, At as SkeletonTable, B as DropdownMenuRadioItem, Bt as TableCell, C as DialogDescription, Ct as SelectSeparator, D as DialogPortal, Dt as SidebarDropZoneProps, E as DialogOverlay, Et as SidebarDropZone, F as DropdownMenuGroup, Ft as StatusTone, G as DropdownMenuSubTrigger, Gt as TableRow, H as DropdownMenuShortcut, Ht as TableHead, I as DropdownMenuItem, It as Switch, J as EmptyStateProps, Jt as TabsList, K as DropdownMenuTrigger, Kt as Tabs, L as DropdownMenuLabel, Lt as Table, M as DropdownMenu, Mt as StatCardProps, N as DropdownMenuCheckboxItem, Nt as StatusPill, O as DialogTitle, Ot as Skeleton, P as DropdownMenuContent, Pt as StatusPillProps, Q as HeadingVariant, R as DropdownMenuPortal, Rt as TableBody, S as DialogContent, Sn as TangleKnot, St as SelectScrollUpButton, T as DialogHeader, Tt as SelectValue, U as DropdownMenuSub, Ut as TableHeader, V as DropdownMenuSeparator, Vt as TableFooter, W as DropdownMenuSubContent, Wt as TableProps, X as FilterFieldProps, Y as FilterField, Yt as TabsTrigger, Z as Heading, Zt as TerminalDisplay, _ as CodeBlock, _n as HeadingProps, _t as SelectContent, a as AvatarImage, an as Toast, at as MetricProps, b as Dialog, bn as Logo, bt as SelectLabel, c as Button, cn as Toolbar, ct as PageHeader, d as CardContent, dn as UploadProgress, dt as PageShellProps, en as TextShimmer, et as InlineCodeProps, f as CardDescription, fn as UploadProgressProps, ft as Progress, g as CardTitleProps, gn as useToast, gt as Select, h as CardTitle, hn as useTheme, ht as SegmentedControlProps, i as AvatarFallback, in as ThemeToggle, it as Metric, j as DropZoneProps, jt as StatCard, k as DialogTrigger, kt as SkeletonCard, l as ButtonProps, ln as ToolbarProps, lt as PageHeaderProps, m as CardHeader, mn as buttonVariants, mt as SegmentedControlOption, nn as Textarea, nt as InputProps, o as Badge, on as ToastContainer, ot as MetricStrip, p as CardFooter, pn as badgeVariants, pt as SegmentedControl, q as EmptyState, qt as TabsContent, r as Avatar, rn as TextareaProps, rt as Label, s as BadgeProps, sn as ToastProvider, st as MetricStripProps, tn as TextShimmerProps, tt as Input, u as Card, un as UploadFile, ut as PageShell, v as CodeBlockProps, vn as SectionTitle, vt as SelectGroup, w as DialogFooter, wt as SelectTrigger, x as DialogClose, xn as LogoProps, xt as SelectScrollDownButton, y as CopyButton, yn as SectionTitleProps, yt as SelectItem, z as DropdownMenuRadioGroup, zt as TableCaption } from "./index-SJKueyy4.js";
13
13
  import { $ as TerminalProps, A as ShellShouldRevalidateArgs, B as SessionSidebarLink, C as SandboxWorkbenchLayoutOptions, D as SandboxWorkbenchSessionProps, E as SandboxWorkbenchProps, F as SessionSidebar, G as SessionOptimisticController, H as SessionSidebarVariant, I as SessionSidebarBadge, J as useOptimisticSessionItems, K as UseOptimisticSessionItemsOptions, L as SessionSidebarFilter, M as createShellShouldRevalidate, N as shellShouldRevalidate, O as SessionActivityMonitor, P as formatRelativeAge, Q as TerminalPanel, R as SessionSidebarGroupBy, S as SandboxWorkbenchFileArtifact, T as SandboxWorkbenchOpenUIArtifact, U as SESSION_CREATED_EVENT, V as SessionSidebarProps, W as SessionCreatedDetail, X as RuntimePaneProps, Y as RuntimePane, Z as TerminalLine, _ as FormAudit, a as ApprovalQueue, at as StatusBannerProps, b as SandboxWorkbenchArtifact, c as CalendarView, ct as WorkspacePaneHeader, d as TaskBoardColumn, dt as WorkspaceLayoutProps, et as ContextBadge, f as TaskBoardItem, g as AuditResultsProps, h as AuditResults, i as ApprovalItem, it as StatusBanner, j as ShellShouldRevalidateOptions, k as SessionActivityMonitorProps, l as CalendarViewProps, lt as WorkspacePaneHeaderProps, m as AuditCheck, n as ArtifactPaneProps, nt as StatusBarProps, o as ApprovalQueueProps, ot as DirectoryPane, p as TaskBoardProps, q as dispatchSessionCreated, r as ApprovalConfidenceStat, rt as BannerType, s as CalendarEvent, st as DirectoryPaneProps, t as ArtifactPane, tt as StatusBar, u as TaskBoard, ut as WorkspaceLayout, v as AgentWorkbench, w as SandboxWorkbenchMarkdownArtifact, x as SandboxWorkbenchCustomArtifact, y as SandboxWorkbench, z as SessionSidebarItem } from "./index-CcbhfDa-.js";
14
14
  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-z_zNuZHm.js";
15
15
  import { a as PreviewReadiness, i as PreviewAccess, n as EmbeddedAppView, r as EmbeddedAppViewProps, t as EmbeddedApp } from "./embedded-app-view-B_vMTtJn.js";
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
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-DxYaeFaa.js";
2
- import { $ as Select, A as DropdownMenuItem, B as DropdownMenuTrigger, Bt as buttonVariants, C as DialogTitle, Ct as TableRow, D as DropdownMenuCheckboxItem, Dt as TabsTrigger, E as DropdownMenu, Et as TabsList, F as DropdownMenuSeparator, Ft as ToastContainer, G as Input, Gt as TangleKnot, H as FilterField, Ht as useToast, I as DropdownMenuShortcut, It as ToastProvider, J as MetricStrip, K as Label, L as DropdownMenuSub, Lt as Toolbar, M as DropdownMenuPortal, Mt as TextShimmer, N as DropdownMenuRadioGroup, Nt as Textarea, O as DropdownMenuContent, P as DropdownMenuRadioItem, Pt as ThemeToggle, Q as SegmentedControl, R as DropdownMenuSubContent, Rt as UploadProgress, S as DialogPortal, St as TableHeader, T as DropZone, Tt as TabsContent, U as Heading, Ut as SectionTitle, V as EmptyState, Vt as useTheme, W as InlineCode, Wt as Logo, X as PageShell, Y as PageHeader, Z as Progress, _ as DialogContent, _t as TableBody, a as Badge, at as SelectScrollUpButton, b as DialogHeader, bt as TableFooter, c as CardContent, ct as SelectValue, d as CardHeader, dt as SkeletonCard, et as SelectContent, f as CardTitle, ft as SkeletonTable, g as DialogClose, gt as Table, h as Dialog, ht as Switch, i as AvatarImage, it as SelectScrollDownButton, j as DropdownMenuLabel, k as DropdownMenuGroup, kt as TerminalDisplay, l as CardDescription, lt as SidebarDropZone, m as CopyButton, mt as StatusPill, n as Avatar, nt as SelectItem, o as Button, ot as SelectSeparator, p as CodeBlock, pt as StatCard, q as Metric, r as AvatarFallback, rt as SelectLabel, s as Card, st as SelectTrigger, tt as SelectGroup, u as CardFooter, ut as Skeleton, v as DialogDescription, vt as TableCaption, w as DialogTrigger, wt as Tabs, x as DialogOverlay, xt as TableHead, y as DialogFooter, yt as TableCell, z as DropdownMenuSubTrigger, zt as badgeVariants } from "./primitives-N-59i3-7.js";
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-DuIQZobw.js";
2
+ import { $ as Select, A as DropdownMenuItem, B as DropdownMenuTrigger, Bt as buttonVariants, C as DialogTitle, Ct as TableRow, D as DropdownMenuCheckboxItem, Dt as TabsTrigger, E as DropdownMenu, Et as TabsList, F as DropdownMenuSeparator, Ft as ToastContainer, G as Input, Gt as TangleKnot, H as FilterField, Ht as useToast, I as DropdownMenuShortcut, It as ToastProvider, J as MetricStrip, K as Label, L as DropdownMenuSub, Lt as Toolbar, M as DropdownMenuPortal, Mt as TextShimmer, N as DropdownMenuRadioGroup, Nt as Textarea, O as DropdownMenuContent, P as DropdownMenuRadioItem, Pt as ThemeToggle, Q as SegmentedControl, R as DropdownMenuSubContent, Rt as UploadProgress, S as DialogPortal, St as TableHeader, T as DropZone, Tt as TabsContent, U as Heading, Ut as SectionTitle, V as EmptyState, Vt as useTheme, W as InlineCode, Wt as Logo, X as PageShell, Y as PageHeader, Z as Progress, _ as DialogContent, _t as TableBody, a as Badge, at as SelectScrollUpButton, b as DialogHeader, bt as TableFooter, c as CardContent, ct as SelectValue, d as CardHeader, dt as SkeletonCard, et as SelectContent, f as CardTitle, ft as SkeletonTable, g as DialogClose, gt as Table, h as Dialog, ht as Switch, i as AvatarImage, it as SelectScrollDownButton, j as DropdownMenuLabel, k as DropdownMenuGroup, kt as TerminalDisplay, l as CardDescription, lt as SidebarDropZone, m as CopyButton, mt as StatusPill, n as Avatar, nt as SelectItem, o as Button, ot as SelectSeparator, p as CodeBlock, pt as StatCard, q as Metric, r as AvatarFallback, rt as SelectLabel, s as Card, st as SelectTrigger, tt as SelectGroup, u as CardFooter, ut as Skeleton, v as DialogDescription, vt as TableCaption, w as DialogTrigger, wt as Tabs, x as DialogOverlay, xt as TableHead, y as DialogFooter, yt as TableCell, z as DropdownMenuSubTrigger, zt as badgeVariants } from "./primitives-BQGtwZX3.js";
3
3
  import { t as WorkspacePaneHeader } from "./workspace-pane-header-Bg1cCcHX.js";
4
4
  import { _ as TerminalPanel, a as AuditResults, b as DirectoryPane, c as SessionActivityMonitor, d as SessionSidebar, f as SESSION_CREATED_EVENT, g as RuntimePane, h as formatRelativeAge, i as TaskBoard, l as createShellShouldRevalidate, m as useOptimisticSessionItems, n as ApprovalQueue, o as AgentWorkbench, p as dispatchSessionCreated, r as CalendarView, s as SandboxWorkbench, t as ArtifactPane, u as shellShouldRevalidate, v as StatusBar, x as WorkspaceLayout, y as StatusBanner } from "./workspace--bNv-rQy.js";
5
- import { $ as SidebarRailNav, A as ResourceMeter, B as RailFlyout, C as InvoiceTable, D as canAdminSandbox, E as SandboxCard, F as CreditBalance, G as Sidebar, H as RailModeButton, I as ProfileAvatar, J as SidebarPanelContent, K as SidebarContent, L as RailButton, M as INSUFFICIENT_BALANCE_CODE, N as OutOfCreditsModal, O as ActivityFeed, P as parseInsufficientBalance, Q as SidebarRailHeader, R as RailCollapseToggle, S as PlanCards, T as NewSandboxCard, U as RailSeparator, V as RailHeader, W as RailThemeToggle, X as SidebarRail, Y as SidebarPanelHeader, Z as SidebarRailFooter, _ as HarnessPicker, a as ProcessList, at as SIDEBAR_TOTAL_WIDTH, b as HarnessLogo, c as UsageSummary, d as MetricAreaChart, et as RailTooltip, f as ProfileComparison, g as HARNESS_OPTIONS, h as DashboardLayout, i as NetworkConfig, it as SIDEBAR_RAIL_WIDTH, j as ClusterStatusBar, k as ResourceSnapshot, l as SystemLogsViewer, m as SidebarLayout, n as SnapshotList, nt as SIDEBAR_PANEL_WIDTH, o as PortsList, ot as SidebarProvider, p as ProfileSelector, q as SidebarPanel, r as BackendConfig, rt as SIDEBAR_RAIL_LABELED_WIDTH, s as GitPanel, st as useSidebar, t as PromoBanner, tt as SIDEBAR_MOBILE_WIDTH, u as VariantList, v as chatCapableHarnesses, w as SandboxTable, x as BackendSelector, y as HARNESS_BRAND, z as RailExpandable } from "./dashboard-D4un5GtD.js";
5
+ import { $ as SidebarRailNav, A as ResourceMeter, B as RailFlyout, C as InvoiceTable, D as canAdminSandbox, E as SandboxCard, F as CreditBalance, G as Sidebar, H as RailModeButton, I as ProfileAvatar, J as SidebarPanelContent, K as SidebarContent, L as RailButton, M as INSUFFICIENT_BALANCE_CODE, N as OutOfCreditsModal, O as ActivityFeed, P as parseInsufficientBalance, Q as SidebarRailHeader, R as RailCollapseToggle, S as PlanCards, T as NewSandboxCard, U as RailSeparator, V as RailHeader, W as RailThemeToggle, X as SidebarRail, Y as SidebarPanelHeader, Z as SidebarRailFooter, _ as HarnessPicker, a as ProcessList, at as SIDEBAR_TOTAL_WIDTH, b as HarnessLogo, c as UsageSummary, d as MetricAreaChart, et as RailTooltip, f as ProfileComparison, g as HARNESS_OPTIONS, h as DashboardLayout, i as NetworkConfig, it as SIDEBAR_RAIL_WIDTH, j as ClusterStatusBar, k as ResourceSnapshot, l as SystemLogsViewer, m as SidebarLayout, n as SnapshotList, nt as SIDEBAR_PANEL_WIDTH, o as PortsList, ot as SidebarProvider, p as ProfileSelector, q as SidebarPanel, r as BackendConfig, rt as SIDEBAR_RAIL_LABELED_WIDTH, s as GitPanel, st as useSidebar, t as PromoBanner, tt as SIDEBAR_MOBILE_WIDTH, u as VariantList, v as chatCapableHarnesses, w as SandboxTable, x as BackendSelector, y as HARNESS_BRAND, z as RailExpandable } from "./dashboard-CnGK2S3A.js";
6
6
  import { n as canonicalModelId, r as modelBrandFor, t as ModelBrandStack } from "./model-brand-hMyDTUqB.js";
7
7
  import { a as formatPrice, i as PricingPage, n as TemplateCard, o as BillingDashboard, r as UsageChart, t as InfoPanel } from "./info-panel-C9cqDzOL.js";
8
8
  import { t as usePtySession } from "./use-pty-session-Bf4hBLXJ.js";
@@ -1,5 +1,5 @@
1
1
  import { n as normalizeProviderId, r as providerLogoCandidates, t as ProviderIcon } from "./provider-logo-BiuiO_c2.js";
2
- import { Button, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, EmptyState } from "@tangle-network/ui/primitives";
2
+ import { Button, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, EmptyState, Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@tangle-network/ui/primitives";
3
3
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
4
  import * as React$1 from "react";
5
5
  import { Check, ExternalLink, MoreVertical, Search, Unplug } from "lucide-react";
@@ -14,21 +14,45 @@ const TONES = {
14
14
  function catalogRowActive(row) {
15
15
  return row.kind === "app" ? row.installedCount > 0 : row.connections.length > 0;
16
16
  }
17
+ const integrationSelectContentClassName = "shadow-[var(--shadow-dropdown)]";
18
+ const integrationSelectItemClassName = "focus:bg-[var(--accent-surface-strong)] data-[state=checked]:bg-[var(--accent-surface-strong)] data-[state=checked]:text-foreground";
17
19
  /** A controlled selector shared by the catalog and detail; never picks an account. */
18
20
  function ConnectionSelector({ connections, value, onChange, label }) {
19
- const selected = connections.some((connection) => connection.id === value) ? value : "";
20
- return /* @__PURE__ */ jsxs("select", {
21
- "aria-label": label,
22
- value: selected ?? "",
23
- onChange: (event) => onChange(event.target.value || null),
24
- className: cn("h-8 w-full min-w-0 truncate rounded-md border border-border bg-background px-2 text-sm text-foreground", focusRing),
25
- children: [/* @__PURE__ */ jsx("option", {
26
- value: "",
27
- children: "Select an account"
28
- }), connections.map((connection) => /* @__PURE__ */ jsx("option", {
29
- value: connection.id,
30
- children: connection.accountDisplay ? `${connection.accountDisplay} · ${connection.id}` : connection.id
31
- }, connection.id))]
21
+ const selectedIndex = connections.findIndex((connection) => connection.id === value);
22
+ const accountLabel = (connection) => {
23
+ const display = connection.accountDisplay?.trim();
24
+ if (!display) return connection.id;
25
+ const duplicates = connections.filter((item) => item.accountDisplay?.trim() === display);
26
+ if (duplicates.length < 2) return display;
27
+ let length = Math.min(6, connection.id.length);
28
+ while (length < connection.id.length && duplicates.some((item) => item.id !== connection.id && item.id.endsWith(connection.id.slice(-length)))) length++;
29
+ return `${display} · ${length < connection.id.length ? "…" : ""}${connection.id.slice(-length)}`;
30
+ };
31
+ return /* @__PURE__ */ jsxs(Select, {
32
+ value: selectedIndex < 0 ? "" : String(selectedIndex),
33
+ onValueChange: (next) => {
34
+ if (next === "none") onChange(null);
35
+ else {
36
+ const connection = connections.find((_, index) => String(index) === next);
37
+ if (connection) onChange(connection.id);
38
+ }
39
+ },
40
+ children: [/* @__PURE__ */ jsx(SelectTrigger, {
41
+ "aria-label": label,
42
+ className: cn("h-10 w-full min-w-0 max-w-md data-[state=open]:border-primary data-[state=open]:bg-[var(--accent-surface-strong)]", selectedIndex >= 0 && "border-primary/30 bg-[var(--accent-surface-soft)]"),
43
+ children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select an account" })
44
+ }), /* @__PURE__ */ jsxs(SelectContent, {
45
+ className: integrationSelectContentClassName,
46
+ children: [/* @__PURE__ */ jsx(SelectItem, {
47
+ value: "none",
48
+ className: integrationSelectItemClassName,
49
+ children: "Select an account"
50
+ }), connections.map((connection, index) => /* @__PURE__ */ jsx(SelectItem, {
51
+ value: String(index),
52
+ className: integrationSelectItemClassName,
53
+ children: accountLabel(connection)
54
+ }, connection.id))]
55
+ })]
32
56
  });
33
57
  }
34
58
  function ConnectionMenu({ row, connection, onManage, onDisconnect, compact }) {
@@ -125,25 +149,33 @@ function IntegrationsCatalog({ rows, query, onQueryChange, categoryFilter = "",
125
149
  className: "min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground"
126
150
  })]
127
151
  }),
128
- onCategoryFilterChange ? /* @__PURE__ */ jsxs("select", {
129
- "aria-label": "Filter by category",
130
- value: categoryFilter,
131
- onChange: (event) => onCategoryFilterChange(event.target.value),
132
- className: cn("h-10 min-w-0 rounded-lg border bg-card px-3 text-sm", focusRing),
133
- children: [
134
- /* @__PURE__ */ jsx("option", {
135
- value: "",
136
- children: "All categories"
137
- }),
138
- categoryFilter && !categories.includes(categoryFilter) ? /* @__PURE__ */ jsx("option", {
139
- value: categoryFilter,
140
- children: categoryFilter
141
- }) : null,
142
- categories.map((category) => /* @__PURE__ */ jsx("option", {
143
- value: category,
144
- children: category
145
- }, category))
146
- ]
152
+ onCategoryFilterChange ? /* @__PURE__ */ jsxs(Select, {
153
+ value: categoryFilter ? `category:${categoryFilter}` : "all",
154
+ onValueChange: (value) => onCategoryFilterChange(value === "all" ? "" : value.slice(9)),
155
+ children: [/* @__PURE__ */ jsx(SelectTrigger, {
156
+ "aria-label": "Filter by category",
157
+ className: "h-10 w-full sm:w-auto sm:min-w-40",
158
+ children: /* @__PURE__ */ jsx(SelectValue, {})
159
+ }), /* @__PURE__ */ jsxs(SelectContent, {
160
+ className: integrationSelectContentClassName,
161
+ children: [
162
+ /* @__PURE__ */ jsx(SelectItem, {
163
+ value: "all",
164
+ className: integrationSelectItemClassName,
165
+ children: "All categories"
166
+ }),
167
+ categoryFilter && !categories.includes(categoryFilter) ? /* @__PURE__ */ jsx(SelectItem, {
168
+ value: `category:${categoryFilter}`,
169
+ className: integrationSelectItemClassName,
170
+ children: categoryFilter
171
+ }) : null,
172
+ categories.map((category) => /* @__PURE__ */ jsx(SelectItem, {
173
+ value: `category:${category}`,
174
+ className: integrationSelectItemClassName,
175
+ children: category
176
+ }, category))
177
+ ]
178
+ })]
147
179
  }) : null,
148
180
  sort && onSortChange ? /* @__PURE__ */ jsx("div", {
149
181
  role: "group",
@@ -649,22 +681,25 @@ function IntegrationConnectionDetail({ provider, connections, selectedConnection
649
681
  className: "text-xs text-muted-foreground",
650
682
  children: row.sourceLabel
651
683
  }),
652
- editable ? /* @__PURE__ */ jsxs("select", {
653
- "aria-label": `Decision for ${row.actionPath}`,
654
- value: known ? row.decision : "",
684
+ editable ? /* @__PURE__ */ jsxs(Select, {
685
+ value: known ? String(row.decisionOptions.findIndex((option) => option.value === row.decision)) : "",
655
686
  disabled: busy || row.disabled,
656
- onChange: (event) => {
657
- if (connection && row.decisionOptions.some((option) => option.value === event.target.value)) onDecisionChange?.(connection.id, row.actionPath, event.target.value);
687
+ onValueChange: (value) => {
688
+ const option = row.decisionOptions.find((_, index) => String(index) === value);
689
+ if (connection && option) onDecisionChange?.(connection.id, row.actionPath, option.value);
658
690
  },
659
- className: cn("h-9 rounded-md border border-border bg-background px-2 text-sm", focusRing),
660
- children: [!known ? /* @__PURE__ */ jsx("option", {
661
- value: "",
662
- disabled: true,
663
- children: "Not available"
664
- }) : null, row.decisionOptions.map((option) => /* @__PURE__ */ jsx("option", {
665
- value: option.value,
666
- children: option.label
667
- }, option.value))]
691
+ children: [/* @__PURE__ */ jsx(SelectTrigger, {
692
+ "aria-label": `Decision for ${row.actionPath}`,
693
+ className: "h-9 w-auto min-w-32",
694
+ children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Not available" })
695
+ }), /* @__PURE__ */ jsx(SelectContent, {
696
+ className: integrationSelectContentClassName,
697
+ children: row.decisionOptions.map((option, index) => /* @__PURE__ */ jsx(SelectItem, {
698
+ value: String(index),
699
+ className: integrationSelectItemClassName,
700
+ children: option.label
701
+ }, option.value))
702
+ })]
668
703
  }) : /* @__PURE__ */ jsx("span", {
669
704
  className: "text-sm",
670
705
  children: known ? row.decisionOptions.find((option) => option.value === row.decision)?.label : "Not available"
package/dist/pages.d.ts CHANGED
@@ -289,10 +289,31 @@ interface SecretsApiClient {
289
289
  listSecrets: () => Promise<Secret[]>;
290
290
  createSecret: (name: string, value: string) => Promise<void>;
291
291
  deleteSecret: (name: string) => Promise<void>;
292
+ /**
293
+ * Replace the value of an existing secret. When provided, each row offers
294
+ * Replace value; omit it when the backend cannot overwrite a saved value.
295
+ */
296
+ updateSecret?: (name: string, value: string) => Promise<void>;
292
297
  }
293
298
  interface SecretsPageProps {
294
299
  apiClient: SecretsApiClient;
295
300
  className?: string;
301
+ /** Page title. Defaults to "Environment Secrets". */
302
+ title?: string;
303
+ /** Text below the title. Defaults to the Sandbox environment-variable description. */
304
+ description?: React$1.ReactNode;
305
+ /** Explains where a new secret is used, in the create dialog. */
306
+ createDescription?: string;
307
+ /** Text in the empty state. */
308
+ emptyDescription?: string;
309
+ /** Sentence after "This will permanently delete NAME." in the delete dialog. */
310
+ deleteConsequence?: string;
311
+ /**
312
+ * `page` renders a padded page with a bordered list.
313
+ * `pane` fills its container like a workspace pane: a header bar above an
314
+ * edge-to-edge list that scrolls inside the available height.
315
+ */
316
+ variant?: "page" | "pane";
296
317
  /**
297
318
  * Optional hint pointing users at team-level secrets. When provided,
298
319
  * renders a persistent informational banner below the header clarifying
@@ -308,7 +329,7 @@ interface SecretsPageProps {
308
329
  label?: string;
309
330
  };
310
331
  }
311
- export declare function SecretsPage({ apiClient, className, teamSecretsHint }: SecretsPageProps): React$1.JSX.Element;
332
+ export declare function SecretsPage({ apiClient, className, teamSecretsHint, title, description, createDescription, emptyDescription, deleteConsequence, variant }: SecretsPageProps): React$1.JSX.Element;
312
333
  //#endregion
313
334
  //#region src/pages/templates-page.d.ts
314
335
  interface TemplatesPageProps {