@tangle-network/sandbox-ui 3.0.2 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +0 -47
  2. package/dist/AgentTree-D4d06rfH.js +293 -0
  3. package/dist/{ResearchReport-vqefUbVp.js → ResearchReport-D1TFmldm.js} +2 -1
  4. package/dist/{VirtualList-CMynqkkh.js → VirtualList-DcSGbEtA.js} +28 -1
  5. package/dist/globals.css +12 -3
  6. package/dist/{index-gXcuwPOX.d.ts → index-Bv2iiZaN.d.ts} +135 -2
  7. package/dist/{index-YU_b9xCK.d.ts → index-CHA38az4.d.ts} +3 -61
  8. package/dist/{index-CQGMhSg0.d.ts → index-Z6RCpkmT.d.ts} +16 -1
  9. package/dist/index.d.ts +4 -5
  10. package/dist/index.js +10 -10
  11. package/dist/record/ResearchReport.js +1 -1
  12. package/dist/{record-B_4XWfUz.js → record-C-EUpK-n.js} +3 -2
  13. package/dist/record.js +1 -1
  14. package/dist/report-viewer.js +80 -80
  15. package/dist/run/live.js +2 -2
  16. package/dist/run/record.d.ts +2 -2
  17. package/dist/run/record.js +5 -4
  18. package/dist/run.d.ts +3 -3
  19. package/dist/run.js +6 -5
  20. package/dist/runtime-viewer/{AgentGraphCanvas-DGq7_u8--WPFPgd72.js → AgentGraphCanvas-DGq7_u8--C6yDfIUT.js} +67 -67
  21. package/dist/runtime-viewer/{latest-events-CRq9sGkK-YFXUh9qO.js → latest-events-CRq9sGkK-CfoBl1dP.js} +215 -209
  22. package/dist/styles.css +12 -3
  23. package/dist/{trace-workspace-BiJbv9WQ.js → trace-workspace-B634-EcA.js} +287 -201
  24. package/dist/{tree-data-9D309DqD.js → tree-data-rg5voiY8.js} +1 -1
  25. package/dist/{AgentTree-Cju8jn51.js → use-follow-tail-DZFn7QDO.js} +144 -385
  26. package/dist/vault-tree.js +1 -1
  27. package/dist/{workbench-Z9wbei53.js → workbench-DWQ0pm9w.js} +311 -2
  28. package/dist/workbench.d.ts +2 -2
  29. package/dist/workbench.js +2 -2
  30. package/dist/{workspace-BrS_rHWN.js → workspace-CJD7oOEa.js} +1 -1
  31. package/dist/{workspace-files-pane-Di_rn4FL.js → workspace-files-pane-D24G7H_Z.js} +1 -1
  32. package/dist/workspace-viewer.js +9970 -9624
  33. package/dist/workspace.js +2 -2
  34. package/package.json +5 -8
  35. package/dist/connections-DymjzHe_.js +0 -179
  36. package/dist/connections.d.ts +0 -2
  37. package/dist/connections.js +0 -1
  38. package/dist/index-DLX35YAa.d.ts +0 -59
  39. package/dist/use-follow-tail-Ht7fZGQQ.js +0 -1
@@ -1,4 +1,6 @@
1
1
  import { t as cn$1 } from "./utils-BER_bdgE.js";
2
+ import { t as revealInScroller } from "./reveal-in-scroller-CzKwuqCG.js";
3
+ import { t as VirtualList } from "./VirtualList-DcSGbEtA.js";
2
4
  import { a as PortsList } from "./dashboard-exTS8tta.js";
3
5
  import { n as TerminalView } from "./terminal-nUCznZRj.js";
4
6
  import { n as buildUnifiedPatch, r as computeDiffStats, t as DiffView } from "./diff-view-B9mNeTLF.js";
@@ -7,7 +9,8 @@ import { n as PreviewView } from "./embedded-app-view-DXsoPale.js";
7
9
  import { Button, Skeleton, Textarea } from "@tangle-network/ui/primitives";
8
10
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
11
  import * as React$1 from "react";
