@tangle-network/sandbox-ui 0.116.9 → 0.117.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/README.md CHANGED
@@ -89,6 +89,53 @@ Pass service-observed `readiness` and enforced `access` to show their status ins
89
89
  Show process and port state beside the pane if your runtime exposes those separately.
90
90
  Do not infer either state from the preview URL or iframe load.
91
91
 
92
+ ### Show a shared agent messaging connection
93
+
94
+ Use `AgentMessagingConnection` in any app that enrolls a member with a private agent target and a shared messaging route.
95
+ The host owns authentication, the member grant, canonical target resolution, and route readiness.
96
+
97
+ ```tsx
98
+ import {
99
+ AgentMessagingConnection,
100
+ type AgentEnrollmentViewState,
101
+ type SharedMessagingRouteViewState,
102
+ } from "@tangle-network/sandbox-ui/connections";
103
+
104
+ type MessagingConnectionProps = {
105
+ enrollment: AgentEnrollmentViewState;
106
+ route: SharedMessagingRouteViewState;
107
+ enroll: () => Promise<void>;
108
+ openMessages: () => void;
109
+ refresh: () => Promise<void>;
110
+ };
111
+
112
+ export function MessagingConnection({
113
+ enrollment,
114
+ route,
115
+ enroll,
116
+ openMessages,
117
+ refresh,
118
+ }: MessagingConnectionProps) {
119
+ return (
120
+ <AgentMessagingConnection
121
+ enrollment={enrollment}
122
+ route={route}
123
+ onEnroll={enroll}
124
+ onOpenMessages={openMessages}
125
+ onRetry={refresh}
126
+ />
127
+ );
128
+ }
129
+ ```
130
+
131
+ Report `eligible` only after the host checks the member's current grant.
132
+ Report `enrolled` only after it resolves the authorized, canonical private agent target.
133
+ Give the component display labels, not raw enrollment, instance, sandbox, or session IDs.
134
+ Report route `ready` only when the shared route is valid for this application and member.
135
+ An attached provider line on its own does not prove that state.
136
+ The component never attaches, buys, or reassigns a provider identity.
137
+ It shows a messaging action only when both the target and route are confirmed.
138
+
92
139
  ### Fonts
93
140
 
94
141
  sandbox-ui references the following font families in its design tokens but does **not** bundle them — consumer apps must load the fonts themselves. This is deliberate: a URL `@import` inside a library CSS bundle breaks when downstream apps chain-import the stylesheet (see CHANGELOG 0.10.9 for the full reasoning).
package/dist/chat.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as ThinkingIndicator, c as createFetchTransport, d as AgentProfilePicker, f as DEFAULT_REASONING_LEVEL_OPTIONS, i as MessageList, l as modelProvider, m as ReasoningLevelPicker, n as ChatContainer, o as UserMessage, p as HARNESS_REASONING_OPTIONS, r as ChatMessage, s as ArtifactAgentDock, t as AgentTimeline, u as snapHarnessToModel } from "./chat-BOvFAe6p.js";
1
+ import { a as ThinkingIndicator, c as createFetchTransport, d as AgentProfilePicker, f as DEFAULT_REASONING_LEVEL_OPTIONS, i as MessageList, l as modelProvider, m as ReasoningLevelPicker, n as ChatContainer, o as UserMessage, p as HARNESS_REASONING_OPTIONS, r as ChatMessage, s as ArtifactAgentDock, t as AgentTimeline, u as snapHarnessToModel } from "./chat-Ci6Xi1rd.js";
2
2
  export { AgentProfilePicker, AgentTimeline, ArtifactAgentDock, ChatContainer, ChatMessage, DEFAULT_REASONING_LEVEL_OPTIONS, HARNESS_REASONING_OPTIONS, MessageList, ReasoningLevelPicker, ThinkingIndicator, UserMessage, createFetchTransport, modelProvider, snapHarnessToModel };
@@ -0,0 +1,180 @@
1
+ import { Button } from "@tangle-network/ui/primitives";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import * as React$1 from "react";
4
+ import { cn } from "@tangle-network/ui/utils";
5
+ import { AlertCircle, CheckCircle2, Loader2, MessageSquare, ShieldCheck } from "lucide-react";
6
+ //#region src/connections/agent-messaging-connection.tsx
7
+ function AgentStatus({ enrollment }) {
8
+ switch (enrollment.status) {
9
+ case "checking": return /* @__PURE__ */ jsx("span", { children: "Checking access…" });
10
+ case "eligible": return /* @__PURE__ */ jsx("span", { children: "Not connected" });
11
+ case "enrolling": return /* @__PURE__ */ jsx("span", { children: "Connecting your agent…" });
12
+ case "enrolled": return /* @__PURE__ */ jsxs("span", { children: [
13
+ "Connected to ",
14
+ /* @__PURE__ */ jsx("strong", {
15
+ className: "font-medium text-foreground",
16
+ children: enrollment.target.agentLabel
17
+ }),
18
+ enrollment.target.workspaceLabel && /* @__PURE__ */ jsxs(Fragment, { children: [" in ", enrollment.target.workspaceLabel] })
19
+ ] });
20
+ case "forbidden": return /* @__PURE__ */ jsx("span", { children: enrollment.message ?? "You cannot connect this agent." });
21
+ case "error": return /* @__PURE__ */ jsx("span", { children: enrollment.message ?? "Could not check agent access." });
22
+ }
23
+ }
24
+ function RouteStatus({ enrollment, route }) {
25
+ switch (route.status) {
26
+ case "checking": return /* @__PURE__ */ jsx("span", { children: "Checking messaging…" });
27
+ case "pending": return /* @__PURE__ */ jsx("span", { children: route.message ?? "Setting up messaging…" });
28
+ case "ready": return enrollment.status === "enrolled" ? /* @__PURE__ */ jsxs("span", { children: [
29
+ "Ready on ",
30
+ /* @__PURE__ */ jsx("strong", {
31
+ className: "font-medium text-foreground",
32
+ children: route.channelLabel
33
+ }),
34
+ /* @__PURE__ */ jsx("span", {
35
+ className: "block break-words",
36
+ children: route.destinationLabel
37
+ })
38
+ ] }) : enrollment.status === "eligible" ? /* @__PURE__ */ jsx("span", { children: "Connect your agent to use messaging." }) : /* @__PURE__ */ jsx("span", { children: "Agent connection is unconfirmed." });
39
+ case "unavailable": return /* @__PURE__ */ jsx("span", { children: route.message ?? "Messaging is unavailable right now." });
40
+ case "forbidden": return /* @__PURE__ */ jsx("span", { children: route.message ?? "You cannot use messaging in this app." });
41
+ case "error": return /* @__PURE__ */ jsx("span", { children: route.message ?? "Could not check messaging." });
42
+ }
43
+ }
44
+ function AgentMessagingConnection({ enrollment, route, onEnroll, onOpenMessages, onRetry, className }) {
45
+ const [submitting, setSubmitting] = React$1.useState(false);
46
+ const [actionError, setActionError] = React$1.useState(null);
47
+ const submittingRef = React$1.useRef(false);
48
+ const canMessage = enrollment.status === "enrolled" && route.status === "ready";
49
+ const canRetry = enrollment.status === "error" || route.status === "error";
50
+ React$1.useEffect(() => {
51
+ setActionError(null);
52
+ }, [enrollment.status, route.status]);
53
+ async function enroll() {
54
+ if (enrollment.status !== "eligible" || submittingRef.current) return;
55
+ submittingRef.current = true;
56
+ setSubmitting(true);
57
+ setActionError(null);
58
+ try {
59
+ await onEnroll();
60
+ } catch {
61
+ setActionError("Could not connect the agent. Try again.");
62
+ } finally {
63
+ submittingRef.current = false;
64
+ setSubmitting(false);
65
+ }
66
+ }
67
+ async function retry() {
68
+ if (!onRetry || submittingRef.current) return;
69
+ submittingRef.current = true;
70
+ setSubmitting(true);
71
+ setActionError(null);
72
+ try {
73
+ await onRetry();
74
+ } catch {
75
+ setActionError("Could not check messaging. Try again.");
76
+ } finally {
77
+ submittingRef.current = false;
78
+ setSubmitting(false);
79
+ }
80
+ }
81
+ return /* @__PURE__ */ jsxs("section", {
82
+ "aria-label": "Agent messaging connection",
83
+ className: cn("rounded-xl border border-border bg-card p-4 text-sm text-foreground sm:p-5", className),
84
+ children: [
85
+ /* @__PURE__ */ jsx("h2", {
86
+ className: "mb-4 text-base font-semibold",
87
+ children: "Agent messaging"
88
+ }),
89
+ /* @__PURE__ */ jsxs("div", {
90
+ className: "divide-y divide-border rounded-lg border border-border",
91
+ children: [/* @__PURE__ */ jsxs("div", {
92
+ className: "flex gap-3 p-3 sm:p-4",
93
+ children: [
94
+ /* @__PURE__ */ jsx(ShieldCheck, {
95
+ "aria-hidden": "true",
96
+ className: "mt-0.5 h-4 w-4 shrink-0 text-muted-foreground"
97
+ }),
98
+ /* @__PURE__ */ jsxs("div", {
99
+ className: "min-w-0",
100
+ children: [/* @__PURE__ */ jsx("p", {
101
+ className: "font-medium",
102
+ children: "Private agent"
103
+ }), /* @__PURE__ */ jsx("p", {
104
+ "aria-live": "polite",
105
+ className: "mt-0.5 break-words text-muted-foreground",
106
+ children: /* @__PURE__ */ jsx(AgentStatus, { enrollment })
107
+ })]
108
+ }),
109
+ enrollment.status === "enrolled" && /* @__PURE__ */ jsx(CheckCircle2, {
110
+ "aria-label": "Connected",
111
+ className: "ml-auto h-4 w-4 shrink-0 text-[var(--code-success)]"
112
+ })
113
+ ]
114
+ }), /* @__PURE__ */ jsxs("div", {
115
+ className: "flex gap-3 p-3 sm:p-4",
116
+ children: [
117
+ /* @__PURE__ */ jsx(MessageSquare, {
118
+ "aria-hidden": "true",
119
+ className: "mt-0.5 h-4 w-4 shrink-0 text-muted-foreground"
120
+ }),
121
+ /* @__PURE__ */ jsxs("div", {
122
+ className: "min-w-0",
123
+ children: [/* @__PURE__ */ jsx("p", {
124
+ className: "font-medium",
125
+ children: "Messaging"
126
+ }), /* @__PURE__ */ jsx("p", {
127
+ "aria-live": "polite",
128
+ className: "mt-0.5 break-words text-muted-foreground",
129
+ children: /* @__PURE__ */ jsx(RouteStatus, {
130
+ enrollment,
131
+ route
132
+ })
133
+ })]
134
+ }),
135
+ canMessage && /* @__PURE__ */ jsx(CheckCircle2, {
136
+ "aria-label": "Ready",
137
+ className: "ml-auto h-4 w-4 shrink-0 text-[var(--code-success)]"
138
+ })
139
+ ]
140
+ })]
141
+ }),
142
+ (enrollment.status === "eligible" || canMessage || canRetry && onRetry) && /* @__PURE__ */ jsxs("div", {
143
+ className: "mt-4 flex flex-wrap items-center gap-3",
144
+ children: [
145
+ enrollment.status === "eligible" && /* @__PURE__ */ jsxs(Button, {
146
+ type: "button",
147
+ onClick: enroll,
148
+ disabled: submitting,
149
+ children: [submitting ? /* @__PURE__ */ jsx(Loader2, {
150
+ "aria-hidden": "true",
151
+ className: "mr-2 h-4 w-4 animate-spin"
152
+ }) : null, submitting ? "Connecting agent…" : "Connect agent"]
153
+ }),
154
+ canMessage && onOpenMessages && /* @__PURE__ */ jsx(Button, {
155
+ type: "button",
156
+ onClick: onOpenMessages,
157
+ children: "Open messages"
158
+ }),
159
+ canRetry && onRetry && /* @__PURE__ */ jsx(Button, {
160
+ type: "button",
161
+ variant: "outline",
162
+ onClick: retry,
163
+ disabled: submitting,
164
+ children: submitting ? "Checking…" : "Check again"
165
+ })
166
+ ]
167
+ }),
168
+ actionError && /* @__PURE__ */ jsxs("p", {
169
+ role: "alert",
170
+ className: "mt-3 flex items-center gap-2 text-[var(--code-error)]",
171
+ children: [/* @__PURE__ */ jsx(AlertCircle, {
172
+ "aria-hidden": "true",
173
+ className: "h-4 w-4 shrink-0"
174
+ }), actionError]
175
+ })
176
+ ]
177
+ });
178
+ }
179
+ //#endregion
180
+ export { AgentMessagingConnection as t };
@@ -0,0 +1,2 @@
1
+ import { a as SharedMessagingRouteViewState, i as AgentTargetSummary, n as AgentMessagingConnection, r as AgentMessagingConnectionProps, t as AgentEnrollmentViewState } from "./index-ClRHbsoX.js";
2
+ export { type AgentEnrollmentViewState, AgentMessagingConnection, type AgentMessagingConnectionProps, type AgentTargetSummary, type SharedMessagingRouteViewState };
@@ -0,0 +1,2 @@
1
+ import { t as AgentMessagingConnection } from "./connections-DDRGYDvF.js";
2
+ export { AgentMessagingConnection };
@@ -8,8 +8,8 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
8
  import * as React$1 from "react";
9
9
  import { useEffect, useRef, useState } from "react";
