@tangle-network/sandbox-ui 0.129.2 → 0.130.1

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/files.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { A as configurePdfViewer, C as PdfViewerConfig, D as RichFileTreeGitStatus, E as RichFileTreeGitEntry, F as getFormatLabel, I as getSyntaxLanguage, L as parseCsv, M as fileExtension, N as filterFileTree, O as RichFileTreeProps, P as getCodeLanguage, R as resolveFilePreviewKind, S as PdfViewer, T as RichFileTree, _ as FileTabsProps, a as FileCardProps, b as FileTreeVisibilityOptions, c as FileList, d as FileNode, f as FilePreview, g as FileTabs, h as FileTabData, i as FileCard, j as detectFileFormat, k as RichFileTreeThemeVars, l as FileListItem, m as FilePreviewProps, n as FileArtifactPane, o as FileDetails, p as FilePreviewKind, r as FileArtifactPaneProps, s as FileFormat, t as CSV_PREVIEW_ROW_LIMIT, u as FileListProps, v as FileTree, w as PdfViewerProps, x as FileUploader, y as FileTreeProps } from "./index-BJVtvyJL.js";
1
+ import { A as configurePdfViewer, C as PdfViewerConfig, D as RichFileTreeGitStatus, E as RichFileTreeGitEntry, F as getFormatLabel, I as getSyntaxLanguage, L as parseCsv, M as fileExtension, N as filterFileTree, O as RichFileTreeProps, P as getCodeLanguage, R as resolveFilePreviewKind, S as PdfViewer, T as RichFileTree, _ as FileTabsProps, a as FileCardProps, b as FileTreeVisibilityOptions, c as FileList, d as FileNode, f as FilePreview, g as FileTabs, h as FileTabData, i as FileCard, j as detectFileFormat, k as RichFileTreeThemeVars, l as FileListItem, m as FilePreviewProps, n as FileArtifactPane, o as FileDetails, p as FilePreviewKind, r as FileArtifactPaneProps, s as FileFormat, t as CSV_PREVIEW_ROW_LIMIT, u as FileListProps, v as FileTree, w as PdfViewerProps, x as FileUploader, y as FileTreeProps } from "./index-BoHOpP2_.js";
2
2
  export { CSV_PREVIEW_ROW_LIMIT, FileArtifactPane, type FileArtifactPaneProps, FileCard, type FileCardProps, type FileDetails, type FileFormat, FileList, type FileListItem, type FileListProps, type FileNode, FilePreview, type FilePreviewKind, type FilePreviewProps, type FileTabData, FileTabs, type FileTabsProps, FileTree, type FileTreeProps, type FileTreeVisibilityOptions, type FileUploader, PdfViewer, type PdfViewerConfig, type PdfViewerProps, RichFileTree, type RichFileTreeGitEntry, type RichFileTreeGitStatus, type RichFileTreeProps, type RichFileTreeThemeVars, configurePdfViewer, detectFileFormat, fileExtension, filterFileTree, getCodeLanguage, getFormatLabel, getSyntaxLanguage, parseCsv, resolveFilePreviewKind };
package/dist/globals.css CHANGED
@@ -4847,6 +4847,10 @@
4847
4847
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
4848
4848
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4849
4849
  }