10
- import { Check, Code2, Copy, GitBranch, GitCompare, Globe, Network, RefreshCw, SquareTerminal } from "lucide-react";
12
+ import { useMemo, useRef, useState } from "react";
13
+ import { Check, ChevronRight, Code2, Copy, GitBranch, GitCompare, Globe, Network, RefreshCw, SquareTerminal } from "lucide-react";
11
14
  import { focusRing, focusRingInset } from "@tangle-network/ui/utils";
12
15
  // src/workbench/pill-tabs.tsx
13
16
  /**
@@ -721,4 +724,310 @@ function ChangesPane({ branch, ahead = 0, behind = 0, files, selectedPath, onSel
721
724
  ]
722
725
  });
723
726
  }
724
- export { PanelHeader as a, GitStatusBadge as i, SandboxArtifactPane as n, PillTabs as o, DiffStatsBadge as r, ChangesPane as t };
727
+ // src/workbench/json-view.tsx
728
+ /** Containers open level by level while the open rows stay within this; a larger level starts collapsed. */
729
+ const OPEN_ROWS = 400;
730
+ const INDENT = 16;
731
+ const isContainer = (value) => typeof value === "object" && value !== null;
732
+ const pointer = (key) => key.replace(/~/g, "~0").replace(/\//g, "~1");
733
+ const keyOf = (row) => row.path;
734
+ function children(value, path) {
735
+ if (Array.isArray(value)) return value.map((child, i) => ({
736
+ key: String(i),
737
+ index: true,
738
+ value: child,
739
+ path: `${path}/${i}`
740
+ }));
741
+ if (!isContainer(value)) return [];
742
+ return Object.entries(value).map(([key, child]) => ({
743
+ key,
744
+ index: false,
745
+ value: child,
746
+ path: `${path}/${pointer(key)}`
747
+ }));
748
+ }
749
+ const count = (n, one, many) => `${n.toLocaleString("en-US")} ${n === 1 ? one : many}`;
750
+ const size = (value) => Array.isArray(value) ? count(value.length, "item", "items") : count(Object.keys(value).length, "key", "keys");
751
+ function parse(text, lines) {
752
+ if (!lines) try {
753
+ const value = JSON.parse(text);
754
+ return isContainer(value) ? {
755
+ roots: children(value, ""),
756
+ summary: size(value)
757
+ } : {
758
+ roots: [{
759
+ key: null,
760
+ index: false,
761
+ value,
762
+ path: "$"
763
+ }],
764
+ summary: "One value"
765
+ };
766
+ } catch (error) {
767
+ return { error: `This file is not valid JSON: ${error instanceof Error ? error.message : String(error)}` };
768
+ }
769
+ const roots = [];
770
+ const source = text.split("\n");
771
+ for (let i = 0; i < source.length; i++) {
772
+ if (!source[i].trim()) continue;
773
+ try {
774
+ roots.push({
775
+ key: String(i + 1),
776
+ index: true,
777
+ value: JSON.parse(source[i]),
778
+ path: `/${i + 1}`
779
+ });
780
+ } catch (error) {
781
+ return { error: `Line ${i + 1} is not valid JSON: ${error instanceof Error ? error.message : String(error)}` };
782
+ }
783
+ }
784
+ return {
785
+ roots,
786
+ summary: count(roots.length, "line", "lines")
787
+ };
788
+ }
789
+ function initiallyOpen(roots) {
790
+ const open = /* @__PURE__ */ new Set();
791
+ let shown = roots.length, level = roots.filter((entry) => isContainer(entry.value));
792
+ while (level.length) {
793
+ const next = level.flatMap((entry) => children(entry.value, entry.path));
794
+ if (shown + next.length > OPEN_ROWS) break;
795
+ for (const entry of level) open.add(entry.path);
796
+ shown += next.length;
797
+ level = next.filter((entry) => isContainer(entry.value));
798
+ }
799
+ return open;
800
+ }
801
+ function everyContainer(roots) {
802
+ const open = /* @__PURE__ */ new Set();
803
+ const visit = (entry) => {
804
+ if (isContainer(entry.value)) {
805
+ open.add(entry.path);
806
+ children(entry.value, entry.path).forEach(visit);
807
+ }
808
+ };
809
+ roots.forEach(visit);
810
+ return open;
811
+ }
812
+ function flatten(roots, open) {
813
+ const rows = [];
814
+ const walk = (entries, depth, parent) => entries.forEach((entry, i) => {
815
+ rows.push({
816
+ ...entry,
817
+ depth,
818
+ parent,
819
+ posInSet: i + 1,
820
+ setSize: entries.length
821
+ });
822
+ if (open.has(entry.path)) walk(children(entry.value, entry.path), depth + 1, entry.path);
823
+ });
824
+ walk(roots, 0, null);
825
+ return rows;
826
+ }
827
+ /** A collapsed container's first fields on one line, such as `{id: "OH-31", state: "US-OH", …}`. */
828
+ function preview(value) {
829
+ const parts = [];
830
+ let length = 0;
831
+ for (const [key, child] of Array.isArray(value) ? value.map((child, i) => [String(i), child]) : Object.entries(value)) {
832
+ const shown = isContainer(child) ? Array.isArray(child) ? "[…]" : "{…}" : typeof child === "string" && child.length > 40 ? JSON.stringify(`${child.slice(0, 39)}…`) : JSON.stringify(child);
833
+ const part = Array.isArray(value) ? shown : `${key}: ${shown}`;
834
+ if (length + part.length > 160) {
835
+ parts.push("…");
836
+ break;
837
+ }
838
+ parts.push(part);
839
+ length += part.length + 2;
840
+ }
841
+ return Array.isArray(value) ? `[${parts.join(", ")}]` : `{${parts.join(", ")}}`;
842
+ }
843
+ function Value({ value, open }) {
844
+ if (isContainer(value)) return /* @__PURE__ */ jsxs(Fragment, { children: [!open && /* @__PURE__ */ jsx("span", {
845
+ className: "mr-2 opacity-80",
846
+ children: preview(value)
847
+ }), /* @__PURE__ */ jsx("span", {
848
+ className: "text-muted-foreground",
849
+ children: size(value)
850
+ })] });
851
+ if (typeof value === "string") return /* @__PURE__ */ jsxs("span", {
852
+ className: "text-[var(--syntax-string,currentColor)]",
853
+ children: [
854
+ "\"",
855
+ value,
856
+ "\""
857
+ ]
858
+ });
859
+ return /* @__PURE__ */ jsx("span", {
860
+ className: typeof value === "number" ? "text-[var(--syntax-number,currentColor)]" : "text-[var(--syntax-keyword,currentColor)]",
861
+ children: String(value)
862
+ });
863
+ }
864
+ /**
865
+ * JSON and JSON Lines as a collapsible, virtualized tree: objects and arrays open and close, small documents open
866
+ * whole, and long strings wrap. Rows render near the viewport of the nearest scrolling ancestor, so a file of
867
+ * thousands of values stays fast. Keyboard: arrows move and open or close, Home/End jump, Enter or Space toggles.
868
+ */
869
+ function JsonView({ text, lines = false, label = lines ? "JSON Lines" : "JSON", className }) {
870
+ const parsed = useMemo(() => parse(text, lines), [text, lines]);
871
+ const roots = "roots" in parsed ? parsed.roots : [];
872
+ const [open, setOpen] = useState(() => initiallyOpen(roots));
873
+ const rows = useMemo(() => flatten(roots, open), [roots, open]);
874
+ const [focused, setFocused] = useState(null);
875
+ const [target, setTarget] = useState();
876
+ const rowRefs = useRef(/* @__PURE__ */ new Map());
877
+ const pendingFocus = useRef(null);
878
+ const treeRef = useRef(null), scroller = useRef(null);
879
+ const tabStop = rows.some((row) => row.path === focused) ? focused : rows[0]?.path ?? null;
880
+ const toggle = (path, value = !open.has(path)) => setOpen((current) => {
881
+ const next = new Set(current);
882
+ if (value) next.add(path);
883
+ else next.delete(path);
884
+ return next;
885
+ });
886
+ const focusRow = (path) => {
887
+ if (!path) return;
888
+ setFocused(path);
889
+ const element = rowRefs.current.get(path);
890
+ if (element) {
891
+ setTarget(void 0);
892
+ element.focus({ preventScroll: true });
893
+ revealInScroller(element);
894
+ } else {
895
+ pendingFocus.current = path;
896
+ setTarget(path);
897
+ }
898
+ };
899
+ const onKeyDown = (event, row, at) => {
900
+ const container = isContainer(row.value), expanded = open.has(row.path);
901
+ const moves = {
902
+ ArrowDown: rows[at + 1]?.path,
903
+ ArrowUp: rows[at - 1]?.path,
904
+ Home: rows[0]?.path,
905
+ End: rows[rows.length - 1]?.path
906
+ };
907
+ if (event.key in moves) focusRow(moves[event.key]);
908
+ else if (event.key === "ArrowRight" && container) {
909
+ if (expanded) focusRow(rows[at + 1]?.parent === row.path ? rows[at + 1].path : null);
910
+ else toggle(row.path, true);
911
+ } else if (event.key === "ArrowLeft") {
912
+ if (expanded) toggle(row.path, false);
913
+ else focusRow(row.parent);
914
+ } else if ((event.key === "Enter" || event.key === " ") && container) toggle(row.path);
915
+ else return;
916
+ event.preventDefault();
917
+ event.stopPropagation();
918
+ };
919
+ if ("error" in parsed) return /* @__PURE__ */ jsxs("div", {
920
+ className: cn$1("flex flex-col gap-3 p-4", className),
921
+ children: [/* @__PURE__ */ jsx("p", {
922
+ role: "alert",
923
+ className: "text-sm text-[var(--surface-danger-text)]",
924
+ children: parsed.error
925
+ }), /* @__PURE__ */ jsx("pre", {
926
+ className: "whitespace-pre-wrap font-mono text-sm leading-6 text-foreground [overflow-wrap:anywhere]",
927
+ children: text
928
+ })]
929
+ });
930
+ const render = (row, at) => {
931
+ const container = isContainer(row.value), expanded = container && open.has(row.path);
932
+ return /* @__PURE__ */ jsxs("div", {
933
+ ref: (element) => {
934
+ if (!element) {
935
+ rowRefs.current.delete(row.path);
936
+ return;
937
+ }
938
+ rowRefs.current.set(row.path, element);
939
+ if (pendingFocus.current === row.path) {
940
+ pendingFocus.current = null;
941
+ element.focus({ preventScroll: true });
942
+ }
943
+ },
944
+ role: "treeitem",
945
+ "aria-level": row.depth + 1,
946
+ "aria-posinset": row.posInSet,
947
+ "aria-setsize": row.setSize,
948
+ "aria-expanded": container ? expanded : void 0,
949
+ tabIndex: row.path === tabStop ? 0 : -1,
950
+ "data-json-path": row.path,
951
+ onFocus: () => setFocused(row.path),
952
+ onKeyDown: (event) => onKeyDown(event, row, at),
953
+ onClick: () => {
954
+ if (container && !window.getSelection()?.toString()) toggle(row.path);
955
+ },
956
+ style: { paddingInlineStart: row.depth * INDENT + 4 },
957
+ className: cn$1("relative flex min-h-6 items-start gap-1 rounded-sm pr-3 font-mono text-sm leading-6 text-foreground", "hover:bg-[var(--ix-hover-bg)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring", container && "cursor-pointer"),
958
+ children: [
959
+ Array.from({ length: row.depth }, (_, level) => /* @__PURE__ */ jsx("span", {
960
+ "aria-hidden": "true",
961
+ className: "pointer-events-none absolute inset-y-0 w-px bg-border",
962
+ style: { left: level * INDENT + 11 }
963
+ }, level)),
964
+ /* @__PURE__ */ jsx("span", {
965
+ "aria-hidden": "true",
966
+ className: "flex h-6 w-4 shrink-0 items-center justify-center text-muted-foreground",
967
+ children: container && /* @__PURE__ */ jsx(ChevronRight, { className: cn$1("size-3.5 transition-transform duration-fast", expanded && "rotate-90") })
968
+ }),
969
+ /* @__PURE__ */ jsxs("span", {
970
+ className: cn$1("min-w-0 flex-1 whitespace-pre-wrap [overflow-wrap:anywhere]", container && !expanded && "truncate whitespace-nowrap"),
971
+ children: [row.key !== null && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
972
+ className: row.index ? "text-muted-foreground" : "text-[var(--syntax-function,currentColor)]",
973
+ children: row.index ? row.key : JSON.stringify(row.key)
974
+ }), /* @__PURE__ */ jsx("span", {
975
+ className: "text-muted-foreground",
976
+ children: ": "
977
+ })] }), /* @__PURE__ */ jsx(Value, {
978
+ value: row.value,
979
+ open: expanded
980
+ })]
981
+ })
982
+ ]
983
+ });
984
+ };
985
+ const containers = roots.some((entry) => isContainer(entry.value));
986
+ return /* @__PURE__ */ jsxs("div", {
987
+ className: cn$1("flex min-w-0 flex-col", className),
988
+ children: [/* @__PURE__ */ jsxs("div", {
989
+ className: "sticky top-0 z-10 flex h-9 shrink-0 items-center gap-2 bg-card px-3 text-xs text-muted-foreground shadow-[inset_0_-1px_0_hsl(var(--border))]",
990
+ children: [/* @__PURE__ */ jsx("span", {
991
+ className: "min-w-0 flex-1 truncate",
992
+ children: parsed.summary
993
+ }), containers && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Button, {
994
+ type: "button",
995
+ variant: "ghost",
996
+ size: "sm",
997
+ onClick: () => setOpen(everyContainer(roots)),
998
+ children: "Expand all"
999
+ }), /* @__PURE__ */ jsx(Button, {
1000
+ type: "button",
1001
+ variant: "ghost",
1002
+ size: "sm",
1003
+ onClick: () => setOpen(/* @__PURE__ */ new Set()),
1004
+ children: "Collapse all"
1005
+ })] })]
1006
+ }), /* @__PURE__ */ jsx("div", {
1007
+ ref: (element) => {
1008
+ if (!element) return;
1009
+ treeRef.current = element;
1010
+ let parent = element.parentElement;
1011
+ while (parent && !/auto|scroll/.test(getComputedStyle(parent).overflowY)) parent = parent.parentElement;
1012
+ scroller.current = parent ?? document.scrollingElement;
1013
+ },
1014
+ role: "tree",
1015
+ "aria-label": label,
1016
+ className: "px-2 py-2",
1017
+ children: /* @__PURE__ */ jsx(VirtualList, {
1018
+ items: rows,
1019
+ keyOf,
1020
+ render,
1021
+ scroller,
1022
+ origin: treeRef,
1023
+ estimate: 24,
1024
+ overscan: 600,
1025
+ target,
1026
+ targetAlign: "nearest",
1027
+ virtualize: rows.length > 200,
1028
+ keepMounted: tabStop ?? void 0
1029
+ })
1030
+ })]
1031
+ });
1032
+ }
1033
+ export { GitStatusBadge as a, DiffStatsBadge as i, ChangesPane as n, PanelHeader as o, SandboxArtifactPane as r, PillTabs as s, JsonView as t };
@@ -1,4 +1,4 @@
1
- import { C as ChangedFile, D as SandboxArtifactTerminal, E as SandboxArtifactPaneProps, S as ArtifactView, T as SandboxArtifact, _ as PillTabItem, a as PreviewViewProps, b as ChangesPane, c as FileBreadcrumb, d as GitStatusBadge, f as PanelHeader, g as computeDiffStats, h as buildUnifiedPatch, i as PreviewView, l as FileBreadcrumbProps, m as DiffStats, n as CodeSurface, o as CodeView, p as PanelHeaderProps, r as CodeSurfaceProps, s as CodeViewProps, t as CODE_THEME, u as DiffStatsBadge, v as PillTabs, w as ChangesPaneProps, x as SandboxArtifactPane, y as PillTabsProps } from "./index-CQGMhSg0.js";
1
+ import { C as SandboxArtifactPane, D as SandboxArtifact, E as ChangesPaneProps, O as SandboxArtifactPaneProps, S as ChangesPane, T as ChangedFile, _ as buildUnifiedPatch, a as PreviewViewProps, b as PillTabs, c as CodeView, d as FileBreadcrumbProps, f as DiffStatsBadge, g as DiffStats, h as PanelHeaderProps, i as PreviewView, k as SandboxArtifactTerminal, l as CodeViewProps, m as PanelHeader, n as CodeSurface, o as JsonView, p as GitStatusBadge, r as CodeSurfaceProps, s as JsonViewProps, t as CODE_THEME, u as FileBreadcrumb, v as computeDiffStats, w as ArtifactView, x as PillTabsProps, y as PillTabItem } from "./index-Z6RCpkmT.js";
2
2
  import { n as DiffViewProps, t as DiffView } from "./diff-view-DDHWtR6X.js";
