@tangle-network/sandbox-ui 7.0.4 → 7.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +2 -0
  2. package/dist/{AgentTree-Dzy6lrfP.js → AgentTree-B1iTTYNe.js} +1 -1
  3. package/dist/{use-follow-tail-Df965WQi.js → ConversationRowView-C4TXICBT.js} +2 -2
  4. package/dist/{ResearchReport-DKWDmzdK.js → ResearchReport-kYGwgHC7.js} +2 -2
  5. package/dist/{chat-B_5Lwevm.js → chat-DcaqQX2X.js} +32 -28
  6. package/dist/chat.d.ts +1 -1
  7. package/dist/chat.js +1 -1
  8. package/dist/{dashboard-C7QJJw7-.js → dashboard-C1pNlewR.js} +1 -1
  9. package/dist/dashboard.js +1 -1
  10. package/dist/globals.css +44 -68
  11. package/dist/hooks.d.ts +2 -2
  12. package/dist/hooks.js +2 -2
  13. package/dist/{index-PolYo7h9.d.ts → index-CGHJonni.d.ts} +65 -2
  14. package/dist/index-CvHul4IJ.d.ts +26 -0
  15. package/dist/{index-1Q4Jtlic.d.ts → index-PxmhpV0y.d.ts} +1 -17
  16. package/dist/index.d.ts +5 -5
  17. package/dist/index.js +11 -11
  18. package/dist/primitives-l-Qv14bS.js +23 -0
  19. package/dist/primitives.d.ts +2 -2
  20. package/dist/primitives.js +1 -1
  21. package/dist/record/ResearchReport.js +1 -1
  22. package/dist/{record-Cc_WNtG8.js → record-Dmyq0jfl.js} +2 -2
  23. package/dist/record.js +1 -1
  24. package/dist/report-viewer.js +75 -75
  25. package/dist/run/live.js +1 -1
  26. package/dist/run/record.js +3 -3
  27. package/dist/run-C9GGriUv.js +238 -0
  28. package/dist/run.d.ts +2 -2
  29. package/dist/run.js +6 -6
  30. package/dist/runtime-viewer/AgentGraphCanvas-P_PFS2Ko-B7S6Fwwy.js +563 -0
  31. package/dist/runtime-viewer/{latest-events-CMbdBLcT-uhVN4JLh.js → latest-events-wofY6ifW-B8_bfLwI.js} +581 -112
  32. package/dist/styles.css +44 -68
  33. package/dist/terminal.js +1 -1
  34. package/dist/{trace-workspace-EArXc0uP.js → trace-workspace-mq1NcP7e.js} +80 -49
  35. package/dist/{workbench-D0ALR40M.js → workbench-BUrlhR-P.js} +3 -2
  36. package/dist/workbench.js +1 -1
  37. package/dist/workspace-viewer.js +10599 -10460
  38. package/package.json +13 -11
  39. package/tests/visual/content-share.mjs +35 -0
  40. package/dist/index-CEtc2U5v.d.ts +0 -26
  41. package/dist/primitives-znfPK9NP.js +0 -23
  42. package/dist/run-CpJ_COuz.js +0 -5
  43. package/dist/runtime-viewer/AgentGraphCanvas-xHVW-YRV-Ch1fnK9k.js +0 -957
  44. /package/dist/{terminal-nUCznZRj.js → terminal-view-nUCznZRj.js} +0 -0
package/README.md CHANGED
@@ -66,6 +66,8 @@ import "@tangle-network/charts/react/agent-graph.css";
66
66
  import "@tangle-network/charts/react/live.css";