10
10
  import { focusField, focusFieldWithin, focusRing, focusRingInset, timeAgo } from "@tangle-network/ui/utils";
11
- import { Activity, BarChart2, Bell, Bot, Box, Camera, Check, CheckCircle2, ChevronDown, ChevronLeft, ChevronRight, Clock, Code2, Copy, Cpu, DollarSign, Download, ExternalLink, File, FileEdit, FilePlus, FileText, GitBranch, GitCommit, Globe, HardDrive, Key, Layers, Loader2, MemoryStick, MessageSquare, Monitor, MoreHorizontal, MoreVertical, Network, PanelLeft, Play, Plug, Plus, Power, PowerOff, RefreshCw, RotateCcw, Server, Settings, ShieldAlert, Skull, Terminal, Timer, Trash2, User, Users, Wrench, X, XCircle } from "lucide-react";
12
11
  import { createPortal } from "react-dom";
12
+ import { Activity, BarChart2, Bell, Bot, Box, Camera, Check, CheckCircle2, ChevronDown, ChevronLeft, ChevronRight, Clock, Code2, Copy, Cpu, DollarSign, Download, ExternalLink, File, FileEdit, FilePlus, FileText, GitBranch, GitCommit, Globe, HardDrive, Key, Layers, Loader2, MemoryStick, MessageSquare, Monitor, MoreHorizontal, MoreVertical, Network, PanelLeft, Play, Plug, Plus, Power, PowerOff, RefreshCw, RotateCcw, Server, Settings, ShieldAlert, Skull, Terminal, Timer, Trash2, User, Users, Wrench, X, XCircle } from "lucide-react";
13
13
  import * as Select from "@radix-ui/react-select";
14
14
  //#region src/dashboard/sidebar-context.tsx
15
15
  const PANEL_OPEN_KEY = "sandbox-sidebar-panel-open";
