@tangle-network/sandbox-ui 0.128.1 → 0.128.3
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/{chat-BQPPQTRX.js → chat-Cc6pWroz.js} +1 -1
- package/dist/chat.js +1 -1
- package/dist/{dashboard-CPK5MNhT.js → dashboard-C25eF1QD.js} +152 -175
- package/dist/dashboard.js +1 -1
- package/dist/index.js +3 -3
- package/dist/integrations.js +1 -1
- package/dist/{workbench-CpBG_v-5.js → workbench-BPbVtoRF.js} +1 -1
- package/dist/workbench.js +1 -1
- package/package.json +4 -4
|
@@ -402,7 +402,7 @@ function AgentProfilePicker({ value, onChange, profiles, capabilities, onCreate,
|
|
|
402
402
|
title: profile.name,
|
|
403
403
|
subtitle: profileSubtitle(profile),
|
|
404
404
|
onSelect: () => select(profile.id),
|
|
405
|
-
onEdit:
|
|
405
|
+
onEdit: onUpdate ? () => setComposing(profile) : void 0,
|
|
406
406
|
onDelete: onDelete ? () => void onDelete(profile.id) : void 0
|
|
407
407
|
}, profile.id)),
|
|
408
408
|
canAuthor && /* @__PURE__ */ jsxs("button", {
|
package/dist/chat.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
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-
|
|
1
|
+
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";
|
|
2
2
|
export { AgentProfilePicker, AgentTimeline, ArtifactAgentDock, ChatContainer, ChatMessage, DEFAULT_REASONING_LEVEL_OPTIONS, HARNESS_REASONING_OPTIONS, MessageAuthor, MessageList, ReasoningLevelPicker, ThinkingIndicator, UserMessage, isViewerMessage, modelProvider, snapHarnessToModel };
|
|
@@ -8,6 +8,7 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
|
8
8
|
import * as React$1 from "react";
|
|
9
9
|
import { useEffect, useId, useRef, useState } from "react";
|
|
10
10
|
import { createPortal } from "react-dom";
|
|
11
|
+
import * as Dialog$1 from "@radix-ui/react-dialog";
|
|
11
12
|
import { Activity, ArrowRight, BarChart2, Bell, Bot, Box, Camera, Check, ChevronDown, ChevronLeft, ChevronRight, Clock, Code2, Copy, Cpu, DollarSign, ExternalLink, File, FileEdit, FilePlus, GitBranch, GitCommit, Globe, HardDrive, Key, Layers, MemoryStick, MessageSquare, Monitor, MoreHorizontal, MoreVertical, Network, PanelLeft, Play, Plug, Plus, Power, PowerOff, RotateCcw, Skull, Terminal, Trash2, User, Users } from "lucide-react";
|
|
12
13
|
import { focusField, focusRing, focusRingInset, timeAgo } from "@tangle-network/ui/utils";
|
|
13
14
|
import * as Select$1 from "@radix-ui/react-select";
|
|
@@ -2810,6 +2811,20 @@ function SidebarLayoutInner({ children, navItems, activeId, panel, logo, logoHre
|
|
|
2810
2811
|
const showLabels = railLabels && !railCollapsed;
|
|
2811
2812
|
const [mobileNavOpen, setMobileNavOpen] = React$1.useState(false);
|
|
2812
2813
|
const closeMobileNav = React$1.useCallback(() => setMobileNavOpen(false), []);
|
|
2814
|
+
React$1.useEffect(() => {
|
|
2815
|
+
if (!mobileNavOpen) return;
|
|
2816
|
+
if (!hideBelow) {
|
|
2817
|
+
setMobileNavOpen(false);
|
|
2818
|
+
return;
|
|
2819
|
+
}
|
|
2820
|
+
const desktop = window.matchMedia(hideBelow === "md" ? "(min-width: 48rem)" : "(min-width: 64rem)");
|
|
2821
|
+
const closeOnDesktop = () => {
|
|
2822
|
+
if (desktop.matches) setMobileNavOpen(false);
|
|
2823
|
+
};
|
|
2824
|
+
closeOnDesktop();
|
|
2825
|
+
desktop.addEventListener("change", closeOnDesktop);
|
|
2826
|
+
return () => desktop.removeEventListener("change", closeOnDesktop);
|
|
2827
|
+
}, [hideBelow, mobileNavOpen]);
|
|
2813
2828
|
/**
|
|
2814
2829
|
* One nav list, rendered twice — once in the desktop rail, once in the mobile
|
|
2815
2830
|
* drawer. Sharing the renderer is the point: a product adds a destination to
|
|
@@ -2899,110 +2914,115 @@ function SidebarLayoutInner({ children, navItems, activeId, panel, logo, logoHre
|
|
|
2899
2914
|
}, item.id);
|
|
2900
2915
|
});
|
|
2901
2916
|
}
|
|
2902
|
-
return /* @__PURE__ */
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
|
|
2907
|
-
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
|
|
2917
|
-
|
|
2918
|
-
|
|
2919
|
-
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
showLabels,
|
|
2924
|
-
|
|
2917
|
+
return /* @__PURE__ */ jsx(Dialog$1.Root, {
|
|
2918
|
+
open: mobileNavOpen,
|
|
2919
|
+
onOpenChange: setMobileNavOpen,
|
|
2920
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
2921
|
+
className: cn$1("min-h-screen bg-surface text-foreground", className),
|
|
2922
|
+
children: [
|
|
2923
|
+
/* @__PURE__ */ jsx("div", {
|
|
2924
|
+
className: cn$1(hideBelow && HIDE_BELOW_CLASS[hideBelow]),
|
|
2925
|
+
children: /* @__PURE__ */ jsxs(Sidebar, {
|
|
2926
|
+
className: sidebarClassName,
|
|
2927
|
+
children: [/* @__PURE__ */ jsxs(SidebarRail, { children: [
|
|
2928
|
+
(logo !== void 0 || railHeaderContent !== void 0 || railLabels) && /* @__PURE__ */ jsx(RailHeader, {
|
|
2929
|
+
brand: logo,
|
|
2930
|
+
brandHref: logoHref,
|
|
2931
|
+
collapsed: !showLabels,
|
|
2932
|
+
onToggle: toggleRail,
|
|
2933
|
+
collapsible: railLabels,
|
|
2934
|
+
LinkComponent,
|
|
2935
|
+
children: railHeaderContent
|
|
2936
|
+
}),
|
|
2937
|
+
/* @__PURE__ */ jsx(SidebarRailNav, {
|
|
2938
|
+
className: cn$1(showLabels ? "px-2" : void 0, expandOnEmptyClick && "cursor-pointer"),
|
|
2939
|
+
onClick: expandOnEmptyClick,
|
|
2940
|
+
children: renderNavItems({
|
|
2941
|
+
showLabels,
|
|
2942
|
+
onNavigate: handleNavClick
|
|
2943
|
+
})
|
|
2944
|
+
}),
|
|
2945
|
+
(railFooter !== void 0 || hasProfile) && /* @__PURE__ */ jsxs(SidebarRailFooter, {
|
|
2946
|
+
className: cn$1("border-t border-[var(--md3-outline-variant)] pt-2", showLabels && "items-stretch px-2"),
|
|
2947
|
+
children: [railFooter, hasProfile && /* @__PURE__ */ jsx(ProfileAvatar, {
|
|
2948
|
+
user: user ?? void 0,
|
|
2949
|
+
isLoading,
|
|
2950
|
+
onLogout,
|
|
2951
|
+
onSettingsClick,
|
|
2952
|
+
settingsHref,
|
|
2953
|
+
showDetails: showLabels,
|
|
2954
|
+
appearance,
|
|
2955
|
+
LinkComponent: Link,
|
|
2956
|
+
children: profileMenuItems
|
|
2957
|
+
})]
|
|
2925
2958
|
})
|
|
2926
|
-
}),
|
|
2927
|
-
|
|
2928
|
-
|
|
2929
|
-
|
|
2959
|
+
] }), panel != null && /* @__PURE__ */ jsx(SidebarPanel, { children: panel })]
|
|
2960
|
+
})
|
|
2961
|
+
}),
|
|
2962
|
+
/* @__PURE__ */ jsxs(SidebarContent, {
|
|
2963
|
+
className: contentClassName,
|
|
2964
|
+
children: [hideBelow && /* @__PURE__ */ jsxs("header", {
|
|
2965
|
+
className: cn$1("flex h-14 shrink-0 items-center gap-1 border-b border-[var(--md3-outline-variant)] bg-surface px-2", SHOW_BELOW_CLASS[hideBelow]),
|
|
2966
|
+
children: [
|
|
2967
|
+
/* @__PURE__ */ jsx(Dialog$1.Trigger, {
|
|
2968
|
+
asChild: true,
|
|
2969
|
+
children: /* @__PURE__ */ jsx("button", {
|
|
2970
|
+
type: "button",
|
|
2971
|
+
"aria-label": "Open navigation",
|
|
2972
|
+
"aria-expanded": mobileNavOpen,
|
|
2973
|
+
"aria-controls": "sidebar-mobile-nav",
|
|
2974
|
+
"aria-haspopup": "dialog",
|
|
2975
|
+
className: cn$1("flex size-10 shrink-0 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-[var(--accent-surface-soft)] hover:text-foreground", "duration-[var(--duration-fast)] ease-[var(--ease-standard)]"),
|
|
2976
|
+
children: /* @__PURE__ */ jsx(MenuIcon, { className: "size-5" })
|
|
2977
|
+
})
|
|
2978
|
+
}),
|
|
2979
|
+
/* @__PURE__ */ jsx("div", {
|
|
2980
|
+
className: "flex min-w-0 flex-1 items-center",
|
|
2981
|
+
children: railHeaderContent ?? (logo !== void 0 ? /* @__PURE__ */ jsx(Link, {
|
|
2982
|
+
href: logoHref,
|
|
2983
|
+
to: logoHref,
|
|
2984
|
+
className: "flex min-w-0 items-center",
|
|
2985
|
+
children: logo
|
|
2986
|
+
}) : null)
|
|
2987
|
+
}),
|
|
2988
|
+
hasProfile && /* @__PURE__ */ jsx(ProfileAvatar, {
|
|
2930
2989
|
user: user ?? void 0,
|
|
2931
2990
|
isLoading,
|
|
2932
2991
|
onLogout,
|
|
2933
2992
|
onSettingsClick,
|
|
2934
2993
|
settingsHref,
|
|
2935
|
-
showDetails: showLabels,
|
|
2936
2994
|
appearance,
|
|
2937
2995
|
LinkComponent: Link,
|
|
2938
2996
|
children: profileMenuItems
|
|
2939
|
-
})
|
|
2940
|
-
|
|
2941
|
-
|
|
2942
|
-
})
|
|
2943
|
-
|
|
2944
|
-
|
|
2945
|
-
|
|
2946
|
-
|
|
2947
|
-
|
|
2948
|
-
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
children: logo
|
|
2966
|
-
}) : null)
|
|
2967
|
-
}),
|
|
2968
|
-
hasProfile && /* @__PURE__ */ jsx(ProfileAvatar, {
|
|
2969
|
-
user: user ?? void 0,
|
|
2970
|
-
isLoading,
|
|
2971
|
-
onLogout,
|
|
2972
|
-
onSettingsClick,
|
|
2973
|
-
settingsHref,
|
|
2974
|
-
appearance,
|
|
2975
|
-
LinkComponent: Link,
|
|
2976
|
-
children: profileMenuItems
|
|
2977
|
-
})
|
|
2978
|
-
]
|
|
2979
|
-
}), children]
|
|
2980
|
-
}),
|
|
2981
|
-
hideBelow && mobileNavOpen && /* @__PURE__ */ jsx(MobileNavDrawer, {
|
|
2982
|
-
breakpoint: hideBelow,
|
|
2983
|
-
onClose: closeMobileNav,
|
|
2984
|
-
header: railHeaderContent ?? logo,
|
|
2985
|
-
footer: railFooter !== void 0 || hasProfile ? /* @__PURE__ */ jsxs(Fragment, { children: [railFooter, hasProfile && /* @__PURE__ */ jsx(ProfileAvatar, {
|
|
2986
|
-
user: user ?? void 0,
|
|
2987
|
-
isLoading,
|
|
2988
|
-
onLogout,
|
|
2989
|
-
onSettingsClick,
|
|
2990
|
-
settingsHref,
|
|
2991
|
-
showDetails: true,
|
|
2992
|
-
appearance,
|
|
2993
|
-
LinkComponent: Link,
|
|
2994
|
-
children: profileMenuItems
|
|
2995
|
-
})] }) : null,
|
|
2996
|
-
panel,
|
|
2997
|
-
children: renderNavItems({
|
|
2998
|
-
showLabels: true,
|
|
2999
|
-
onNavigate: () => {
|
|
3000
|
-
handleNavClick?.();
|
|
3001
|
-
closeMobileNav();
|
|
3002
|
-
}
|
|
2997
|
+
})
|
|
2998
|
+
]
|
|
2999
|
+
}), children]
|
|
3000
|
+
}),
|
|
3001
|
+
hideBelow && mobileNavOpen && /* @__PURE__ */ jsx(MobileNavDrawer, {
|
|
3002
|
+
breakpoint: hideBelow,
|
|
3003
|
+
header: railHeaderContent ?? logo,
|
|
3004
|
+
footer: railFooter !== void 0 || hasProfile ? /* @__PURE__ */ jsxs(Fragment, { children: [railFooter, hasProfile && /* @__PURE__ */ jsx(ProfileAvatar, {
|
|
3005
|
+
user: user ?? void 0,
|
|
3006
|
+
isLoading,
|
|
3007
|
+
onLogout,
|
|
3008
|
+
onSettingsClick,
|
|
3009
|
+
settingsHref,
|
|
3010
|
+
showDetails: true,
|
|
3011
|
+
appearance,
|
|
3012
|
+
LinkComponent: Link,
|
|
3013
|
+
children: profileMenuItems
|
|
3014
|
+
})] }) : null,
|
|
3015
|
+
panel,
|
|
3016
|
+
children: renderNavItems({
|
|
3017
|
+
showLabels: true,
|
|
3018
|
+
onNavigate: () => {
|
|
3019
|
+
handleNavClick?.();
|
|
3020
|
+
closeMobileNav();
|
|
3021
|
+
}
|
|
3022
|
+
})
|
|
3003
3023
|
})
|
|
3004
|
-
|
|
3005
|
-
|
|
3024
|
+
]
|
|
3025
|
+
})
|
|
3006
3026
|
});
|
|
3007
3027
|
}
|
|
3008
3028
|
/**
|
|
@@ -3010,92 +3030,49 @@ function SidebarLayoutInner({ children, navItems, activeId, panel, logo, logoHre
|
|
|
3010
3030
|
* slide-out panel's content when the app has one (on a phone there is no room
|
|
3011
3031
|
* to dock a panel beside a rail, so the two stack in one surface).
|
|
3012
3032
|
*
|
|
3013
|
-
*
|
|
3014
|
-
*
|
|
3015
|
-
* Escape, a focus trap and a scroll lock.
|
|
3033
|
+
* Use the same modal layer as the account menu and other shared disclosures:
|
|
3034
|
+
* only the top layer handles Escape, and the trigger owns return focus.
|
|
3016
3035
|
*/
|
|
3017
|
-
function MobileNavDrawer({ breakpoint,
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
|
|
3023
|
-
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
|
|
3027
|
-
|
|
3028
|
-
|
|
3029
|
-
|
|
3030
|
-
|
|
3031
|
-
|
|
3032
|
-
|
|
3033
|
-
|
|
3034
|
-
|
|
3035
|
-
|
|
3036
|
-
} else if (!event.shiftKey && document.activeElement === last) {
|
|
3037
|
-
event.preventDefault();
|
|
3038
|
-
first.focus();
|
|
3039
|
-
}
|
|
3040
|
-
};
|
|
3041
|
-
document.addEventListener("keydown", onKeyDown, true);
|
|
3042
|
-
return () => document.removeEventListener("keydown", onKeyDown, true);
|
|
3043
|
-
}, [onClose]);
|
|
3044
|
-
React$1.useEffect(() => {
|
|
3045
|
-
const previous = document.body.style.overflow;
|
|
3046
|
-
document.body.style.overflow = "hidden";
|
|
3047
|
-
return () => {
|
|
3048
|
-
document.body.style.overflow = previous;
|
|
3049
|
-
};
|
|
3050
|
-
}, []);
|
|
3051
|
-
React$1.useEffect(() => {
|
|
3052
|
-
panelRef.current?.querySelector("button,a[href]")?.focus();
|
|
3053
|
-
}, []);
|
|
3054
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
3055
|
-
className: cn$1("fixed inset-0 z-50", SHOW_BELOW_CLASS[breakpoint]),
|
|
3056
|
-
children: [/* @__PURE__ */ jsx("button", {
|
|
3057
|
-
type: "button",
|
|
3058
|
-
"aria-label": "Close navigation",
|
|
3059
|
-
tabIndex: -1,
|
|
3060
|
-
onClick: onClose,
|
|
3061
|
-
className: "absolute inset-0 bg-black/50"
|
|
3062
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
3063
|
-
ref: panelRef,
|
|
3064
|
-
id: "sidebar-mobile-nav",
|
|
3065
|
-
role: "dialog",
|
|
3066
|
-
"aria-modal": "true",
|
|
3067
|
-
"aria-label": "Navigation",
|
|
3068
|
-
style: { width: 256 },
|
|
3069
|
-
className: "agent-arrive absolute inset-y-0 left-0 flex max-w-[85vw] flex-col border-r border-[var(--md3-outline-variant)] bg-surface-container-low shadow-xl",
|
|
3070
|
-
children: [
|
|
3071
|
-
/* @__PURE__ */ jsxs("div", {
|
|
3072
|
-
className: "flex h-14 shrink-0 items-center gap-1 border-b border-[var(--md3-outline-variant)] px-2",
|
|
3073
|
-
children: [/* @__PURE__ */ jsx("div", {
|
|
3074
|
-
className: "flex min-w-0 flex-1 items-center",
|
|
3075
|
-
children: header
|
|
3076
|
-
}), /* @__PURE__ */ jsx("button", {
|
|
3036
|
+
function MobileNavDrawer({ breakpoint, header, footer, panel, children }) {
|
|
3037
|
+
return /* @__PURE__ */ jsxs(Dialog$1.Portal, { children: [/* @__PURE__ */ jsx(Dialog$1.Overlay, { className: cn$1("fixed inset-0 z-50 bg-black/50", SHOW_BELOW_CLASS[breakpoint]) }), /* @__PURE__ */ jsxs(Dialog$1.Content, {
|
|
3038
|
+
id: "sidebar-mobile-nav",
|
|
3039
|
+
"aria-describedby": void 0,
|
|
3040
|
+
style: { width: 256 },
|
|
3041
|
+
className: cn$1("agent-arrive fixed inset-y-0 left-0 z-50 flex max-w-[85vw] flex-col border-r border-[var(--md3-outline-variant)] bg-surface-container-low shadow-xl", SHOW_BELOW_CLASS[breakpoint]),
|
|
3042
|
+
children: [
|
|
3043
|
+
/* @__PURE__ */ jsx(Dialog$1.Title, {
|
|
3044
|
+
className: "sr-only",
|
|
3045
|
+
children: "Navigation"
|
|
3046
|
+
}),
|
|
3047
|
+
/* @__PURE__ */ jsxs("div", {
|
|
3048
|
+
className: "flex h-14 shrink-0 items-center gap-1 border-b border-[var(--md3-outline-variant)] px-2",
|
|
3049
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
3050
|
+
className: "flex min-w-0 flex-1 items-center",
|
|
3051
|
+
children: header
|
|
3052
|
+
}), /* @__PURE__ */ jsx(Dialog$1.Close, {
|
|
3053
|
+
asChild: true,
|
|
3054
|
+
children: /* @__PURE__ */ jsx("button", {
|
|
3077
3055
|
type: "button",
|
|
3078
3056
|
"aria-label": "Close navigation",
|
|
3079
|
-
onClick: onClose,
|
|
3080
3057
|
className: cn$1("flex size-9 shrink-0 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-[var(--accent-surface-soft)] hover:text-foreground", MOTION_CONTROL),
|
|
3081
3058
|
children: /* @__PURE__ */ jsx(CloseIcon, { className: "size-5" })
|
|
3082
|
-
})
|
|
3083
|
-
})
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
})
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
});
|
|
3059
|
+
})
|
|
3060
|
+
})]
|
|
3061
|
+
}),
|
|
3062
|
+
/* @__PURE__ */ jsxs("nav", {
|
|
3063
|
+
"aria-label": "Sections",
|
|
3064
|
+
className: "flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto px-2 py-2",
|
|
3065
|
+
children: [children, panel != null && /* @__PURE__ */ jsx("div", {
|
|
3066
|
+
className: "mt-2 border-t border-[var(--md3-outline-variant)] pt-2",
|
|
3067
|
+
children: panel
|
|
3068
|
+
})]
|
|
3069
|
+
}),
|
|
3070
|
+
footer != null && /* @__PURE__ */ jsx("div", {
|
|
3071
|
+
className: "shrink-0 border-t border-[var(--md3-outline-variant)] px-2 py-2",
|
|
3072
|
+
children: footer
|
|
3073
|
+
})
|
|
3074
|
+
]
|
|
3075
|
+
})] });
|
|
3099
3076
|
}
|
|
3100
3077
|
/**
|
|
3101
3078
|
* App shell built on the sidebar rail + slide-out panel, without a top nav bar.
|
package/dist/dashboard.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
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-
|
|
1
|
+
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-C25eF1QD.js";
|
|
2
2
|
import { n as canonicalModelId, r as modelBrandFor, t as ModelBrandStack } from "./model-brand-hMyDTUqB.js";
|
|
3
3
|
import { a as formatPrice, i as PricingPage, n as SandboxPageShell, o as BillingDashboard, r as UsageChart, t as DashboardPageHeader } from "./page-layout-2IRtfx51.js";
|
|
4
4
|
export { ActivityFeed, BackendSelector, BillingDashboard, DashboardLayout, DashboardPageHeader, GitPanel, HARNESS_BRAND, HARNESS_OPTIONS, HarnessLogo, HarnessPicker, INSUFFICIENT_BALANCE_CODE, MetricAreaChart, ModelBrandStack, NewSandboxCard, OutOfCreditsModal, PortsList, PricingPage, ProcessList, ProfileAvatar, PromoBanner, RailButton, RailExpandable, RailFlyout, RailHeader, RailModeButton, RailSeparator, RailTooltip, ResourceMeter, ResourceSnapshot, SANDBOX_STATUS, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, SandboxPageShell, SandboxStatusPill, SandboxTable, Sidebar, SidebarContent, SidebarLayout, SidebarPanel, SidebarPanelContent, SidebarPanelHeader, SidebarProvider, SidebarRail, SidebarRailFooter, SidebarRailNav, SnapshotList, SystemLogsViewer, TemplateCard, UsageChart, UsageSummary, canAdminSandbox, canonicalModelId, chatCapableHarnesses, formatPrice, modelBrandFor, parseInsufficientBalance, sandboxStatus, useSidebar };
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
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-
|
|
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-BPbVtoRF.js";
|
|
2
2
|
import { $ as DialogDescription, $n as TangleKnot, $t as SheetClose, A as CodeBlock, At as MetricStrip, B as ContextMenuPortal, Bn as Tooltip, Bt as SegmentedControl, C as CardContent, Cn as TableHeader, Ct as FilterField, D as CardTitle, Dn as TabsList, Dt as Input, E as CardHeader, En as TabsContent, Et as InlineCode, F as ContextMenuCheckboxItem, Fn as Textarea, Ft as PopoverAnchor, G as ContextMenuSub, Gn as badgeVariants, Gt as SelectLabel, H as ContextMenuRadioItem, Hn as TooltipProvider, Ht as SelectContent, I as ContextMenuContent, In as ThemeToggle, It as PopoverClose, J as ContextMenuTrigger, Jn as toneFor, Jt as SelectSeparator, K as ContextMenuSubContent, Kn as buttonVariants, Kt as SelectScrollDownButton, L as ContextMenuGroup, Ln as ToastContainer, Lt as PopoverContent, M as CollapsibleContent, Mt as PageShell, N as CollapsibleTrigger, Nt as Pagination, O as Checkbox, On as TabsTrigger, Ot as Label, P as ContextMenu, Pn as TextShimmer, Pt as Popover, Q as DialogContent, Qn as Logo, Qt as Sheet, R as ContextMenuItem, Rn as ToastProvider, Rt as PopoverTrigger, S as Card, Sn as TableHead, St as EmptyState, T as CardFooter, Tn as Tabs, Tt as IconTile, U as ContextMenuSeparator, Un as TooltipTrigger, Ut as SelectGroup, V as ContextMenuRadioGroup, Vn as TooltipContent, Vt as Select, W as ContextMenuShortcut, Wn as UploadProgress, Wt as SelectItem, X as Dialog, Xn as useToast, Xt as SelectValue, Y as CopyButton, Yn as useTheme, Yt as SelectTrigger, Z as DialogClose, Zn as SectionTitle, Zt as Separator, _ as AvatarFallback, _n as Table, _t as DropdownMenuShortcut, a as AlertDialogCancel, an as SheetPortal, at as DialogTrigger, b as Button, bn as TableCell, bt as DropdownMenuSubTrigger, c as AlertDialogFooter, cn as SidebarDropZone, ct as DropdownMenuCheckboxItem, d as AlertDialogPortal, dn as SkeletonTable, dt as DropdownMenuItem, en as SheetContent, et as DialogFooter, f as AlertDialogTitle, fn as Slider, ft as DropdownMenuLabel, g as Avatar, gn as TONE_CLASSES, gt as DropdownMenuSeparator, hn as Switch, ht as DropdownMenuRadioItem, i as AlertDialogAction, in as SheetOverlay, it as DialogTitle, j as Collapsible, jn as TerminalDisplay, jt as PageHeader, k as Chip, kn as Tag, kt as Metric, l as AlertDialogHeader, ln as Skeleton, lt as DropdownMenuContent, m as AlertTitle, mn as StatusPill, mt as DropdownMenuRadioGroup, n as AlertDescription, nn as SheetFooter, nt as DialogOverlay, o as AlertDialogContent, on as SheetTitle, ot as DropZone, p as AlertDialogTrigger, pn as StatCard, pt as DropdownMenuPortal, q as ContextMenuSubTrigger, qn as initialsOf, qt as SelectScrollUpButton, r as AlertDialog, rn as SheetHeader, rt as DialogPortal, s as AlertDialogDescription, sn as SheetTrigger, st as DropdownMenu, t as Alert, tn as SheetDescription, tt as DialogHeader, u as AlertDialogOverlay, un as SkeletonCard, ut as DropdownMenuGroup, v as AvatarImage, vn as TableBody, vt as DropdownMenuSub, w as CardDescription, wn as TableRow, wt as Heading, x as CATEGORY_TONES, xn as TableFooter, xt as DropdownMenuTrigger, y as Badge, yn as TableCaption, yt as DropdownMenuSubContent, z as ContextMenuLabel, zn as Toolbar, zt as Progress } from "./primitives-DavMYFRD.js";
|
|
3
3
|
import { t as WorkspacePaneHeader } from "./workspace-pane-header-Bg1cCcHX.js";
|
|
4
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-C68fk9qa.js";
|
|
5
|
-
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-
|
|
5
|
+
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-C25eF1QD.js";
|
|
6
6
|
import { n as canonicalModelId, r as modelBrandFor, t as ModelBrandStack } from "./model-brand-hMyDTUqB.js";
|
|
7
7
|
import { a as formatPrice, i as PricingPage, n as SandboxPageShell, o as BillingDashboard, r as UsageChart, t as DashboardPageHeader } from "./page-layout-2IRtfx51.js";
|
|
8
8
|
import { t as usePtySession } from "./use-pty-session-Bf4hBLXJ.js";
|
|
9
9
|
import { CSV_PREVIEW_ROW_LIMIT, FileArtifactPane, FileCard, FileList, FilePreview, FileTabs, FileTree, PdfViewer, RichFileTree, configurePdfViewer, detectFileFormat, fileExtension, filterFileTree, getCodeLanguage, getFormatLabel, getSyntaxLanguage, parseCsv, resolveFilePreviewKind } from "./files.js";
|
|
10
10
|
import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-CMRPEvon.js";
|
|
11
11
|
import { OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, OpenUIArtifactRenderer, findUnsupportedOpenUINode, validateOpenUIJsonArtifact, validateOpenUIJsonNode } from "./openui.js";
|
|
12
|
-
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-
|
|
12
|
+
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
13
|
import { ExpandedToolDetail, InlineThinkingItem, InlineToolItem, LiveDuration, RunGroup, RunRowShell, RunRowStatusDot, ToolCallFeed, parseToolEvent } from "./run.js";
|
|
14
14
|
import { a as TangleLoginButton, i as UserMenu, n as GitHubLoginButton, r as LoginLayout, t as AuthHeader } from "./auth-CWe17Hly.js";
|
|
15
15
|
import { t as AgentMessagingConnection } from "./connections-C5DxYxvz.js";
|
package/dist/integrations.js
CHANGED
|
@@ -335,7 +335,7 @@ function IntegrationsCatalog({ rows, query, onQueryChange, categoryFilter = "",
|
|
|
335
335
|
}) : null,
|
|
336
336
|
!compact ? /* @__PURE__ */ jsx("p", {
|
|
337
337
|
className: cn("min-h-8 text-sm", TONES[connection?.statusTone ?? "neutral"]),
|
|
338
|
-
children: row.kind === "app" ? row.installedCount ? `Installed · ${row.installedCount} ${row.installedCount === 1 ? "account" : "accounts"}` : "Not installed" : connection?.statusLabel ?? (active ? `${provider?.connections.length} accounts · select one to manage` : "Not connected")
|
|
338
|
+
children: row.kind === "app" ? row.installedCount ? `Installed · ${row.installedCount} ${row.installedCount === 1 ? "account" : "accounts"}` : "Not installed" : connection?.statusLabel ?? (active ? `${provider?.connections.length} ${provider?.connections.length === 1 ? "account" : "accounts"} · select one to manage` : "Not connected")
|
|
339
339
|
}) : null,
|
|
340
340
|
!compact ? /* @__PURE__ */ jsxs("div", {
|
|
341
341
|
className: "mt-auto flex min-h-9 items-center gap-2 border-t border-border pt-3",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as cn$1 } from "./utils-DzWbktWG.js";
|
|
2
|
-
import { a as PortsList } from "./dashboard-
|
|
2
|
+
import { a as PortsList } from "./dashboard-C25eF1QD.js";
|
|
3
3
|
import { n as TerminalView } from "./terminal-DmSUfGha.js";
|
|
4
4
|
import { RichFileTree } from "./files.js";
|
|
5
5
|
import { n as PreviewView } from "./embedded-app-view-CMRPEvon.js";
|
package/dist/workbench.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
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-
|
|
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-BPbVtoRF.js";
|
|
2
2
|
import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-CMRPEvon.js";
|
|
3
3
|
export { BRAND_PRISM_THEME, ChangesPane, CodeSurface, CodeView, DiffStatsBadge, DiffView, EmbeddedAppView, FileBreadcrumb, GitStatusBadge, PanelHeader, PillTabs, PreviewView, SandboxArtifactPane, buildUnifiedPatch, computeDiffStats, resolveLanguage };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tangle-network/sandbox-ui",
|
|
3
|
-
"version": "0.128.
|
|
3
|
+
"version": "0.128.3",
|
|
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": {
|
|
@@ -197,9 +197,9 @@
|
|
|
197
197
|
"dependencies": {
|
|
198
198
|
"@lobehub/icons-static-svg": "^1.95.1",
|
|
199
199
|
"@pierre/diffs": "^1.5.1",
|
|
200
|
-
"@radix-ui/react-dialog": "^1.
|
|
201
|
-
"@radix-ui/react-dropdown-menu": "^2.1.
|
|
202
|
-
"@radix-ui/react-select": "^2.3.
|
|
200
|
+
"@radix-ui/react-dialog": "^1.1.23",
|
|
201
|
+
"@radix-ui/react-dropdown-menu": "^2.1.24",
|
|
202
|
+
"@radix-ui/react-select": "^2.3.7",
|
|
203
203
|
"diff": "^9.0.0",
|
|
204
204
|
"eventsource-parser": "4.1.1",
|
|
205
205
|
"lucide-react": "^1.48.0",
|