3
3
  import { a as PreviewReadiness, i as PreviewAccess, n as EmbeddedAppView, r as EmbeddedAppViewProps, t as EmbeddedApp } from "./embedded-app-view-Ta5GI4hx.js";
4
- export { type ArtifactView, CODE_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 };
4
+ export { type ArtifactView, CODE_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, JsonView, type JsonViewProps, PanelHeader, type PanelHeaderProps, type PillTabItem, PillTabs, type PillTabsProps, type PreviewAccess, type PreviewReadiness, PreviewView, type PreviewViewProps, type SandboxArtifact, SandboxArtifactPane, type SandboxArtifactPaneProps, type SandboxArtifactTerminal, buildUnifiedPatch, computeDiffStats };
package/dist/workbench.js CHANGED
@@ -1,5 +1,5 @@
1
- import { a as PanelHeader, i as GitStatusBadge, n as SandboxArtifactPane, o as PillTabs, r as DiffStatsBadge, t as ChangesPane } from "./workbench-Z9wbei53.js";
1
+ import { a as GitStatusBadge, i as DiffStatsBadge, n as ChangesPane, o as PanelHeader, r as SandboxArtifactPane, s as PillTabs, t as JsonView } from "./workbench-DWQ0pm9w.js";
2
2
  import { a as CodeSurface, i as CODE_THEME, n as buildUnifiedPatch, r as computeDiffStats, t as DiffView } from "./diff-view-B9mNeTLF.js";