@@ -1758,7 +1758,7 @@ function NewSandboxCard({ onClick, className }) {
1758
1758
  const statusColors = {
1759
1759
  running: {
1760
1760
  dot: "bg-[var(--code-success)] animate-pulse",
1761
- text: "text-[var(--code-success)]",
1761
+ text: "text-[var(--surface-success-text)]",
1762
1762
  bar: "bg-[var(--code-success)]"
1763
1763
  },
1764
1764
  hibernating: {
@@ -1768,12 +1768,12 @@ const statusColors = {
1768
1768
  },
1769
1769
  provisioning: {
1770
1770
  dot: "bg-primary animate-pulse",
1771
- text: "text-primary",
1771
+ text: "text-[var(--accent-text)]",
1772
1772
  bar: "bg-primary"
1773
1773
  },
1774
1774
  creating: {
1775
1775
  dot: "bg-primary animate-pulse",
1776
- text: "text-primary",
1776
+ text: "text-[var(--accent-text)]",
1777
1777
  bar: "bg-primary"
1778
1778
  },
1779
1779
  stopped: {
@@ -1783,7 +1783,7 @@ const statusColors = {
1783
1783
  },
1784
1784
  failed: {
1785
1785
  dot: "bg-[var(--code-error)]",
1786
- text: "text-[var(--code-error)]",
1786
+ text: "text-[var(--surface-danger-text)]",
1787
1787
  bar: "bg-[var(--code-error)]"
1788
1788
  },
1789
1789
  archived: {
@@ -1805,7 +1805,7 @@ function MiniMeter({ label, percent, className }) {
1805
1805
  className: "font-bold",
1806
1806
  children: label
1807
1807
  }), /* @__PURE__ */ jsx("span", {
1808
- className: hasValue ? "text-primary" : "text-muted-foreground",
1808
+ className: hasValue ? "text-[var(--accent-text)]" : "text-muted-foreground",
1809
1809
  children: hasValue ? String(percent) + "%" : "Unknown"
1810
1810
  })]
1811
1811
  }), /* @__PURE__ */ jsx("div", {
@@ -1847,7 +1847,7 @@ function SandboxResources({ sandbox, className }) {
1847
1847
  });
1848
1848
  }
1849
1849
  if (sandbox.status === "provisioning" || sandbox.status === "creating") return /* @__PURE__ */ jsxs("div", {
1850
- className: cn$1("flex min-w-0 items-center gap-2 text-primary italic text-[10px] font-bold", className),
1850
+ className: cn$1("flex min-w-0 items-center gap-2 text-[var(--accent-text)] italic text-[10px] font-bold", className),
1851
1851
  children: [/* @__PURE__ */ jsx(RefreshCw, {
1852
1852
  className: "h-3.5 w-3.5 shrink-0 animate-spin",
1853
1853
  "data-motion": "essential"
@@ -1917,7 +1917,7 @@ function SandboxTable({ sandboxes, page = 1, pageSize = 10, total, onPageChange,
1917
1917
  children: [
1918
1918
  /* @__PURE__ */ jsx("th", {
1919
1919
  scope: "col",
1920
- className: "hidden w-28 px-3 py-4 text-xs font-semibold uppercase tracking-wider text-muted-foreground xl:table-cell",
1920
+ className: "hidden w-36 px-3 py-4 text-xs font-semibold uppercase tracking-wider text-muted-foreground xl:table-cell",
1921
1921
  children: "Status"
1922
1922
  }),
1923
1923
  /* @__PURE__ */ jsx("th", {
@@ -1942,7 +1942,7 @@ function SandboxTable({ sandboxes, page = 1, pageSize = 10, total, onPageChange,
1942
1942
  }),
1943
1943
  /* @__PURE__ */ jsx("th", {
1944
1944
  scope: "col",
1945
- className: "w-28 px-2 py-4 text-right text-xs font-semibold uppercase tracking-wider text-muted-foreground xl:w-52 xl:px-4",
1945
+ className: "w-28 px-2 py-4 text-right text-xs font-semibold uppercase tracking-wider text-muted-foreground xl:w-72 xl:px-4",
1946
1946
  children: "Actions"
1947
1947
  })
1948
1948
  ]
@@ -1962,7 +1962,7 @@ function SandboxTable({ sandboxes, page = 1, pageSize = 10, total, onPageChange,
1962
1962
  onClick: onRowClick,
1963
1963
  children: [
1964
1964
  /* @__PURE__ */ jsx("td", {
1965
- className: "hidden px-3 py-4 align-top xl:table-cell xl:px-4 xl:py-5",
1965
+ className: "hidden px-3 py-4 align-top xl:table-cell xl:w-36 xl:px-4 xl:py-5",
1966
1966
  children: /* @__PURE__ */ jsx(StatusIndicator, { status: sb.status })
1967
1967
  }),
1968
1968
  /* @__PURE__ */ jsx("td", {
@@ -1977,7 +1977,7 @@ function SandboxTable({ sandboxes, page = 1, pageSize = 10, total, onPageChange,
1977
1977
  }), /* @__PURE__ */ jsxs("div", {
1978
1978
  className: "min-w-0 flex-1",
1979
1979
  children: [/* @__PURE__ */ jsx("span", {
1980
- className: "block min-w-0 truncate text-sm font-bold text-foreground transition-colors group-hover:text-primary",
1980
+ className: "block min-w-0 truncate text-sm font-bold text-foreground transition-colors group-hover:text-[var(--accent-text)]",
1981
1981
  title: sb.name,
1982
1982
  "aria-label": sb.name,
1983
1983
  children: sb.name
@@ -2033,7 +2033,7 @@ function SandboxTable({ sandboxes, page = 1, pageSize = 10, total, onPageChange,
2033
2033
  hasTeamSandboxes && /* @__PURE__ */ jsx("td", {
2034
2034
  className: "hidden px-3 py-4 align-top xl:table-cell xl:px-4 xl:py-5",
2035
2035
  children: sb.team ? /* @__PURE__ */ jsxs("div", {
2036
- className: "inline-flex max-w-40 items-center gap-1.5 rounded-full bg-[var(--accent-surface-soft)] px-2.5 py-1 text-[11px] font-semibold text-[var(--accent-text)]",
2036
+ className: "inline-flex max-w-full items-center gap-1.5 overflow-hidden rounded-full bg-[var(--accent-surface-soft)] px-2.5 py-1 text-[11px] font-semibold text-[var(--accent-text)]",
2037
2037
  title: "Shared with " + (sb.team.name ?? "Team") + " · " + sb.team.role,
2038
2038
  children: [
2039
2039
  /* @__PURE__ */ jsx(Users, {
@@ -2077,7 +2077,7 @@ function SandboxTable({ sandboxes, page = 1, pageSize = 10, total, onPageChange,
2077
2077
  children: /* @__PURE__ */ jsx(SandboxResources, { sandbox: sb })
2078
2078
  }),
2079
2079
  /* @__PURE__ */ jsx("td", {
2080
- className: "w-28 px-2 py-3 text-right align-top xl:w-52 xl:px-4 xl:py-5",
2080
+ className: "w-28 px-2 py-3 text-right align-top xl:w-72 xl:px-4 xl:py-5",
2081
2081
  children: /* @__PURE__ */ jsxs("div", {
2082
2082
  className: "flex min-w-0 flex-wrap items-center justify-end gap-1",
2083
2083
  children: [
@@ -2122,7 +2122,7 @@ function SandboxTable({ sandboxes, page = 1, pageSize = 10, total, onPageChange,
2122
2122
  stopRowClick(e);
2123
2123
  resumeHandler(sb.id);
2124
2124
  },
2125
- className: cn$1("inline-flex min-h-11 items-center gap-1.5 px-3 py-1.5 rounded-lg border border-[var(--md3-outline-variant)] text-primary text-[10px] font-bold uppercase tracking-wider hover:bg-[var(--accent-surface-soft)] active:scale-95 transition-all", focusRing),
2125
+ className: cn$1("inline-flex min-h-11 items-center gap-1.5 px-3 py-1.5 rounded-lg border border-[var(--md3-outline-variant)] text-[var(--accent-text)] text-[10px] font-bold uppercase tracking-wider hover:bg-[var(--accent-surface-soft)] active:scale-95 transition-all", focusRing),
2126
2126
  title: resumeLabel,
2127
2127
  children: [/* @__PURE__ */ jsx(Play, { className: "h-3 w-3" }), resumeLabel]
2128
2128
  }),
@@ -2236,7 +2236,7 @@ function SandboxTable({ sandboxes, page = 1, pageSize = 10, total, onPageChange,
2236
2236
  disabled: !onPageChange,
2237
2237
  "aria-label": "Go to page " + item,
2238
2238
  "aria-current": item === currentPage ? "page" : void 0,
2239
- className: cn$1("min-h-11 min-w-11 rounded-lg px-2 py-1 transition-colors", item === currentPage ? "border border-[var(--md3-outline)] bg-[var(--accent-surface-soft)] text-primary" : "hover:bg-surface-container-high", !onPageChange && "cursor-not-allowed opacity-30"),
2239
+ className: cn$1("min-h-11 min-w-11 rounded-lg px-2 py-1 transition-colors", item === currentPage ? "border border-[var(--md3-outline)] bg-[var(--accent-surface-soft)] text-[var(--accent-text)]" : "hover:bg-surface-container-high", !onPageChange && "cursor-not-allowed opacity-30"),
2240
2240
  children: item
2241
2241
  }, item) : /* @__PURE__ */ jsx("span", {
2242
2242
  className: "px-1",
package/dist/dashboard.js CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as SidebarRailNav, A as ResourceMeter, B as RailFlyout, C as InvoiceTable, D as canAdminSandbox, E as SandboxCard, F as CreditBalance, G as Sidebar, H as RailModeButton, I as ProfileAvatar, J as SidebarPanelContent, K as SidebarContent, L as RailButton, M as INSUFFICIENT_BALANCE_CODE, N as OutOfCreditsModal, O as ActivityFeed, P as parseInsufficientBalance, Q as SidebarRailHeader, R as RailCollapseToggle, S as PlanCards, T as NewSandboxCard, U as RailSeparator, V as RailHeader, W as RailThemeToggle, X as SidebarRail, Y as SidebarPanelHeader, Z as SidebarRailFooter, _ as HarnessPicker, a as ProcessList, at as SIDEBAR_TOTAL_WIDTH, b as HarnessLogo, c as UsageSummary, d as MetricAreaChart, et as RailTooltip, f as ProfileComparison, g as HARNESS_OPTIONS, h as DashboardLayout, i as NetworkConfig, it as SIDEBAR_RAIL_WIDTH, j as ClusterStatusBar, k as ResourceSnapshot, l as SystemLogsViewer, m as SidebarLayout, n as SnapshotList, nt as SIDEBAR_PANEL_WIDTH, o as PortsList, ot as SidebarProvider, p as ProfileSelector, q as SidebarPanel, r as BackendConfig, rt as SIDEBAR_RAIL_LABELED_WIDTH, s as GitPanel, st as useSidebar, t as PromoBanner, tt as SIDEBAR_MOBILE_WIDTH, u as VariantList, v as chatCapableHarnesses, w as SandboxTable, x as BackendSelector, y as HARNESS_BRAND, z as RailExpandable } from "./dashboard-DwdEQoqK.js";
1
+ import { $ as SidebarRailNav, A as ResourceMeter, B as RailFlyout, C as InvoiceTable, D as canAdminSandbox, E as SandboxCard, F as CreditBalance, G as Sidebar, H as RailModeButton, I as ProfileAvatar, J as SidebarPanelContent, K as SidebarContent, L as RailButton, M as INSUFFICIENT_BALANCE_CODE, N as OutOfCreditsModal, O as ActivityFeed, P as parseInsufficientBalance, Q as SidebarRailHeader, R as RailCollapseToggle, S as PlanCards, T as NewSandboxCard, U as RailSeparator, V as RailHeader, W as RailThemeToggle, X as SidebarRail, Y as SidebarPanelHeader, Z as SidebarRailFooter, _ as HarnessPicker, a as ProcessList, at as SIDEBAR_TOTAL_WIDTH, b as HarnessLogo, c as UsageSummary, d as MetricAreaChart, et as RailTooltip, f as ProfileComparison, g as HARNESS_OPTIONS, h as DashboardLayout, i as NetworkConfig, it as SIDEBAR_RAIL_WIDTH, j as ClusterStatusBar, k as ResourceSnapshot, l as SystemLogsViewer, m as SidebarLayout, n as SnapshotList, nt as SIDEBAR_PANEL_WIDTH, o as PortsList, ot as SidebarProvider, p as ProfileSelector, q as SidebarPanel, r as BackendConfig, rt as SIDEBAR_RAIL_LABELED_WIDTH, s as GitPanel, st as useSidebar, t as PromoBanner, tt as SIDEBAR_MOBILE_WIDTH, u as VariantList, v as chatCapableHarnesses, w as SandboxTable, x as BackendSelector, y as HARNESS_BRAND, z as RailExpandable } from "./dashboard-euyfLroA.js";
2
2
  import { n as canonicalModelId, r as modelBrandFor, t as ModelBrandStack } from "./model-brand-hMyDTUqB.js";
3
3
  import { a as formatPrice, i as PricingPage, n as TemplateCard, o as BillingDashboard, r as UsageChart, t as InfoPanel } from "./info-panel-C9cqDzOL.js";
4
4
  export { ActivityFeed, BackendConfig, BackendSelector, BillingDashboard, ClusterStatusBar, CreditBalance, DashboardLayout, GitPanel, HARNESS_BRAND, HARNESS_OPTIONS, HarnessLogo, HarnessPicker, INSUFFICIENT_BALANCE_CODE, InfoPanel, InvoiceTable, MetricAreaChart, ModelBrandStack, NetworkConfig, NewSandboxCard, OutOfCreditsModal, PlanCards, PortsList, PricingPage, ProcessList, ProfileAvatar, ProfileComparison, ProfileSelector, PromoBanner, RailButton, RailCollapseToggle, RailExpandable, RailFlyout, RailHeader, RailModeButton, RailSeparator, RailThemeToggle, RailTooltip, ResourceMeter, ResourceSnapshot, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, SandboxTable, Sidebar, SidebarContent, SidebarLayout, SidebarPanel, SidebarPanelContent, SidebarPanelHeader, SidebarProvider, SidebarRail, SidebarRailFooter, SidebarRailHeader, SidebarRailNav, SnapshotList, SystemLogsViewer, TemplateCard, UsageChart, UsageSummary, VariantList, canAdminSandbox, canonicalModelId, chatCapableHarnesses, formatPrice, modelBrandFor, parseInsufficientBalance, useSidebar };
package/dist/globals.css CHANGED
@@ -109,6 +109,7 @@
109
109
  --color-accent: hsl(var(--accent));
110
110
  --color-accent-foreground: hsl(var(--accent-foreground));
111
111
  --color-destructive: hsl(var(--destructive));
112
+ --color-destructive-foreground: hsl(var(--destructive-foreground));
112
113
  --color-border: hsl(var(--border));
113
114
  --color-input: hsl(var(--input));
114
115
  --color-ring: hsl(var(--ring));
@@ -1181,6 +1182,9 @@
1181
1182
  .w-32 {
1182
1183
  width: calc(var(--spacing) * 32);
1183
1184
  }
1185
+ .w-36 {
1186
+ width: calc(var(--spacing) * 36);
1187
+ }
1184
1188
  .w-40 {
1185
1189
  width: calc(var(--spacing) * 40);
1186
1190
  }
@@ -3527,6 +3531,9 @@
3527
3531
  .text-destructive {
3528
3532
  color: var(--color-destructive);
3529
3533
  }
3534
+ .text-destructive-foreground {
3535
+ color: var(--color-destructive-foreground);
3536
+ }
3530
3537
  .text-emerald-400 {
3531
3538
  color: var(--color-emerald-400);
3532
3539
  }
@@ -4014,6 +4021,9 @@
4014
4021
  background-color: color-mix(in oklab, var(--color-primary) 20%, transparent);
4015
4022
  }
4016
4023
  }
4024
+ .group-hover\:text-\[var\(--accent-text\)\]:is(:where(.group):hover *) {
4025
+ color: var(--accent-text);
4026
+ }
4017
4027
  .group-hover\:text-foreground:is(:where(.group):hover *) {
4018
4028
  color: var(--color-foreground);
4019
4029
  }
@@ -4891,6 +4901,9 @@
4891
4901
  text-overflow: ellipsis;
4892
4902
  white-space: nowrap;
4893
4903
  }
4904
+ .sm\:p-4 {
4905
+ padding: calc(var(--spacing) * 4);
4906
+ }
4894
4907
  .sm\:p-5 {
4895
4908
  padding: calc(var(--spacing) * 5);
4896
4909
  }
@@ -5045,8 +5058,11 @@
5045
5058
  .xl\:table-cell {
5046
5059
  display: table-cell;
5047
5060
  }
5048
- .xl\:w-52 {
5049
- width: calc(var(--spacing) * 52);
5061
+ .xl\:w-36 {
5062
+ width: calc(var(--spacing) * 36);
5063
+ }
5064
+ .xl\:w-72 {
5065
+ width: calc(var(--spacing) * 72);
5050
5066
  }
5051
5067
  .xl\:grid-cols-2 {
5052
5068
  grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -101,9 +101,13 @@ interface WorkspaceLayoutProps {
101
101
  * full-width row. `always` aligns every pane to the 56px header row.
102
102
  */
103
103
  centerHeaderVisibility?: "always" | "auto";
104
+ /** Retain visited right content across closure and desktop/mobile relocation. */
105
+ keepRightMounted?: boolean;
106
+ /** Closed controls use edge columns by default; overlay preserves center width. */
107
+ collapsedControlsPlacement?: "edge" | "overlay";
104
108
  className?: string;
105
109
  }
106
- declare function WorkspaceLayout({ left, leftHeader, center, centerHeader, centerFooter, right, rightHeader, bottom, bottomHeader, defaultLeftOpen, defaultRightOpen, defaultBottomOpen, defaultLeftWidth, defaultRightWidth, defaultBottomHeight, minLeftWidth, maxLeftWidth, minRightWidth, maxRightWidth, minCenterWidth, minBottomHeight, maxBottomHeight, persistenceKey, resizable, theme, density, leftLabel, rightLabel, bottomLabel, leftOpen: leftOpenProp, onLeftOpenChange, rightOpen: rightOpenProp, onRightOpenChange, keyboardShortcuts, leftCollapsedControl, leftContentClassName, rightContentClassName, centerHeaderVisibility, className }: WorkspaceLayoutProps): import("react").JSX.Element;
110
+ declare function WorkspaceLayout({ left, leftHeader, center, centerHeader, centerFooter, right, rightHeader, bottom, bottomHeader, defaultLeftOpen, defaultRightOpen, defaultBottomOpen, defaultLeftWidth, defaultRightWidth, defaultBottomHeight, minLeftWidth, maxLeftWidth, minRightWidth, maxRightWidth, minCenterWidth, minBottomHeight, maxBottomHeight, persistenceKey, resizable, theme, density, leftLabel, rightLabel, bottomLabel, leftOpen: leftOpenProp, onLeftOpenChange, rightOpen: rightOpenProp, onRightOpenChange, keyboardShortcuts, leftCollapsedControl, leftContentClassName, rightContentClassName, keepRightMounted, collapsedControlsPlacement, centerHeaderVisibility, className }: WorkspaceLayoutProps): import("react").JSX.Element;
107
111
  //#endregion
108
112
  //#region src/workspace/workspace-pane-header.d.ts
109
113
  type WorkspacePaneHeaderProps = HTMLAttributes<HTMLDivElement>;
@@ -0,0 +1,61 @@
1
+ import * as React$1 from "react";
2
+ //#region src/connections/agent-messaging-connection.d.ts
3
+ /** Safe display fields for a host-resolved, authorized private agent target. */
4
+ interface AgentTargetSummary {
5
+ agentLabel: string;
6
+ workspaceLabel?: string;
7
+ }
8
+ /** The host must recheck the member grant before reporting `eligible` or `enrolled`. */
9
+ type AgentEnrollmentViewState = {
10
+ status: "checking";
11
+ } | {
12
+ status: "eligible";
13
+ } | {
14
+ status: "enrolling";
15
+ } | {
16
+ status: "enrolled";
17
+ target: AgentTargetSummary;
18
+ } | {
19
+ status: "forbidden";
20
+ message?: string;
21
+ } | {
22
+ status: "error";
23
+ message?: string;
24
+ };
25
+ /**
26
+ * `ready` means the host verified this application's route for this member.
27
+ * A globally attached provider line alone is not enough to report readiness.
28
+ */
29
+ type SharedMessagingRouteViewState = {
30
+ status: "checking";
31
+ } | {
32
+ status: "pending";
33
+ message?: string;
34
+ } | {
35
+ status: "ready";
36
+ channelLabel: string;
37
+ destinationLabel: string;
38
+ } | {
39
+ status: "forbidden";
40
+ message?: string;
41
+ } | {
42
+ status: "unavailable";
43
+ message?: string;
44
+ } | {
45
+ status: "error";
46
+ message?: string;
47
+ };
48
+ interface AgentMessagingConnectionProps {
49
+ enrollment: AgentEnrollmentViewState;
50
+ route: SharedMessagingRouteViewState;
51
+ /** The host performs authenticated, idempotent enrollment and reloads the result. */
52
+ onEnroll: () => void | Promise<void>;
53
+ /** Open the host's authorized conversation. Shown only when both states are ready. */
54
+ onOpenMessages?: () => void;
55
+ /** Recheck a failed host read. This does not enroll or mutate a provider route. */
56
+ onRetry?: () => void | Promise<void>;
57
+ className?: string;
58
+ }
59
+ declare function AgentMessagingConnection({ enrollment, route, onEnroll, onOpenMessages, onRetry, className }: AgentMessagingConnectionProps): React$1.JSX.Element;
60
+ //#endregion
61
+ export { SharedMessagingRouteViewState as a, AgentTargetSummary as i, AgentMessagingConnection as n, AgentMessagingConnectionProps as r, AgentEnrollmentViewState as t };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { a as LoginLayout, c as UserMenu, d as TangleLoginButtonProps, i as GitHubLoginButtonProps, l as UserMenuProps, n as AuthHeaderProps, o as LoginLayoutProps, r as GitHubLoginButton, s as SessionUser, t as AuthHeader, u as TangleLoginButton } from "./index-DvmZLMT1.js";
2
2
  import { A as modelProvider, B as ReasoningLevelOption, C as ArtifactAgentDockProps, D as ArtifactKind, E as ArtifactDockStreamEvent, F as AgentProfilePicker, H as ReasoningLevelPickerProps, I as AgentProfilePickerProps, L as DEFAULT_REASONING_LEVEL_OPTIONS, M as AgentProfileCapability, N as AgentProfileDraft, O as ArtifactScope, P as AgentProfileOption, R as HARNESS_REASONING_OPTIONS, S as ArtifactAgentDock, T as ArtifactDockMessage, V as ReasoningLevelPicker, _ as MessageRole, a as AgentTimelineMessageItem, b as UserMessage, c as AgentTimelineTone, d as ChatContainer, f as ChatContainerProps, g as MessageListProps, h as MessageList, i as AgentTimelineItem, j as snapHarnessToModel, k as createFetchTransport, l as AgentTimelineToolGroupItem, m as ChatMessageProps, n as AgentTimelineArtifactItem, o as AgentTimelineProps, p as ChatMessage, r as AgentTimelineCustomItem, s as AgentTimelineStatusItem, t as AgentTimeline, u as AgentTimelineToolItem, v as ThinkingIndicator, w as ArtifactAgentDockTransport, x as UserMessageProps, y as ThinkingIndicatorProps, z as ReasoningLevel } from "./index-DiyLLZuJ.js";
3
+ import { a as SharedMessagingRouteViewState, i as AgentTargetSummary, n as AgentMessagingConnection, r as AgentMessagingConnectionProps, t as AgentEnrollmentViewState } from "./index-ClRHbsoX.js";
3
4
  import { $ as HARNESS_BRAND, $t as useSidebar, A as Variant, An as SidebarProps, At as ActivityItem, B as ProfileComparison, Bn as ThemeMode, Bt as InsufficientBalance, C as GitPanelProps, Cn as SidebarContentProps, Ct as SandboxCardData, D as UsageSummaryProps, Dn as SidebarPanelHeader, Dt as canAdminSandbox, E as UsageSummaryData, En as SidebarPanelContentProps, Et as TeamRole, F as MetricAreaChart, Fn as SidebarRailHeaderProps, Ft as ResourceMeterProps, G as SidebarLayoutFlyoutItem, Gt as CreditBalanceProps, H as ProfileSelector, Ht as OutOfCreditsModalProps, I as MetricAreaChartProps, In as SidebarRailNav, It as ClusterStatusBar, J as DashboardLayout, Jt as SIDEBAR_RAIL_LABELED_WIDTH, K as SidebarLayoutNavItem, Kt as SIDEBAR_MOBILE_WIDTH, L as MetricChartPoint, Ln as SidebarRailNavProps, Lt as ClusterStatusBarProps, M as VariantListProps, Mn as SidebarRailFooter, Mt as ResourceSnapshotItem, N as VariantOutcome, Nn as SidebarRailFooterProps, Nt as ResourceSnapshotProps, O as SystemLogsViewer, On as SidebarPanelHeaderProps, Ot as ActivityFeed, P as VariantStatus, Pn as SidebarRailHeader, Pt as ResourceMeter, Q as ProductVariant, Qt as SidebarProviderProps, R as MetricChartTone, Rn as SidebarRailProps, Rt as ClusterStatusItem, S as GitPanel, Sn as SidebarContent, St as SandboxCard, T as UsageSummary, Tn as SidebarPanelContent, Tt as SandboxStatus, U as ProfileSelectorProps, Ut as parseInsufficientBalance, V as ProfileComparisonProps, Vt as OutOfCreditsModal, W as SidebarLayout, Wt as CreditBalance, X as DashboardUser, Xt as SIDEBAR_TOTAL_WIDTH, Y as DashboardLayoutProps, Yt as SIDEBAR_RAIL_WIDTH, Z as NavItem, Zt as SidebarProvider, _ as ProcessListProps, _n as RailModeButtonProps, _t as InvoiceTableProps, a as SnapshotInfo, an as RailButton, at as HarnessPickerProps, b as PortsListProps, bn as RailThemeToggle, bt as NewSandboxCard, c as BackendConfig, cn as RailCollapseToggleProps, ct as Backend, d as McpServer, dn as RailExpandableSubItem, dt as PlanCardData, en as RailTooltip, et as HarnessBrand, f as NetworkConfig, fn as RailFlyout, ft as PlanCards, g as ProcessList, gn as RailModeButton, gt as InvoiceTable, h as ProcessInfo, hn as RailHeaderProps, ht as Invoice, i as PromoBannerProps, in as ProfileAvatarProps, it as HarnessPicker, j as VariantList, jn as SidebarRail, jt as ResourceSnapshot, k as SystemLogsViewerProps, kn as SidebarPanelProps, kt as ActivityFeedProps, l as BackendConfigProps, ln as RailExpandable, lt as BackendSelector, m as NetworkConfigProps, mn as RailHeader, mt as PlanFeature, n as InfoPanelProps, nn as AppearanceController, nt as HarnessLogoProps, o as SnapshotList, on as RailButtonProps, ot as HarnessType, p as NetworkConfigData, pn as RailFlyoutProps, pt as PlanCardsProps, q as SidebarLayoutProps, qt as SIDEBAR_PANEL_WIDTH, r as PromoBanner, rn as ProfileAvatar, rt as HARNESS_OPTIONS, s as SnapshotListProps, sn as RailCollapseToggle, st as chatCapableHarnesses, t as InfoPanel, tn as RailTooltipProps, tt as HarnessLogo, u as BackendStatusData, un as RailExpandableProps, ut as BackendSelectorProps, v as ExposedPort, vn as RailSeparator, vt as SandboxTable, w as GitStatusData, wn as SidebarPanel, wt as SandboxCardProps, x as GitCommitData, xn as Sidebar, xt as NewSandboxCardProps, y as PortsList, yn as RailSeparatorProps, yt as SandboxTableProps, z as Profile, zn as SidebarUser, zt as INSUFFICIENT_BALANCE_CODE } from "./index-CGMpKgB8.js";
4
5
  import { a as modelBrandFor, i as canonicalModelId, n as ModelBrandStack, r as ModelInfo, t as ModelBrandIdentity } from "./model-brand-B9A4H9pJ.js";
5
6
  import { a as UsageChartProps, c as PricingPageProps, d as BillingBalance, f as BillingDashboard, h as BillingUsage, i as UsageChart, l as PricingTier, m as BillingSubscription, n as TemplateCardData, o as UsageDataPoint, p as BillingDashboardProps, r as TemplateCardProps, s as PricingPage, t as TemplateCard, u as formatPrice } from "./template-card-L-4gmjx2.js";
@@ -9,7 +10,7 @@ import { t as Session } from "./sidecar-DgH_vQ6m.js";
9
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";
10
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";
11
12
  import { $ as InputProps, $t as ToastProvider, A as DropZoneProps, At as Table, B as DropdownMenuSeparator, Bt as TabsList, C as DialogFooter, Ct as SkeletonTable, D as DialogTitle, Dt as StatusPillProps, E as DialogPortal, Et as StatusPill, F as DropdownMenuItem, Ft as TableHead, G as DropdownMenuTrigger, H as DropdownMenuSub, I as DropdownMenuLabel, It as TableHeader, J as FilterField, Jt as Textarea, K as EmptyState, Kt as TextShimmer, L as DropdownMenuPortal, Lt as TableRow, M as DropdownMenuCheckboxItem, Mt as TableCaption, N as DropdownMenuContent, Nt as TableCell, O as DialogTrigger, Ot as StatusTone, P as DropdownMenuGroup, Pt as TableFooter, Q as Input, Qt as ToastContainer, R as DropdownMenuRadioGroup, Rt as Tabs, S as DialogDescription, St as SkeletonCard, T as DialogOverlay, Tt as StatCardProps, U as DropdownMenuSubContent, Ut as TerminalDisplay, V as DropdownMenuShortcut, Vt as TabsTrigger, W as DropdownMenuSubTrigger, X as InlineCode, Xt as ThemeToggle, Y as FilterFieldProps, Yt as TextareaProps, Z as InlineCodeProps, Zt as Toast, _ as CodeBlockProps, _t as SelectTrigger, a as AvatarImage, an as badgeVariants, at as Progress, b as DialogClose, bn as TangleKnot, bt as SidebarDropZoneProps, c as Button, cn as useToast, ct as SegmentedControlProps, d as CardContent, dt as SelectGroup, en as Toolbar, et as Label, f as CardDescription, ft as SelectItem, g as CodeBlock, gt as SelectSeparator, h as CardTitle, ht as SelectScrollUpButton, i as AvatarFallback, in as UploadProgressProps, it as MetricStripProps, j as DropdownMenu, jt as TableBody, k as DropZone, kt as Switch, l as ButtonProps, lt as Select, m as CardHeader, mt as SelectScrollDownButton, nn as UploadFile, nt as MetricProps, o as Badge, on as buttonVariants, ot as SegmentedControl, p as CardFooter, pt as SelectLabel, q as EmptyStateProps, qt as TextShimmerProps, r as Avatar, rn as UploadProgress, rt as MetricStrip, s as BadgeProps, sn as useTheme, st as SegmentedControlOption, tn as ToolbarProps, tt as Metric, u as Card, ut as SelectContent, v as CopyButton, vn as Logo, vt as SelectValue, w as DialogHeader, wt as StatCard, x as DialogContent, xt as Skeleton, y as Dialog, yn as LogoProps, yt as SidebarDropZone, z as DropdownMenuRadioItem, zt as TabsContent } from "./index-PRM636Ex.js";
12
- import { $ as TerminalProps, A as ShellShouldRevalidateArgs, B as SessionSidebarLink, C as SandboxWorkbenchLayoutOptions, D as SandboxWorkbenchSessionProps, E as SandboxWorkbenchProps, F as SessionSidebar, G as SessionOptimisticController, H as SessionSidebarVariant, I as SessionSidebarBadge, J as useOptimisticSessionItems, K as UseOptimisticSessionItemsOptions, L as SessionSidebarFilter, M as createShellShouldRevalidate, N as shellShouldRevalidate, O as SessionActivityMonitor, P as formatRelativeAge, Q as TerminalPanel, R as SessionSidebarGroupBy, S as SandboxWorkbenchFileArtifact, T as SandboxWorkbenchOpenUIArtifact, U as SESSION_CREATED_EVENT, V as SessionSidebarProps, W as SessionCreatedDetail, X as RuntimePaneProps, Y as RuntimePane, Z as TerminalLine, _ as FormAudit, a as ApprovalQueue, at as StatusBannerProps, b as SandboxWorkbenchArtifact, c as CalendarView, ct as WorkspacePaneHeader, d as TaskBoardColumn, dt as WorkspaceLayoutProps, et as ContextBadge, f as TaskBoardItem, g as AuditResultsProps, h as AuditResults, i as ApprovalItem, it as StatusBanner, j as ShellShouldRevalidateOptions, k as SessionActivityMonitorProps, l as CalendarViewProps, lt as WorkspacePaneHeaderProps, m as AuditCheck, n as ArtifactPaneProps, nt as StatusBarProps, o as ApprovalQueueProps, ot as DirectoryPane, p as TaskBoardProps, q as dispatchSessionCreated, r as ApprovalConfidenceStat, rt as BannerType, s as CalendarEvent, st as DirectoryPaneProps, t as ArtifactPane, tt as StatusBar, u as TaskBoard, ut as WorkspaceLayout, v as AgentWorkbench, w as SandboxWorkbenchMarkdownArtifact, x as SandboxWorkbenchCustomArtifact, y as SandboxWorkbench, z as SessionSidebarItem } from "./index-iDiLnSoo.js";
13
+ import { $ as TerminalProps, A as ShellShouldRevalidateArgs, B as SessionSidebarLink, C as SandboxWorkbenchLayoutOptions, D as SandboxWorkbenchSessionProps, E as SandboxWorkbenchProps, F as SessionSidebar, G as SessionOptimisticController, H as SessionSidebarVariant, I as SessionSidebarBadge, J as useOptimisticSessionItems, K as UseOptimisticSessionItemsOptions, L as SessionSidebarFilter, M as createShellShouldRevalidate, N as shellShouldRevalidate, O as SessionActivityMonitor, P as formatRelativeAge, Q as TerminalPanel, R as SessionSidebarGroupBy, S as SandboxWorkbenchFileArtifact, T as SandboxWorkbenchOpenUIArtifact, U as SESSION_CREATED_EVENT, V as SessionSidebarProps, W as SessionCreatedDetail, X as RuntimePaneProps, Y as RuntimePane, Z as TerminalLine, _ as FormAudit, a as ApprovalQueue, at as StatusBannerProps, b as SandboxWorkbenchArtifact, c as CalendarView, ct as WorkspacePaneHeader, d as TaskBoardColumn, dt as WorkspaceLayoutProps, et as ContextBadge, f as TaskBoardItem, g as AuditResultsProps, h as AuditResults, i as ApprovalItem, it as StatusBanner, j as ShellShouldRevalidateOptions, k as SessionActivityMonitorProps, l as CalendarViewProps, lt as WorkspacePaneHeaderProps, m as AuditCheck, n as ArtifactPaneProps, nt as StatusBarProps, o as ApprovalQueueProps, ot as DirectoryPane, p as TaskBoardProps, q as dispatchSessionCreated, r as ApprovalConfidenceStat, rt as BannerType, s as CalendarEvent, st as DirectoryPaneProps, t as ArtifactPane, tt as StatusBar, u as TaskBoard, ut as WorkspaceLayout, v as AgentWorkbench, w as SandboxWorkbenchMarkdownArtifact, x as SandboxWorkbenchCustomArtifact, y as SandboxWorkbench, z as SessionSidebarItem } from "./index-CcbhfDa-.js";
13
14
  import { A as SandboxArtifactTerminal, C as ChangesPane, D as ChangesPaneProps, E as ChangedFile, O as SandboxArtifact, S as PillTabsProps, T as ArtifactView, _ as DiffStats, a as PreviewView, b as PillTabItem, c as DiffViewProps, d as FileBreadcrumb, f as FileBreadcrumbProps, g as PanelHeaderProps, h as PanelHeader, i as resolveLanguage, k as SandboxArtifactPaneProps, l as CodeView, m as GitStatusBadge, n as CodeSurface, o as PreviewViewProps, p as DiffStatsBadge, r as CodeSurfaceProps, s as DiffView, t as BRAND_PRISM_THEME, u as CodeViewProps, v as buildUnifiedPatch, w as SandboxArtifactPane, x as PillTabs, y as computeDiffStats } from "./index-z_zNuZHm.js";
14
15
  import { a as PreviewReadiness, i as PreviewAccess, n as EmbeddedAppView, r as EmbeddedAppViewProps, t as EmbeddedApp } from "./embedded-app-view-B_vMTtJn.js";
15
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";
@@ -20,4 +21,4 @@ import { TOOL_CATEGORY_ICONS, cn, copyText, focusField, focusFieldInvalid, focus
20
21
  import { TerminalCursor as TerminalDisplayCursor, TerminalInput as TerminalDisplayInput, TerminalLine as TerminalDisplayLine } from "@tangle-network/ui/primitives";
21
22
  import { CodeBlock as CodeBlockDisplay, Markdown, MarkdownProps } from "@tangle-network/ui/markdown";
22
23
  import { CommandPreview, CommandPreviewProps, DiffPreview, DiffPreviewProps, GlobResultsPreview, GlobResultsPreviewProps, GrepResultsPreview, GrepResultsPreviewProps, QuestionPreview, QuestionPreviewProps, WebSearchPreview, WebSearchPreviewProps, WriteFilePreview, WriteFilePreviewProps } from "@tangle-network/ui/tool-previews";
23
- export { ActivityFeed, type ActivityFeedProps, type ActivityItem, type AgentBranding, type AgentProfileCapability, type AgentProfileDraft, type AgentProfileOption, AgentProfilePicker, type AgentProfilePickerProps, type AgentStreamEvent, AgentTimeline, type AgentTimelineArtifactItem, type AgentTimelineCustomItem, type AgentTimelineItem, type AgentTimelineMessageItem, type AgentTimelineProps, type AgentTimelineStatusItem, type AgentTimelineTone, type AgentTimelineToolGroupItem, type AgentTimelineToolItem, AgentWorkbench, 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, type AuditCheck, AuditResults, type AuditResultsProps, AuthHeader, type AuthHeaderProps, type AuthUser, type AutomationStreamEvent, Avatar, AvatarFallback, AvatarImage, BRAND_PRISM_THEME, type Backend, BackendConfig, type BackendConfigProps, BackendSelector, type BackendSelectorProps, type BackendStatusData, Badge, type BadgeProps, type BannerType, type BeginAssistantMessageOptions, type BillingBalance, BillingDashboard, type BillingDashboardProps, type BillingSubscription, type BillingUsage, type BotStreamEvent, Button, type ButtonProps, CSV_PREVIEW_ROW_LIMIT, type CalendarEvent, CalendarView, type CalendarViewProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type ChangedFile, ChangesPane, type ChangesPaneProps, ChatContainer, type ChatContainerProps, ChatMessage, type ChatMessageProps, ChatSession, ClusterStatusBar, type ClusterStatusBarProps, type ClusterStatusItem, CodeBlock, CodeBlockDisplay, type CodeBlockProps, CodeSurface, type CodeSurfaceProps, CodeView, type CodeViewProps, CommandPreview, type CommandPreviewProps, type CompleteAssistantMessageOptions, type ContextBadge, CopyButton, CreditBalance, type CreditBalanceProps, type CustomToolRenderer, DEFAULT_REASONING_LEVEL_OPTIONS, DashboardLayout, type DashboardLayoutProps, type Profile as DashboardProfile, 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, type FileFormat, type FileNode, FilePreview, type FilePreviewKind, type FilePreviewProps, type FileTabData, FileTabs, type FileTabsProps, FileTree, type FileTreeProps, type FileTreeVisibilityOptions, FilterField, type FilterFieldProps, type FinalTextPart, type FormAudit, 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, INSUFFICIENT_BALANCE_CODE, InfoPanel, type InfoPanelProps, InlineCode, type InlineCodeProps, InlineThinkingItem, type InlineThinkingItemProps, InlineToolItem, type InlineToolItemProps, Input, type InputProps, type InsufficientBalance, type Invoice, InvoiceTable, type InvoiceTableProps, Label, LiveDuration, LoginLayout, type LoginLayoutProps, Logo, type LogoProps, Markdown, type MarkdownProps, type McpServer, 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, NetworkConfig, type NetworkConfigData, type NetworkConfigProps, 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, PanelHeader, type PanelHeaderProps, type PillTabItem, PillTabs, type PillTabsProps, type PlanCardData, PlanCards, type PlanCardsProps, type PlanFeature, 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, ProfileComparison, type ProfileComparisonProps, ProfileSelector, type ProfileSelectorProps, Progress, PromoBanner, type PromoBannerProps, QuestionPreview, type QuestionPreviewProps, RailButton, type RailButtonProps, RailCollapseToggle, type RailCollapseToggleProps, RailExpandable, type RailExpandableProps, type RailExpandableSubItem, RailFlyout, type RailFlyoutProps, RailHeader, type RailHeaderProps, RailModeButton, type RailModeButtonProps, RailSeparator, type RailSeparatorProps, RailThemeToggle, 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, 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, type SandboxStatus, 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, SegmentedControl, type SegmentedControlOption, type SegmentedControlProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Session, SessionActivityMonitor, type SessionActivityMonitorProps, 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 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, SidebarRailHeader, type SidebarRailHeaderProps, SidebarRailNav, type SidebarRailNavProps, type SidebarRailProps, type SidebarUser, type SidecarAuth, type SidecarMetricsPayload, Skeleton, SkeletonCard, SkeletonTable, SnapshotList, type SnapshotListProps, StatCard, type StatCardProps, StatusBanner, type StatusBannerProps, StatusBar, type StatusBarProps, StatusPill, type StatusPillProps, type StatusTone, Switch, SystemLogsViewer, type SystemLogsViewerProps, TOOL_CATEGORY_ICONS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, 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 ToolCallData, ToolCallFeed, type ToolCallFeedProps, type ToolCallStatus, type ToolCallType, type ToolCategory, type ToolDisplayMetadata, type ToolPart, type ToolState, type ToolStatus, type ToolTime, Toolbar, type ToolbarProps, 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, type Variant, VariantList, type VariantListProps, type VariantOutcome, type VariantStatus, WebSearchPreview, type WebSearchPreviewProps, WorkspaceLayout, type WorkspaceLayoutProps, WorkspacePaneHeader, type WorkspacePaneHeaderProps, WriteFilePreview, type WriteFilePreviewProps, activeSessionsAtom, addMessage, addParts, badgeVariants, buildUnifiedPatch, bumpActiveSessionActivity, buttonVariants, canAdminSandbox, canonicalModelId, chatCapableHarnesses, clearChat, cn, computeDiffStats, connectSession, copyText, createAuthFetcher, createFetchTransport, createShellShouldRevalidate, detectFileFormat, disconnectSession, dispatchSessionCreated, fileExtension, filterFileTree, findUnsupportedOpenUINode, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatDuration, formatPrice, formatRelativeAge, formatUptime, getActiveSession, getAllActiveSessions, getAllProjectActivity, getCodeLanguage, getFormatLabel, getSessionsByActivity, getSessionsForNavbar, getSessionsForProject, getSyntaxLanguage, getToolCategory, getToolDisplayMetadata, getToolErrorText, getTotalRunningSessionCount, hasBackgroundRunningSessions, isStreamingAtom, messagesAtom, modelBrandFor, modelProvider, parseCsv, parseInsufficientBalance, parseToolEvent, partMapAtom, registerActiveSession, resetActiveSessions, resolveFilePreviewKind, resolveLanguage, sessionAtom, setActiveSessionAttention, setActiveSessionConnection, setActiveSessionError, setActiveSessionRunning, setForegroundActiveSession, shellShouldRevalidate, snapHarnessToModel, timeAgo, 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 };
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, AgentWorkbench, 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, type AuditCheck, AuditResults, type AuditResultsProps, AuthHeader, type AuthHeaderProps, type AuthUser, type AutomationStreamEvent, Avatar, AvatarFallback, AvatarImage, BRAND_PRISM_THEME, type Backend, BackendConfig, type BackendConfigProps, BackendSelector, type BackendSelectorProps, type BackendStatusData, Badge, type BadgeProps, type BannerType, type BeginAssistantMessageOptions, type BillingBalance, BillingDashboard, type BillingDashboardProps, type BillingSubscription, type BillingUsage, type BotStreamEvent, Button, type ButtonProps, CSV_PREVIEW_ROW_LIMIT, type CalendarEvent, CalendarView, type CalendarViewProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type ChangedFile, ChangesPane, type ChangesPaneProps, ChatContainer, type ChatContainerProps, ChatMessage, type ChatMessageProps, ChatSession, ClusterStatusBar, type ClusterStatusBarProps, type ClusterStatusItem, CodeBlock, CodeBlockDisplay, type CodeBlockProps, CodeSurface, type CodeSurfaceProps, CodeView, type CodeViewProps, CommandPreview, type CommandPreviewProps, type CompleteAssistantMessageOptions, type ContextBadge, CopyButton, CreditBalance, type CreditBalanceProps, type CustomToolRenderer, DEFAULT_REASONING_LEVEL_OPTIONS, DashboardLayout, type DashboardLayoutProps, type Profile as DashboardProfile, 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, type FileFormat, type FileNode, FilePreview, type FilePreviewKind, type FilePreviewProps, type FileTabData, FileTabs, type FileTabsProps, FileTree, type FileTreeProps, type FileTreeVisibilityOptions, FilterField, type FilterFieldProps, type FinalTextPart, type FormAudit, 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, INSUFFICIENT_BALANCE_CODE, InfoPanel, type InfoPanelProps, InlineCode, type InlineCodeProps, InlineThinkingItem, type InlineThinkingItemProps, InlineToolItem, type InlineToolItemProps, Input, type InputProps, type InsufficientBalance, type Invoice, InvoiceTable, type InvoiceTableProps, Label, LiveDuration, LoginLayout, type LoginLayoutProps, Logo, type LogoProps, Markdown, type MarkdownProps, type McpServer, 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, NetworkConfig, type NetworkConfigData, type NetworkConfigProps, 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, PanelHeader, type PanelHeaderProps, type PillTabItem, PillTabs, type PillTabsProps, type PlanCardData, PlanCards, type PlanCardsProps, type PlanFeature, 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, ProfileComparison, type ProfileComparisonProps, ProfileSelector, type ProfileSelectorProps, Progress, PromoBanner, type PromoBannerProps, QuestionPreview, type QuestionPreviewProps, RailButton, type RailButtonProps, RailCollapseToggle, type RailCollapseToggleProps, RailExpandable, type RailExpandableProps, type RailExpandableSubItem, RailFlyout, type RailFlyoutProps, RailHeader, type RailHeaderProps, RailModeButton, type RailModeButtonProps, RailSeparator, type RailSeparatorProps, RailThemeToggle, 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, 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, type SandboxStatus, 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, SegmentedControl, type SegmentedControlOption, type SegmentedControlProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Session, SessionActivityMonitor, type SessionActivityMonitorProps, 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, 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, SidebarRailHeader, type SidebarRailHeaderProps, SidebarRailNav, type SidebarRailNavProps, type SidebarRailProps, type SidebarUser, type SidecarAuth, type SidecarMetricsPayload, Skeleton, SkeletonCard, SkeletonTable, SnapshotList, type SnapshotListProps, StatCard, type StatCardProps, StatusBanner, type StatusBannerProps, StatusBar, type StatusBarProps, StatusPill, type StatusPillProps, type StatusTone, Switch, SystemLogsViewer, type SystemLogsViewerProps, TOOL_CATEGORY_ICONS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, 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 ToolCallData, ToolCallFeed, type ToolCallFeedProps, type ToolCallStatus, type ToolCallType, type ToolCategory, type ToolDisplayMetadata, type ToolPart, type ToolState, type ToolStatus, type ToolTime, Toolbar, type ToolbarProps, 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, type Variant, VariantList, type VariantListProps, type VariantOutcome, type VariantStatus, WebSearchPreview, type WebSearchPreviewProps, WorkspaceLayout, type WorkspaceLayoutProps, WorkspacePaneHeader, type WorkspacePaneHeaderProps, WriteFilePreview, type WriteFilePreviewProps, activeSessionsAtom, addMessage, addParts, badgeVariants, buildUnifiedPatch, bumpActiveSessionActivity, buttonVariants, canAdminSandbox, canonicalModelId, chatCapableHarnesses, clearChat, cn, computeDiffStats, connectSession, copyText, createAuthFetcher, createFetchTransport, createShellShouldRevalidate, detectFileFormat, disconnectSession, dispatchSessionCreated, fileExtension, filterFileTree, findUnsupportedOpenUINode, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatDuration, formatPrice, formatRelativeAge, formatUptime, getActiveSession, getAllActiveSessions, getAllProjectActivity, getCodeLanguage, getFormatLabel, getSessionsByActivity, getSessionsForNavbar, getSessionsForProject, getSyntaxLanguage, getToolCategory, getToolDisplayMetadata, getToolErrorText, getTotalRunningSessionCount, hasBackgroundRunningSessions, isStreamingAtom, messagesAtom, modelBrandFor, modelProvider, parseCsv, parseInsufficientBalance, parseToolEvent, partMapAtom, registerActiveSession, resetActiveSessions, resolveFilePreviewKind, resolveLanguage, sessionAtom, setActiveSessionAttention, setActiveSessionConnection, setActiveSessionError, setActiveSessionRunning, setForegroundActiveSession, shellShouldRevalidate, snapHarnessToModel, timeAgo, 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,17 +1,18 @@
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-DXTqeu9h.js";
1
+ import { a as computeDiffStats, c as BRAND_PRISM_THEME, d as DiffStatsBadge, f as GitStatusBadge, i as buildUnifiedPatch, l as CodeSurface, m as PillTabs, n as SandboxArtifactPane, o as CodeView, p as PanelHeader, r as DiffView, s as FileBreadcrumb, t as ChangesPane, u as resolveLanguage } from "./workbench-B1UltdHQ.js";
2
2
  import { $ as SelectItem, A as DropdownMenuItem, At as Textarea, B as DropdownMenuTrigger, C as DialogTitle, Ct as TabsList, D as DropdownMenuCheckboxItem, E as DropdownMenu, Et as TerminalDisplay, F as DropdownMenuSeparator, Ft as UploadProgress, G as Label, Gt as TangleKnot, H as FilterField, I as DropdownMenuShortcut, It as badgeVariants, J as Progress, K as Metric, L as DropdownMenuSub, Lt as buttonVariants, M as DropdownMenuPortal, Mt as ToastContainer, N as DropdownMenuRadioGroup, Nt as ToastProvider, O as DropdownMenuContent, P as DropdownMenuRadioItem, Pt as Toolbar, Q as SelectGroup, R as DropdownMenuSubContent, Rt as useTheme, S as DialogPortal, St as TabsContent, T as DropZone, U as InlineCode, V as EmptyState, W as Input, Wt as Logo, X as Select, Y as SegmentedControl, Z as SelectContent, _ as DialogContent, _t as TableFooter, a as Badge, at as SelectValue, b as DialogHeader, bt as TableRow, c as CardContent, ct as SkeletonCard, d as CardHeader, dt as StatusPill, et as SelectLabel, f as CardTitle, ft as Switch, g as DialogClose, gt as TableCell, h as Dialog, ht as TableCaption, i as AvatarImage, it as SelectTrigger, j as DropdownMenuLabel, jt as ThemeToggle, k as DropdownMenuGroup, kt as TextShimmer, l as CardDescription, lt as SkeletonTable, m as CopyButton, mt as TableBody, n as Avatar, nt as SelectScrollUpButton, o as Button, ot as SidebarDropZone, p as CodeBlock, pt as Table, q as MetricStrip, r as AvatarFallback, rt as SelectSeparator, s as Card, st as Skeleton, tt as SelectScrollDownButton, u as CardFooter, ut as StatCard, v as DialogDescription, vt as TableHead, w as DialogTrigger, wt as TabsTrigger, x as DialogOverlay, xt as Tabs, y as DialogFooter, yt as TableHeader, z as DropdownMenuSubTrigger, zt as useToast } from "./primitives-Dh1vG6J3.js";
3
3
  import { t as WorkspacePaneHeader } from "./workspace-pane-header-Bg1cCcHX.js";
4
- import { _ as TerminalPanel, a as AuditResults, b as DirectoryPane, c as SessionActivityMonitor, d as SessionSidebar, f as SESSION_CREATED_EVENT, g as RuntimePane, h as formatRelativeAge, i as TaskBoard, l as createShellShouldRevalidate, m as useOptimisticSessionItems, n as ApprovalQueue, o as AgentWorkbench, p as dispatchSessionCreated, r as CalendarView, s as SandboxWorkbench, t as ArtifactPane, u as shellShouldRevalidate, v as StatusBar, x as WorkspaceLayout, y as StatusBanner } from "./workspace-Pq-koOTW.js";
5
- import { $ as SidebarRailNav, A as ResourceMeter, B as RailFlyout, C as InvoiceTable, D as canAdminSandbox, E as SandboxCard, F as CreditBalance, G as Sidebar, H as RailModeButton, I as ProfileAvatar, J as SidebarPanelContent, K as SidebarContent, L as RailButton, M as INSUFFICIENT_BALANCE_CODE, N as OutOfCreditsModal, O as ActivityFeed, P as parseInsufficientBalance, Q as SidebarRailHeader, R as RailCollapseToggle, S as PlanCards, T as NewSandboxCard, U as RailSeparator, V as RailHeader, W as RailThemeToggle, X as SidebarRail, Y as SidebarPanelHeader, Z as SidebarRailFooter, _ as HarnessPicker, a as ProcessList, at as SIDEBAR_TOTAL_WIDTH, b as HarnessLogo, c as UsageSummary, d as MetricAreaChart, et as RailTooltip, f as ProfileComparison, g as HARNESS_OPTIONS, h as DashboardLayout, i as NetworkConfig, it as SIDEBAR_RAIL_WIDTH, j as ClusterStatusBar, k as ResourceSnapshot, l as SystemLogsViewer, m as SidebarLayout, n as SnapshotList, nt as SIDEBAR_PANEL_WIDTH, o as PortsList, ot as SidebarProvider, p as ProfileSelector, q as SidebarPanel, r as BackendConfig, rt as SIDEBAR_RAIL_LABELED_WIDTH, s as GitPanel, st as useSidebar, t as PromoBanner, tt as SIDEBAR_MOBILE_WIDTH, u as VariantList, v as chatCapableHarnesses, w as SandboxTable, x as BackendSelector, y as HARNESS_BRAND, z as RailExpandable } from "./dashboard-DwdEQoqK.js";
4
+ import { _ as TerminalPanel, a as AuditResults, b as DirectoryPane, c as SessionActivityMonitor, d as SessionSidebar, f as SESSION_CREATED_EVENT, g as RuntimePane, h as formatRelativeAge, i as TaskBoard, l as createShellShouldRevalidate, m as useOptimisticSessionItems, n as ApprovalQueue, o as AgentWorkbench, p as dispatchSessionCreated, r as CalendarView, s as SandboxWorkbench, t as ArtifactPane, u as shellShouldRevalidate, v as StatusBar, x as WorkspaceLayout, y as StatusBanner } from "./workspace-fIHRXmWT.js";
5
+ import { $ as SidebarRailNav, A as ResourceMeter, B as RailFlyout, C as InvoiceTable, D as canAdminSandbox, E as SandboxCard, F as CreditBalance, G as Sidebar, H as RailModeButton, I as ProfileAvatar, J as SidebarPanelContent, K as SidebarContent, L as RailButton, M as INSUFFICIENT_BALANCE_CODE, N as OutOfCreditsModal, O as ActivityFeed, P as parseInsufficientBalance, Q as SidebarRailHeader, R as RailCollapseToggle, S as PlanCards, T as NewSandboxCard, U as RailSeparator, V as RailHeader, W as RailThemeToggle, X as SidebarRail, Y as SidebarPanelHeader, Z as SidebarRailFooter, _ as HarnessPicker, a as ProcessList, at as SIDEBAR_TOTAL_WIDTH, b as HarnessLogo, c as UsageSummary, d as MetricAreaChart, et as RailTooltip, f as ProfileComparison, g as HARNESS_OPTIONS, h as DashboardLayout, i as NetworkConfig, it as SIDEBAR_RAIL_WIDTH, j as ClusterStatusBar, k as ResourceSnapshot, l as SystemLogsViewer, m as SidebarLayout, n as SnapshotList, nt as SIDEBAR_PANEL_WIDTH, o as PortsList, ot as SidebarProvider, p as ProfileSelector, q as SidebarPanel, r as BackendConfig, rt as SIDEBAR_RAIL_LABELED_WIDTH, s as GitPanel, st as useSidebar, t as PromoBanner, tt as SIDEBAR_MOBILE_WIDTH, u as VariantList, v as chatCapableHarnesses, w as SandboxTable, x as BackendSelector, y as HARNESS_BRAND, z as RailExpandable } from "./dashboard-euyfLroA.js";
6
6
  import { n as canonicalModelId, r as modelBrandFor, t as ModelBrandStack } from "./model-brand-hMyDTUqB.js";
7
7
  import { a as formatPrice, i as PricingPage, n as TemplateCard, o as BillingDashboard, r as UsageChart, t as InfoPanel } from "./info-panel-C9cqDzOL.js";
8
8
  import { t as usePtySession } from "./use-pty-session-Bf4hBLXJ.js";
9
9
  import { CSV_PREVIEW_ROW_LIMIT, FileArtifactPane, FilePreview, FileTabs, FileTree, RichFileTree, detectFileFormat, fileExtension, filterFileTree, getCodeLanguage, getFormatLabel, getSyntaxLanguage, parseCsv, resolveFilePreviewKind } from "./files.js";
10
10
  import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-CoiS_kfY.js";
11
11
  import { OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, OpenUIArtifactRenderer, findUnsupportedOpenUINode, validateOpenUIJsonArtifact, validateOpenUIJsonNode } from "./openui.js";
12
- import { a as ThinkingIndicator, c as createFetchTransport, d as AgentProfilePicker, f as DEFAULT_REASONING_LEVEL_OPTIONS, i as MessageList, l as modelProvider, m as ReasoningLevelPicker, n as ChatContainer, o as UserMessage, p as HARNESS_REASONING_OPTIONS, r as ChatMessage, s as ArtifactAgentDock, t as AgentTimeline, u as snapHarnessToModel } from "./chat-BOvFAe6p.js";
12
+ import { a as ThinkingIndicator, c as createFetchTransport, d as AgentProfilePicker, f as DEFAULT_REASONING_LEVEL_OPTIONS, i as MessageList, l as modelProvider, m as ReasoningLevelPicker, n as ChatContainer, o as UserMessage, p as HARNESS_REASONING_OPTIONS, r as ChatMessage, s as ArtifactAgentDock, t as AgentTimeline, u as snapHarnessToModel } from "./chat-Ci6Xi1rd.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
+ import { t as AgentMessagingConnection } from "./connections-DDRGYDvF.js";
15
16
  import { i as useSessionStream, t as useSidecarAuth } from "./use-sidecar-auth-DkdcufOz.js";
16
17
  import { RealtimeSessionRegistry, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useCreateSession, useDeleteSession, useDropdownMenu, useLiveTime, useRealtimeSession, useRenameSession, useRunCollapseState, useRunGroups, useSSEStream, useSandboxMetrics, useSdkSession, useSessions, useToolCallStream } from "./hooks.js";
17
18
  import { 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";
@@ -20,4 +21,4 @@ import { TOOL_CATEGORY_ICONS, cn, copyText, focusField, focusFieldInvalid, focus
20
21
  import { TerminalCursor as TerminalDisplayCursor, TerminalInput as TerminalDisplayInput, TerminalLine as TerminalDisplayLine } from "@tangle-network/ui/primitives";
21
22
  import { CodeBlock as CodeBlockDisplay, Markdown } from "@tangle-network/ui/markdown";
22
23
  import { CommandPreview, DiffPreview, GlobResultsPreview, GrepResultsPreview, QuestionPreview, WebSearchPreview, WriteFilePreview } from "@tangle-network/ui/tool-previews";
23
- export { ActivityFeed, AgentProfilePicker, AgentTimeline, AgentWorkbench, ApprovalQueue, ArtifactAgentDock, ArtifactPane, AuditResults, AuthHeader, Avatar, AvatarFallback, AvatarImage, BRAND_PRISM_THEME, BackendConfig, BackendSelector, Badge, BillingDashboard, Button, CSV_PREVIEW_ROW_LIMIT, CalendarView, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChangesPane, ChatContainer, ChatMessage, ClusterStatusBar, CodeBlock, CodeBlockDisplay, CodeSurface, CodeView, CommandPreview, CopyButton, CreditBalance, DEFAULT_REASONING_LEVEL_OPTIONS, DashboardLayout, 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, FilePreview, FileTabs, FileTree, FilterField, GitHubLoginButton, GitPanel, GitStatusBadge, GlobResultsPreview, GrepResultsPreview, HARNESS_BRAND, HARNESS_OPTIONS, HARNESS_REASONING_OPTIONS, HarnessLogo, HarnessPicker, INSUFFICIENT_BALANCE_CODE, InfoPanel, InlineCode, InlineThinkingItem, InlineToolItem, Input, InvoiceTable, Label, LiveDuration, LoginLayout, Logo, Markdown, MessageList, Metric, MetricAreaChart, MetricStrip, ModelBrandStack, NetworkConfig, NewSandboxCard, OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, OpenUIArtifactRenderer, OutOfCreditsModal, PanelHeader, PillTabs, PlanCards, PortsList, PreviewView, PricingPage, ProcessList, ProfileAvatar, ProfileComparison, ProfileSelector, Progress, PromoBanner, QuestionPreview, RailButton, RailCollapseToggle, RailExpandable, RailFlyout, RailHeader, RailModeButton, RailSeparator, RailThemeToggle, RailTooltip, RealtimeSessionRegistry, ReasoningLevelPicker, ResourceMeter, ResourceSnapshot, RichFileTree, RunGroup, RunRowShell, RunRowStatusDot, RuntimePane, SESSION_CREATED_EVENT, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxArtifactPane, SandboxCard, SandboxTable, SandboxWorkbench, SegmentedControl, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SessionActivityMonitor, SessionSidebar, Sidebar, SidebarContent, SidebarDropZone, SidebarLayout, SidebarPanel, SidebarPanelContent, SidebarPanelHeader, SidebarProvider, SidebarRail, SidebarRailFooter, SidebarRailHeader, SidebarRailNav, Skeleton, SkeletonCard, SkeletonTable, SnapshotList, StatCard, StatusBanner, StatusBar, StatusPill, Switch, SystemLogsViewer, TOOL_CATEGORY_ICONS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TangleKnot, TangleLoginButton, TaskBoard, TemplateCard, TerminalDisplay, TerminalDisplayCursor, TerminalDisplayInput, TerminalDisplayLine, TerminalPanel, TextShimmer, Textarea, ThemeToggle, ThinkingIndicator, ToastContainer, ToastProvider, ToolCallFeed, Toolbar, UploadProgress, UsageChart, UsageSummary, UserMenu, UserMessage, VariantList, WebSearchPreview, WorkspaceLayout, WorkspacePaneHeader, WriteFilePreview, activeSessionsAtom, addMessage, addParts, badgeVariants, buildUnifiedPatch, bumpActiveSessionActivity, buttonVariants, canAdminSandbox, canonicalModelId, chatCapableHarnesses, clearChat, cn, computeDiffStats, connectSession, copyText, createAuthFetcher, createFetchTransport, createShellShouldRevalidate, detectFileFormat, disconnectSession, dispatchSessionCreated, fileExtension, filterFileTree, findUnsupportedOpenUINode, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatDuration, formatPrice, formatRelativeAge, formatUptime, getActiveSession, getAllActiveSessions, getAllProjectActivity, getCodeLanguage, getFormatLabel, getSessionsByActivity, getSessionsForNavbar, getSessionsForProject, getSyntaxLanguage, getToolCategory, getToolDisplayMetadata, getToolErrorText, getTotalRunningSessionCount, hasBackgroundRunningSessions, isStreamingAtom, messagesAtom, modelBrandFor, modelProvider, parseCsv, parseInsufficientBalance, parseToolEvent, partMapAtom, registerActiveSession, resetActiveSessions, resolveFilePreviewKind, resolveLanguage, sessionAtom, setActiveSessionAttention, setActiveSessionConnection, setActiveSessionError, setActiveSessionRunning, setForegroundActiveSession, shellShouldRevalidate, snapHarnessToModel, timeAgo, 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 };
24
+ export { ActivityFeed, AgentMessagingConnection, AgentProfilePicker, AgentTimeline, AgentWorkbench, ApprovalQueue, ArtifactAgentDock, ArtifactPane, AuditResults, AuthHeader, Avatar, AvatarFallback, AvatarImage, BRAND_PRISM_THEME, BackendConfig, BackendSelector, Badge, BillingDashboard, Button, CSV_PREVIEW_ROW_LIMIT, CalendarView, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChangesPane, ChatContainer, ChatMessage, ClusterStatusBar, CodeBlock, CodeBlockDisplay, CodeSurface, CodeView, CommandPreview, CopyButton, CreditBalance, DEFAULT_REASONING_LEVEL_OPTIONS, DashboardLayout, 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, FilePreview, FileTabs, FileTree, FilterField, GitHubLoginButton, GitPanel, GitStatusBadge, GlobResultsPreview, GrepResultsPreview, HARNESS_BRAND, HARNESS_OPTIONS, HARNESS_REASONING_OPTIONS, HarnessLogo, HarnessPicker, INSUFFICIENT_BALANCE_CODE, InfoPanel, InlineCode, InlineThinkingItem, InlineToolItem, Input, InvoiceTable, Label, LiveDuration, LoginLayout, Logo, Markdown, MessageList, Metric, MetricAreaChart, MetricStrip, ModelBrandStack, NetworkConfig, NewSandboxCard, OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, OpenUIArtifactRenderer, OutOfCreditsModal, PanelHeader, PillTabs, PlanCards, PortsList, PreviewView, PricingPage, ProcessList, ProfileAvatar, ProfileComparison, ProfileSelector, Progress, PromoBanner, QuestionPreview, RailButton, RailCollapseToggle, RailExpandable, RailFlyout, RailHeader, RailModeButton, RailSeparator, RailThemeToggle, RailTooltip, RealtimeSessionRegistry, ReasoningLevelPicker, ResourceMeter, ResourceSnapshot, RichFileTree, RunGroup, RunRowShell, RunRowStatusDot, RuntimePane, SESSION_CREATED_EVENT, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxArtifactPane, SandboxCard, SandboxTable, SandboxWorkbench, SegmentedControl, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SessionActivityMonitor, SessionSidebar, Sidebar, SidebarContent, SidebarDropZone, SidebarLayout, SidebarPanel, SidebarPanelContent, SidebarPanelHeader, SidebarProvider, SidebarRail, SidebarRailFooter, SidebarRailHeader, SidebarRailNav, Skeleton, SkeletonCard, SkeletonTable, SnapshotList, StatCard, StatusBanner, StatusBar, StatusPill, Switch, SystemLogsViewer, TOOL_CATEGORY_ICONS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TangleKnot, TangleLoginButton, TaskBoard, TemplateCard, TerminalDisplay, TerminalDisplayCursor, TerminalDisplayInput, TerminalDisplayLine, TerminalPanel, TextShimmer, Textarea, ThemeToggle, ThinkingIndicator, ToastContainer, ToastProvider, ToolCallFeed, Toolbar, UploadProgress, UsageChart, UsageSummary, UserMenu, UserMessage, VariantList, WebSearchPreview, WorkspaceLayout, WorkspacePaneHeader, WriteFilePreview, activeSessionsAtom, addMessage, addParts, badgeVariants, buildUnifiedPatch, bumpActiveSessionActivity, buttonVariants, canAdminSandbox, canonicalModelId, chatCapableHarnesses, clearChat, cn, computeDiffStats, connectSession, copyText, createAuthFetcher, createFetchTransport, createShellShouldRevalidate, detectFileFormat, disconnectSession, dispatchSessionCreated, fileExtension, filterFileTree, findUnsupportedOpenUINode, focusField, focusFieldInvalid, focusFieldWithin, focusRing, focusRingInset, formatBytes, formatDuration, formatPrice, formatRelativeAge, formatUptime, getActiveSession, getAllActiveSessions, getAllProjectActivity, getCodeLanguage, getFormatLabel, getSessionsByActivity, getSessionsForNavbar, getSessionsForProject, getSyntaxLanguage, getToolCategory, getToolDisplayMetadata, getToolErrorText, getTotalRunningSessionCount, hasBackgroundRunningSessions, isStreamingAtom, messagesAtom, modelBrandFor, modelProvider, parseCsv, parseInsufficientBalance, parseToolEvent, partMapAtom, registerActiveSession, resetActiveSessions, resolveFilePreviewKind, resolveLanguage, sessionAtom, setActiveSessionAttention, setActiveSessionConnection, setActiveSessionError, setActiveSessionRunning, setForegroundActiveSession, shellShouldRevalidate, snapHarnessToModel, timeAgo, 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
@@ -109,6 +109,7 @@
109
109
  --color-accent: hsl(var(--accent));
110
110
  --color-accent-foreground: hsl(var(--accent-foreground));
111
111
  --color-destructive: hsl(var(--destructive));
112
+ --color-destructive-foreground: hsl(var(--destructive-foreground));
112
113
  --color-border: hsl(var(--border));
113
114
  --color-input: hsl(var(--input));
114
115
  --color-ring: hsl(var(--ring));
@@ -1181,6 +1182,9 @@
1181
1182
  .w-32 {
1182
1183
  width: calc(var(--spacing) * 32);
1183
1184
  }
1185
+ .w-36 {
1186
+ width: calc(var(--spacing) * 36);
1187
+ }
1184
1188
  .w-40 {
1185
1189
  width: calc(var(--spacing) * 40);
1186
1190
  }
@@ -3527,6 +3531,9 @@
3527
3531
  .text-destructive {
3528
3532
  color: var(--color-destructive);
3529
3533
  }
3534
+ .text-destructive-foreground {
3535
+ color: var(--color-destructive-foreground);
3536
+ }
3530
3537
  .text-emerald-400 {
3531
3538
  color: var(--color-emerald-400);
3532
3539
  }
@@ -4014,6 +4021,9 @@
4014
4021
  background-color: color-mix(in oklab, var(--color-primary) 20%, transparent);
4015
4022
  }
4016
4023
  }
4024
+ .group-hover\:text-\[var\(--accent-text\)\]:is(:where(.group):hover *) {
4025
+ color: var(--accent-text);
4026
+ }
4017
4027
  .group-hover\:text-foreground:is(:where(.group):hover *) {
4018
4028
  color: var(--color-foreground);
4019
4029
  }
@@ -4891,6 +4901,9 @@
4891
4901
  text-overflow: ellipsis;
4892
4902
  white-space: nowrap;
4893
4903
  }
4904
+ .sm\:p-4 {
4905
+ padding: calc(var(--spacing) * 4);
4906
+ }
4894
4907
  .sm\:p-5 {
4895
4908
  padding: calc(var(--spacing) * 5);
4896
4909
  }
@@ -5045,8 +5058,11 @@
5045
5058
  .xl\:table-cell {
5046
5059
  display: table-cell;
5047
5060
  }
5048
- .xl\:w-52 {
5049
- width: calc(var(--spacing) * 52);
5061
+ .xl\:w-36 {
5062
+ width: calc(var(--spacing) * 36);
5063
+ }
5064
+ .xl\:w-72 {
5065
+ width: calc(var(--spacing) * 72);
5050
5066
  }
5051
5067
  .xl\:grid-cols-2 {
5052
5068
  grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -1,5 +1,5 @@
1
1
  import { t as cn$1 } from "./utils-DzWbktWG.js";
2
- import { o as PortsList } from "./dashboard-DwdEQoqK.js";
2
+ import { o as PortsList } from "./dashboard-euyfLroA.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-CoiS_kfY.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-DXTqeu9h.js";
1
+ import { a as computeDiffStats, c as BRAND_PRISM_THEME, d as DiffStatsBadge, f as GitStatusBadge, i as buildUnifiedPatch, l as CodeSurface, m as PillTabs, n as SandboxArtifactPane, o as CodeView, p as PanelHeader, r as DiffView, s as FileBreadcrumb, t as ChangesPane, u as resolveLanguage } from "./workbench-B1UltdHQ.js";
2
2
  import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-CoiS_kfY.js";
3
3
  export { BRAND_PRISM_THEME, ChangesPane, CodeSurface, CodeView, DiffStatsBadge, DiffView, EmbeddedAppView, FileBreadcrumb, GitStatusBadge, PanelHeader, PillTabs, PreviewView, SandboxArtifactPane, buildUnifiedPatch, computeDiffStats, resolveLanguage };
@@ -6,6 +6,7 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  import { useCallback, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from "react";
7
7
  import { focusField, focusRing, focusRingInset } from "@tangle-network/ui/utils";
8
8
  import { Markdown } from "@tangle-network/ui/markdown";
9
+ import { createPortal } from "react-dom";
9
10
  import * as DialogPrimitive from "@radix-ui/react-dialog";
10
11
  import { Activity, AlertCircle, AlertTriangle, ArrowLeft, Binary, Bot, Boxes, CheckCircle, ChevronDown, ChevronRight, ChevronUp, FileCode2, FileText, FolderTree, LayoutPanelTop, Loader2, LoaderCircle, MessageSquareText, PanelBottomClose, PanelBottomOpen, PanelLeftClose, PanelLeftOpen, PanelRightClose, PanelRightOpen, Plus, RefreshCw, Search, Settings, Shield, ShieldCheck, Sparkles, Terminal, TerminalSquare, Upload, Wifi, X, XCircle, Zap } from "lucide-react";
11
12
  import { FileArtifactPane, FileTree, filterFileTree } from "@tangle-network/ui/files";
@@ -179,7 +180,7 @@ function MobileDrawer({ side, title, header, onClose, onReturnFocus, theme, dens
179
180
  })] })
180
181
  });
181
182
  }
182
- function WorkspaceLayout({ left, leftHeader, center, centerHeader, centerFooter, right, rightHeader, bottom, bottomHeader, defaultLeftOpen = true, defaultRightOpen = false, defaultBottomOpen = false, defaultLeftWidth = 280, defaultRightWidth = 480, defaultBottomHeight = 224, minLeftWidth = 220, maxLeftWidth = 420, minRightWidth = 320, maxRightWidth = 720, minCenterWidth = 400, minBottomHeight = 100, maxBottomHeight = 500, persistenceKey, resizable = true, theme, density = "comfortable", leftLabel = "Left workspace panel", rightLabel = "Right workspace panel", bottomLabel = "Bottom runtime panel", leftOpen: leftOpenProp, onLeftOpenChange, rightOpen: rightOpenProp, onRightOpenChange, keyboardShortcuts = false, leftCollapsedControl, leftContentClassName, rightContentClassName, centerHeaderVisibility = "auto", className }) {
183
+ function WorkspaceLayout({ left, leftHeader, center, centerHeader, centerFooter, right, rightHeader, bottom, bottomHeader, defaultLeftOpen = true, defaultRightOpen = false, defaultBottomOpen = false, defaultLeftWidth = 280, defaultRightWidth = 480, defaultBottomHeight = 224, minLeftWidth = 220, maxLeftWidth = 420, minRightWidth = 320, maxRightWidth = 720, minCenterWidth = 400, minBottomHeight = 100, maxBottomHeight = 500, persistenceKey, resizable = true, theme, density = "comfortable", leftLabel = "Left workspace panel", rightLabel = "Right workspace panel", bottomLabel = "Bottom runtime panel", leftOpen: leftOpenProp, onLeftOpenChange, rightOpen: rightOpenProp, onRightOpenChange, keyboardShortcuts = false, leftCollapsedControl, leftContentClassName, rightContentClassName, keepRightMounted = false, collapsedControlsPlacement = "edge", centerHeaderVisibility = "auto", className }) {
183
184
  const desktop = useDesktopMediaQuery(DESKTOP_BREAKPOINT);
184
185
  const dragStateRef = useRef(null);
185
186
  const storedLayout = useMemo(() => persistenceKey ? readStoredLayout(persistenceKey) : null, [persistenceKey]);
@@ -199,6 +200,30 @@ function WorkspaceLayout({ left, leftHeader, center, centerHeader, centerFooter,
199
200
  }, [rightControlled, onRightOpenChange]);
200
201
  const hasLeft = Boolean(left);
201
202
  const hasRight = Boolean(right);
203
+ const [rightVisited, setRightVisited] = useState(false);
204
+ const rightParkingRef = useRef(null);
205
+ const rightHost = useMemo(() => {
206
+ if (!keepRightMounted || typeof document === "undefined") return null;
207
+ const host = document.createElement("div");
208
+ host.className = "flex h-full min-h-0 min-w-0 flex-col";
209
+ return host;
210
+ }, [keepRightMounted]);
211
+ useEffect(() => {
212
+ if (keepRightMounted && rightOpen && hasRight) setRightVisited(true);
213
+ }, [
214
+ keepRightMounted,
215
+ rightOpen,
216
+ hasRight
217
+ ]);
218
+ const mountRightHost = useCallback((node) => {
219
+ if (!rightHost) return;
220
+ const destination = node ?? rightParkingRef.current;
221
+ if (destination) destination.appendChild(rightHost);
222
+ }, [rightHost]);
223
+ const rightContent = keepRightMounted ? /* @__PURE__ */ jsx("div", {
224
+ ref: mountRightHost,
225
+ className: "flex h-full min-h-0 min-w-0 flex-1 flex-col"
226
+ }) : right;
202
227
  const [bottomOpen, setBottomOpen] = useState(storedLayout?.bottomOpen ?? defaultBottomOpen);
203
228
  const [leftWidth, setLeftWidth] = useState(clamp(storedLayout?.leftWidth ?? defaultLeftWidth, minLeftWidth, maxLeftWidth));
204
229
  const [rightWidth, setRightWidth] = useState(clamp(storedLayout?.rightWidth ?? defaultRightWidth, minRightWidth, maxRightWidth));
@@ -238,7 +263,9 @@ function WorkspaceLayout({ left, leftHeader, center, centerHeader, centerFooter,
238
263
  rightWidth,
239
264
  bottomHeight
240
265
  };
241
- window.localStorage.setItem(persistenceKey, JSON.stringify(payload));
266
+ try {
267
+ window.localStorage.setItem(persistenceKey, JSON.stringify(payload));
268
+ } catch {}
242
269
  }, [
243
270
  bottomHeight,
244
271
  bottomOpen,
@@ -428,7 +455,7 @@ function WorkspaceLayout({ left, leftHeader, center, centerHeader, centerFooter,
428
455
  onStep: stepLeftWidth
429
456
  })] }),
430
457
  /* @__PURE__ */ jsxs("main", {
431
- className: "flex min-w-0 flex-1 flex-col",
458
+ className: "relative flex min-w-0 flex-1 flex-col",
432
459
  children: [
433
460
  showCenterHeader && /* @__PURE__ */ jsxs(WorkspacePaneHeader, {
434
461
  className: "gap-2",
@@ -451,11 +478,11 @@ function WorkspaceLayout({ left, leftHeader, center, centerHeader, centerFooter,
451
478
  ]
452
479
  }),
453
480
  /* @__PURE__ */ jsxs("div", {
454
- className: "flex min-h-0 flex-1",
481
+ className: "relative flex min-h-0 flex-1",
455
482
  children: [
456
483
  !showCenterHeader && leftReopenControl && /* @__PURE__ */ jsx("div", {
457
484
  ref: leftReopenRef,
458
- className: "shrink-0 pt-2",
485
+ className: cn$1("shrink-0 pt-2", collapsedControlsPlacement === "overlay" && "absolute left-2 top-2 z-20 pt-0"),
459
486
  children: leftReopenControl
460
487
  }),
461
488
  /* @__PURE__ */ jsx("div", {
@@ -463,7 +490,7 @@ function WorkspaceLayout({ left, leftHeader, center, centerHeader, centerFooter,
463
490
  children: center
464
491
  }),
465
492
  !showCenterHeader && (bottomReopenControl || rightReopenControl) && /* @__PURE__ */ jsxs("div", {
466
- className: "flex shrink-0 flex-col gap-1 pt-2",
493
+ className: cn$1("flex shrink-0 flex-col gap-1 pt-2", collapsedControlsPlacement === "overlay" && "absolute right-2 top-2 z-20 pt-0"),
467
494
  children: [bottomReopenControl, rightReopenControl && /* @__PURE__ */ jsx("div", {
468
495
  ref: rightReopenRef,
469
496
  children: rightReopenControl
@@ -536,11 +563,17 @@ function WorkspaceLayout({ left, leftHeader, center, centerHeader, centerFooter,
536
563
  })]
537
564
  }), /* @__PURE__ */ jsx("div", {
538
565
  className: cn$1("min-h-0 flex-1 overflow-auto", rightContentClassName),
539
- children: right
566
+ children: rightContent
540
567
  })]
541
568
  })] })
542
569
  ]
543
570
  }),
571
+ keepRightMounted && /* @__PURE__ */ jsx("div", {
572
+ hidden: true,
573
+ ref: rightParkingRef,
574
+ "aria-hidden": "true",
575
+ children: rightHost && (rightOpen || rightVisited) && hasRight ? createPortal(right, rightHost) : null
576
+ }),
544
577
  !desktop && left && leftOpen && !(right && rightOpen) && /* @__PURE__ */ jsx(MobileDrawer, {
545
578
  side: "left",
546
579
  title: leftLabel,
@@ -559,7 +592,7 @@ function WorkspaceLayout({ left, leftHeader, center, centerHeader, centerFooter,
559
592
  onReturnFocus: () => focusSideControl("right"),
560
593
  theme,
561
594
  density,
562
- children: right
595
+ children: rightContent
563
596
  })
564
597
  ]
565
598
  });
@@ -1,2 +1,2 @@
1
- import { $ as TerminalProps, A as ShellShouldRevalidateArgs, B as SessionSidebarLink, C as SandboxWorkbenchLayoutOptions, D as SandboxWorkbenchSessionProps, E as SandboxWorkbenchProps, F as SessionSidebar, G as SessionOptimisticController, H as SessionSidebarVariant, I as SessionSidebarBadge, J as useOptimisticSessionItems, K as UseOptimisticSessionItemsOptions, L as SessionSidebarFilter, M as createShellShouldRevalidate, N as shellShouldRevalidate, O as SessionActivityMonitor, P as formatRelativeAge, Q as TerminalPanel, R as SessionSidebarGroupBy, S as SandboxWorkbenchFileArtifact, T as SandboxWorkbenchOpenUIArtifact, U as SESSION_CREATED_EVENT, V as SessionSidebarProps, W as SessionCreatedDetail, X as RuntimePaneProps, Y as RuntimePane, Z as TerminalLine, _ as FormAudit, a as ApprovalQueue, at as StatusBannerProps, b as SandboxWorkbenchArtifact, c as CalendarView, ct as WorkspacePaneHeader, d as TaskBoardColumn, dt as WorkspaceLayoutProps, et as ContextBadge, f as TaskBoardItem, g as AuditResultsProps, h as AuditResults, i as ApprovalItem, it as StatusBanner, j as ShellShouldRevalidateOptions, k as SessionActivityMonitorProps, l as CalendarViewProps, lt as WorkspacePaneHeaderProps, m as AuditCheck, n as ArtifactPaneProps, nt as StatusBarProps, o as ApprovalQueueProps, ot as DirectoryPane, p as TaskBoardProps, q as dispatchSessionCreated, r as ApprovalConfidenceStat, rt as BannerType, s as CalendarEvent, st as DirectoryPaneProps, t as ArtifactPane, tt as StatusBar, u as TaskBoard, ut as WorkspaceLayout, v as AgentWorkbench, w as SandboxWorkbenchMarkdownArtifact, x as SandboxWorkbenchCustomArtifact, y as SandboxWorkbench, z as SessionSidebarItem } from "./index-iDiLnSoo.js";
1
+ import { $ as TerminalProps, A as ShellShouldRevalidateArgs, B as SessionSidebarLink, C as SandboxWorkbenchLayoutOptions, D as SandboxWorkbenchSessionProps, E as SandboxWorkbenchProps, F as SessionSidebar, G as SessionOptimisticController, H as SessionSidebarVariant, I as SessionSidebarBadge, J as useOptimisticSessionItems, K as UseOptimisticSessionItemsOptions, L as SessionSidebarFilter, M as createShellShouldRevalidate, N as shellShouldRevalidate, O as SessionActivityMonitor, P as formatRelativeAge, Q as TerminalPanel, R as SessionSidebarGroupBy, S as SandboxWorkbenchFileArtifact, T as SandboxWorkbenchOpenUIArtifact, U as SESSION_CREATED_EVENT, V as SessionSidebarProps, W as SessionCreatedDetail, X as RuntimePaneProps, Y as RuntimePane, Z as TerminalLine, _ as FormAudit, a as ApprovalQueue, at as StatusBannerProps, b as SandboxWorkbenchArtifact, c as CalendarView, ct as WorkspacePaneHeader, d as TaskBoardColumn, dt as WorkspaceLayoutProps, et as ContextBadge, f as TaskBoardItem, g as AuditResultsProps, h as AuditResults, i as ApprovalItem, it as StatusBanner, j as ShellShouldRevalidateOptions, k as SessionActivityMonitorProps, l as CalendarViewProps, lt as WorkspacePaneHeaderProps, m as AuditCheck, n as ArtifactPaneProps, nt as StatusBarProps, o as ApprovalQueueProps, ot as DirectoryPane, p as TaskBoardProps, q as dispatchSessionCreated, r as ApprovalConfidenceStat, rt as BannerType, s as CalendarEvent, st as DirectoryPaneProps, t as ArtifactPane, tt as StatusBar, u as TaskBoard, ut as WorkspaceLayout, v as AgentWorkbench, w as SandboxWorkbenchMarkdownArtifact, x as SandboxWorkbenchCustomArtifact, y as SandboxWorkbench, z as SessionSidebarItem } from "./index-CcbhfDa-.js";
2
2
  export { AgentWorkbench, type ApprovalConfidenceStat, type ApprovalItem, ApprovalQueue, type ApprovalQueueProps, ArtifactPane, type ArtifactPaneProps, type AuditCheck, AuditResults, type AuditResultsProps, type BannerType, type CalendarEvent, CalendarView, type CalendarViewProps, type ContextBadge, DirectoryPane, type DirectoryPaneProps, type FormAudit, RuntimePane, type RuntimePaneProps, SESSION_CREATED_EVENT, SandboxWorkbench, type SandboxWorkbenchArtifact, type SandboxWorkbenchCustomArtifact, type SandboxWorkbenchFileArtifact, type SandboxWorkbenchLayoutOptions, type SandboxWorkbenchMarkdownArtifact, type SandboxWorkbenchOpenUIArtifact, type SandboxWorkbenchProps, type SandboxWorkbenchSessionProps, SessionActivityMonitor, type SessionActivityMonitorProps, 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, 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 TerminalPanel, a as AuditResults, b as DirectoryPane, c as SessionActivityMonitor, d as SessionSidebar, f as SESSION_CREATED_EVENT, g as RuntimePane, h as formatRelativeAge, i as TaskBoard, l as createShellShouldRevalidate, m as useOptimisticSessionItems, n as ApprovalQueue, o as AgentWorkbench, p as dispatchSessionCreated, r as CalendarView, s as SandboxWorkbench, t as ArtifactPane, u as shellShouldRevalidate, v as StatusBar, x as WorkspaceLayout, y as StatusBanner } from "./workspace-Pq-koOTW.js";
2
+ import { _ as TerminalPanel, a as AuditResults, b as DirectoryPane, c as SessionActivityMonitor, d as SessionSidebar, f as SESSION_CREATED_EVENT, g as RuntimePane, h as formatRelativeAge, i as TaskBoard, l as createShellShouldRevalidate, m as useOptimisticSessionItems, n as ApprovalQueue, o as AgentWorkbench, p as dispatchSessionCreated, r as CalendarView, s as SandboxWorkbench, t as ArtifactPane, u as shellShouldRevalidate, v as StatusBar, x as WorkspaceLayout, y as StatusBanner } from "./workspace-fIHRXmWT.js";
3
3
  export { AgentWorkbench, ApprovalQueue, ArtifactPane, AuditResults, CalendarView, DirectoryPane, RuntimePane, SESSION_CREATED_EVENT, SandboxWorkbench, SessionActivityMonitor, SessionSidebar, StatusBanner, StatusBar, TaskBoard, TerminalPanel, 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.116.9",
3
+ "version": "0.117.1",
4
4
  "description": "Unified UI component library for Tangle Sandbox — primitives, chat, dashboard, terminal, editor, and workspace components",
5
5
  "repository": {
6
6
  "type": "git",
@@ -78,6 +78,10 @@
78
78
  "import": "./dist/integrations.js",
79
79
  "types": "./dist/integrations.d.ts"
80
80
  },
81
+ "./connections": {
82
+ "import": "./dist/connections.js",
83
+ "types": "./dist/connections.d.ts"
84
+ },
81
85
  "./connectors": {
82
86
  "import": "./dist/connectors.js",
83
87
  "types": "./dist/connectors.d.ts"
@@ -194,6 +198,7 @@
194
198
  "eventsource-parser": "4.1.1",
195
199
  "lucide-react": "^1.48.0",
196
200
  "nanostores": "^1.5.4",
201
+ "tailwindcss-animate": "^1.0.7",
197
202
  "yaml": "^2.9.1"
198
203
  },
199
204
  "devDependencies": {
@@ -237,7 +242,6 @@
237
242
  "react-syntax-highlighter": "^16.1.1",
238
243
  "storybook": "^10.6.0",
239
244
  "tailwindcss": "^4.3.3",
240
- "tailwindcss-animate": "^1.0.7",
241
245
  "tsdown": "^0.23.0",
242
246
  "typescript": "^7.0.2",
243
247
  "vite": "^8.3.1",
@@ -2,9 +2,9 @@ import { t as cn$1 } from "./utils-DzWbktWG.js";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import * as React$1 from "react";
4
4
  import { focusField, focusRing } from "@tangle-network/ui/utils";
5
+ import { createPortal } from "react-dom";
5
6
  import { Bot, Brain, Check, ChevronDown, Lock, Pencil, Plus, Send, Sparkles, Square, Trash2, X } from "lucide-react";
6
7
  import { AgentTimeline, ChatContainer as ChatContainer$1, ChatMessage, ChatMessage as ChatMessage$1, MessageList, ThinkingIndicator, UserMessage } from "@tangle-network/ui/chat";
7
- import { createPortal } from "react-dom";
8
8
  import { modelProvider, reasoningLadder, snapHarnessToModel } from "@tangle-network/agent-interface";
9
9
  import * as DropdownMenu from "@radix-ui/react-dropdown-menu";
10
10
  //#region src/chat/reasoning-level-picker.tsx