67
67
  ```
68
68
 
69
+ `AgentWorkspace` (also under `run`) is one agent's workspace behind a Files | Trace | Terminal control: the host supplies an `AgentWorkspaceSource` (`list`, `read`, an optional conversation `stream` and an optional `terminal` grant) and the workspace draws the files pane naming their origin, the read-only code and diff, the conversation as of the run cursor, and the terminal; it reports what it is waiting for or could not read instead of an empty pane.
70
+
69
71
  The entry carries Brand's tokens and utility registrations, this package's runtime CSS, and `@source` lines for its own `dist` and the `@tangle-network/ui` peer, so every component utility compiles once, in the app's own layer order.
70
72
  Brand defaults live in `theme.brand`, so host refinements in `theme` can override them. Agent apps import `@tangle-network/agent-app/tailwind.css`, which includes this entry.
71
73
 
@@ -1,5 +1,5 @@
1
1
  import { t as VirtualList } from "./VirtualList-DcSGbEtA.js";
2
- import { C as ms, D as toolKey, E as textOf, T as roleOf, a as isLifecycle, c as anchorsOf, d as collapseIdleTurns, f as collapsePolls, g as eventMatches, h as callsOf, l as answeredBy, m as thinkingMarkers, n as ConversationRowView, o as rowItems, p as quietThinking, t as useFollowTail, u as collapseHollowTurns } from "./use-follow-tail-Df965WQi.js";
2
+ import { E as toolKey, O as useFollowTail, S as ms, T as textOf, a as rowItems, c as answeredBy, d as collapsePolls, f as quietThinking, h as eventMatches, i as isLifecycle, l as collapseHollowTurns, m as callsOf, p as thinkingMarkers, s as anchorsOf, t as ConversationRowView, u as collapseIdleTurns, w as roleOf } from "./ConversationRowView-C4TXICBT.js";
3
3
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
4
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
5
5
  import { AgentTimelineColumn, agentTimelineStepKind } from "@tangle-network/ui/chat/agent-timeline";
@@ -4,6 +4,7 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
4
  import { Brain, Settings, Timer } from "lucide-react";
5
5
  import { getToolCategory, getToolDisplayMetadata } from "@tangle-network/ui/utils";
6
6
  import { toolLabel } from "@tangle-network/charts/react/agent-graph";
7
+ import { useFollowTail } from "@tangle-network/ui/hooks/use-follow-tail";
7
8
  import { formatCompact, formatCompact as fmt, formatCost as formatCost$1, formatSpanDuration as formatSpanDuration$1, formatSpanDuration as interval, formatUtcTime as utcTime, reportedCount, sumReportedCounts } from "@tangle-network/charts";
8
9
  import { AgentTimelineStep, agentTimelineStepKind } from "@tangle-network/ui/chat/agent-timeline";
9
10
  import { SpeakerHeader } from "@tangle-network/ui/chat/speaker";
@@ -11,7 +12,6 @@ import { ExpandedToolDetail } from "@tangle-network/ui/run/expanded-tool-detail"
11
12
  import { InlineThinkingItem } from "@tangle-network/ui/run/inline-thinking-item";
12
13
  import { RunRowShell } from "@tangle-network/ui/run/run-row-shell";
13
14
  import { isOpen, runStatus } from "@tangle-network/ui/run/status-meta";
14
- import { useFollowTail } from "@tangle-network/ui/hooks/use-follow-tail";
15
15
  // src/run/record/model.ts
16
16
  var model_exports = /* @__PURE__ */ __exportAll({
17
17
  agentState: () => agentState,
@@ -1278,4 +1278,4 @@ function ConversationRowView({ row, items, previous, turn, context }) {
1278
1278
  ]
1279
1279
  });
1280
1280
  }
1281
- export { ms as C, toolKey as D, textOf as E, utcTime as O, model_exports as S, roleOf as T, eventSource as _, isLifecycle as a, interval as b, anchorsOf as c, collapseIdleTurns as d, collapsePolls as f, eventMatches as g, callsOf as h, ToolStep as i, answeredBy as l, thinkingMarkers as m, ConversationRowView as n, rowItems as o, quietThinking as p, PromptMore as r, timelineItems as s, useFollowTail as t, collapseHollowTurns as u, fmt as v, recordFlowTrace as w, modelIdentity as x, indexRecord as y };
1281
+ export { recordFlowTrace as C, utcTime as D, toolKey as E, useFollowTail as O, ms as S, textOf as T, fmt as _, rowItems as a, modelIdentity as b, answeredBy as c, collapsePolls as d, quietThinking as f, eventSource as g, eventMatches as h, isLifecycle as i, collapseHollowTurns as l, callsOf as m, PromptMore as n, timelineItems as o, thinkingMarkers as p, ToolStep as r, anchorsOf as s, ConversationRowView as t, collapseIdleTurns as u, indexRecord as v, roleOf as w, model_exports as x, interval as y };
@@ -1,5 +1,5 @@
1
- import { C as ms, D as toolKey, E as textOf, O as utcTime, T as roleOf, _ as eventSource, b as interval, g as eventMatches, v as fmt, w as recordFlowTrace, x as modelIdentity, y as indexRecord } from "./use-follow-tail-Df965WQi.js";
2
- import { n as Conversation, t as AgentTree } from "./AgentTree-Dzy6lrfP.js";
1
+ import { C as recordFlowTrace, D as utcTime, E as toolKey, S as ms, T as textOf, _ as fmt, b as modelIdentity, g as eventSource, h as eventMatches, v as indexRecord, w as roleOf, y as interval } from "./ConversationRowView-C4TXICBT.js";
2
+ import { n as Conversation, t as AgentTree } from "./AgentTree-B1iTTYNe.js";
3
3
  import { Tabs, TabsContent, TabsList, TabsTrigger } from "@tangle-network/ui/primitives";
4
4
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
5
  import { createContext, memo, useCallback, useContext, useEffect, useId, useMemo, useRef, useState } from "react";
@@ -1,4 +1,5 @@
1
1
  import { t as cn$1 } from "./utils-BER_bdgE.js";
2
+ import { Sheet, SheetContent, SheetTitle } from "@tangle-network/ui/primitives";
2
3
  import { jsx, jsxs } from "react/jsx-runtime";
3
4
  import * as React$1 from "react";
4
5
  import { createPortal } from "react-dom";
@@ -6,7 +7,8 @@ import { Bot, Brain, Check, ChevronDown, Lock, Pencil, Plus, Send, Sparkles, Squ
6
7
  import { focusField, focusRing } from "@tangle-network/ui/utils";
7
8
  import { AgentTimeline as AgentTimeline$1, AgentTimelineColumn as AgentTimelineColumn$1, AgentTimelineStep, ChatContainer as ChatContainer$1, ChatMessage, ChatMessage as ChatMessage$1, MessageAuthor, MessageList, SpeakerHeader, TRANSCRIPT_TEXT, ThinkingIndicator, UserMessage, agentTimelineStepKind, foldSummary, isViewerMessage, partitionBySpeaker } from "@tangle-network/ui/chat";
8
9
  import { modelProvider, reasoningLadder, snapHarnessToModel } from "@tangle-network/agent-interface";
9
- import * as DropdownMenu from "@radix-ui/react-dropdown-menu";
10
+ import * as DropdownMenu$1 from "@radix-ui/react-dropdown-menu";
11
+ import { usePhone } from "@tangle-network/ui/hooks";
10
12
  // src/chat/reasoning-level-picker.tsx
11
13
  /** Ordered ascending intensity (excludes "auto"), straight from the canonical ladder. */
12
14
  const REASONING_LADDER = reasoningLadder;
@@ -102,7 +104,7 @@ const HARNESS_REASONING_OPTIONS = { "kimi-code": [
102
104
  function ReasoningLevelPicker({ value, onChange, disabled, className, triggerClassName, options = DEFAULT_REASONING_LEVEL_OPTIONS, available, side, avoidCollisions }) {
103
105
  const shown = available ? options.filter((o) => o.value === "auto" || available.includes(o.value)) : options;
104
106
  const label = shown.find((option) => option.value === value)?.label ?? "Auto";
105
- return /* @__PURE__ */ jsxs(DropdownMenu.Root, { children: [/* @__PURE__ */ jsx(DropdownMenu.Trigger, {
107
+ return /* @__PURE__ */ jsxs(DropdownMenu$1.Root, { children: [/* @__PURE__ */ jsx(DropdownMenu$1.Trigger, {
106
108
  asChild: true,
107
109
  children: /* @__PURE__ */ jsxs("button", {
108
110
  type: "button",
@@ -115,14 +117,14 @@ function ReasoningLevelPicker({ value, onChange, disabled, className, triggerCla
115
117
  /* @__PURE__ */ jsx(ChevronDown, { className: "ml-auto h-3.5 w-3.5 shrink-0 text-muted-foreground" })
116
118
  ]
117
119
  })
118
- }), /* @__PURE__ */ jsx(DropdownMenu.Portal, { children: /* @__PURE__ */ jsx(DropdownMenu.Content, {
120
+ }), /* @__PURE__ */ jsx(DropdownMenu$1.Portal, { children: /* @__PURE__ */ jsx(DropdownMenu$1.Content, {
119
121
  side,
120
122
  align: "start",
121
123
  avoidCollisions,
122
124
  collisionPadding: 24,
123
125
  sideOffset: 6,
124
126
  className: cn$1("z-50 w-64 max-h-[var(--radix-dropdown-menu-content-available-height)] overflow-y-auto rounded-[var(--radius-md)] border border-[var(--md3-outline-variant)] bg-surface-container-highest p-1", "shadow-[0_8px_30px_rgba(0,0,0,0.45)] ring-1 ring-[#ffffff14]", "data-[state=open]:animate-in data-[state=closed]:animate-out", "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95"),
125
- children: shown.map((option) => /* @__PURE__ */ jsxs(DropdownMenu.Item, {
127
+ children: shown.map((option) => /* @__PURE__ */ jsxs(DropdownMenu$1.Item, {
126
128
  onSelect: () => onChange(option.value),
127
129
  className: cn$1("flex cursor-pointer items-start gap-2.5 rounded-md px-2.5 py-2 outline-none", "transition-colors hover:bg-accent/40 focus:bg-accent/40", option.value === value && "bg-[var(--accent-surface-soft)] text-[var(--accent-text)]"),
128
130
  children: [/* @__PURE__ */ jsx("span", {
@@ -608,9 +610,7 @@ function defaultScopeLabel(scope) {
608
610
  function normalizeRole(role) {
609
611
  return role === "assistant" || role === "system" ? role : "user";
610
612
  }
611
- /** Stable client-side message id. Uses `crypto.randomUUID()` when available,
612
- * else a UUIDv4 from `getRandomValues`. Avoids `Date.now()`, which collides
613
- * when a user+assistant pair are created in the same millisecond. */
613
+ /** Random IDs avoid Date.now collisions; getRandomValues backs up randomUUID. */
614
614
  function createDockMessageId() {
615
615
  const c = typeof globalThis !== "undefined" ? globalThis.crypto : void 0;
616
616
  if (c && typeof c.randomUUID === "function") return c.randomUUID();
@@ -623,24 +623,9 @@ function createDockMessageId() {
623
623
  }
624
624
  throw new Error("crypto.getRandomValues is required for message ids");
625
625
  }
626
- /**
627
- * ArtifactAgentDock — slide-in right-rail chat scoped to a single artifact.
628
- *
629
- * Renders a persistent, per-artifact conversation surface that streams via a
630
- * consumer-supplied transport. Mount alongside any artifact view (file editor,
631
- * sequence editor, asset preview) to give every artifact its own dedicated
632
- * agent conversation without forking the chat UI per app.
633
- *
634
- * Behavior:
635
- * - On open, calls `transport.ensureThread(scope)` to get the canonical thread
636
- * id and `transport.loadMessages(threadId)` to populate prior turns.
637
- * - On submit, calls `transport.sendStream(...)` and concatenates delta events
638
- * into a single streaming assistant message; renders inline.
639
- * - Composer: Enter sends, Shift+Enter newline, Cancel during stream supported.
640
- * - Accessibility: scope `aria-label` on the panel, `aria-pressed` is the
641
- * consumer's job on whatever button toggles `open`.
642
- */
626
+ /** A persistent per-artifact conversation using the consumer's transport. */
643
627
  function ArtifactAgentDock({ scope, open, onOpenChange, transport, defaultPrompt, onError, className }) {
628
+ const phone = usePhone();
644
629
  const [threadId, setThreadId] = React$1.useState(null);
645
630
  const [messages, setMessages] = React$1.useState([]);
646
631
  const [composer, setComposer] = React$1.useState(defaultPrompt ?? "");
@@ -649,6 +634,7 @@ function ArtifactAgentDock({ scope, open, onOpenChange, transport, defaultPrompt
649
634
  const [loading, setLoading] = React$1.useState(false);
650
635
  const abortRef = React$1.useRef(null);
651
636
  const scrollRef = React$1.useRef(null);
637
+ const returnFocus = React$1.useRef(null);
652
638
  const scopeTokenRef = React$1.useRef(0);
653
639
  const reportError = React$1.useCallback((message) => {
654
640
  if (onError) onError(message);
@@ -761,8 +747,9 @@ function ArtifactAgentDock({ scope, open, onOpenChange, transport, defaultPrompt
761
747
  }, [threadId, transport]);
762
748
  if (!open) return null;
763
749
  const heading = defaultScopeLabel(scope);
764
- return /* @__PURE__ */ jsxs("aside", {
765
- className: cn$1("flex h-full w-[420px] min-w-[360px] max-w-[480px] flex-col border-l border-[var(--md3-outline-variant)] bg-surface-container shadow-[var(--shadow-dropdown)]", className),
750
+ const Title = phone ? SheetTitle : "div";
751
+ const panel = /* @__PURE__ */ jsxs("aside", {
752
+ className: cn$1("flex h-full w-[420px] min-w-[360px] max-w-[480px] flex-col border-l border-[var(--md3-outline-variant)] bg-surface-container shadow-[var(--shadow-dropdown)]", phone && "w-full min-w-0 max-w-none", className),
766
753
  "aria-label": `Agent chat about ${heading}`,
767
754
  children: [
768
755
  /* @__PURE__ */ jsxs("header", {
@@ -774,7 +761,7 @@ function ArtifactAgentDock({ scope, open, onOpenChange, transport, defaultPrompt
774
761
  children: [/* @__PURE__ */ jsx("div", {
775
762
  className: "text-[10px] font-medium uppercase tracking-wider text-muted-foreground",
776
763
  children: "Discussing"
777
- }), /* @__PURE__ */ jsx("div", {
764
+ }), /* @__PURE__ */ jsx(Title, {
778
765
  className: "truncate text-sm font-semibold text-foreground",
779
766
  children: heading
780
767
  })]
@@ -843,7 +830,7 @@ function ArtifactAgentDock({ scope, open, onOpenChange, transport, defaultPrompt
843
830
  placeholder: `Ask about ${heading}…`,
844
831
  rows: 2,
845
832
  disabled: !threadId,
846
- className: `min-h-[44px] flex-1 resize-none rounded-[20px] border bg-surface-dim px-3.5 py-2 text-sm text-foreground placeholder:text-muted-foreground disabled:opacity-50 ${focusField}`
833
+ className: `min-h-[44px] min-w-0 flex-1 resize-none rounded-[20px] border bg-surface-dim px-3.5 py-2 text-sm text-foreground placeholder:text-muted-foreground disabled:opacity-50 ${focusField}`
847
834
  }), sending ? /* @__PURE__ */ jsx("button", {
848
835
  type: "button",
849
836
  onClick: cancel,
@@ -861,5 +848,22 @@ function ArtifactAgentDock({ scope, open, onOpenChange, transport, defaultPrompt
861
848
  })
862
849
  ]
863
850
  });
851
+ return phone ? /* @__PURE__ */ jsx(Sheet, {
852
+ open,
853
+ onOpenChange,
854
+ children: /* @__PURE__ */ jsx(SheetContent, {
855
+ hideCloseButton: true,
856
+ "aria-describedby": void 0,
857
+ className: "inset-0 h-dvh w-full gap-0 p-0 sm:max-w-none",
858
+ onOpenAutoFocus: () => {
859
+ if (document.activeElement instanceof HTMLElement) returnFocus.current = document.activeElement;
860
+ },
861
+ onCloseAutoFocus: (event) => {
862
+ event.preventDefault();
863
+ if (returnFocus.current?.isConnected) returnFocus.current.focus();
864
+ },
865
+ children: panel
866
+ })
867
+ }) : panel;
864
868
  }
865
869
  export { ReasoningLevelPicker as S, modelProvider as _, ChatMessage$1 as a, DEFAULT_REASONING_LEVEL_OPTIONS as b, SpeakerHeader as c, UserMessage as d, agentTimelineStepKind as f, ArtifactAgentDock as g, partitionBySpeaker as h, ChatContainer$1 as i, TRANSCRIPT_TEXT as l, isViewerMessage as m, AgentTimelineColumn$1 as n, MessageAuthor as o, foldSummary as p, AgentTimelineStep as r, MessageList as s, AgentTimeline$1 as t, ThinkingIndicator as u, snapHarnessToModel as v, HARNESS_REASONING_OPTIONS as x, AgentProfilePicker as y };
package/dist/chat.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { $ as AgentProfilePicker, A as SpeakerSection, B as partitionBySpeaker, C as MessageList, D as SpeakerHeader, E as Speaker, F as UserMessage, G as ArtifactDockStreamEvent, H as ArtifactAgentDockProps, I as UserMessageProps, J as modelProvider, K as ArtifactKind, L as agentTimelineStepKind, M as TRANSCRIPT_TEXT, N as ThinkingIndicator, O as SpeakerHeaderProps, P as ThinkingIndicatorProps, Q as AgentProfileOption, R as foldSummary, S as MessageAuthorProps, T as MessageRole, U as ArtifactAgentDockTransport, V as ArtifactAgentDock, W as ArtifactDockMessage, X as AgentProfileCapability, Y as snapHarnessToModel, Z as AgentProfileDraft, _ as ChatContainer, a as AgentTimelineFoldItem, at as ReasoningLevelPicker, b as ChatMessageProps, c as AgentTimelineProps, d as AgentTimelineStepKind, et as AgentProfilePickerProps, f as AgentTimelineStepProps, g as ChatAuthor, h as AgentTimelineToolItem, i as AgentTimelineCustomItem, it as ReasoningLevelOption, j as SpeakerState, k as SpeakerPart, l as AgentTimelineStatusItem, m as AgentTimelineToolGroupItem, n as AgentTimelineArtifactItem, nt as HARNESS_REASONING_OPTIONS, o as AgentTimelineItem, ot as ReasoningLevelPickerProps, p as AgentTimelineTone, q as ArtifactScope, r as AgentTimelineColumn, rt as ReasoningLevel, s as AgentTimelineMessageItem, t as AgentTimeline, tt as DEFAULT_REASONING_LEVEL_OPTIONS, u as AgentTimelineStep, v as ChatContainerProps, w as MessageListProps, x as MessageAuthor, y as ChatMessage, z as isViewerMessage } from "./index-1Q4Jtlic.js";
1
+ import { $ as AgentProfilePicker, A as SpeakerSection, B as partitionBySpeaker, C as MessageList, D as SpeakerHeader, E as Speaker, F as UserMessage, G as ArtifactDockStreamEvent, H as ArtifactAgentDockProps, I as UserMessageProps, J as modelProvider, K as ArtifactKind, L as agentTimelineStepKind, M as TRANSCRIPT_TEXT, N as ThinkingIndicator, O as SpeakerHeaderProps, P as ThinkingIndicatorProps, Q as AgentProfileOption, R as foldSummary, S as MessageAuthorProps, T as MessageRole, U as ArtifactAgentDockTransport, V as ArtifactAgentDock, W as ArtifactDockMessage, X as AgentProfileCapability, Y as snapHarnessToModel, Z as AgentProfileDraft, _ as ChatContainer, a as AgentTimelineFoldItem, at as ReasoningLevelPicker, b as ChatMessageProps, c as AgentTimelineProps, d as AgentTimelineStepKind, et as AgentProfilePickerProps, f as AgentTimelineStepProps, g as ChatAuthor, h as AgentTimelineToolItem, i as AgentTimelineCustomItem, it as ReasoningLevelOption, j as SpeakerState, k as SpeakerPart, l as AgentTimelineStatusItem, m as AgentTimelineToolGroupItem, n as AgentTimelineArtifactItem, nt as HARNESS_REASONING_OPTIONS, o as AgentTimelineItem, ot as ReasoningLevelPickerProps, p as AgentTimelineTone, q as ArtifactScope, r as AgentTimelineColumn, rt as ReasoningLevel, s as AgentTimelineMessageItem, t as AgentTimeline, tt as DEFAULT_REASONING_LEVEL_OPTIONS, u as AgentTimelineStep, v as ChatContainerProps, w as MessageListProps, x as MessageAuthor, y as ChatMessage, z as isViewerMessage } from "./index-PxmhpV0y.js";
2
2
  export { type AgentProfileCapability, type AgentProfileDraft, type AgentProfileOption, AgentProfilePicker, type AgentProfilePickerProps, AgentTimeline, type AgentTimelineArtifactItem, AgentTimelineColumn, type AgentTimelineCustomItem, type AgentTimelineFoldItem, type AgentTimelineItem, type AgentTimelineMessageItem, type AgentTimelineProps, type AgentTimelineStatusItem, AgentTimelineStep, type AgentTimelineStepKind, type AgentTimelineStepProps, type AgentTimelineTone, type AgentTimelineToolGroupItem, type AgentTimelineToolItem, ArtifactAgentDock, type ArtifactAgentDockProps, type ArtifactAgentDockTransport, type ArtifactDockMessage, type ArtifactDockStreamEvent, type ArtifactKind, type ArtifactScope, type ChatAuthor, ChatContainer, type ChatContainerProps, ChatMessage, type ChatMessageProps, DEFAULT_REASONING_LEVEL_OPTIONS, HARNESS_REASONING_OPTIONS, MessageAuthor, type MessageAuthorProps, MessageList, type MessageListProps, type MessageRole, type ReasoningLevel, type ReasoningLevelOption, ReasoningLevelPicker, type ReasoningLevelPickerProps, type Speaker, SpeakerHeader, type SpeakerHeaderProps, type SpeakerPart, type SpeakerSection, type SpeakerState, TRANSCRIPT_TEXT, ThinkingIndicator, type ThinkingIndicatorProps, UserMessage, type UserMessageProps, agentTimelineStepKind, foldSummary, isViewerMessage, modelProvider, partitionBySpeaker, snapHarnessToModel };
package/dist/chat.js CHANGED
@@ -1 +1 @@
1
- export { y as AgentProfilePicker, t as AgentTimeline, n as AgentTimelineColumn, r as AgentTimelineStep, g as ArtifactAgentDock, i as ChatContainer, a as ChatMessage, b as DEFAULT_REASONING_LEVEL_OPTIONS, x as HARNESS_REASONING_OPTIONS, o as MessageAuthor, s as MessageList, S as ReasoningLevelPicker, c as SpeakerHeader, l as TRANSCRIPT_TEXT, u as ThinkingIndicator, d as UserMessage, f as agentTimelineStepKind, p as foldSummary, m as isViewerMessage, _ as modelProvider, h as partitionBySpeaker, v as snapHarnessToModel } from "./chat-B_5Lwevm.js";
1
+ export { y as AgentProfilePicker, t as AgentTimeline, n as AgentTimelineColumn, r as AgentTimelineStep, g as ArtifactAgentDock, i as ChatContainer, a as ChatMessage, b as DEFAULT_REASONING_LEVEL_OPTIONS, x as HARNESS_REASONING_OPTIONS, o as MessageAuthor, s as MessageList, S as ReasoningLevelPicker, c as SpeakerHeader, l as TRANSCRIPT_TEXT, u as ThinkingIndicator, d as UserMessage, f as agentTimelineStepKind, p as foldSummary, m as isViewerMessage, _ as modelProvider, h as partitionBySpeaker, v as snapHarnessToModel } from "./chat-DcaqQX2X.js";
@@ -1,4 +1,4 @@
1
- import { D as Button$1, zr as Logo } from "./primitives-znfPK9NP.js";
1
+ import { Br as Logo, D as Button$1 } from "./primitives-l-Qv14bS.js";
2
2
  import { t as cn$1 } from "./utils-BER_bdgE.js";
3
3
  import { r as ShellHeader } from "./shell-header-CwqDzC4I.js";
4
4
  import { n as MOTION_SURFACE, t as MOTION_CONTROL } from "./motion-2Ine0j_s.js";
package/dist/dashboard.js CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as useSidebar, A as parseInsufficientBalance, B as SidebarPanel, C as SandboxStatusPill, D as ResourceMeter, E as ResourceSnapshot, F as RailHeader, G as SidebarRailNav, H as SidebarPanelHeader, I as RailModeButton, J as SIDEBAR_PANEL_WIDTH, K as RailTooltip, L as RailSeparator, M as RailButton, N as RailExpandable, O as INSUFFICIENT_BALANCE_CODE, P as RailFlyout, Q as SidebarProvider, R as Sidebar, S as SANDBOX_STATUS, T as ActivityFeed, U as SidebarRail, V as SidebarPanelContent, W as SidebarRailFooter, X as SIDEBAR_RAIL_WIDTH, Y as SIDEBAR_RAIL_LABELED_WIDTH, Z as SIDEBAR_TOTAL_WIDTH, _ as BackendSelector, a as PortsList, b as SandboxCard, c as SystemLogsViewer, d as DashboardLayout, f as HARNESS_OPTIONS, g as HarnessLogo, h as HARNESS_BRAND, i as TemplateCard, j as ProfileAvatar, k as OutOfCreditsModal, l as MetricAreaChart, m as chatCapableHarnesses, n as SnapshotList, o as GitPanel, p as HarnessPicker, q as SIDEBAR_MOBILE_WIDTH, r as ProcessList, s as UsageSummary, t as PromoBanner, u as SidebarLayout, v as SandboxTable, w as sandboxStatus, x as canAdminSandbox, y as NewSandboxCard, z as SidebarContent } from "./dashboard-C7QJJw7-.js";
1
+ import { $ as useSidebar, A as parseInsufficientBalance, B as SidebarPanel, C as SandboxStatusPill, D as ResourceMeter, E as ResourceSnapshot, F as RailHeader, G as SidebarRailNav, H as SidebarPanelHeader, I as RailModeButton, J as SIDEBAR_PANEL_WIDTH, K as RailTooltip, L as RailSeparator, M as RailButton, N as RailExpandable, O as INSUFFICIENT_BALANCE_CODE, P as RailFlyout, Q as SidebarProvider, R as Sidebar, S as SANDBOX_STATUS, T as ActivityFeed, U as SidebarRail, V as SidebarPanelContent, W as SidebarRailFooter, X as SIDEBAR_RAIL_WIDTH, Y as SIDEBAR_RAIL_LABELED_WIDTH, Z as SIDEBAR_TOTAL_WIDTH, _ as BackendSelector, a as PortsList, b as SandboxCard, c as SystemLogsViewer, d as DashboardLayout, f as HARNESS_OPTIONS, g as HarnessLogo, h as HARNESS_BRAND, i as TemplateCard, j as ProfileAvatar, k as OutOfCreditsModal, l as MetricAreaChart, m as chatCapableHarnesses, n as SnapshotList, o as GitPanel, p as HarnessPicker, q as SIDEBAR_MOBILE_WIDTH, r as ProcessList, s as UsageSummary, t as PromoBanner, u as SidebarLayout, v as SandboxTable, w as sandboxStatus, x as canAdminSandbox, y as NewSandboxCard, z as SidebarContent } from "./dashboard-C1pNlewR.js";
2
2
  import { i as modelBrandFor, n as ProviderMark, r as canonicalModelId, t as ModelBrandStack } from "./model-brand-BQlarCIo.js";
3
3
  import { a as formatPrice, i as PricingPage, n as SandboxPageShell, o as BillingDashboard, r as UsageChart, t as DashboardPageHeader } from "./page-layout-CuOpvZys.js";
4
4
  export { ActivityFeed, BackendSelector, BillingDashboard, DashboardLayout, DashboardPageHeader, GitPanel, HARNESS_BRAND, HARNESS_OPTIONS, HarnessLogo, HarnessPicker, INSUFFICIENT_BALANCE_CODE, MetricAreaChart, ModelBrandStack, NewSandboxCard, OutOfCreditsModal, PortsList, PricingPage, ProcessList, ProfileAvatar, PromoBanner, ProviderMark, RailButton, RailExpandable, RailFlyout, RailHeader, RailModeButton, RailSeparator, RailTooltip, ResourceMeter, ResourceSnapshot, SANDBOX_STATUS, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, SandboxPageShell, SandboxStatusPill, SandboxTable, Sidebar, SidebarContent, SidebarLayout, SidebarPanel, SidebarPanelContent, SidebarPanelHeader, SidebarProvider, SidebarRail, SidebarRailFooter, SidebarRailNav, SnapshotList, SystemLogsViewer, TemplateCard, UsageChart, UsageSummary, canAdminSandbox, canonicalModelId, chatCapableHarnesses, formatPrice, modelBrandFor, parseInsufficientBalance, sandboxStatus, useSidebar };
package/dist/globals.css CHANGED
@@ -26,8 +26,6 @@
26
26
  --color-violet-400: oklch(70.2% 0.183 293.541);
27
27
  --color-violet-500: oklch(60.6% 0.25 292.717);
28
28
  --color-zinc-400: oklch(70.5% 0.015 286.067);
29
- --color-neutral-400: oklch(70.8% 0 none);
30
- --color-neutral-500: oklch(55.6% 0 none);
31
29
  --color-black: #000;
32
30
  --color-white: #fff;
33
31
  --spacing: 0.25rem;
@@ -81,10 +79,8 @@
81
79
  --animate-spin: spin 1s linear infinite;
82
80
  --animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;
83
81
  --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
84
- --animate-bounce: bounce 1s infinite;
85
82
  --blur-sm: 8px;
86
83
  --blur-md: 12px;
87
- --blur-xl: 24px;
88
84
  --default-transition-duration: 150ms;
89
85
  --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
90
86
  --default-font-family: var(--font-sans);
@@ -548,6 +544,9 @@
548
544
  .m-0 {
549
545
  margin: 0px;
550
546
  }
547
+ .m-1 {
548
+ margin: var(--spacing);
549
+ }
551
550
  .m-4 {
552
551
  margin: calc(var(--spacing) * 4);
553
552
  }
@@ -856,6 +855,10 @@
856
855
  width: var(--control-height-sm,2rem);
857
856
  height: var(--control-height-sm,2rem);
858
857
  }
858
+ .size-auto {
859
+ width: auto;
860
+ height: auto;
861
+ }
859
862
  .size-full {
860
863
  width: 100%;
861
864
  height: 100%;
@@ -1049,9 +1052,6 @@
1049
1052
  .h-\[650px\] {
1050
1053
  height: 650px;
1051
1054
  }
1052
- .h-\[680px\] {
1053
- height: 680px;
1054
- }
1055
1055
  .h-\[720px\] {
1056
1056
  height: 720px;
1057
1057
  }
@@ -1874,12 +1874,12 @@
1874
1874
  .transform {
1875
1875
  transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
1876
1876
  }
1877
+ .transform-none {
1878
+ transform: none;
1879
+ }
1877
1880
  .animate-\[tangle-breathe_var\(--motion-ambient\)_infinite\] {
1878
1881
  animation: tangle-breathe var(--motion-ambient) infinite;
1879
1882
  }
1880
- .animate-bounce {
1881
- animation: var(--animate-bounce);
1882
- }
1883
1883
  .animate-ping {
1884
1884
  animation: var(--animate-ping);
1885
1885
  }
@@ -2069,12 +2069,6 @@
2069
2069
  .gap-10 {
2070
2070
  gap: calc(var(--spacing) * 10);
2071
2071
  }
2072
- .gap-\[3px\] {
2073
- gap: 3px;
2074
- }
2075
- .gap-\[5px\] {
2076
- gap: 5px;
2077
- }
2078
2072
  .gap-px {
2079
2073
  gap: 1px;
2080
2074
  }
@@ -2280,6 +2274,9 @@
2280
2274
  .rounded-\[var\(--radius-md\)\] {
2281
2275
  border-radius: var(--radius-md);
2282
2276
  }
2277
+ .rounded-\[var\(--radius-panel\)\] {
2278
+ border-radius: var(--radius-panel);
2279
+ }
2283
2280
  .rounded-\[var\(--radius-sm\)\] {
2284
2281
  border-radius: var(--radius-sm);
2285
2282
  }
@@ -2614,9 +2611,6 @@
2614
2611
  border-color: color-mix(in oklab, var(--color-green-500) 30%, transparent);
2615
2612
  }
2616
2613
  }
2617
- .border-muted-foreground {
2618
- border-color: hsl(var(--muted-foreground));
2619
- }
2620
2614
  .border-primary {
2621
2615
  border-color: hsl(var(--primary));
2622
2616
  }
@@ -2842,6 +2836,9 @@
2842
2836
  .bg-\[var\(--surface-info-bg\)\] {
2843
2837
  background-color: var(--surface-info-bg);
2844
2838
  }
2839
+ .bg-\[var\(--surface-info-text\)\] {
2840
+ background-color: var(--surface-info-text);
2841
+ }
2845
2842
  .bg-\[var\(--surface-neutral-bg\)\] {
2846
2843
  background-color: var(--surface-neutral-bg);
2847
2844
  }
@@ -2971,9 +2968,6 @@
2971
2968
  background-color: color-mix(in oklab, var(--color-black) 80%, transparent);
2972
2969
  }
2973
2970
  }
2974
- .bg-blue-500 {
2975
- background-color: var(--color-blue-500);
2976
- }
2977
2971
  .bg-blue-500\/15 {
2978
2972
  background-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 15%, transparent);
2979
2973
  @supports (color: color-mix(in lab, red, red)) {
@@ -3046,9 +3040,6 @@
3046
3040
  .bg-green-400 {
3047
3041
  background-color: var(--color-green-400);
3048
3042
  }
3049
- .bg-green-500 {
3050
- background-color: var(--color-green-500);
3051
- }
3052
3043
  .bg-green-600\/20 {
3053
3044
  background-color: color-mix(in srgb, oklch(62.7% 0.194 149.214) 20%, transparent);
3054
3045
  @supports (color: color-mix(in lab, red, red)) {
@@ -3142,9 +3133,6 @@
3142
3133
  background-color: color-mix(in oklab, hsl(var(--primary)) 4%, transparent);
3143
3134
  }
3144
3135
  }
3145
- .bg-red-500 {
3146
- background-color: var(--color-red-500);
3147
- }
3148
3136
  .bg-red-500\/10 {
3149
3137
  background-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 10%, transparent);
3150
3138
  @supports (color: color-mix(in lab, red, red)) {
@@ -3220,9 +3208,6 @@
3220
3208
  background-color: color-mix(in oklab, var(--color-white) 40%, transparent);
3221
3209
  }
3222
3210
  }
3223
- .bg-yellow-500 {
3224
- background-color: var(--color-yellow-500);
3225
- }
3226
3211
  .bg-yellow-600\/20 {
3227
3212
  background-color: color-mix(in srgb, oklch(68.1% 0.162 75.834) 20%, transparent);
3228
3213
  @supports (color: color-mix(in lab, red, red)) {
@@ -3807,14 +3792,6 @@
3807
3792
  --tw-font-weight: var(--font-weight-semibold);
3808
3793
  font-weight: var(--font-weight-semibold);
3809
3794
  }
3810
- .tracking-\[0\.1em\] {
3811
- --tw-tracking: 0.1em;
3812
- letter-spacing: 0.1em;
3813
- }
3814
- .tracking-\[0\.08em\] {
3815
- --tw-tracking: 0.08em;
3816
- letter-spacing: 0.08em;
3817
- }
3818
3795
  .tracking-\[0\.09em\] {
3819
3796
  --tw-tracking: 0.09em;
3820
3797
  letter-spacing: 0.09em;
@@ -3823,10 +3800,6 @@
3823
3800
  --tw-tracking: 0.12em;
3824
3801
  letter-spacing: 0.12em;
3825
3802
  }
3826
- .tracking-\[0\.14em\] {
3827
- --tw-tracking: 0.14em;
3828
- letter-spacing: 0.14em;
3829
- }
3830
3803
  .tracking-\[0\.16em\] {
3831
3804
  --tw-tracking: 0.16em;
3832
3805
  letter-spacing: 0.16em;
@@ -3839,10 +3812,6 @@
3839
3812
  --tw-tracking: var(--tracking-tight,-0.02em);
3840
3813
  letter-spacing: var(--tracking-tight,-0.02em);
3841
3814
  }
3842
- .tracking-\[var\(--tracking-wide\,0\.08em\)\] {
3843
- --tw-tracking: var(--tracking-wide,0.08em);
3844
- letter-spacing: var(--tracking-wide,0.08em);
3845
- }
3846
3815
  .tracking-normal {
3847
3816
  --tw-tracking: var(--tracking-normal);
3848
3817
  letter-spacing: var(--tracking-normal);
@@ -4157,9 +4126,6 @@
4157
4126
  color: color-mix(in oklab, hsl(var(--muted-foreground)) 90%, transparent);
4158
4127
  }
4159
4128
  }
4160
- .text-neutral-400 {
4161
- color: var(--color-neutral-400);
4162
- }
4163
4129
  .text-popover-foreground {
4164
4130
  color: hsl(var(--popover-foreground));
4165
4131
  }
@@ -4437,6 +4403,10 @@
4437
4403
  --tw-blur: blur(8px);
4438
4404
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
4439
4405
  }
4406
+ .grayscale {
4407
+ --tw-grayscale: grayscale(100%);
4408
+ filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
4409
+ }
4440
4410
  .\!filter {
4441
4411
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,) !important;
4442
4412
  }
@@ -4458,11 +4428,6 @@
4458
4428
  -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
4459
4429
  backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
4460
4430
  }
4461
- .backdrop-blur-xl {
4462
- --tw-backdrop-blur: blur(var(--blur-xl));
4463
- -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
4464
- backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
4465
- }
4466
4431
  .transition {
4467
4432
  transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
4468
4433
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -4513,6 +4478,11 @@
4513
4478
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
4514
4479
  transition-duration: var(--tw-duration, var(--default-transition-duration));
4515
4480
  }
4481
+ .transition-\[transform\,opacity\] {
4482
+ transition-property: transform,opacity;
4483
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
4484
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
4485
+ }
4516
4486
  .transition-\[transform\,width\] {
4517
4487
  transition-property: transform,width;
4518
4488
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -4621,6 +4591,9 @@
4621
4591
  .group-focus-within\:opacity-100:is(:where(.group):focus-within *) {
4622
4592
  opacity: 100%;
4623
4593
  }
4594
+ .group-focus-within\/expandable\:opacity-100:is(:where(.group\/expandable):focus-within *) {
4595
+ opacity: 100%;
4596
+ }
4624
4597
  @media (hover: hover) {
4625
4598
  .group-hover\:block:is(:where(.group):hover *) {
4626
4599
  display: block;
@@ -4669,6 +4642,9 @@
4669
4642
  .group-hover\/brand\:opacity-100:is(:where(.group\/brand):hover *) {
4670
4643
  opacity: 100%;
4671
4644
  }
4645
+ .group-hover\/expandable\:opacity-100:is(:where(.group\/expandable):hover *) {
4646
+ opacity: 100%;
4647
+ }
4672
4648
  .group-hover\/sub\:opacity-100:is(:where(.group\/sub):hover *) {
4673
4649
  opacity: 100%;
4674
4650
  }
@@ -5273,6 +5249,10 @@
5273
5249
  --tw-brightness: brightness(110%);
5274
5250
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
5275
5251
  }
5252
+ .hover\:grayscale-0:hover {
5253
+ --tw-grayscale: grayscale(0%);
5254
+ filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
5255
+ }
5276
5256
  }
5277
5257
  .focus\:border-\[var\(--focus-border\)\]:focus {
5278
5258
  border-color: var(--focus-border);
@@ -5943,6 +5923,9 @@
5943
5923
  .sm\:\!block {
5944
5924
  display: block !important;
5945
5925
  }
5926
+ .sm\:block {
5927
+ display: block;
5928
+ }
5946
5929
  .sm\:flex {
5947
5930
  display: flex;
5948
5931
  }
@@ -5973,6 +5956,9 @@
5973
5956
  .sm\:max-w-lg {
5974
5957
  max-width: var(--container-lg);
5975
5958
  }
5959
+ .sm\:max-w-none {
5960
+ max-width: none;
5961
+ }
5976
5962
  .sm\:max-w-sm {
5977
5963
  max-width: var(--container-sm);
5978
5964
  }
@@ -6276,9 +6262,6 @@
6276
6262
  }
6277
6263
  }
6278
6264
  @media (prefers-color-scheme: dark) {
6279
- .dark\:text-neutral-500 {
6280
- color: var(--color-neutral-500);
6281
- }
6282
6265
  .dark\:text-white {
6283
6266
  color: var(--color-white);
6284
6267
  }
@@ -6325,6 +6308,9 @@
6325
6308
  font-size: var(--text-base);
6326
6309
  line-height: var(--tw-leading, var(--text-base--line-height));
6327
6310
  }
6311
+ .pointer-coarse\:opacity-100 {
6312
+ opacity: 100%;
6313
+ }
6328
6314
  .pointer-coarse\:before\:absolute::before {
6329
6315
  content: var(--tw-content);
6330
6316
  position: absolute;
@@ -11715,16 +11701,6 @@
11715
11701
  opacity: 0.5;
11716
11702
  }
11717
11703
  }
11718
- @keyframes bounce {
11719
- 0%, 100% {
11720
- transform: translateY(-25%);
11721
- animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
11722
- }
11723
- 50% {
11724
- transform: none;
11725
- animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
11726
- }
11727
- }
11728
11704
  @layer properties {
11729
11705
  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
11730
11706
  *, ::before, ::after, ::backdrop {
package/dist/hooks.d.ts CHANGED
@@ -2,7 +2,7 @@ import { n as UsePtySessionReturn, r as usePtySession, t as UsePtySessionOptions
2
2
  import { t as Session } from "./sidecar-CNP4zXop.js";
3
3
  import { a as SendMessageOptions, c as SessionStreamError, d as useSessionStream, i as SESSION_STREAM_RECONNECT_DELAY_MS, 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-CPevSSEj.js";
4
4
  import { t as useDocument } from "./use-document-DCXGpk0q.js";
5
- import { AgentStreamEvent, AppendUserMessageOptions, ApplySdkEventOptions, AuthUser, AutomationStreamEvent, BeginAssistantMessageOptions, BotStreamEvent, CompleteAssistantMessageOptions, ConnectionState, EventStreamHandlers, EventStreamOpener, EventStreamSource, RealtimeSessionOptions, RealtimeSessionRegistry, RealtimeSessionRegistryProps, RealtimeSessionState, RealtimeSessionTarget, SSEEvent, SdkSessionAttachment, SdkSessionEvent, SdkSessionSeed, TaskStreamEvent, TerminalStreamEvent, UseAuthOptions, UseAuthResult, UseRunGroupsOptions, UseSSEStreamOptions, UseSSEStreamResult, UseSdkSessionOptions, UseSdkSessionReturn, UseToolCallStreamReturn, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useDropdownMenu, useEventStream, useFollowTail, useLiveTime, useRealtimeSession, useRunCollapseState, useRunGroups, useRunNow, useSSEStream, useSdkSession, useToolCallStream } from "@tangle-network/ui/hooks";
5
+ import { AgentStreamEvent, AppendUserMessageOptions, ApplySdkEventOptions, AuthUser, AutomationStreamEvent, BeginAssistantMessageOptions, BotStreamEvent, CompleteAssistantMessageOptions, ConnectionState, EventStreamHandlers, EventStreamOpener, EventStreamSource, PHONE_MEDIA, RealtimeSessionOptions, RealtimeSessionRegistry, RealtimeSessionRegistryProps, RealtimeSessionState, RealtimeSessionTarget, SSEEvent, SdkSessionAttachment, SdkSessionEvent, SdkSessionSeed, TaskStreamEvent, TerminalStreamEvent, UseAuthOptions, UseAuthResult, UseRunGroupsOptions, UseSSEStreamOptions, UseSSEStreamResult, UseSdkSessionOptions, UseSdkSessionReturn, UseToolCallStreamReturn, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useDropdownMenu, useEventStream, useFollowTail, useLiveTime, usePhone, useRealtimeSession, useRunCollapseState, useRunGroups, useRunNow, useSSEStream, useSdkSession, useToolCallStream } from "@tangle-network/ui/hooks";
6
6
  /**
7
7
  * Sandbox-level telemetry collected by the sidecar from cgroup v2
8
8
  * (Docker) or /proc (Firecracker guest). `cpuPercent` is computed
@@ -139,4 +139,4 @@ export declare function useRenameSession(apiUrl: string, token: string | null):
139
139
  sessionId: string;
140
140
  title: string;
141
141
  }, unknown>;
142
- export { type AgentStreamEvent, type AppendUserMessageOptions, type ApplySdkEventOptions, type AuthUser, type AutomationStreamEvent, type BeginAssistantMessageOptions, type BotStreamEvent, type CompleteAssistantMessageOptions, type ConnectionState, type EventStreamHandlers, type EventStreamOpener, type EventStreamSource, type RealtimeSessionOptions, RealtimeSessionRegistry, type RealtimeSessionRegistryProps, type RealtimeSessionState, type RealtimeSessionTarget, SESSION_STREAM_RECONNECT_DELAY_MS, type SSEEvent, type SdkSessionAttachment, type SdkSessionEvent, type SdkSessionSeed, SendMessageOptions, SessionDegradation, SessionInfo, SessionStreamError, SidecarAuth, type TaskStreamEvent, type TerminalStreamEvent, type UseAuthOptions, type UseAuthResult, UsePtySessionOptions, UsePtySessionReturn, type UseRunGroupsOptions, type UseSSEStreamOptions, type UseSSEStreamResult, type UseSdkSessionOptions, type UseSdkSessionReturn, UseSessionStreamOptions, UseSessionStreamResult, UseSidecarAuthOptions, type UseToolCallStreamReturn, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useDocument, useDropdownMenu, useEventStream, useFollowTail, useLiveTime, usePtySession, useRealtimeSession, useRunCollapseState, useRunGroups, useRunNow, useSSEStream, useSdkSession, useSessionStream, useSidecarAuth, useToolCallStream };
142
+ export { type AgentStreamEvent, type AppendUserMessageOptions, type ApplySdkEventOptions, type AuthUser, type AutomationStreamEvent, type BeginAssistantMessageOptions, type BotStreamEvent, type CompleteAssistantMessageOptions, type ConnectionState, type EventStreamHandlers, type EventStreamOpener, type EventStreamSource, PHONE_MEDIA, type RealtimeSessionOptions, RealtimeSessionRegistry, type RealtimeSessionRegistryProps, type RealtimeSessionState, type RealtimeSessionTarget, SESSION_STREAM_RECONNECT_DELAY_MS, type SSEEvent, type SdkSessionAttachment, type SdkSessionEvent, type SdkSessionSeed, SendMessageOptions, SessionDegradation, SessionInfo, SessionStreamError, SidecarAuth, type TaskStreamEvent, type TerminalStreamEvent, type UseAuthOptions, type UseAuthResult, UsePtySessionOptions, UsePtySessionReturn, type UseRunGroupsOptions, type UseSSEStreamOptions, type UseSSEStreamResult, type UseSdkSessionOptions, type UseSdkSessionReturn, UseSessionStreamOptions, UseSessionStreamResult, UseSidecarAuthOptions, type UseToolCallStreamReturn, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useDocument, useDropdownMenu, useEventStream, useFollowTail, useLiveTime, usePhone, usePtySession, useRealtimeSession, useRunCollapseState, useRunGroups, useRunNow, useSSEStream, useSdkSession, useSessionStream, useSidecarAuth, useToolCallStream };
package/dist/hooks.js CHANGED
@@ -2,7 +2,7 @@ import { t as usePtySession } from "./use-pty-session-BHVQlSs-.js";
2
2
  import { i as useSessionStream, n as SESSION_STREAM_RECONNECT_DELAY_MS, r as SessionStreamError, t as useSidecarAuth } from "./use-sidecar-auth-D9BrWCg1.js";
3
3
  import { useDocument } from "./hooks/use-document.js";
4
4
  import * as React$1 from "react";
5
- import { RealtimeSessionRegistry, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useDropdownMenu, useEventStream, useFollowTail, useLiveTime, useRealtimeSession, useRunCollapseState, useRunGroups, useRunNow, useSSEStream, useSdkSession, useToolCallStream } from "@tangle-network/ui/hooks";
5
+ import { PHONE_MEDIA, RealtimeSessionRegistry, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useDropdownMenu, useEventStream, useFollowTail, useLiveTime, usePhone, useRealtimeSession, useRunCollapseState, useRunGroups, useRunNow, useSSEStream, useSdkSession, useToolCallStream } from "@tangle-network/ui/hooks";
6
6
  import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
7
7
  // src/hooks/use-sandbox-metrics.ts
8
8
  const METRICS_REQUEST_TIMEOUT_MS = 15e3;
@@ -231,4 +231,4 @@ function useRenameSession(apiUrl, token) {
231
231
  }
232
232
  });
233
233
  }
234
- export { RealtimeSessionRegistry, SESSION_STREAM_RECONNECT_DELAY_MS, SessionStreamError, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useCreateSession, useDeleteSession, useDocument, useDropdownMenu, useEventStream, useFollowTail, useLiveTime, usePtySession, useRealtimeSession, useRenameSession, useRunCollapseState, useRunGroups, useRunNow, useSSEStream, useSandboxMetrics, useSdkSession, useSessionStream, useSessions, useSidecarAuth, useToolCallStream };
234
+ export { PHONE_MEDIA, RealtimeSessionRegistry, SESSION_STREAM_RECONNECT_DELAY_MS, SessionStreamError, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useCreateSession, useDeleteSession, useDocument, useDropdownMenu, useEventStream, useFollowTail, useLiveTime, usePhone, usePtySession, useRealtimeSession, useRenameSession, useRunCollapseState, useRunGroups, useRunNow, useSSEStream, useSandboxMetrics, useSdkSession, useSessionStream, useSessions, useSidecarAuth, useToolCallStream };