4850
+ .focus-visible\:ring-2:focus-visible {
4851
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
4852
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4853
+ }
4850
4854
  .focus-visible\:ring-4:focus-visible {
4851
4855
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
4852
4856
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -4854,6 +4858,9 @@
4854
4858
  .focus-visible\:ring-\[var\(--focus-halo\)\]:focus-visible {
4855
4859
  --tw-ring-color: var(--focus-halo);
4856
4860
  }
4861
+ .focus-visible\:ring-ring:focus-visible {
4862
+ --tw-ring-color: hsl(var(--ring));
4863
+ }
4857
4864
  .focus-visible\:outline-1:focus-visible {
4858
4865
  outline-style: var(--tw-outline-style);
4859
4866
  outline-width: 1px;
@@ -4867,6 +4874,10 @@
4867
4874
  .focus-visible\:outline-\[var\(--focus-border\)\]:focus-visible {
4868
4875
  outline-color: var(--focus-border);
4869
4876
  }
4877
+ .focus-visible\:outline-none:focus-visible {
4878
+ --tw-outline-style: none;
4879
+ outline-style: none;
4880
+ }
4870
4881
  .focus-visible\:ring-inset:focus-visible {
4871
4882
  --tw-ring-inset: inset;
4872
4883
  }
@@ -5747,6 +5758,18 @@
5747
5758
  .\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open] > svg {
5748
5759
  rotate: 180deg;
5749
5760
  }
5761
+ @media (pointer:coarse) {
5762
+ .\[\@media\(pointer\:coarse\)\]\:h-10 {
5763
+ height: calc(var(--spacing) * 10);
5764
+ }
5765
+ .\[\@media\(pointer\:coarse\)\]\:min-h-10 {
5766
+ min-height: calc(var(--spacing) * 10);
5767
+ }
5768
+ .\[\@media\(pointer\:coarse\)\]\:text-base {
5769
+ font-size: var(--text-base);
5770
+ line-height: var(--tw-leading, var(--text-base--line-height));
5771
+ }
5772
+ }
5750
5773
  [data-sandbox-theme=''] .\[\[data-sandbox-theme\=\'\'\]_\&\]\:invert {
5751
5774
  --tw-invert: invert(100%);
5752
5775
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
@@ -1,7 +1,7 @@
1
1
  import { ArtifactPane as ArtifactPane$1, ArtifactPaneProps } from "@tangle-network/ui/primitives";
2
- import { HTMLAttributes, ReactNode, Ref } from "react";
2
+ import { CSSProperties, HTMLAttributes, ReactNode, Ref } from "react";
3
3
  import { LucideIcon } from "lucide-react";
4
- import { FileNode, FileTabData, FileTreeVisibilityOptions, RichFileTreeProps } from "@tangle-network/ui/files";
4
+ import { FileNode, FileTabData, FileTreeVisibilityOptions } from "@tangle-network/ui/files";
5
5
  import { ActiveSessionRecord, ActiveSessionStatus, SessionProjectKey } from "@tangle-network/ui/stores";
6
6
  import { ChatContainerProps } from "@tangle-network/ui/chat";
7
7
  import { OpenUIAction, OpenUIComponentNode } from "@tangle-network/ui/openui";
@@ -747,17 +747,41 @@ type WorkspaceFilesSource = {
747
747
  paths: ReadonlyArray<string>;
748
748
  root?: never;
749
749
  };
750
- type WorkspaceFilesPaneProps = Omit<RichFileTreeProps, "root" | "paths" | "onSelect" | "className"> & WorkspaceFilesSource & {
751
- /** Root inputs preserve the original node. Flat path inputs have no node metadata. */
750
+ type WorkspaceFilesPaneProps = WorkspaceFilesSource & {
751
+ /** The open file. Its row is selected and its folders are revealed when it changes. */
752
+ selectedPath?: string;
753
+ /**
754
+ * Called when the reader opens a file, and on every folder row click (the
755
+ * folder also expands or collapses). A folder's path carries a trailing `/`,
756
+ * as it did when this pane rendered RichFileTree; check `node.type` to tell
757
+ * them apart.
758
+ */
752
759
  onSelect?: (path: string, node?: FileNode) => void;
753
760
  preview?: WorkspaceFilesPreview;
754
761
  onBack?: () => void;
755
762
  /** Supply loading, unavailable, or empty content from the authoritative adapter. */
756
763
  emptyState?: ReactNode;
764
+ /**
765
+ * Remembers which folders the reader expanded, in this browser, under this
766
+ * key. The vault page's `treeStateKey` names the same store, so passing the
767
+ * same key keeps one expansion across both. Omit to forget on unmount.
768
+ */
769
+ expansionKey?: string;
770
+ /** Show a name filter above the tree. Defaults to true. */
771
+ search?: boolean;
772
+ /** Heading of the files surface. Defaults to "Files". */
773
+ label?: string;
774
+ /** Controls rendered in the files surface header. */
775
+ headerActions?: ReactNode;
757
776
  className?: string;
777
+ style?: CSSProperties;
758
778
  };
759
- /** Compact file navigation shared by workspace companions and standalone panes. */
760
- declare function WorkspaceFilesPane({ root, paths, onSelect, preview, onBack, emptyState, className, ...treeProps }: WorkspaceFilesPaneProps): import("react").JSX.Element;
779
+ /**
780
+ * Compact file navigation shared by workspace companions and standalone panes.
781
+ * The tree sits in its own surface: folders start collapsed, expansion is
782
+ * remembered under `expansionKey`, and a preview replaces the tree until Back.
783
+ */
784
+ declare function WorkspaceFilesPane({ root, paths, selectedPath, onSelect, preview, onBack, emptyState, expansionKey, search, label, headerActions, className, style }: WorkspaceFilesPaneProps): import("react").JSX.Element;
761
785
  //#endregion
762
786
  //#region src/workspace/workspace-artifact-view.d.ts
763
787
  interface WorkspaceArtifactViewProps {
@@ -0,0 +1,2 @@
1
+ import { CSV_PREVIEW_ROW_LIMIT, FileArtifactPane as FileArtifactPane$1, FileArtifactPaneProps, FileCard, FileCardProps, FileDetails, FileFormat, FileList, FileListItem, FileListProps, FileNode as FileNode$1, FilePreview, FilePreviewKind, FilePreviewProps, FileTabData as FileTabData$1, FileTabs, FileTabsProps, FileTree as FileTree$1, FileTreeProps, FileTreeVisibilityOptions as FileTreeVisibilityOptions$1, FileUploader, PdfViewer, PdfViewerConfig, PdfViewerProps, RichFileTree, RichFileTreeGitEntry, RichFileTreeGitStatus, RichFileTreeProps, RichFileTreeThemeVars, configurePdfViewer, detectFileFormat, fileExtension, filterFileTree as filterFileTree$1, getCodeLanguage, getFormatLabel, getSyntaxLanguage, parseCsv, resolveFilePreviewKind } from "@tangle-network/ui/files";
2
+ export { configurePdfViewer as A, PdfViewerConfig as C, RichFileTreeGitStatus as D, RichFileTreeGitEntry as E, getFormatLabel as F, getSyntaxLanguage as I, parseCsv as L, fileExtension as M, filterFileTree$1 as N, RichFileTreeProps as O, getCodeLanguage as P, resolveFilePreviewKind as R, PdfViewer as S, RichFileTree as T, FileTabsProps as _, FileCardProps as a, FileTreeVisibilityOptions$1 as b, FileList as c, FileNode$1 as d, FilePreview as f, FileTabs as g, FileTabData$1 as h, FileCard as i, detectFileFormat as j, RichFileTreeThemeVars as k, FileListItem as l, FilePreviewProps as m, FileArtifactPane$1 as n, FileDetails as o, FilePreviewKind as p, FileArtifactPaneProps as r, FileFormat as s, CSV_PREVIEW_ROW_LIMIT as t, FileListProps as u, FileTree$1 as v, PdfViewerProps as w, FileUploader as x, FileTreeProps as y };
@@ -0,0 +1,47 @@
1
+ import { FileNode } from "@tangle-network/ui/files";
2
+ //#region src/vault-tree/vault-tree.d.ts
3
+ /** Children rendered per folder before a "Show more" row. */
4
+ declare const VAULT_TREE_CHILD_PAGE = 200;
5
+ interface VaultTreeProps {
6
+ /** The listed collection; its children are the top-level rows. */
7
+ root: FileNode;
8
+ /** The open file. Its row is marked selected and its folders are revealed when it changes. */
9
+ selectedPath?: string;
10
+ /** A folder the host treats as current, such as a create target. */
11
+ activeFolder?: string | null;
12
+ /** Called with a file's path when the reader opens it. */
13
+ onSelect: (path: string) => void;
14
+ /** Called after the reader expands or collapses a folder. */
15
+ onFolderToggle?: (path: string, expanded: boolean) => void;
16
+ /**
17
+ * Called every time the reader activates a folder row (click, Enter or
18
+ * Space), whether or not that changes its expansion, as when filtering.
19
+ */
20
+ onFolderSelect?: (path: string) => void;
21
+ /**
22
+ * Remembers folder expansion in this browser under this key, for example
23
+ * `${userId}:${workspaceId}`. Omit to keep expansion for the mounted tree only.
24
+ */
25
+ storageKey?: string;
26
+ /** Show every folder open without changing the remembered expansion, as while filtering. */
27
+ expandAll?: boolean;
28
+ /** Accessible name of the tree. */
29
+ label?: string;
30
+ className?: string;
31
+ }
32
+ declare function VaultTree({ root, selectedPath, activeFolder, onSelect, onFolderToggle, onFolderSelect, storageKey, expandAll, label, className }: VaultTreeProps): import("react").JSX.Element;
33
+ //#endregion
34
+ //#region src/vault-tree/tree-data.d.ts
35
+ /**
36
+ * Nests flat paths into folders. A path ending in `/` is a directory, so an
37
+ * empty folder survives; leading `./` and `/` are ignored.
38
+ */
39
+ declare function fileTreeFromPaths(paths: ReadonlyArray<string>): FileNode[];
40
+ /**
41
+ * Case-insensitive name filter: a file survives when its name matches; a
42
+ * folder survives whole when its own name matches, otherwise only with the
43
+ * descendants that survive.
44
+ */
45
+ declare function filterFileNodes(nodes: ReadonlyArray<FileNode>, query: string): FileNode[];
46
+ //#endregion
47
+ export { VaultTreeProps as a, VaultTree as i, filterFileNodes as n, VAULT_TREE_CHILD_PAGE as r, fileTreeFromPaths as t };
@@ -1,5 +1,5 @@
1
1
  import { g as ExposedPort } from "./index-DTRXdurE.js";
2
- import { D as RichFileTreeGitStatus, E as RichFileTreeGitEntry } from "./index-BJVtvyJL.js";
2
+ import { D as RichFileTreeGitStatus, E as RichFileTreeGitEntry } from "./index-BoHOpP2_.js";
3
3
  import { a as PreviewReadiness, i as PreviewAccess } from "./embedded-app-view-B_vMTtJn.js";
4
4
  import * as React$1 from "react";
5
5
  import { CSSProperties } from "react";
package/dist/index.d.ts CHANGED
@@ -4,21 +4,22 @@ import { a as SharedMessagingRouteViewState, i as AgentTargetSummary, n as Agent
4
4
  import { $ as SandboxTable, $t as Sidebar, A as MetricChartPoint, At as SIDEBAR_TOTAL_WIDTH, B as ProductVariant, Bt as RailButton, C as UsageSummary, Ct as OutOfCreditsModal, D as SystemLogsViewerProps, Dt as SIDEBAR_PANEL_WIDTH, E as SystemLogsViewer, Et as SIDEBAR_MOBILE_WIDTH, F as SidebarLayoutProps, Ft as RailTooltipProps, G as HARNESS_OPTIONS, Gt as RailFlyout, H as HarnessBrand, Ht as RailExpandable, I as DashboardLayout, It as McpServer, J as HarnessType, Jt as RailHeaderProps, K as HarnessPicker, Kt as RailFlyoutProps, L as DashboardLayoutProps, Lt as AppearanceController, M as SidebarLayout, Mt as SidebarProviderProps, N as SidebarLayoutFlyoutItem, Nt as useSidebar, O as MetricAreaChart, Ot as SIDEBAR_RAIL_LABELED_WIDTH, P as SidebarLayoutNavItem, Pt as RailTooltip, Q as BackendSelectorProps, Qt as RailSeparatorProps, R as DashboardUser, Rt as ProfileAvatar, S as GitStatusData, St as InsufficientBalance, T as UsageSummaryProps, Tt as parseInsufficientBalance, U as HarnessLogo, Ut as RailExpandableProps, V as HARNESS_BRAND, Vt as RailButtonProps, W as HarnessLogoProps, Wt as RailExpandableSubItem, X as Backend, Xt as RailModeButtonProps, Y as chatCapableHarnesses, Yt as RailModeButton, Z as BackendSelector, Zt as RailSeparator, _ as PortsList, _t as ResourceSnapshotItem, a as PromoBanner, an as SidebarPanelHeader, at as NewSandboxCard, b as GitPanel, bt as ResourceMeterProps, c as SnapshotList, cn as SidebarProps, ct as SandboxCardData, d as ProcessList, dn as SidebarRailFooterProps, dt as TeamRole, en as SidebarContent, et as SandboxTableProps, f as ProcessListProps, fn as SidebarRailNav, ft as canAdminSandbox, g as ExposedPort, gn as ThemeMode, gt as ResourceSnapshot, h as TemplateCardProps, hn as SidebarUser, ht as ActivityItem, i as SandboxPageShellProps, in as SidebarPanelContentProps, it as sandboxStatus, j as MetricChartTone, jt as SidebarProvider, k as MetricAreaChartProps, kt as SIDEBAR_RAIL_WIDTH, l as SnapshotListProps, ln as SidebarRail, lt as SandboxCardProps, m as TemplateCardData, mn as SidebarRailProps, mt as ActivityFeedProps, n as DashboardPageHeaderProps, nn as SidebarPanel, nt as SandboxStatusPill, o as PromoBannerProps, on as SidebarPanelHeaderProps, ot as NewSandboxCardProps, p as TemplateCard, pn as SidebarRailNavProps, pt as ActivityFeed, q as HarnessPickerProps, qt as RailHeader, r as SandboxPageShell, rn as SidebarPanelContent, rt as SandboxStatusPillProps, s as SnapshotInfo, sn as SidebarPanelProps, st as SandboxCard, t as DashboardPageHeader, tn as SidebarContentProps, tt as SANDBOX_STATUS, u as ProcessInfo, un as SidebarRailFooter, ut as SandboxStatus, v as PortsListProps, vt as ResourceSnapshotProps, w as UsageSummaryData, wt as OutOfCreditsModalProps, x as GitPanelProps, xt as INSUFFICIENT_BALANCE_CODE, y as GitCommitData, yt as ResourceMeter, z as NavItem, zt as ProfileAvatarProps } from "./index-DTRXdurE.js";
5
5
  import { a as modelBrandFor, i as canonicalModelId, n as ModelBrandStack, r as ModelInfo, t as ModelBrandIdentity } from "./model-brand-B9A4H9pJ.js";
6
6
  import { a as PricingPageProps, c as BillingBalance, d as BillingSubscription, f as BillingUsage, i as PricingPage, l as BillingDashboard, n as UsageChartProps, o as PricingTier, r as UsageDataPoint, s as formatPrice, t as UsageChart, u as BillingDashboardProps } from "./usage-chart-BjM8ShvX.js";
7
- import { A as configurePdfViewer, C as PdfViewerConfig, D as RichFileTreeGitStatus, E as RichFileTreeGitEntry, F as getFormatLabel, I as getSyntaxLanguage, L as parseCsv, M as fileExtension, N as filterFileTree, O as RichFileTreeProps, P as getCodeLanguage, R as resolveFilePreviewKind, S as PdfViewer, T as RichFileTree, _ as FileTabsProps, a as FileCardProps, b as FileTreeVisibilityOptions, c as FileList, d as FileNode, f as FilePreview, g as FileTabs, h as FileTabData, i as FileCard, j as detectFileFormat, k as RichFileTreeThemeVars, l as FileListItem, m as FilePreviewProps, n as FileArtifactPane, o as FileDetails, p as FilePreviewKind, r as FileArtifactPaneProps, s as FileFormat, t as CSV_PREVIEW_ROW_LIMIT, u as FileListProps, v as FileTree, w as PdfViewerProps, x as FileUploader, y as FileTreeProps } from "./index-BJVtvyJL.js";
7
+ import { A as configurePdfViewer, C as PdfViewerConfig, D as RichFileTreeGitStatus, E as RichFileTreeGitEntry, F as getFormatLabel, I as getSyntaxLanguage, L as parseCsv, M as fileExtension, N as filterFileTree, O as RichFileTreeProps, P as getCodeLanguage, R as resolveFilePreviewKind, S as PdfViewer, T as RichFileTree, _ as FileTabsProps, a as FileCardProps, b as FileTreeVisibilityOptions, c as FileList, d as FileNode, f as FilePreview, g as FileTabs, h as FileTabData, i as FileCard, j as detectFileFormat, k as RichFileTreeThemeVars, l as FileListItem, m as FilePreviewProps, n as FileArtifactPane, o as FileDetails, p as FilePreviewKind, r as FileArtifactPaneProps, s as FileFormat, t as CSV_PREVIEW_ROW_LIMIT, u as FileListProps, v as FileTree, w as PdfViewerProps, x as FileUploader, y as FileTreeProps } from "./index-BoHOpP2_.js";
8
8
  import { n as UsePtySessionReturn, r as usePtySession, t as UsePtySessionOptions } from "./use-pty-session-DbAYO5uH.js";
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
12
  import { $ as ContextMenuShortcut, $n as TableProps, $t as PageShell, A as CardFooter, An as SheetPortal, Ar as badgeVariants, At as DropdownMenuSubTrigger, B as Collapsible, Bn as StatCardProps, Br as LogoProps, Bt as IconTile, C as BadgeProps, Cn as Sheet, Cr as Tooltip, Ct as DropdownMenuPortal, D as Card, Dn as SheetFooter, Dr as UploadFile, Dt as DropdownMenuShortcut, E as CATEGORY_TONES, En as SheetDescription, Er as TooltipTrigger, Et as DropdownMenuSeparator, F as Checkbox, Fn as Skeleton, Fr as useToast, Ft as FilterFieldProps, G as ContextMenuContent, Gn as TONE_CLASSES, Gt as InputProps, H as CollapsibleTrigger, Hn as StatusPillProps, Ht as InlineCode, I as Chip, In as SkeletonCard, Ir as HeadingProps, It as Heading, J as ContextMenuLabel, Jn as TableCaption, Jt as MetricProps, K as ContextMenuGroup, Kn as Table, Kt as Label, L as ChipProps, Ln as SkeletonTable, Lr as SectionTitle, Lt as HeadingVariant, M as CardTitle, Mn as SheetTrigger, Mr as initialsOf, Mt as EmptyState, N as CardTitleProps, Nn as SidebarDropZone, Nr as toneFor, Nt as EmptyStateProps, O as CardContent, On as SheetHeader, Or as UploadProgress, Ot as DropdownMenuSub, P as CategoryTone, Pn as SidebarDropZoneProps, Pr as useTheme, Pt as FilterField, Q as ContextMenuSeparator, Qn as TableHeader, Qt as PageHeaderProps, R as CodeBlock, Rn as Slider, Rr as SectionTitleProps, Rt as HelpText, S as Badge, Sn as Separator, Sr as ToolbarProps, St as DropdownMenuLabel, T as ButtonProps, Tn as SheetContent, Tr as TooltipProvider, Tt as DropdownMenuRadioItem, U as ContextMenu, Un as StatusTone, Ut as InlineCodeProps, V as CollapsibleContent, Vn as StatusPill, Vr as TangleKnot, Vt as IconTileProps, W as ContextMenuCheckboxItem, Wn as Switch, Wt as Input, X as ContextMenuRadioGroup, Xn as TableFooter, Xt as MetricStripProps, Y as ContextMenuPortal, Yn as TableCell, Yt as MetricStrip, Z as ContextMenuRadioItem, Zn as TableHead, Zt as PageHeader, _n as SelectScrollDownButton, _r as ToastContainer, _t as DropdownMenu, a as AlertDialogCancel, an as PopoverClose, ar as Tag, at as Dialog, b as AvatarFallback, bn as SelectTrigger, br as ToneClasses, bt as DropdownMenuGroup, c as AlertDialogFooter, cn as Progress, cr as TerminalDisplay, ct as DialogDescription, d as AlertDialogPortal, dn as SegmentedControlProps, dr as TextShimmer, dt as DialogOverlay, en as PageShellProps, er as TableRow, et as ContextMenuSub, f as AlertDialogTitle, fn as Select, fr as TextShimmerProps, ft as DialogPortal, g as AlertTone, gn as SelectLabel, gr as Toast, gt as DropZoneProps, h as AlertTitle, hn as SelectItem, hr as ThemeToggle, ht as DropZone, i as AlertDialogAction, in as PopoverAnchor, ir as TabsTrigger, it as CopyButton, j as CardHeader, jn as SheetTitle, jr as buttonVariants, jt as DropdownMenuTrigger, k as CardDescription, kn as SheetOverlay, kr as UploadProgressProps, kt as DropdownMenuSubContent, l as AlertDialogHeader, ln as SegmentedControl, lt as DialogFooter, m as AlertProps, mn as SelectGroup, mr as TextareaProps, mt as DialogTrigger, n as AlertDescription, nn as PaginationProps, nr as TabsContent, nt as ContextMenuSubTrigger, o as AlertDialogContent, on as PopoverContent, or as TagProps, ot as DialogClose, p as AlertDialogTrigger, pn as SelectContent, pr as Textarea, pt as DialogTitle, q as ContextMenuItem, qn as TableBody, qt as Metric, r as AlertDialog, rn as Popover, rr as TabsList, rt as ContextMenuTrigger, s as AlertDialogDescription, sn as PopoverTrigger, st as DialogContent, t as Alert, tn as Pagination, tr as Tabs, tt as ContextMenuSubContent, u as AlertDialogOverlay, un as SegmentedControlOption, ut as DialogHeader, vn as SelectScrollUpButton, vr as ToastProvider, vt as DropdownMenuCheckboxItem, w as Button, wn as SheetClose, wr as TooltipContent, wt as DropdownMenuRadioGroup, x as AvatarImage, xn as SelectValue, xr as Toolbar, xt as DropdownMenuItem, y as Avatar, yn as SelectSeparator, yr as Tone, yt as DropdownMenuContent, z as CodeBlockProps, zn as StatCard, zr as Logo, zt as HelpTextProps } from "./index-C6oItkj5.js";
13
- import { $ as StatusBar, A as createShellShouldRevalidate, B as SessionSidebarVariant, C as SandboxWorkbenchLayoutOptions, D as SandboxWorkbenchSessionProps, E as SandboxWorkbenchProps, F as SessionSidebarFilter, G as dispatchSessionCreated, H as SessionCreatedDetail, I as SessionSidebarGroupBy, J as RuntimePaneProps, K as useOptimisticSessionItems, L as SessionSidebarItem, M as formatRelativeAge, N as SessionSidebar, O as ShellShouldRevalidateArgs, P as SessionSidebarBadge, Q as ContextBadge, R as SessionSidebarLink, S as SandboxWorkbenchFileArtifact, T as SandboxWorkbenchOpenUIArtifact, U as SessionOptimisticController, V as SESSION_CREATED_EVENT, W as UseOptimisticSessionItemsOptions, X as TerminalPanel, Y as TerminalLine, Z as TerminalProps, _ as TaskBoardItem, a as WorkspaceFilesPane, at as DirectoryPaneProps, b as SandboxWorkbenchArtifact, c as ApprovalConfidenceStat, ct as WorkspaceLayout, d as ApprovalQueueProps, et as StatusBarProps, f as CalendarEvent, g as TaskBoardColumn, h as TaskBoard, i as WorkspaceArtifactViewProps, it as DirectoryPane, j as shellShouldRevalidate, k as ShellShouldRevalidateOptions, l as ApprovalItem, lt as WorkspaceLayoutProps, m as CalendarViewProps, n as ArtifactPaneProps, nt as StatusBanner, o as WorkspaceFilesPaneProps, ot as WorkspacePaneHeader, p as CalendarView, q as RuntimePane, r as WorkspaceArtifactView, rt as StatusBannerProps, s as WorkspaceFilesPreview, st as WorkspacePaneHeaderProps, t as ArtifactPane, tt as BannerType, u as ApprovalQueue, v as TaskBoardProps, w as SandboxWorkbenchMarkdownArtifact, x as SandboxWorkbenchCustomArtifact, y as SandboxWorkbench, z as SessionSidebarProps } from "./index-Bww3rzEG.js";
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-DTy7WF0k.js";
13
+ import { $ as StatusBar, A as createShellShouldRevalidate, B as SessionSidebarVariant, C as SandboxWorkbenchLayoutOptions, D as SandboxWorkbenchSessionProps, E as SandboxWorkbenchProps, F as SessionSidebarFilter, G as dispatchSessionCreated, H as SessionCreatedDetail, I as SessionSidebarGroupBy, J as RuntimePaneProps, K as useOptimisticSessionItems, L as SessionSidebarItem, M as formatRelativeAge, N as SessionSidebar, O as ShellShouldRevalidateArgs, P as SessionSidebarBadge, Q as ContextBadge, R as SessionSidebarLink, S as SandboxWorkbenchFileArtifact, T as SandboxWorkbenchOpenUIArtifact, U as SessionOptimisticController, V as SESSION_CREATED_EVENT, W as UseOptimisticSessionItemsOptions, X as TerminalPanel, Y as TerminalLine, Z as TerminalProps, _ as TaskBoardItem, a as WorkspaceFilesPane, at as DirectoryPaneProps, b as SandboxWorkbenchArtifact, c as ApprovalConfidenceStat, ct as WorkspaceLayout, d as ApprovalQueueProps, et as StatusBarProps, f as CalendarEvent, g as TaskBoardColumn, h as TaskBoard, i as WorkspaceArtifactViewProps, it as DirectoryPane, j as shellShouldRevalidate, k as ShellShouldRevalidateOptions, l as ApprovalItem, lt as WorkspaceLayoutProps, m as CalendarViewProps, n as ArtifactPaneProps, nt as StatusBanner, o as WorkspaceFilesPaneProps, ot as WorkspacePaneHeader, p as CalendarView, q as RuntimePane, r as WorkspaceArtifactView, rt as StatusBannerProps, s as WorkspaceFilesPreview, st as WorkspacePaneHeaderProps, t as ArtifactPane, tt as BannerType, u as ApprovalQueue, v as TaskBoardProps, w as SandboxWorkbenchMarkdownArtifact, x as SandboxWorkbenchCustomArtifact, y as SandboxWorkbench, z as SessionSidebarProps } from "./index-B2nE9_FN.js";
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-DNClXEEe.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";
16
16
  import { OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, OpenUIAction, OpenUIActionsNode, OpenUIArtifactRenderer, OpenUIArtifactRendererProps, OpenUIBadgeNode, OpenUICardNode, OpenUICodeNode, OpenUIComponentNode, OpenUIGridNode, OpenUIHeadingNode, OpenUIKeyValueNode, OpenUIMarkdownNode, OpenUIPrimitive, OpenUISchemaIssue, OpenUISchemaValidation, OpenUISeparatorNode, OpenUIStackNode, OpenUIStatNode, OpenUITableNode, OpenUITextNode, findUnsupportedOpenUINode, validateOpenUIJsonArtifact, validateOpenUIJsonNode } from "./openui.js";
17
17
  import { ExpandedToolDetail, ExpandedToolDetailProps, FeedSegment, InlineThinkingItem, InlineThinkingItemProps, InlineToolItem, InlineToolItemProps, LiveDuration, RunGroup, RunGroupProps, RunRowShell, RunRowShellProps, RunRowStatus, RunRowStatusDot, ToolCallData, ToolCallFeed, ToolCallFeedProps, ToolCallStatus, ToolCallType, parseToolEvent } from "./run.js";
18
+ import { a as VaultTreeProps, i as VaultTree, n as filterFileNodes, r as VAULT_TREE_CHILD_PAGE, t as fileTreeFromPaths } from "./index-DGil6iqm.js";
18
19
  import { ActiveProjectActivity, ActiveSessionActivityOptions, ActiveSessionConnectionOptions, ActiveSessionConnectionState, ActiveSessionReconnectState, ActiveSessionRecord, ActiveSessionStatus, ActiveSessionTransportMode, ActiveSessionsState, ChatSession, RegisterActiveSessionOptions, SessionProjectKey, activeSessionsAtom, addMessage, addParts, bumpActiveSessionActivity, clearChat, connectSession, disconnectSession, getActiveSession, getAllActiveSessions, getAllProjectActivity, getSessionsByActivity, getSessionsForNavbar, getSessionsForProject, getTotalRunningSessionCount, hasBackgroundRunningSessions, isStreamingAtom, messagesAtom, partMapAtom, registerActiveSession, resetActiveSessions, sessionAtom, setActiveSessionAttention, setActiveSessionConnection, setActiveSessionError, setActiveSessionRunning, setForegroundActiveSession, unregisterActiveSession, updateActiveSessionMeta, updatePart, useActiveSession, useActiveSessions, useActiveSessionsState, useHasBackgroundRunningSessions, useNavbarSessions, useProjectActivity, useProjectSessions, useSessionsByActivity, useTotalRunningSessions } from "./stores.js";
19
20
  import { AgentBranding, CustomToolRenderer, DisplayVariant, FinalTextPart, GroupedMessage, MessageRun, MessageUser, ReasoningPart, Run, RunStats, SessionMessage, SessionPart, TextPart, ToolCategory, ToolDisplayMetadata, ToolPart, ToolState, ToolStatus, ToolTime } from "./types.js";
20
21
  import { TOOL_CATEGORY_ICONS, cn, copyText, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatDuration, formatUptime, getToolCategory, getToolDisplayMetadata, getToolErrorText, timeAgo, truncateText } from "./utils.js";
21
22
  import { TerminalCursor as TerminalDisplayCursor, TerminalInput as TerminalDisplayInput, TerminalLine as TerminalDisplayLine } from "@tangle-network/ui/primitives";
22
23
  import { CodeBlock as CodeBlockDisplay, Markdown, MarkdownProps, getSanitizedMarkdownHeadingIdFromRawFragment } from "@tangle-network/ui/markdown";
23
24
  import { CommandPreview, CommandPreviewProps, DiffPreview, DiffPreviewProps, GlobResultsPreview, GlobResultsPreviewProps, GrepResultsPreview, GrepResultsPreviewProps, QuestionPreview, QuestionPreviewProps, WebSearchPreview, WebSearchPreviewProps, WriteFilePreview, WriteFilePreviewProps } from "@tangle-network/ui/tool-previews";
24
- export { ActivityFeed, type ActivityFeedProps, type ActivityItem, type AgentBranding, type AgentEnrollmentViewState, AgentMessagingConnection, type AgentMessagingConnectionProps, type AgentProfileCapability, type AgentProfileDraft, type AgentProfileOption, AgentProfilePicker, type AgentProfilePickerProps, type AgentStreamEvent, type AgentTargetSummary, AgentTimeline, type AgentTimelineArtifactItem, type AgentTimelineCustomItem, type AgentTimelineItem, type AgentTimelineMessageItem, type AgentTimelineProps, type AgentTimelineStatusItem, type AgentTimelineTone, type AgentTimelineToolGroupItem, type AgentTimelineToolItem, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, type AlertTone, type AppearanceController, type AppendUserMessageOptions, type ApplySdkEventOptions, type ApprovalConfidenceStat, type ApprovalItem, ApprovalQueue, type ApprovalQueueProps, ArtifactAgentDock, type ArtifactAgentDockProps, type ArtifactAgentDockTransport, type ArtifactDockMessage, type ArtifactDockStreamEvent, type ArtifactKind, ArtifactPane, type ArtifactPaneProps, type ArtifactScope, type ArtifactView, AuthHeader, type AuthHeaderProps, type AuthUser, type AutomationStreamEvent, Avatar, AvatarFallback, AvatarImage, BRAND_PRISM_THEME, type Backend, BackendSelector, type BackendSelectorProps, Badge, type BadgeProps, type BannerType, type BeginAssistantMessageOptions, type BillingBalance, BillingDashboard, type BillingDashboardProps, type BillingSubscription, type BillingUsage, type BotStreamEvent, Button, type ButtonProps, CATEGORY_TONES, CSV_PREVIEW_ROW_LIMIT, type CalendarEvent, CalendarView, type CalendarViewProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type CardTitleProps, type CategoryTone, type ChangedFile, ChangesPane, type ChangesPaneProps, ChatContainer, type ChatContainerProps, ChatMessage, type ChatMessageProps, ChatSession, Checkbox, Chip, type ChipProps, CodeBlock, CodeBlockDisplay, type CodeBlockProps, CodeSurface, type CodeSurfaceProps, CodeView, type CodeViewProps, Collapsible, CollapsibleContent, CollapsibleTrigger, CommandPreview, type CommandPreviewProps, type CompleteAssistantMessageOptions, type ContextBadge, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, type CustomToolRenderer, DEFAULT_REASONING_LEVEL_OPTIONS, DashboardLayout, type DashboardLayoutProps, DashboardPageHeader, type DashboardPageHeaderProps, type SnapshotInfo as DashboardSnapshotInfo, type DashboardUser, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiffPreview, type DiffPreviewProps, type DiffStats, DiffStatsBadge, DiffView, type DiffViewProps, DirectoryPane, type DirectoryPaneProps, type DisplayVariant, DropZone, type DropZoneProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, type EmbeddedApp, EmbeddedAppView, type EmbeddedAppViewProps, EmptyState, type EmptyStateProps, ExpandedToolDetail, type ExpandedToolDetailProps, type ExposedPort, type FeedSegment, FileArtifactPane, type FileArtifactPaneProps, FileBreadcrumb, type FileBreadcrumbProps, FileCard, type FileCardProps, type FileDetails, type FileFormat, FileList, type FileListItem, type FileListProps, type FileNode, FilePreview, type FilePreviewKind, type FilePreviewProps, type FileTabData, FileTabs, type FileTabsProps, FileTree, type FileTreeProps, type FileTreeVisibilityOptions, type FileUploader, FilterField, type FilterFieldProps, type FinalTextPart, type GitCommitData, GitHubLoginButton, type GitHubLoginButtonProps, GitPanel, type GitPanelProps, GitStatusBadge, type GitStatusData, GlobResultsPreview, type GlobResultsPreviewProps, GrepResultsPreview, type GrepResultsPreviewProps, type GroupedMessage, HARNESS_BRAND, HARNESS_OPTIONS, HARNESS_REASONING_OPTIONS, type HarnessBrand, HarnessLogo, type HarnessLogoProps, HarnessPicker, type HarnessPickerProps, type HarnessType, Heading, type HeadingProps, type HeadingVariant, HelpText, type HelpTextProps, INSUFFICIENT_BALANCE_CODE, IconTile, type IconTileProps, InlineCode, type InlineCodeProps, InlineThinkingItem, type InlineThinkingItemProps, InlineToolItem, type InlineToolItemProps, Input, type InputProps, type InsufficientBalance, Label, LiveDuration, LoginLayout, type LoginLayoutProps, Logo, type LogoProps, Markdown, type MarkdownProps, type McpServer, MessageAuthor, type MessageAuthorProps, MessageList, type MessageListProps, type MessageRole, type MessageRun, type MessageUser, Metric, MetricAreaChart, type MetricAreaChartProps, type MetricChartPoint, type MetricChartTone, type MetricProps, MetricStrip, type MetricStripProps, type ModelBrandIdentity, ModelBrandStack, type ModelInfo, type NavItem, NewSandboxCard, type NewSandboxCardProps, OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, type OpenUIAction, type OpenUIActionsNode, OpenUIArtifactRenderer, type OpenUIArtifactRendererProps, type OpenUIBadgeNode, type OpenUICardNode, type OpenUICodeNode, type OpenUIComponentNode, type OpenUIGridNode, type OpenUIHeadingNode, type OpenUIKeyValueNode, type OpenUIMarkdownNode, type OpenUIPrimitive, type OpenUISchemaIssue, type OpenUISchemaValidation, type OpenUISeparatorNode, type OpenUIStackNode, type OpenUIStatNode, type OpenUITableNode, type OpenUITextNode, OutOfCreditsModal, type OutOfCreditsModalProps, PageHeader, type PageHeaderProps, PageShell, type PageShellProps, Pagination, type PaginationProps, PanelHeader, type PanelHeaderProps, PdfViewer, type PdfViewerConfig, type PdfViewerProps, type PillTabItem, PillTabs, type PillTabsProps, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger, PortsList, type PortsListProps, type PreviewAccess, type PreviewReadiness, PreviewView, type PreviewViewProps, PricingPage, type PricingPageProps, type PricingTier, type ProcessInfo, ProcessList, type ProcessListProps, type ProductVariant, ProfileAvatar, type ProfileAvatarProps, Progress, PromoBanner, type PromoBannerProps, QuestionPreview, type QuestionPreviewProps, RailButton, type RailButtonProps, RailExpandable, type RailExpandableProps, type RailExpandableSubItem, RailFlyout, type RailFlyoutProps, RailHeader, type RailHeaderProps, RailModeButton, type RailModeButtonProps, RailSeparator, type RailSeparatorProps, RailTooltip, type RailTooltipProps, type RealtimeSessionOptions, RealtimeSessionRegistry, type RealtimeSessionRegistryProps, type RealtimeSessionState, type RealtimeSessionTarget, type ReasoningLevel, type ReasoningLevelOption, ReasoningLevelPicker, type ReasoningLevelPickerProps, type ReasoningPart, ResourceMeter, type ResourceMeterProps, ResourceSnapshot, type ResourceSnapshotItem, type ResourceSnapshotProps, RichFileTree, type RichFileTreeGitEntry, type RichFileTreeGitStatus, type RichFileTreeProps, type RichFileTreeThemeVars, type Run, RunGroup, type RunGroupProps, RunRowShell, type RunRowShellProps, type RunRowStatus, RunRowStatusDot, type RunStats, RuntimePane, type RuntimePaneProps, SANDBOX_STATUS, SESSION_CREATED_EVENT, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, type SSEEvent, type SandboxArtifact, SandboxArtifactPane, type SandboxArtifactPaneProps, type SandboxArtifactTerminal, SandboxCard, type SandboxCardData, type SandboxCardProps, type SandboxMetrics, SandboxPageShell, type SandboxPageShellProps, type SandboxStatus, SandboxStatusPill, type SandboxStatusPillProps, SandboxTable, type SandboxTableProps, SandboxWorkbench, type SandboxWorkbenchArtifact, type SandboxWorkbenchCustomArtifact, type SandboxWorkbenchFileArtifact, type SandboxWorkbenchLayoutOptions, type SandboxWorkbenchMarkdownArtifact, type SandboxWorkbenchOpenUIArtifact, type SandboxWorkbenchProps, type SandboxWorkbenchSessionProps, type SdkSessionAttachment, type SdkSessionEvent, type SdkSessionSeed, SectionTitle, type SectionTitleProps, SegmentedControl, type SegmentedControlOption, type SegmentedControlProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Session, type SessionCreatedDetail, type SessionDegradation, type SessionInfo, type SessionMessage, type SessionOptimisticController, type SessionPart, SessionSidebar, type SessionSidebarBadge, type SessionSidebarFilter, type SessionSidebarGroupBy, type SessionSidebarItem, type SessionSidebarLink, type SessionSidebarProps, type SessionSidebarVariant, type SessionUser, type SharedMessagingRouteViewState, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, type ShellShouldRevalidateArgs, type ShellShouldRevalidateOptions, Sidebar, SidebarContent, type SidebarContentProps, SidebarDropZone, type SidebarDropZoneProps, 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, SidebarRailNav, type SidebarRailNavProps, type SidebarRailProps, type SidebarUser, type SidecarAuth, type SidecarMetricsPayload, Skeleton, SkeletonCard, SkeletonTable, Slider, SnapshotList, type SnapshotListProps, StatCard, type StatCardProps, StatusBanner, type StatusBannerProps, StatusBar, type StatusBarProps, StatusPill, type StatusPillProps, type StatusTone, Switch, SystemLogsViewer, type SystemLogsViewerProps, TONE_CLASSES, TOOL_CATEGORY_ICONS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, type TableProps, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tag, type TagProps, TangleKnot, TangleLoginButton, type TangleLoginButtonProps, TaskBoard, type TaskBoardColumn, type TaskBoardItem, type TaskBoardProps, type TaskStreamEvent, type TeamRole, TemplateCard, type TemplateCardData, type TemplateCardProps, TerminalDisplay, TerminalDisplayCursor, TerminalDisplayInput, TerminalDisplayLine, type TerminalLine, TerminalPanel, type TerminalProps, type TerminalStreamEvent, type TextPart, TextShimmer, type TextShimmerProps, Textarea, type TextareaProps, type ThemeMode, ThemeToggle, ThinkingIndicator, type ThinkingIndicatorProps, type Toast, ToastContainer, ToastProvider, type Tone, type ToneClasses, type ToolCallData, ToolCallFeed, type ToolCallFeedProps, type ToolCallStatus, type ToolCallType, type ToolCategory, type ToolDisplayMetadata, type ToolPart, type ToolState, type ToolStatus, type ToolTime, Toolbar, type ToolbarProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type UploadFile, UploadProgress, type UploadProgressProps, UsageChart, type UsageChartProps, type UsageDataPoint, UsageSummary, type UsageSummaryData, type UsageSummaryProps, type UseAuthOptions, type UseAuthResult, type UseOptimisticSessionItemsOptions, type UsePtySessionOptions, type UsePtySessionReturn, type UseRunGroupsOptions, type UseSSEStreamOptions, type UseSSEStreamResult, type UseSandboxMetricsOptions, type UseSandboxMetricsResult, type UseSdkSessionOptions, type UseSdkSessionReturn, type UseSessionStreamOptions, type UseSessionStreamResult, type UseSidecarAuthOptions, type UseToolCallStreamReturn, UserMenu, type UserMenuProps, UserMessage, type UserMessageProps, WebSearchPreview, type WebSearchPreviewProps, WorkspaceArtifactView, type WorkspaceArtifactViewProps, WorkspaceFilesPane, type WorkspaceFilesPaneProps, type WorkspaceFilesPreview, WorkspaceLayout, type WorkspaceLayoutProps, WorkspacePaneHeader, type WorkspacePaneHeaderProps, WriteFilePreview, type WriteFilePreviewProps, activeSessionsAtom, addMessage, addParts, badgeVariants, buildUnifiedPatch, bumpActiveSessionActivity, buttonVariants, canAdminSandbox, canonicalModelId, chatCapableHarnesses, clearChat, cn, computeDiffStats, configurePdfViewer, connectSession, copyText, createAuthFetcher, createShellShouldRevalidate, detectFileFormat, disconnectSession, dispatchSessionCreated, fileExtension, filterFileTree, findUnsupportedOpenUINode, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatDuration, formatPrice, formatRelativeAge, formatUptime, getActiveSession, getAllActiveSessions, getAllProjectActivity, getCodeLanguage, getFormatLabel, getSanitizedMarkdownHeadingIdFromRawFragment, getSessionsByActivity, getSessionsForNavbar, getSessionsForProject, getSyntaxLanguage, getToolCategory, getToolDisplayMetadata, getToolErrorText, getTotalRunningSessionCount, hasBackgroundRunningSessions, initialsOf, isStreamingAtom, isViewerMessage, messagesAtom, modelBrandFor, modelProvider, parseCsv, parseInsufficientBalance, parseToolEvent, partMapAtom, registerActiveSession, resetActiveSessions, resolveFilePreviewKind, resolveLanguage, sandboxStatus, sessionAtom, setActiveSessionAttention, setActiveSessionConnection, setActiveSessionError, setActiveSessionRunning, setForegroundActiveSession, shellShouldRevalidate, snapHarnessToModel, timeAgo, toneFor, truncateText, unregisterActiveSession, updateActiveSessionMeta, updatePart, useActiveSession, useActiveSessions, useActiveSessionsState, useApiKey, useAuth, useAutoScroll, useCreateSession, useDeleteSession, useDropdownMenu, useHasBackgroundRunningSessions, useLiveTime, useNavbarSessions, useOptimisticSessionItems, useProjectActivity, useProjectSessions, usePtySession, useRealtimeSession, useRenameSession, useRunCollapseState, useRunGroups, useSSEStream, useSandboxMetrics, useSdkSession, useSessionStream, useSessions, useSessionsByActivity, useSidebar, useSidecarAuth, useTheme, useToast, useToolCallStream, useTotalRunningSessions, validateOpenUIJsonArtifact, validateOpenUIJsonNode };
25
+ export { ActivityFeed, type ActivityFeedProps, type ActivityItem, type AgentBranding, type AgentEnrollmentViewState, AgentMessagingConnection, type AgentMessagingConnectionProps, type AgentProfileCapability, type AgentProfileDraft, type AgentProfileOption, AgentProfilePicker, type AgentProfilePickerProps, type AgentStreamEvent, type AgentTargetSummary, AgentTimeline, type AgentTimelineArtifactItem, type AgentTimelineCustomItem, type AgentTimelineItem, type AgentTimelineMessageItem, type AgentTimelineProps, type AgentTimelineStatusItem, type AgentTimelineTone, type AgentTimelineToolGroupItem, type AgentTimelineToolItem, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, type AlertTone, type AppearanceController, type AppendUserMessageOptions, type ApplySdkEventOptions, type ApprovalConfidenceStat, type ApprovalItem, ApprovalQueue, type ApprovalQueueProps, ArtifactAgentDock, type ArtifactAgentDockProps, type ArtifactAgentDockTransport, type ArtifactDockMessage, type ArtifactDockStreamEvent, type ArtifactKind, ArtifactPane, type ArtifactPaneProps, type ArtifactScope, type ArtifactView, AuthHeader, type AuthHeaderProps, type AuthUser, type AutomationStreamEvent, Avatar, AvatarFallback, AvatarImage, BRAND_PRISM_THEME, type Backend, BackendSelector, type BackendSelectorProps, Badge, type BadgeProps, type BannerType, type BeginAssistantMessageOptions, type BillingBalance, BillingDashboard, type BillingDashboardProps, type BillingSubscription, type BillingUsage, type BotStreamEvent, Button, type ButtonProps, CATEGORY_TONES, CSV_PREVIEW_ROW_LIMIT, type CalendarEvent, CalendarView, type CalendarViewProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type CardTitleProps, type CategoryTone, type ChangedFile, ChangesPane, type ChangesPaneProps, ChatContainer, type ChatContainerProps, ChatMessage, type ChatMessageProps, ChatSession, Checkbox, Chip, type ChipProps, CodeBlock, CodeBlockDisplay, type CodeBlockProps, CodeSurface, type CodeSurfaceProps, CodeView, type CodeViewProps, Collapsible, CollapsibleContent, CollapsibleTrigger, CommandPreview, type CommandPreviewProps, type CompleteAssistantMessageOptions, type ContextBadge, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, type CustomToolRenderer, DEFAULT_REASONING_LEVEL_OPTIONS, DashboardLayout, type DashboardLayoutProps, DashboardPageHeader, type DashboardPageHeaderProps, type SnapshotInfo as DashboardSnapshotInfo, type DashboardUser, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiffPreview, type DiffPreviewProps, type DiffStats, DiffStatsBadge, DiffView, type DiffViewProps, DirectoryPane, type DirectoryPaneProps, type DisplayVariant, DropZone, type DropZoneProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, type EmbeddedApp, EmbeddedAppView, type EmbeddedAppViewProps, EmptyState, type EmptyStateProps, ExpandedToolDetail, type ExpandedToolDetailProps, type ExposedPort, type FeedSegment, FileArtifactPane, type FileArtifactPaneProps, FileBreadcrumb, type FileBreadcrumbProps, FileCard, type FileCardProps, type FileDetails, type FileFormat, FileList, type FileListItem, type FileListProps, type FileNode, FilePreview, type FilePreviewKind, type FilePreviewProps, type FileTabData, FileTabs, type FileTabsProps, FileTree, type FileTreeProps, type FileTreeVisibilityOptions, type FileUploader, FilterField, type FilterFieldProps, type FinalTextPart, type GitCommitData, GitHubLoginButton, type GitHubLoginButtonProps, GitPanel, type GitPanelProps, GitStatusBadge, type GitStatusData, GlobResultsPreview, type GlobResultsPreviewProps, GrepResultsPreview, type GrepResultsPreviewProps, type GroupedMessage, HARNESS_BRAND, HARNESS_OPTIONS, HARNESS_REASONING_OPTIONS, type HarnessBrand, HarnessLogo, type HarnessLogoProps, HarnessPicker, type HarnessPickerProps, type HarnessType, Heading, type HeadingProps, type HeadingVariant, HelpText, type HelpTextProps, INSUFFICIENT_BALANCE_CODE, IconTile, type IconTileProps, InlineCode, type InlineCodeProps, InlineThinkingItem, type InlineThinkingItemProps, InlineToolItem, type InlineToolItemProps, Input, type InputProps, type InsufficientBalance, Label, LiveDuration, LoginLayout, type LoginLayoutProps, Logo, type LogoProps, Markdown, type MarkdownProps, type McpServer, MessageAuthor, type MessageAuthorProps, MessageList, type MessageListProps, type MessageRole, type MessageRun, type MessageUser, Metric, MetricAreaChart, type MetricAreaChartProps, type MetricChartPoint, type MetricChartTone, type MetricProps, MetricStrip, type MetricStripProps, type ModelBrandIdentity, ModelBrandStack, type ModelInfo, type NavItem, NewSandboxCard, type NewSandboxCardProps, OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, type OpenUIAction, type OpenUIActionsNode, OpenUIArtifactRenderer, type OpenUIArtifactRendererProps, type OpenUIBadgeNode, type OpenUICardNode, type OpenUICodeNode, type OpenUIComponentNode, type OpenUIGridNode, type OpenUIHeadingNode, type OpenUIKeyValueNode, type OpenUIMarkdownNode, type OpenUIPrimitive, type OpenUISchemaIssue, type OpenUISchemaValidation, type OpenUISeparatorNode, type OpenUIStackNode, type OpenUIStatNode, type OpenUITableNode, type OpenUITextNode, OutOfCreditsModal, type OutOfCreditsModalProps, PageHeader, type PageHeaderProps, PageShell, type PageShellProps, Pagination, type PaginationProps, PanelHeader, type PanelHeaderProps, PdfViewer, type PdfViewerConfig, type PdfViewerProps, type PillTabItem, PillTabs, type PillTabsProps, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger, PortsList, type PortsListProps, type PreviewAccess, type PreviewReadiness, PreviewView, type PreviewViewProps, PricingPage, type PricingPageProps, type PricingTier, type ProcessInfo, ProcessList, type ProcessListProps, type ProductVariant, ProfileAvatar, type ProfileAvatarProps, Progress, PromoBanner, type PromoBannerProps, QuestionPreview, type QuestionPreviewProps, RailButton, type RailButtonProps, RailExpandable, type RailExpandableProps, type RailExpandableSubItem, RailFlyout, type RailFlyoutProps, RailHeader, type RailHeaderProps, RailModeButton, type RailModeButtonProps, RailSeparator, type RailSeparatorProps, RailTooltip, type RailTooltipProps, type RealtimeSessionOptions, RealtimeSessionRegistry, type RealtimeSessionRegistryProps, type RealtimeSessionState, type RealtimeSessionTarget, type ReasoningLevel, type ReasoningLevelOption, ReasoningLevelPicker, type ReasoningLevelPickerProps, type ReasoningPart, ResourceMeter, type ResourceMeterProps, ResourceSnapshot, type ResourceSnapshotItem, type ResourceSnapshotProps, RichFileTree, type RichFileTreeGitEntry, type RichFileTreeGitStatus, type RichFileTreeProps, type RichFileTreeThemeVars, type Run, RunGroup, type RunGroupProps, RunRowShell, type RunRowShellProps, type RunRowStatus, RunRowStatusDot, type RunStats, RuntimePane, type RuntimePaneProps, SANDBOX_STATUS, SESSION_CREATED_EVENT, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, type SSEEvent, type SandboxArtifact, SandboxArtifactPane, type SandboxArtifactPaneProps, type SandboxArtifactTerminal, SandboxCard, type SandboxCardData, type SandboxCardProps, type SandboxMetrics, SandboxPageShell, type SandboxPageShellProps, type SandboxStatus, SandboxStatusPill, type SandboxStatusPillProps, SandboxTable, type SandboxTableProps, SandboxWorkbench, type SandboxWorkbenchArtifact, type SandboxWorkbenchCustomArtifact, type SandboxWorkbenchFileArtifact, type SandboxWorkbenchLayoutOptions, type SandboxWorkbenchMarkdownArtifact, type SandboxWorkbenchOpenUIArtifact, type SandboxWorkbenchProps, type SandboxWorkbenchSessionProps, type SdkSessionAttachment, type SdkSessionEvent, type SdkSessionSeed, SectionTitle, type SectionTitleProps, SegmentedControl, type SegmentedControlOption, type SegmentedControlProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Session, type SessionCreatedDetail, type SessionDegradation, type SessionInfo, type SessionMessage, type SessionOptimisticController, type SessionPart, SessionSidebar, type SessionSidebarBadge, type SessionSidebarFilter, type SessionSidebarGroupBy, type SessionSidebarItem, type SessionSidebarLink, type SessionSidebarProps, type SessionSidebarVariant, type SessionUser, type SharedMessagingRouteViewState, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, type ShellShouldRevalidateArgs, type ShellShouldRevalidateOptions, Sidebar, SidebarContent, type SidebarContentProps, SidebarDropZone, type SidebarDropZoneProps, 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, SidebarRailNav, type SidebarRailNavProps, type SidebarRailProps, type SidebarUser, type SidecarAuth, type SidecarMetricsPayload, Skeleton, SkeletonCard, SkeletonTable, Slider, SnapshotList, type SnapshotListProps, StatCard, type StatCardProps, StatusBanner, type StatusBannerProps, StatusBar, type StatusBarProps, StatusPill, type StatusPillProps, type StatusTone, Switch, SystemLogsViewer, type SystemLogsViewerProps, TONE_CLASSES, TOOL_CATEGORY_ICONS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, type TableProps, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tag, type TagProps, TangleKnot, TangleLoginButton, type TangleLoginButtonProps, TaskBoard, type TaskBoardColumn, type TaskBoardItem, type TaskBoardProps, type TaskStreamEvent, type TeamRole, TemplateCard, type TemplateCardData, type TemplateCardProps, TerminalDisplay, TerminalDisplayCursor, TerminalDisplayInput, TerminalDisplayLine, type TerminalLine, TerminalPanel, type TerminalProps, type TerminalStreamEvent, type TextPart, TextShimmer, type TextShimmerProps, Textarea, type TextareaProps, type ThemeMode, ThemeToggle, ThinkingIndicator, type ThinkingIndicatorProps, type Toast, ToastContainer, ToastProvider, type Tone, type ToneClasses, type ToolCallData, ToolCallFeed, type ToolCallFeedProps, type ToolCallStatus, type ToolCallType, type ToolCategory, type ToolDisplayMetadata, type ToolPart, type ToolState, type ToolStatus, type ToolTime, Toolbar, type ToolbarProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type UploadFile, UploadProgress, type UploadProgressProps, UsageChart, type UsageChartProps, type UsageDataPoint, UsageSummary, type UsageSummaryData, type UsageSummaryProps, type UseAuthOptions, type UseAuthResult, type UseOptimisticSessionItemsOptions, type UsePtySessionOptions, type UsePtySessionReturn, type UseRunGroupsOptions, type UseSSEStreamOptions, type UseSSEStreamResult, type UseSandboxMetricsOptions, type UseSandboxMetricsResult, type UseSdkSessionOptions, type UseSdkSessionReturn, type UseSessionStreamOptions, type UseSessionStreamResult, type UseSidecarAuthOptions, type UseToolCallStreamReturn, UserMenu, type UserMenuProps, UserMessage, type UserMessageProps, VAULT_TREE_CHILD_PAGE, VaultTree, type VaultTreeProps, WebSearchPreview, type WebSearchPreviewProps, WorkspaceArtifactView, type WorkspaceArtifactViewProps, WorkspaceFilesPane, type WorkspaceFilesPaneProps, type WorkspaceFilesPreview, WorkspaceLayout, type WorkspaceLayoutProps, WorkspacePaneHeader, type WorkspacePaneHeaderProps, WriteFilePreview, type WriteFilePreviewProps, activeSessionsAtom, addMessage, addParts, badgeVariants, buildUnifiedPatch, bumpActiveSessionActivity, buttonVariants, canAdminSandbox, canonicalModelId, chatCapableHarnesses, clearChat, cn, computeDiffStats, configurePdfViewer, connectSession, copyText, createAuthFetcher, createShellShouldRevalidate, detectFileFormat, disconnectSession, dispatchSessionCreated, fileExtension, fileTreeFromPaths, filterFileNodes, filterFileTree, findUnsupportedOpenUINode, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatDuration, formatPrice, formatRelativeAge, formatUptime, getActiveSession, getAllActiveSessions, getAllProjectActivity, getCodeLanguage, getFormatLabel, getSanitizedMarkdownHeadingIdFromRawFragment, getSessionsByActivity, getSessionsForNavbar, getSessionsForProject, getSyntaxLanguage, getToolCategory, getToolDisplayMetadata, getToolErrorText, getTotalRunningSessionCount, hasBackgroundRunningSessions, initialsOf, isStreamingAtom, isViewerMessage, messagesAtom, modelBrandFor, modelProvider, parseCsv, parseInsufficientBalance, parseToolEvent, partMapAtom, registerActiveSession, resetActiveSessions, resolveFilePreviewKind, resolveLanguage, sandboxStatus, sessionAtom, setActiveSessionAttention, setActiveSessionConnection, setActiveSessionError, setActiveSessionRunning, setForegroundActiveSession, shellShouldRevalidate, snapHarnessToModel, timeAgo, toneFor, truncateText, unregisterActiveSession, updateActiveSessionMeta, updatePart, useActiveSession, useActiveSessions, useActiveSessionsState, useApiKey, useAuth, useAutoScroll, useCreateSession, useDeleteSession, useDropdownMenu, useHasBackgroundRunningSessions, useLiveTime, useNavbarSessions, useOptimisticSessionItems, useProjectActivity, useProjectSessions, usePtySession, useRealtimeSession, useRenameSession, useRunCollapseState, useRunGroups, useSSEStream, useSandboxMetrics, useSdkSession, useSessionStream, useSessions, useSessionsByActivity, useSidebar, useSidecarAuth, useTheme, useToast, useToolCallStream, useTotalRunningSessions, validateOpenUIJsonArtifact, validateOpenUIJsonNode };
package/dist/index.js CHANGED
@@ -1,7 +1,8 @@
1
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-C2CzWiZU.js";
2
2
  import { $ as DialogDescription, $n as Logo, $t as Sheet, A as CodeBlock, An as Tag, At as Metric, B as ContextMenuPortal, Bn as Toolbar, Bt as Progress, C as CardContent, Cn as TableHead, Ct as FilterField, D as CardTitle, Dn as TabsContent, Dt as InlineCode, E as CardHeader, En as Tabs, Et as IconTile, F as ContextMenuCheckboxItem, Fn as TextShimmer, Ft as Popover, G as ContextMenuSub, Gn as UploadProgress, Gt as SelectItem, H as ContextMenuRadioItem, Hn as TooltipContent, Ht as Select, I as ContextMenuContent, In as Textarea, It as PopoverAnchor, J as ContextMenuTrigger, Jn as initialsOf, Jt as SelectScrollUpButton, K as ContextMenuSubContent, Kn as badgeVariants, Kt as SelectLabel, L as ContextMenuGroup, Ln as ThemeToggle, Lt as PopoverClose, M as CollapsibleContent, Mn as TerminalDisplay, Mt as PageHeader, N as CollapsibleTrigger, Nt as PageShell, O as Checkbox, On as TabsList, Ot as Input, P as ContextMenu, Pt as Pagination, Q as DialogContent, Qn as SectionTitle, Qt as Separator, R as ContextMenuItem, Rn as ToastContainer, Rt as PopoverContent, S as Card, Sn as TableFooter, St as EmptyState, T as CardFooter, Tn as TableRow, Tt as HelpText, U as ContextMenuSeparator, Un as TooltipProvider, Ut as SelectContent, V as ContextMenuRadioGroup, Vn as Tooltip, Vt as SegmentedControl, W as ContextMenuShortcut, Wn as TooltipTrigger, Wt as SelectGroup, X as Dialog, Xn as useTheme, Xt as SelectTrigger, Y as CopyButton, Yn as toneFor, Yt as SelectSeparator, Z as DialogClose, Zn as useToast, Zt as SelectValue, _ as AvatarFallback, _n as TONE_CLASSES, _t as DropdownMenuShortcut, a as AlertDialogCancel, an as SheetOverlay, at as DialogTrigger, b as Button, bn as TableCaption, bt as DropdownMenuSubTrigger, c as AlertDialogFooter, cn as SheetTrigger, ct as DropdownMenuCheckboxItem, d as AlertDialogPortal, dn as SkeletonCard, dt as DropdownMenuItem, en as SheetClose, er as TangleKnot, et as DialogFooter, f as AlertDialogTitle, fn as SkeletonTable, ft as DropdownMenuLabel, g as Avatar, gn as Switch, gt as DropdownMenuSeparator, hn as StatusPill, ht as DropdownMenuRadioItem, i as AlertDialogAction, in as SheetHeader, it as DialogTitle, j as Collapsible, jt as MetricStrip, k as Chip, kn as TabsTrigger, kt as Label, l as AlertDialogHeader, ln as SidebarDropZone, lt as DropdownMenuContent, m as AlertTitle, mn as StatCard, mt as DropdownMenuRadioGroup, n as AlertDescription, nn as SheetDescription, nt as DialogOverlay, o as AlertDialogContent, on as SheetPortal, ot as DropZone, p as AlertDialogTrigger, pn as Slider, pt as DropdownMenuPortal, q as ContextMenuSubTrigger, qn as buttonVariants, qt as SelectScrollDownButton, r as AlertDialog, rn as SheetFooter, rt as DialogPortal, s as AlertDialogDescription, sn as SheetTitle, st as DropdownMenu, t as Alert, tn as SheetContent, tt as DialogHeader, u as AlertDialogOverlay, un as Skeleton, ut as DropdownMenuGroup, v as AvatarImage, vn as Table, vt as DropdownMenuSub, w as CardDescription, wn as TableHeader, wt as Heading, x as CATEGORY_TONES, xn as TableCell, xt as DropdownMenuTrigger, y as Badge, yn as TableBody, yt as DropdownMenuSubContent, z as ContextMenuLabel, zn as ToastProvider, zt as PopoverTrigger } from "./primitives-JjV1ruzp.js";
3
3
  import { t as WorkspacePaneHeader } from "./workspace-pane-header-Bg1cCcHX.js";
4
- import { _ as StatusBar, a as TaskBoard, b as WorkspaceLayout, c as createShellShouldRevalidate, d as SESSION_CREATED_EVENT, f as dispatchSessionCreated, g as TerminalPanel, h as RuntimePane, i as CalendarView, l as shellShouldRevalidate, m as formatRelativeAge, n as WorkspaceFilesPane, o as SandboxWorkbench, p as useOptimisticSessionItems, r as ApprovalQueue, s as WorkspaceArtifactView, t as ArtifactPane, u as SessionSidebar, v as StatusBanner, y as DirectoryPane } from "./workspace-DJhAkl6d.js";
4
+ import { _ as StatusBar, a as TaskBoard, b as WorkspaceLayout, c as createShellShouldRevalidate, d as SESSION_CREATED_EVENT, f as dispatchSessionCreated, g as TerminalPanel, h as RuntimePane, i as CalendarView, l as shellShouldRevalidate, m as formatRelativeAge, n as WorkspaceFilesPane, o as SandboxWorkbench, p as useOptimisticSessionItems, r as ApprovalQueue, s as WorkspaceArtifactView, t as ArtifactPane, u as SessionSidebar, v as StatusBanner, y as DirectoryPane } from "./workspace-DRz3SoJc.js";
5
+ import { i as VaultTree, n as filterFileNodes, r as VAULT_TREE_CHILD_PAGE, t as fileTreeFromPaths } from "./tree-data-DtoCNNBJ.js";
5
6
  import { $ as useSidebar, A as parseInsufficientBalance, B as SidebarPanel, C as SandboxStatusPill, D as ResourceMeter, E as ResourceSnapshot, F as RailHeader, G as SidebarRailNav, H as SidebarPanelHeader, I as RailModeButton, J as SIDEBAR_PANEL_WIDTH, K as RailTooltip, L as RailSeparator, M as RailButton, N as RailExpandable, O as INSUFFICIENT_BALANCE_CODE, P as RailFlyout, Q as SidebarProvider, R as Sidebar, S as SANDBOX_STATUS, T as ActivityFeed, U as SidebarRail, V as SidebarPanelContent, W as SidebarRailFooter, X as SIDEBAR_RAIL_WIDTH, Y as SIDEBAR_RAIL_LABELED_WIDTH, Z as SIDEBAR_TOTAL_WIDTH, _ as BackendSelector, a as PortsList, b as SandboxCard, c as SystemLogsViewer, d as DashboardLayout, f as HARNESS_OPTIONS, g as HarnessLogo, h as HARNESS_BRAND, i as TemplateCard, j as ProfileAvatar, k as OutOfCreditsModal, l as MetricAreaChart, m as chatCapableHarnesses, n as SnapshotList, o as GitPanel, p as HarnessPicker, q as SIDEBAR_MOBILE_WIDTH, r as ProcessList, s as UsageSummary, t as PromoBanner, u as SidebarLayout, v as SandboxTable, w as sandboxStatus, x as canAdminSandbox, y as NewSandboxCard, z as SidebarContent } from "./dashboard-BW-rPRwj.js";
6
7
  import { n as canonicalModelId, r as modelBrandFor, t as ModelBrandStack } from "./model-brand-hMyDTUqB.js";
7
8
  import { a as formatPrice, i as PricingPage, n as SandboxPageShell, o as BillingDashboard, r as UsageChart, t as DashboardPageHeader } from "./page-layout-2IRtfx51.js";
@@ -11,6 +12,7 @@ import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-CMRP
11
12
  import { OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, OpenUIArtifactRenderer, findUnsupportedOpenUINode, validateOpenUIJsonArtifact, validateOpenUIJsonNode } from "./openui.js";
12
13
  import { a as MessageList, c as isViewerMessage, d as snapHarnessToModel, f as AgentProfilePicker, h as ReasoningLevelPicker, i as MessageAuthor, l as ArtifactAgentDock, m as HARNESS_REASONING_OPTIONS, n as ChatContainer, o as ThinkingIndicator, p as DEFAULT_REASONING_LEVEL_OPTIONS, r as ChatMessage, s as UserMessage, t as AgentTimeline, u as modelProvider } from "./chat-Cc6pWroz.js";
13
14
  import { ExpandedToolDetail, InlineThinkingItem, InlineToolItem, LiveDuration, RunGroup, RunRowShell, RunRowStatusDot, ToolCallFeed, parseToolEvent } from "./run.js";
15
+ import "./vault-tree.js";
14
16
  import { a as TangleLoginButton, i as UserMenu, n as GitHubLoginButton, r as LoginLayout, t as AuthHeader } from "./auth-CWe17Hly.js";
15
17
  import { t as AgentMessagingConnection } from "./connections-C5DxYxvz.js";
16
18
  import { i as useSessionStream, t as useSidecarAuth } from "./use-sidecar-auth-DkdcufOz.js";
@@ -21,4 +23,4 @@ import { TOOL_CATEGORY_ICONS, cn, copyText, focusField, focusFieldInvalid, focus
21
23
  import { TerminalCursor as TerminalDisplayCursor, TerminalInput as TerminalDisplayInput, TerminalLine as TerminalDisplayLine } from "@tangle-network/ui/primitives";
22
24
  import { CodeBlock as CodeBlockDisplay, Markdown, getSanitizedMarkdownHeadingIdFromRawFragment } from "@tangle-network/ui/markdown";
23
25
  import { CommandPreview, DiffPreview, GlobResultsPreview, GrepResultsPreview, QuestionPreview, WebSearchPreview, WriteFilePreview } from "@tangle-network/ui/tool-previews";
24
- export { ActivityFeed, AgentMessagingConnection, AgentProfilePicker, AgentTimeline, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, ApprovalQueue, ArtifactAgentDock, ArtifactPane, AuthHeader, Avatar, AvatarFallback, AvatarImage, BRAND_PRISM_THEME, BackendSelector, Badge, BillingDashboard, Button, CATEGORY_TONES, CSV_PREVIEW_ROW_LIMIT, CalendarView, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChangesPane, ChatContainer, ChatMessage, Checkbox, Chip, CodeBlock, CodeBlockDisplay, CodeSurface, CodeView, Collapsible, CollapsibleContent, CollapsibleTrigger, CommandPreview, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, DEFAULT_REASONING_LEVEL_OPTIONS, DashboardLayout, DashboardPageHeader, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiffPreview, DiffStatsBadge, DiffView, DirectoryPane, DropZone, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmbeddedAppView, EmptyState, ExpandedToolDetail, FileArtifactPane, FileBreadcrumb, FileCard, FileList, FilePreview, FileTabs, FileTree, FilterField, GitHubLoginButton, GitPanel, GitStatusBadge, GlobResultsPreview, GrepResultsPreview, HARNESS_BRAND, HARNESS_OPTIONS, HARNESS_REASONING_OPTIONS, HarnessLogo, HarnessPicker, Heading, HelpText, INSUFFICIENT_BALANCE_CODE, IconTile, InlineCode, InlineThinkingItem, InlineToolItem, Input, Label, LiveDuration, LoginLayout, Logo, Markdown, MessageAuthor, MessageList, Metric, MetricAreaChart, MetricStrip, ModelBrandStack, NewSandboxCard, OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, OpenUIArtifactRenderer, OutOfCreditsModal, PageHeader, PageShell, Pagination, PanelHeader, PdfViewer, PillTabs, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger, PortsList, PreviewView, PricingPage, ProcessList, ProfileAvatar, Progress, PromoBanner, QuestionPreview, RailButton, RailExpandable, RailFlyout, RailHeader, RailModeButton, RailSeparator, RailTooltip, RealtimeSessionRegistry, ReasoningLevelPicker, ResourceMeter, ResourceSnapshot, RichFileTree, RunGroup, RunRowShell, RunRowStatusDot, RuntimePane, SANDBOX_STATUS, SESSION_CREATED_EVENT, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxArtifactPane, SandboxCard, SandboxPageShell, SandboxStatusPill, SandboxTable, SandboxWorkbench, SectionTitle, SegmentedControl, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SessionSidebar, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarDropZone, SidebarLayout, SidebarPanel, SidebarPanelContent, SidebarPanelHeader, SidebarProvider, SidebarRail, SidebarRailFooter, SidebarRailNav, Skeleton, SkeletonCard, SkeletonTable, Slider, SnapshotList, StatCard, StatusBanner, StatusBar, StatusPill, Switch, SystemLogsViewer, TONE_CLASSES, TOOL_CATEGORY_ICONS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tag, TangleKnot, TangleLoginButton, TaskBoard, TemplateCard, TerminalDisplay, TerminalDisplayCursor, TerminalDisplayInput, TerminalDisplayLine, TerminalPanel, TextShimmer, Textarea, ThemeToggle, ThinkingIndicator, ToastContainer, ToastProvider, ToolCallFeed, Toolbar, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UploadProgress, UsageChart, UsageSummary, UserMenu, UserMessage, WebSearchPreview, WorkspaceArtifactView, WorkspaceFilesPane, WorkspaceLayout, WorkspacePaneHeader, WriteFilePreview, activeSessionsAtom, addMessage, addParts, badgeVariants, buildUnifiedPatch, bumpActiveSessionActivity, buttonVariants, canAdminSandbox, canonicalModelId, chatCapableHarnesses, clearChat, cn, computeDiffStats, configurePdfViewer, connectSession, copyText, createAuthFetcher, createShellShouldRevalidate, detectFileFormat, disconnectSession, dispatchSessionCreated, fileExtension, filterFileTree, findUnsupportedOpenUINode, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatDuration, formatPrice, formatRelativeAge, formatUptime, getActiveSession, getAllActiveSessions, getAllProjectActivity, getCodeLanguage, getFormatLabel, getSanitizedMarkdownHeadingIdFromRawFragment, getSessionsByActivity, getSessionsForNavbar, getSessionsForProject, getSyntaxLanguage, getToolCategory, getToolDisplayMetadata, getToolErrorText, getTotalRunningSessionCount, hasBackgroundRunningSessions, initialsOf, isStreamingAtom, isViewerMessage, messagesAtom, modelBrandFor, modelProvider, parseCsv, parseInsufficientBalance, parseToolEvent, partMapAtom, registerActiveSession, resetActiveSessions, resolveFilePreviewKind, resolveLanguage, sandboxStatus, sessionAtom, setActiveSessionAttention, setActiveSessionConnection, setActiveSessionError, setActiveSessionRunning, setForegroundActiveSession, shellShouldRevalidate, snapHarnessToModel, timeAgo, toneFor, truncateText, unregisterActiveSession, updateActiveSessionMeta, updatePart, useActiveSession, useActiveSessions, useActiveSessionsState, useApiKey, useAuth, useAutoScroll, useCreateSession, useDeleteSession, useDropdownMenu, useHasBackgroundRunningSessions, useLiveTime, useNavbarSessions, useOptimisticSessionItems, useProjectActivity, useProjectSessions, usePtySession, useRealtimeSession, useRenameSession, useRunCollapseState, useRunGroups, useSSEStream, useSandboxMetrics, useSdkSession, useSessionStream, useSessions, useSessionsByActivity, useSidebar, useSidecarAuth, useTheme, useToast, useToolCallStream, useTotalRunningSessions, validateOpenUIJsonArtifact, validateOpenUIJsonNode };
26
+ export { ActivityFeed, AgentMessagingConnection, AgentProfilePicker, AgentTimeline, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, ApprovalQueue, ArtifactAgentDock, ArtifactPane, AuthHeader, Avatar, AvatarFallback, AvatarImage, BRAND_PRISM_THEME, BackendSelector, Badge, BillingDashboard, Button, CATEGORY_TONES, CSV_PREVIEW_ROW_LIMIT, CalendarView, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChangesPane, ChatContainer, ChatMessage, Checkbox, Chip, CodeBlock, CodeBlockDisplay, CodeSurface, CodeView, Collapsible, CollapsibleContent, CollapsibleTrigger, CommandPreview, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, DEFAULT_REASONING_LEVEL_OPTIONS, DashboardLayout, DashboardPageHeader, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiffPreview, DiffStatsBadge, DiffView, DirectoryPane, DropZone, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmbeddedAppView, EmptyState, ExpandedToolDetail, FileArtifactPane, FileBreadcrumb, FileCard, FileList, FilePreview, FileTabs, FileTree, FilterField, GitHubLoginButton, GitPanel, GitStatusBadge, GlobResultsPreview, GrepResultsPreview, HARNESS_BRAND, HARNESS_OPTIONS, HARNESS_REASONING_OPTIONS, HarnessLogo, HarnessPicker, Heading, HelpText, INSUFFICIENT_BALANCE_CODE, IconTile, InlineCode, InlineThinkingItem, InlineToolItem, Input, Label, LiveDuration, LoginLayout, Logo, Markdown, MessageAuthor, MessageList, Metric, MetricAreaChart, MetricStrip, ModelBrandStack, NewSandboxCard, OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, OpenUIArtifactRenderer, OutOfCreditsModal, PageHeader, PageShell, Pagination, PanelHeader, PdfViewer, PillTabs, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger, PortsList, PreviewView, PricingPage, ProcessList, ProfileAvatar, Progress, PromoBanner, QuestionPreview, RailButton, RailExpandable, RailFlyout, RailHeader, RailModeButton, RailSeparator, RailTooltip, RealtimeSessionRegistry, ReasoningLevelPicker, ResourceMeter, ResourceSnapshot, RichFileTree, RunGroup, RunRowShell, RunRowStatusDot, RuntimePane, SANDBOX_STATUS, SESSION_CREATED_EVENT, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxArtifactPane, SandboxCard, SandboxPageShell, SandboxStatusPill, SandboxTable, SandboxWorkbench, SectionTitle, SegmentedControl, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SessionSidebar, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarDropZone, SidebarLayout, SidebarPanel, SidebarPanelContent, SidebarPanelHeader, SidebarProvider, SidebarRail, SidebarRailFooter, SidebarRailNav, Skeleton, SkeletonCard, SkeletonTable, Slider, SnapshotList, StatCard, StatusBanner, StatusBar, StatusPill, Switch, SystemLogsViewer, TONE_CLASSES, TOOL_CATEGORY_ICONS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tag, TangleKnot, TangleLoginButton, TaskBoard, TemplateCard, TerminalDisplay, TerminalDisplayCursor, TerminalDisplayInput, TerminalDisplayLine, TerminalPanel, TextShimmer, Textarea, ThemeToggle, ThinkingIndicator, ToastContainer, ToastProvider, ToolCallFeed, Toolbar, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UploadProgress, UsageChart, UsageSummary, UserMenu, UserMessage, VAULT_TREE_CHILD_PAGE, VaultTree, WebSearchPreview, WorkspaceArtifactView, WorkspaceFilesPane, WorkspaceLayout, WorkspacePaneHeader, WriteFilePreview, activeSessionsAtom, addMessage, addParts, badgeVariants, buildUnifiedPatch, bumpActiveSessionActivity, buttonVariants, canAdminSandbox, canonicalModelId, chatCapableHarnesses, clearChat, cn, computeDiffStats, configurePdfViewer, connectSession, copyText, createAuthFetcher, createShellShouldRevalidate, detectFileFormat, disconnectSession, dispatchSessionCreated, fileExtension, fileTreeFromPaths, filterFileNodes, filterFileTree, findUnsupportedOpenUINode, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatDuration, formatPrice, formatRelativeAge, formatUptime, getActiveSession, getAllActiveSessions, getAllProjectActivity, getCodeLanguage, getFormatLabel, getSanitizedMarkdownHeadingIdFromRawFragment, getSessionsByActivity, getSessionsForNavbar, getSessionsForProject, getSyntaxLanguage, getToolCategory, getToolDisplayMetadata, getToolErrorText, getTotalRunningSessionCount, hasBackgroundRunningSessions, initialsOf, isStreamingAtom, isViewerMessage, messagesAtom, modelBrandFor, modelProvider, parseCsv, parseInsufficientBalance, parseToolEvent, partMapAtom, registerActiveSession, resetActiveSessions, resolveFilePreviewKind, resolveLanguage, sandboxStatus, sessionAtom, setActiveSessionAttention, setActiveSessionConnection, setActiveSessionError, setActiveSessionRunning, setForegroundActiveSession, shellShouldRevalidate, snapHarnessToModel, timeAgo, toneFor, truncateText, unregisterActiveSession, updateActiveSessionMeta, updatePart, useActiveSession, useActiveSessions, useActiveSessionsState, useApiKey, useAuth, useAutoScroll, useCreateSession, useDeleteSession, useDropdownMenu, useHasBackgroundRunningSessions, useLiveTime, useNavbarSessions, useOptimisticSessionItems, useProjectActivity, useProjectSessions, usePtySession, useRealtimeSession, useRenameSession, useRunCollapseState, useRunGroups, useSSEStream, useSandboxMetrics, useSdkSession, useSessionStream, useSessions, useSessionsByActivity, useSidebar, useSidecarAuth, useTheme, useToast, useToolCallStream, useTotalRunningSessions, validateOpenUIJsonArtifact, validateOpenUIJsonNode };
package/dist/styles.css CHANGED
@@ -4847,6 +4847,10 @@
4847
4847
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
4848
4848
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4849
4849
  }
4850
+ .focus-visible\:ring-2:focus-visible {
4851
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
4852
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4853
+ }
4850
4854
  .focus-visible\:ring-4:focus-visible {
4851
4855
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
4852
4856
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -4854,6 +4858,9 @@
4854
4858
  .focus-visible\:ring-\[var\(--focus-halo\)\]:focus-visible {
4855
4859
  --tw-ring-color: var(--focus-halo);
4856
4860
  }
4861
+ .focus-visible\:ring-ring:focus-visible {
4862
+ --tw-ring-color: hsl(var(--ring));
4863
+ }
4857
4864
  .focus-visible\:outline-1:focus-visible {
4858
4865
  outline-style: var(--tw-outline-style);
4859
4866
  outline-width: 1px;
@@ -4867,6 +4874,10 @@
4867
4874
  .focus-visible\:outline-\[var\(--focus-border\)\]:focus-visible {
4868
4875
  outline-color: var(--focus-border);
4869
4876
  }
4877
+ .focus-visible\:outline-none:focus-visible {
4878
+ --tw-outline-style: none;
4879
+ outline-style: none;
4880
+ }
4870
4881
  .focus-visible\:ring-inset:focus-visible {
4871
4882
  --tw-ring-inset: inset;
4872
4883
  }
@@ -5747,6 +5758,18 @@
5747
5758
  .\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open] > svg {
5748
5759
  rotate: 180deg;
5749
5760
  }
5761
+ @media (pointer:coarse) {
5762
+ .\[\@media\(pointer\:coarse\)\]\:h-10 {
5763
+ height: calc(var(--spacing) * 10);
5764
+ }
5765
+ .\[\@media\(pointer\:coarse\)\]\:min-h-10 {
5766
+ min-height: calc(var(--spacing) * 10);
5767
+ }
5768
+ .\[\@media\(pointer\:coarse\)\]\:text-base {
5769
+ font-size: var(--text-base);
5770
+ line-height: var(--tw-leading, var(--text-base--line-height));
5771
+ }
5772
+ }
5750
5773
  [data-sandbox-theme=''] .\[\[data-sandbox-theme\=\'\'\]_\&\]\:invert {
5751
5774
  --tw-invert: invert(100%);
5752
5775
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
@@ -0,0 +1,416 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
+ import { ChevronRight, File, FileCode, FileImage, FileJson, FileSpreadsheet, FileText, Folder, FolderOpen } from "lucide-react";
4
+ //#region src/vault-tree/vault-tree.tsx
5
+ /**
6
+ * The file tree shared by the vault page and workspace Files panels: folders
7
+ * start collapsed, the reader's expansion is remembered per `storageKey` in this
8
+ * browser, and opening or linking to a file reveals only that file's path. Two
9
+ * trees given the same key share one remembered expansion.
10
+ *
11
+ * Rendering is lazy: only the children of expanded folders are walked or
12
+ * mounted, and a folder with more than `CHILD_PAGE` children renders them a page
13
+ * at a time, so a vault with thousands of files costs only what is on screen.
14
+ *
15
+ * The tree follows the WAI-ARIA tree pattern with a single tab stop: arrow keys
16
+ * move between rows, Right/Left expand, collapse or move to a child or parent,
17
+ * Home/End jump, and Enter or Space open a file or toggle a folder.
18
+ */
19
+ /** Children rendered per folder before a "Show more" row. */
20
+ const VAULT_TREE_CHILD_PAGE = 200;
21
+ const STORAGE_PREFIX = "tangle:vault-tree:";
22
+ function storageFor(key) {
23
+ if (!key || typeof window === "undefined") return null;
24
+ try {
25
+ return window.localStorage;
26
+ } catch {
27
+ return null;
28
+ }
29
+ }
30
+ function readExpanded(key) {
31
+ const storage = storageFor(key);
32
+ if (!storage) return /* @__PURE__ */ new Set();
33
+ try {
34
+ const raw = storage.getItem(STORAGE_PREFIX + key);
35
+ const parsed = raw ? JSON.parse(raw) : [];
36
+ return new Set(Array.isArray(parsed) ? parsed.filter((item) => typeof item === "string") : []);
37
+ } catch {
38
+ return /* @__PURE__ */ new Set();
39
+ }
40
+ }
41
+ function writeExpanded(key, expanded) {
42
+ const storage = storageFor(key);
43
+ if (!storage) return;
44
+ try {
45
+ const paths = [...expanded].slice(-1e3);
46
+ if (paths.length === 0) storage.removeItem(STORAGE_PREFIX + key);
47
+ else storage.setItem(STORAGE_PREFIX + key, JSON.stringify(paths));
48
+ } catch {}
49
+ }
50
+ const collator = new Intl.Collator(void 0, {
51
+ numeric: true,
52
+ sensitivity: "base"
53
+ });
54
+ function sortChildren(children) {
55
+ if (!children?.length) return [];
56
+ return [...children].sort((a, b) => {
57
+ if (a.type !== b.type) return a.type === "directory" ? -1 : 1;
58
+ return collator.compare(a.name, b.name);
59
+ });
60
+ }
61
+ const FILE_ICONS = {
62
+ md: FileText,
63
+ mdx: FileText,
64
+ txt: FileText,
65
+ pdf: FileText,
66
+ doc: FileText,
67
+ docx: FileText,
68
+ csv: FileSpreadsheet,
69
+ tsv: FileSpreadsheet,
70
+ xls: FileSpreadsheet,
71
+ xlsx: FileSpreadsheet,
72
+ json: FileJson,
73
+ png: FileImage,
74
+ jpg: FileImage,
75
+ jpeg: FileImage,
76
+ gif: FileImage,
77
+ webp: FileImage,
78
+ svg: FileImage,
79
+ ts: FileCode,
80
+ tsx: FileCode,
81
+ js: FileCode,
82
+ jsx: FileCode,
83
+ py: FileCode,
84
+ html: FileCode,
85
+ css: FileCode,
86
+ yaml: FileCode,
87
+ yml: FileCode
88
+ };
89
+ function fileIcon(name) {
90
+ const dot = name.lastIndexOf(".");
91
+ return dot > 0 && FILE_ICONS[name.slice(dot + 1).toLowerCase()] || File;
92
+ }
93
+ function VaultTree({ root, selectedPath, activeFolder, onSelect, onFolderToggle, onFolderSelect, storageKey, expandAll = false, label = "Files", className }) {
94
+ const [expansion, setExpansion] = useState(() => ({
95
+ key: storageKey,
96
+ expanded: readExpanded(storageKey)
97
+ }));
98
+ let keyed = expansion;
99
+ if (expansion.key !== storageKey) {
100
+ keyed = {
101
+ key: storageKey,
102
+ expanded: readExpanded(storageKey)
103
+ };
104
+ setExpansion(keyed);
105
+ }
106
+ const expandedPaths = keyed.expanded;
107
+ const [pageLimits, setPageLimits] = useState(() => /* @__PURE__ */ new Map());
108
+ const [focusedPath, setFocusedPath] = useState(null);
109
+ const rowRefs = useRef(/* @__PURE__ */ new Map());
110
+ const pendingFocusRef = useRef(null);
111
+ const pendingRevealRef = useRef(null);
112
+ const index = useMemo(() => {
113
+ const nodes = /* @__PURE__ */ new Map();
114
+ const parents = /* @__PURE__ */ new Map();
115
+ const children = /* @__PURE__ */ new Map();
116
+ const visit = (node, parent) => {
117
+ nodes.set(node.path, node);
118
+ parents.set(node.path, parent);
119
+ if (node.type === "directory") {
120
+ const sorted = sortChildren(node.children);
121
+ children.set(node.path, sorted);
122
+ for (const child of sorted) visit(child, node.path);
123
+ }
124
+ };
125
+ const top = sortChildren(root.children);
126
+ children.set(null, top);
127
+ for (const node of top) visit(node, null);
128
+ return {
129
+ nodes,
130
+ parents,
131
+ children
132
+ };
133
+ }, [root]);
134
+ const isOpen = useCallback((path) => expandAll || expandedPaths.has(path), [expandAll, expandedPaths]);
135
+ const rows = useMemo(() => {
136
+ const out = [];
137
+ const walk = (parent, depth) => {
138
+ const kids = index.children.get(parent) ?? [];
139
+ const limit = parent === null ? kids.length : Math.max(200, pageLimits.get(parent) ?? 0);
140
+ const shown = Math.min(kids.length, limit);
141
+ kids.slice(0, shown).forEach((node, i) => {
142
+ out.push({
143
+ kind: "node",
144
+ node,
145
+ depth,
146
+ parent,
147
+ posInSet: i + 1,
148
+ setSize: kids.length
149
+ });
150
+ if (node.type === "directory" && isOpen(node.path)) walk(node.path, depth + 1);
151
+ });
152
+ if (parent !== null && shown < kids.length) out.push({
153
+ kind: "more",
154
+ parent,
155
+ depth,
156
+ hidden: kids.length - shown
157
+ });
158
+ };
159
+ walk(null, 0);
160
+ return out;
161
+ }, [
162
+ index,
163
+ isOpen,
164
+ pageLimits
165
+ ]);
166
+ const nodeRows = useMemo(() => rows.filter((row) => row.kind === "node"), [rows]);
167
+ const updateExpanded = useCallback((change) => {
168
+ setExpansion((current) => {
169
+ const base = current.key === storageKey ? current.expanded : readExpanded(storageKey);
170
+ const next = new Set(base);
171
+ change(next);
172
+ writeExpanded(storageKey, next);
173
+ return {
174
+ key: storageKey,
175
+ expanded: next
176
+ };
177
+ });
178
+ }, [storageKey]);
179
+ const setFolderOpen = useCallback((path, open) => {
180
+ if (expandAll || expandedPaths.has(path) === open) return;
181
+ updateExpanded((next) => {
182
+ if (open) next.add(path);
183
+ else next.delete(path);
184
+ });
185
+ onFolderToggle?.(path, open);
186
+ }, [
187
+ expandAll,
188
+ expandedPaths,
189
+ updateExpanded,
190
+ onFolderToggle
191
+ ]);
192
+ useEffect(() => {
193
+ if (!selectedPath || !index.nodes.has(selectedPath)) return;
194
+ const ancestors = [];
195
+ for (let parent = index.parents.get(selectedPath) ?? null; parent; parent = index.parents.get(parent) ?? null) ancestors.push(parent);
196
+ pendingRevealRef.current = selectedPath;
197
+ if (ancestors.some((path) => !expandedPaths.has(path))) updateExpanded((next) => {
198
+ for (const path of ancestors) next.add(path);
199
+ });
200
+ }, [selectedPath, index]);
201
+ useEffect(() => {
202
+ const reveal = pendingRevealRef.current;
203
+ if (reveal && rowRefs.current.has(reveal)) {
204
+ pendingRevealRef.current = null;
205
+ rowRefs.current.get(reveal)?.scrollIntoView?.({ block: "nearest" });
206
+ }
207
+ const focus = pendingFocusRef.current;
208
+ if (focus && rowRefs.current.has(focus)) {
209
+ pendingFocusRef.current = null;
210
+ rowRefs.current.get(focus)?.focus();
211
+ }
212
+ }, [rows]);
213
+ const visiblePaths = useMemo(() => new Set(nodeRows.map((row) => row.node.path)), [nodeRows]);
214
+ const tabStop = focusedPath && visiblePaths.has(focusedPath) && focusedPath || selectedPath && visiblePaths.has(selectedPath) && selectedPath || nodeRows[0]?.node.path || null;
215
+ const focusRow = useCallback((path) => {
216
+ if (!path) return;
217
+ setFocusedPath(path);
218
+ const element = rowRefs.current.get(path);
219
+ if (element) element.focus();
220
+ else pendingFocusRef.current = path;
221
+ }, []);
222
+ const activate = useCallback((node) => {
223
+ setFocusedPath(node.path);
224
+ if (node.type === "directory") {
225
+ setFolderOpen(node.path, !isOpen(node.path));
226
+ onFolderSelect?.(node.path);
227
+ } else onSelect(node.path);
228
+ }, [
229
+ isOpen,
230
+ onSelect,
231
+ onFolderSelect,
232
+ setFolderOpen
233
+ ]);
234
+ const onKeyDown = useCallback((event, node) => {
235
+ const at = nodeRows.findIndex((row) => row.node.path === node.path);
236
+ if (at < 0) return;
237
+ const dir = node.type === "directory";
238
+ const open = dir && isOpen(node.path);
239
+ let handled = true;
240
+ switch (event.key) {
241
+ case "ArrowDown":
242
+ focusRow(nodeRows[at + 1]?.node.path);
243
+ break;
244
+ case "ArrowUp":
245
+ focusRow(nodeRows[at - 1]?.node.path);
246
+ break;
247
+ case "Home":
248
+ focusRow(nodeRows[0]?.node.path);
249
+ break;
250
+ case "End":
251
+ focusRow(nodeRows[nodeRows.length - 1]?.node.path);
252
+ break;
253
+ case "ArrowRight":
254
+ if (dir && !open) setFolderOpen(node.path, true);
255
+ else if (open) {
256
+ const child = nodeRows[at + 1];
257
+ if (child?.parent === node.path) focusRow(child.node.path);
258
+ }
259
+ break;
260
+ case "ArrowLeft":
261
+ if (open && !expandAll) setFolderOpen(node.path, false);
262
+ else focusRow(index.parents.get(node.path));
263
+ break;
264
+ case "Enter":
265
+ case " ":
266
+ activate(node);
267
+ break;
268
+ default: handled = false;
269
+ }
270
+ if (handled) {
271
+ event.preventDefault();
272
+ event.stopPropagation();
273
+ }
274
+ }, [
275
+ nodeRows,
276
+ isOpen,
277
+ focusRow,
278
+ setFolderOpen,
279
+ expandAll,
280
+ index,
281
+ activate
282
+ ]);
283
+ return /* @__PURE__ */ jsx("div", {
284
+ role: "tree",
285
+ "aria-label": label,
286
+ "data-vault-tree-rows": true,
287
+ className: `flex flex-col gap-px ${className ?? ""}`,
288
+ children: rows.map((row) => {
289
+ if (row.kind === "more") return /* @__PURE__ */ jsxs("button", {
290
+ type: "button",
291
+ onClick: () => setPageLimits((current) => {
292
+ const next = new Map(current);
293
+ next.set(row.parent, Math.max(200, current.get(row.parent) ?? 0) + 200);
294
+ return next;
295
+ }),
296
+ style: { paddingInlineStart: `calc(${row.depth} * 1rem + 2.25rem)` },
297
+ className: "flex min-h-8 w-full items-center rounded-md pr-2 text-left text-xs font-medium text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",
298
+ children: [
299
+ "Show ",
300
+ Math.min(row.hidden, 200),
301
+ " more of ",
302
+ row.hidden
303
+ ]
304
+ }, `more:${row.parent}`);
305
+ const { node, depth } = row;
306
+ const dir = node.type === "directory";
307
+ const open = dir && isOpen(node.path);
308
+ const selected = !dir && node.path === selectedPath;
309
+ const active = dir && node.path === activeFolder;
310
+ const Icon = dir ? open ? FolderOpen : Folder : fileIcon(node.name);
311
+ return /* @__PURE__ */ jsxs("div", {
312
+ ref: (element) => {
313
+ if (element) rowRefs.current.set(node.path, element);
314
+ else rowRefs.current.delete(node.path);
315
+ },
316
+ role: "treeitem",
317
+ "aria-level": depth + 1,
318
+ "aria-posinset": row.posInSet,
319
+ "aria-setsize": row.setSize,
320
+ "aria-expanded": dir ? open : void 0,
321
+ "aria-selected": dir ? void 0 : selected,
322
+ "aria-current": active ? "true" : void 0,
323
+ tabIndex: node.path === tabStop ? 0 : -1,
324
+ title: node.path,
325
+ "data-vault-tree-item": node.type,
326
+ "data-path": node.path,
327
+ "data-selected": selected ? "true" : void 0,
328
+ onClick: () => activate(node),
329
+ onFocus: () => setFocusedPath(node.path),
330
+ onKeyDown: (event) => onKeyDown(event, node),
331
+ style: { paddingInlineStart: `calc(${depth} * 1rem + 0.25rem)` },
332
+ className: [
333
+ "group flex min-h-8 w-full cursor-pointer select-none items-center gap-1.5 rounded-md pr-2 text-sm transition-colors [@media(pointer:coarse)]:min-h-10",
334
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",
335
+ selected ? "bg-[var(--accent-surface-soft)] font-medium text-[var(--accent-text)]" : active ? "bg-muted font-medium text-foreground" : "text-foreground hover:bg-muted"
336
+ ].join(" "),
337
+ children: [
338
+ /* @__PURE__ */ jsx("span", {
339
+ "aria-hidden": "true",
340
+ className: "flex size-4 shrink-0 items-center justify-center text-muted-foreground",
341
+ children: dir && /* @__PURE__ */ jsx(ChevronRight, { className: `size-3.5 transition-transform duration-fast ${open ? "rotate-90" : ""}` })
342
+ }),
343
+ /* @__PURE__ */ jsx(Icon, {
344
+ "aria-hidden": "true",
345
+ className: `size-4 shrink-0 ${selected ? "text-[var(--accent-text)]" : "text-muted-foreground"}`
346
+ }),
347
+ /* @__PURE__ */ jsx("span", {
348
+ className: "min-w-0 flex-1 truncate",
349
+ children: node.name
350
+ })
351
+ ]
352
+ }, node.path);
353
+ })
354
+ });
355
+ }
356
+ //#endregion
357
+ //#region src/vault-tree/tree-data.ts
358
+ /**
359
+ * Nests flat paths into folders. A path ending in `/` is a directory, so an
360
+ * empty folder survives; leading `./` and `/` are ignored.
361
+ */
362
+ function fileTreeFromPaths(paths) {
363
+ const top = [];
364
+ const folders = /* @__PURE__ */ new Map();
365
+ const folder = (path) => {
366
+ if (!path) return top;
367
+ const existing = folders.get(path);
368
+ if (existing) return existing.children ??= [];
369
+ const slash = path.lastIndexOf("/");
370
+ const node = {
371
+ name: path.slice(slash + 1),
372
+ path,
373
+ type: "directory",
374
+ children: []
375
+ };
376
+ folders.set(path, node);
377
+ folder(slash < 0 ? "" : path.slice(0, slash)).push(node);
378
+ return node.children;
379
+ };
380
+ for (const raw of paths) {
381
+ const path = raw.replace(/^(\.\/|\/)+/, "").replace(/\/+$/, "");
382
+ if (!path) continue;
383
+ if (raw.endsWith("/")) {
384
+ folder(path);
385
+ continue;
386
+ }
387
+ const slash = path.lastIndexOf("/");
388
+ folder(slash < 0 ? "" : path.slice(0, slash)).push({
389
+ name: path.slice(slash + 1),
390
+ path,
391
+ type: "file"
392
+ });
393
+ }
394
+ return top;
395
+ }
396
+ /**
397
+ * Case-insensitive name filter: a file survives when its name matches; a
398
+ * folder survives whole when its own name matches, otherwise only with the
399
+ * descendants that survive.
400
+ */
401
+ function filterFileNodes(nodes, query) {
402
+ const q = query.trim().toLowerCase();
403
+ if (!q) return [...nodes];
404
+ const out = [];
405
+ for (const node of nodes) if (node.name.toLowerCase().includes(q)) out.push(node);
406
+ else if (node.type === "directory") {
407
+ const children = filterFileNodes(node.children ?? [], q);
408
+ if (children.length > 0) out.push({
409
+ ...node,
410
+ children
411
+ });
412
+ }
413
+ return out;
414
+ }
415
+ //#endregion
416
+ export { VaultTree as i, filterFileNodes as n, VAULT_TREE_CHILD_PAGE as r, fileTreeFromPaths as t };
@@ -0,0 +1,2 @@
1
+ import { a as VaultTreeProps, i as VaultTree, n as filterFileNodes, r as VAULT_TREE_CHILD_PAGE, t as fileTreeFromPaths } from "./index-DGil6iqm.js";
2
+ export { VAULT_TREE_CHILD_PAGE, VaultTree, type VaultTreeProps, fileTreeFromPaths, filterFileNodes };
@@ -0,0 +1,2 @@
1
+ import { i as VaultTree, n as filterFileNodes, r as VAULT_TREE_CHILD_PAGE, t as fileTreeFromPaths } from "./tree-data-DtoCNNBJ.js";
2
+ export { VAULT_TREE_CHILD_PAGE, VaultTree, fileTreeFromPaths, filterFileNodes };
@@ -1,3 +1,3 @@
1
- import { A as SandboxArtifactTerminal, C as ChangesPane, D as ChangesPaneProps, E as ChangedFile, O as SandboxArtifact, S as PillTabsProps, T as ArtifactView, _ as DiffStats, a as PreviewView, b as PillTabItem, c as DiffViewProps, d as FileBreadcrumb, f as FileBreadcrumbProps, g as PanelHeaderProps, h as PanelHeader, i as resolveLanguage, k as SandboxArtifactPaneProps, l as CodeView, m as GitStatusBadge, n as CodeSurface, o as PreviewViewProps, p as DiffStatsBadge, r as CodeSurfaceProps, s as DiffView, t as BRAND_PRISM_THEME, u as CodeViewProps, v as buildUnifiedPatch, w as SandboxArtifactPane, x as PillTabs, y as computeDiffStats } from "./index-DTy7WF0k.js";
1
+ import { A as SandboxArtifactTerminal, C as ChangesPane, D as ChangesPaneProps, E as ChangedFile, O as SandboxArtifact, S as PillTabsProps, T as ArtifactView, _ as DiffStats, a as PreviewView, b as PillTabItem, c as DiffViewProps, d as FileBreadcrumb, f as FileBreadcrumbProps, g as PanelHeaderProps, h as PanelHeader, i as resolveLanguage, k as SandboxArtifactPaneProps, l as CodeView, m as GitStatusBadge, n as CodeSurface, o as PreviewViewProps, p as DiffStatsBadge, r as CodeSurfaceProps, s as DiffView, t as BRAND_PRISM_THEME, u as CodeViewProps, v as buildUnifiedPatch, w as SandboxArtifactPane, x as PillTabs, y as computeDiffStats } from "./index-DNClXEEe.js";
2
2
  import { a as PreviewReadiness, i as PreviewAccess, n as EmbeddedAppView, r as EmbeddedAppViewProps, t as EmbeddedApp } from "./embedded-app-view-B_vMTtJn.js";
3
3
  export { type ArtifactView, BRAND_PRISM_THEME, type ChangedFile, ChangesPane, type ChangesPaneProps, CodeSurface, type CodeSurfaceProps, CodeView, type CodeViewProps, type DiffStats, DiffStatsBadge, DiffView, type DiffViewProps, type EmbeddedApp, EmbeddedAppView, type EmbeddedAppViewProps, FileBreadcrumb, type FileBreadcrumbProps, GitStatusBadge, PanelHeader, type PanelHeaderProps, type PillTabItem, PillTabs, type PillTabsProps, type PreviewAccess, type PreviewReadiness, PreviewView, type PreviewViewProps, type SandboxArtifact, SandboxArtifactPane, type SandboxArtifactPaneProps, type SandboxArtifactTerminal, buildUnifiedPatch, computeDiffStats, resolveLanguage };
@@ -1,6 +1,7 @@
1
1
  import { t as cn$1 } from "./utils-DzWbktWG.js";
2
2
  import { t as WorkspacePaneHeader } from "./workspace-pane-header-Bg1cCcHX.js";
3
3
  import { t as MOTION_CONTROL } from "./motion-DkyBRJb9.js";
4
+ import { i as VaultTree, n as filterFileNodes, t as fileTreeFromPaths } from "./tree-data-DtoCNNBJ.js";
4
5
  import { ArtifactPane, ArtifactPane as ArtifactPane$1, EmptyState, Input } from "@tangle-network/ui/primitives";
5
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
7
  import { Markdown } from "@tangle-network/ui/markdown";
@@ -9,7 +10,7 @@ import { createPortal } from "react-dom";
9
10
  import * as DialogPrimitive from "@radix-ui/react-dialog";
10
11
  import { AlertCircle, AlertTriangle, ArrowLeft, Binary, Bot, Boxes, CheckCircle, ChevronDown, ChevronUp, FileCode2, FileText, FolderOpen, FolderTree, LayoutPanelTop, Loader2, MessageSquareText, PanelBottomClose, PanelBottomOpen, PanelLeftClose, PanelLeftOpen, PanelRightClose, PanelRightOpen, Plus, RefreshCw, Search, Settings, ShieldCheck, Sparkles, Terminal, TerminalSquare, Upload, Wifi, X, Zap } from "lucide-react";
11
12
  import { focusField, focusRing, focusRingInset } from "@tangle-network/ui/utils";
12
- import { FileArtifactPane, FileTree, RichFileTree, filterFileTree } from "@tangle-network/ui/files";
13
+ import { FileArtifactPane, FileTree, filterFileTree } from "@tangle-network/ui/files";
13
14
  import { useNavbarSessions } from "@tangle-network/ui/stores";
14
15
  import { ChatContainer } from "@tangle-network/ui/chat";
15
16
  import { OpenUIArtifactRenderer } from "@tangle-network/ui/openui";
@@ -2419,14 +2420,14 @@ function ApprovalQueue({ items, className, onApprove, onReject, renderItemDetail
2419
2420
  }
2420
2421
  //#endregion
2421
2422
  //#region src/workspace/workspace-files-pane.tsx
2422
- function indexNodes(root) {
2423
- const nodes = /* @__PURE__ */ new Map();
2424
- function visit(node) {
2425
- nodes.set(node.path.replace(/\/$/, ""), node);
2423
+ function indexNodes(nodes) {
2424
+ const index = /* @__PURE__ */ new Map();
2425
+ const visit = (node) => {
2426
+ index.set(node.path, node);
2426
2427
  node.children?.forEach(visit);
2427
- }
2428
- if (root) visit(root);
2429
- return nodes;
2428
+ };
2429
+ nodes.forEach(visit);
2430
+ return index;
2430
2431
  }
2431
2432
  function activeElementWithin(element) {
2432
2433
  let active = element.ownerDocument.activeElement;
@@ -2434,15 +2435,30 @@ function activeElementWithin(element) {
2434
2435
  while (active?.shadowRoot?.activeElement) active = active.shadowRoot.activeElement;
2435
2436
  return active instanceof HTMLElement ? active : null;
2436
2437
  }
2437
- /** Compact file navigation shared by workspace companions and standalone panes. */
2438
- function WorkspaceFilesPane({ root, paths, onSelect, preview, onBack, emptyState, className, ...treeProps }) {
2439
- const nodes = useMemo(() => indexNodes(root), [root]);
2438
+ /**
2439
+ * Compact file navigation shared by workspace companions and standalone panes.
2440
+ * The tree sits in its own surface: folders start collapsed, expansion is
2441
+ * remembered under `expansionKey`, and a preview replaces the tree until Back.
2442
+ */
2443
+ function WorkspaceFilesPane({ root, paths, selectedPath, onSelect, preview, onBack, emptyState, expansionKey, search = true, label = "Files", headerActions, className, style }) {
2444
+ const nodes = useMemo(() => root ? root.path ? [root] : root.children ?? [] : fileTreeFromPaths(paths ?? []), [root, paths]);
2445
+ const index = useMemo(() => indexNodes(nodes), [nodes]);
2446
+ const [query, setQuery] = useState("");
2447
+ const visible = useMemo(() => filterFileNodes(nodes, query), [nodes, query]);
2448
+ const treeRoot = useMemo(() => ({
2449
+ name: label,
2450
+ path: "",
2451
+ type: "directory",
2452
+ children: visible
2453
+ }), [label, visible]);
2454
+ const headingId = useId();
2440
2455
  const treeRef = useRef(null);
2441
2456
  const backRef = useRef(null);
2442
2457
  const returnFocusRef = useRef(null);
2443
2458
  const wasPreviewRef = useRef(false);
2444
2459
  const hasPreview = preview !== void 0;
2445
- const isEmpty = root ? !root.path && root.type === "directory" && !root.children?.length : paths?.length === 0;
2460
+ const isEmpty = nodes.length === 0;
2461
+ const normalizedSelection = selectedPath?.replace(/^(\.\/|\/)+/, "").replace(/\/+$/, "");
2446
2462
  useEffect(() => {
2447
2463
  if (hasPreview && !wasPreviewRef.current) backRef.current?.focus();
2448
2464
  if (!hasPreview && wasPreviewRef.current) {
@@ -2453,26 +2469,76 @@ function WorkspaceFilesPane({ root, paths, onSelect, preview, onBack, emptyState
2453
2469
  wasPreviewRef.current = hasPreview;
2454
2470
  }, [hasPreview]);
2455
2471
  return /* @__PURE__ */ jsxs("div", {
2456
- className: cn$1("flex h-full min-h-0 min-w-0 flex-col bg-background", className),
2472
+ className: cn$1("flex h-full min-h-0 min-w-0 flex-col", className),
2473
+ style,
2457
2474
  children: [/* @__PURE__ */ jsx("div", {
2458
2475
  ref: treeRef,
2459
2476
  hidden: hasPreview,
2460
2477
  tabIndex: -1,
2461
2478
  role: "region",
2462
2479
  "aria-label": "Workspace files",
2463
- className: cn$1("min-h-0 flex-1", hasPreview && "hidden"),
2464
- children: isEmpty ? emptyState !== void 0 ? emptyState : /* @__PURE__ */ jsx(EmptyState, {
2465
- icon: /* @__PURE__ */ jsx(FolderOpen, { className: "h-6 w-6" }),
2466
- title: "No files yet"
2467
- }) : /* @__PURE__ */ jsx(RichFileTree, {
2468
- ...treeProps,
2469
- root,
2470
- paths,
2471
- onSelect: (path) => {
2472
- if (treeRef.current) returnFocusRef.current = activeElementWithin(treeRef.current);
2473
- onSelect?.(path, nodes.get(path.replace(/\/$/, "")));
2474
- },
2475
- className: "h-full"
2480
+ className: cn$1("flex min-h-0 flex-1 flex-col p-2", hasPreview && "hidden"),
2481
+ children: /* @__PURE__ */ jsxs("section", {
2482
+ "aria-labelledby": headingId,
2483
+ "data-workspace-files-surface": true,
2484
+ className: "flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-border bg-card text-card-foreground shadow-sm",
2485
+ children: [
2486
+ /* @__PURE__ */ jsxs("div", {
2487
+ className: "flex shrink-0 items-center gap-2 px-3 pb-2 pt-3",
2488
+ children: [/* @__PURE__ */ jsx("h2", {
2489
+ id: headingId,
2490
+ className: "min-w-0 flex-1 truncate text-sm font-semibold text-foreground",
2491
+ children: label
2492
+ }), headerActions && /* @__PURE__ */ jsx("div", {
2493
+ className: "flex shrink-0 items-center gap-1",
2494
+ children: headerActions
2495
+ })]
2496
+ }),
2497
+ search && !isEmpty && /* @__PURE__ */ jsx("div", {
2498
+ className: "shrink-0 px-3 pb-2",
2499
+ children: /* @__PURE__ */ jsx("input", {
2500
+ type: "search",
2501
+ value: query,
2502
+ onChange: (event) => setQuery(event.target.value),
2503
+ placeholder: `Search ${label.toLowerCase()}…`,
2504
+ "aria-label": `Search ${label.toLowerCase()}`,
2505
+ className: "h-8 w-full rounded-md border border-border bg-input px-3 text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [@media(pointer:coarse)]:h-10 [@media(pointer:coarse)]:text-base"
2506
+ })
2507
+ }),
2508
+ /* @__PURE__ */ jsx("div", {
2509
+ className: "min-h-0 flex-1 overflow-y-auto border-t border-border px-1.5 py-1.5",
2510
+ children: isEmpty ? emptyState !== void 0 ? emptyState : /* @__PURE__ */ jsx(EmptyState, {
2511
+ icon: /* @__PURE__ */ jsx(FolderOpen, { className: "h-6 w-6" }),
2512
+ title: "No files yet"
2513
+ }) : visible.length === 0 ? /* @__PURE__ */ jsxs("div", {
2514
+ className: "flex flex-col items-center gap-3 p-6 text-center",
2515
+ children: [/* @__PURE__ */ jsxs("p", {
2516
+ className: "max-w-xs break-words text-xs text-muted-foreground",
2517
+ children: [
2518
+ "No files match “",
2519
+ query.trim(),
2520
+ "”."
2521
+ ]
2522
+ }), /* @__PURE__ */ jsx("button", {
2523
+ type: "button",
2524
+ onClick: () => setQuery(""),
2525
+ className: cn$1("inline-flex h-8 items-center rounded-md border border-border px-3 text-xs font-medium text-foreground transition-colors hover:bg-muted", focusRing),
2526
+ children: "Clear search"
2527
+ })]
2528
+ }) : /* @__PURE__ */ jsx(VaultTree, {
2529
+ root: treeRoot,
2530
+ selectedPath: normalizedSelection,
2531
+ onSelect: (path) => {
2532
+ if (treeRef.current) returnFocusRef.current = activeElementWithin(treeRef.current);
2533
+ onSelect?.(path, index.get(path));
2534
+ },
2535
+ onFolderSelect: (path) => onSelect?.(`${path}/`, index.get(path)),
2536
+ storageKey: expansionKey,
2537
+ expandAll: query.trim().length > 0,
2538
+ label
2539
+ })
2540
+ })
2541
+ ]
2476
2542
  })
2477
2543
  }), preview && /* @__PURE__ */ jsxs("div", {
2478
2544
  className: "flex min-h-0 flex-1 flex-col",
@@ -1,2 +1,2 @@
1
- import { $ as StatusBar, A as createShellShouldRevalidate, B as SessionSidebarVariant, C as SandboxWorkbenchLayoutOptions, D as SandboxWorkbenchSessionProps, E as SandboxWorkbenchProps, F as SessionSidebarFilter, G as dispatchSessionCreated, H as SessionCreatedDetail, I as SessionSidebarGroupBy, J as RuntimePaneProps, K as useOptimisticSessionItems, L as SessionSidebarItem, M as formatRelativeAge, N as SessionSidebar, O as ShellShouldRevalidateArgs, P as SessionSidebarBadge, Q as ContextBadge, R as SessionSidebarLink, S as SandboxWorkbenchFileArtifact, T as SandboxWorkbenchOpenUIArtifact, U as SessionOptimisticController, V as SESSION_CREATED_EVENT, W as UseOptimisticSessionItemsOptions, X as TerminalPanel, Y as TerminalLine, Z as TerminalProps, _ as TaskBoardItem, a as WorkspaceFilesPane, at as DirectoryPaneProps, b as SandboxWorkbenchArtifact, c as ApprovalConfidenceStat, ct as WorkspaceLayout, d as ApprovalQueueProps, et as StatusBarProps, f as CalendarEvent, g as TaskBoardColumn, h as TaskBoard, i as WorkspaceArtifactViewProps, it as DirectoryPane, j as shellShouldRevalidate, k as ShellShouldRevalidateOptions, l as ApprovalItem, lt as WorkspaceLayoutProps, m as CalendarViewProps, n as ArtifactPaneProps, nt as StatusBanner, o as WorkspaceFilesPaneProps, ot as WorkspacePaneHeader, p as CalendarView, q as RuntimePane, r as WorkspaceArtifactView, rt as StatusBannerProps, s as WorkspaceFilesPreview, st as WorkspacePaneHeaderProps, t as ArtifactPane, tt as BannerType, u as ApprovalQueue, v as TaskBoardProps, w as SandboxWorkbenchMarkdownArtifact, x as SandboxWorkbenchCustomArtifact, y as SandboxWorkbench, z as SessionSidebarProps } from "./index-Bww3rzEG.js";
1
+ import { $ as StatusBar, A as createShellShouldRevalidate, B as SessionSidebarVariant, C as SandboxWorkbenchLayoutOptions, D as SandboxWorkbenchSessionProps, E as SandboxWorkbenchProps, F as SessionSidebarFilter, G as dispatchSessionCreated, H as SessionCreatedDetail, I as SessionSidebarGroupBy, J as RuntimePaneProps, K as useOptimisticSessionItems, L as SessionSidebarItem, M as formatRelativeAge, N as SessionSidebar, O as ShellShouldRevalidateArgs, P as SessionSidebarBadge, Q as ContextBadge, R as SessionSidebarLink, S as SandboxWorkbenchFileArtifact, T as SandboxWorkbenchOpenUIArtifact, U as SessionOptimisticController, V as SESSION_CREATED_EVENT, W as UseOptimisticSessionItemsOptions, X as TerminalPanel, Y as TerminalLine, Z as TerminalProps, _ as TaskBoardItem, a as WorkspaceFilesPane, at as DirectoryPaneProps, b as SandboxWorkbenchArtifact, c as ApprovalConfidenceStat, ct as WorkspaceLayout, d as ApprovalQueueProps, et as StatusBarProps, f as CalendarEvent, g as TaskBoardColumn, h as TaskBoard, i as WorkspaceArtifactViewProps, it as DirectoryPane, j as shellShouldRevalidate, k as ShellShouldRevalidateOptions, l as ApprovalItem, lt as WorkspaceLayoutProps, m as CalendarViewProps, n as ArtifactPaneProps, nt as StatusBanner, o as WorkspaceFilesPaneProps, ot as WorkspacePaneHeader, p as CalendarView, q as RuntimePane, r as WorkspaceArtifactView, rt as StatusBannerProps, s as WorkspaceFilesPreview, st as WorkspacePaneHeaderProps, t as ArtifactPane, tt as BannerType, u as ApprovalQueue, v as TaskBoardProps, w as SandboxWorkbenchMarkdownArtifact, x as SandboxWorkbenchCustomArtifact, y as SandboxWorkbench, z as SessionSidebarProps } from "./index-B2nE9_FN.js";
2
2
  export { type ApprovalConfidenceStat, type ApprovalItem, ApprovalQueue, type ApprovalQueueProps, ArtifactPane, type ArtifactPaneProps, type BannerType, type CalendarEvent, CalendarView, type CalendarViewProps, type ContextBadge, DirectoryPane, type DirectoryPaneProps, RuntimePane, type RuntimePaneProps, SESSION_CREATED_EVENT, SandboxWorkbench, type SandboxWorkbenchArtifact, type SandboxWorkbenchCustomArtifact, type SandboxWorkbenchFileArtifact, type SandboxWorkbenchLayoutOptions, type SandboxWorkbenchMarkdownArtifact, type SandboxWorkbenchOpenUIArtifact, type SandboxWorkbenchProps, type SandboxWorkbenchSessionProps, type SessionCreatedDetail, type SessionOptimisticController, SessionSidebar, type SessionSidebarBadge, type SessionSidebarFilter, type SessionSidebarGroupBy, type SessionSidebarItem, type SessionSidebarLink, type SessionSidebarProps, type SessionSidebarVariant, type ShellShouldRevalidateArgs, type ShellShouldRevalidateOptions, StatusBanner, type StatusBannerProps, StatusBar, type StatusBarProps, TaskBoard, type TaskBoardColumn, type TaskBoardItem, type TaskBoardProps, type TerminalLine, TerminalPanel, type TerminalProps, type UseOptimisticSessionItemsOptions, WorkspaceArtifactView, type WorkspaceArtifactViewProps, WorkspaceFilesPane, type WorkspaceFilesPaneProps, type WorkspaceFilesPreview, WorkspaceLayout, type WorkspaceLayoutProps, WorkspacePaneHeader, type WorkspacePaneHeaderProps, createShellShouldRevalidate, dispatchSessionCreated, formatRelativeAge, shellShouldRevalidate, useOptimisticSessionItems };
package/dist/workspace.js CHANGED
@@ -1,3 +1,3 @@
1
1
  import { t as WorkspacePaneHeader } from "./workspace-pane-header-Bg1cCcHX.js";
2
- import { _ as StatusBar, a as TaskBoard, b as WorkspaceLayout, c as createShellShouldRevalidate, d as SESSION_CREATED_EVENT, f as dispatchSessionCreated, g as TerminalPanel, h as RuntimePane, i as CalendarView, l as shellShouldRevalidate, m as formatRelativeAge, n as WorkspaceFilesPane, o as SandboxWorkbench, p as useOptimisticSessionItems, r as ApprovalQueue, s as WorkspaceArtifactView, t as ArtifactPane, u as SessionSidebar, v as StatusBanner, y as DirectoryPane } from "./workspace-DJhAkl6d.js";
2
+ import { _ as StatusBar, a as TaskBoard, b as WorkspaceLayout, c as createShellShouldRevalidate, d as SESSION_CREATED_EVENT, f as dispatchSessionCreated, g as TerminalPanel, h as RuntimePane, i as CalendarView, l as shellShouldRevalidate, m as formatRelativeAge, n as WorkspaceFilesPane, o as SandboxWorkbench, p as useOptimisticSessionItems, r as ApprovalQueue, s as WorkspaceArtifactView, t as ArtifactPane, u as SessionSidebar, v as StatusBanner, y as DirectoryPane } from "./workspace-DRz3SoJc.js";
3
3
  export { ApprovalQueue, ArtifactPane, CalendarView, DirectoryPane, RuntimePane, SESSION_CREATED_EVENT, SandboxWorkbench, SessionSidebar, StatusBanner, StatusBar, TaskBoard, TerminalPanel, WorkspaceArtifactView, WorkspaceFilesPane, WorkspaceLayout, WorkspacePaneHeader, createShellShouldRevalidate, dispatchSessionCreated, formatRelativeAge, shellShouldRevalidate, useOptimisticSessionItems };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/sandbox-ui",
3
- "version": "0.129.2",
3
+ "version": "0.130.1",
4
4
  "license": "MIT",
5
5
  "description": "Unified UI component library for Tangle Sandbox — primitives, chat, dashboard, terminal, editor, and workspace components",
6
6
  "repository": {
@@ -55,6 +55,10 @@
55
55
  "import": "./dist/files.js",
56
56
  "types": "./dist/files.d.ts"
57
57
  },
58
+ "./vault-tree": {
59
+ "import": "./dist/vault-tree.js",
60
+ "types": "./dist/vault-tree.d.ts"
61
+ },
58
62
  "./dashboard": {
59
63
  "import": "./dist/dashboard.js",
60
64
  "types": "./dist/dashboard.d.ts"
@@ -1,2 +0,0 @@
1
- import { CSV_PREVIEW_ROW_LIMIT, FileArtifactPane as FileArtifactPane$1, FileArtifactPaneProps, FileCard, FileCardProps, FileDetails, FileFormat, FileList, FileListItem, FileListProps, FileNode as FileNode$1, FilePreview, FilePreviewKind, FilePreviewProps, FileTabData as FileTabData$1, FileTabs, FileTabsProps, FileTree as FileTree$1, FileTreeProps, FileTreeVisibilityOptions as FileTreeVisibilityOptions$1, FileUploader, PdfViewer, PdfViewerConfig, PdfViewerProps, RichFileTree as RichFileTree$1, RichFileTreeGitEntry, RichFileTreeGitStatus, RichFileTreeProps as RichFileTreeProps$1, RichFileTreeThemeVars, configurePdfViewer, detectFileFormat, fileExtension, filterFileTree as filterFileTree$1, getCodeLanguage, getFormatLabel, getSyntaxLanguage, parseCsv, resolveFilePreviewKind } from "@tangle-network/ui/files";
2
- export { configurePdfViewer as A, PdfViewerConfig as C, RichFileTreeGitStatus as D, RichFileTreeGitEntry as E, getFormatLabel as F, getSyntaxLanguage as I, parseCsv as L, fileExtension as M, filterFileTree$1 as N, RichFileTreeProps$1 as O, getCodeLanguage as P, resolveFilePreviewKind as R, PdfViewer as S, RichFileTree$1 as T, FileTabsProps as _, FileCardProps as a, FileTreeVisibilityOptions$1 as b, FileList as c, FileNode$1 as d, FilePreview as f, FileTabs as g, FileTabData$1 as h, FileCard as i, detectFileFormat as j, RichFileTreeThemeVars as k, FileListItem as l, FilePreviewProps as m, FileArtifactPane$1 as n, FileDetails as o, FilePreviewKind as p, FileArtifactPaneProps as r, FileFormat as s, CSV_PREVIEW_ROW_LIMIT as t, FileListProps as u, FileTree$1 as v, PdfViewerProps as w, FileUploader as x, FileTreeProps as y };