3
3
  import { n as FileBreadcrumb, t as CodeView } from "./code-view-BlhCS1SD.js";
4
4
  import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-DXsoPale.js";
5
- export { CODE_THEME, ChangesPane, CodeSurface, CodeView, DiffStatsBadge, DiffView, EmbeddedAppView, FileBreadcrumb, GitStatusBadge, PanelHeader, PillTabs, PreviewView, SandboxArtifactPane, buildUnifiedPatch, computeDiffStats };
5
+ export { CODE_THEME, ChangesPane, CodeSurface, CodeView, DiffStatsBadge, DiffView, EmbeddedAppView, FileBreadcrumb, GitStatusBadge, JsonView, PanelHeader, PillTabs, PreviewView, SandboxArtifactPane, buildUnifiedPatch, computeDiffStats };
@@ -1,7 +1,7 @@
1
1
  import { t as cn$1 } from "./utils-BER_bdgE.js";
2
2
  import { r as ShellHeader } from "./shell-header-CwqDzC4I.js";
3
3
  import { t as MOTION_CONTROL } from "./motion-2Ine0j_s.js";
4
- import "./workspace-files-pane-Di_rn4FL.js";
4
+ import "./workspace-files-pane-D24G7H_Z.js";
5
5
  import { ArtifactPane, ArtifactPane as ArtifactPane$1, EmptyState, Input, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@tangle-network/ui/primitives";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
7
  import { Markdown } from "@tangle-network/ui/markdown";
@@ -1,5 +1,5 @@
1
1
  import { t as cn } from "./utils-BER_bdgE.js";
2
- import { i as VaultTree, n as filterFileNodes, t as fileTreeFromPaths } from "./tree-data-9D309DqD.js";
2
+ import { i as VaultTree, n as filterFileNodes, t as fileTreeFromPaths } from "./tree-data-rg5voiY8.js";
3
3
  import { Button, EmptyState, Input, SegmentedControl } from "@tangle-network/ui/primitives";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import { useEffect, useId, useMemo, useRef, useState } from "react";