@tangle-network/sandbox-ui 0.134.4 → 0.134.5

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.
@@ -317,29 +317,67 @@ function profileSubtitle(profile) {
317
317
  */
318
318
  function AgentProfilePicker({ value, onChange, profiles, capabilities, onCreate, onUpdate, onDelete, disabled, locked, lockReason, onNewChat, className, triggerClassName, popoverClassName, side = "top" }) {
319
319
  const [open, setOpen] = React$1.useState(false);
320
- const [composing, setComposing] = React$1.useState(null);
320
+ const [composing, setComposingState] = React$1.useState(null);
321
+ const [saving, setSaving] = React$1.useState(false);
322
+ const [saveError, setSaveError] = React$1.useState(null);
323
+ const pendingSave = React$1.useRef(false);
324
+ const editorEpoch = React$1.useRef(0);
325
+ const setComposing = React$1.useCallback((next) => {
326
+ editorEpoch.current += 1;
327
+ pendingSave.current = false;
328
+ setSaving(false);
329
+ setSaveError(null);
330
+ setComposingState(next);
331
+ }, []);
332
+ React$1.useEffect(() => () => {
333
+ editorEpoch.current += 1;
334
+ }, []);
321
335
  const popoverRef = React$1.useRef(null);
322
336
  const ref = useClickOutside(() => {
337
+ if (pendingSave.current) return;
323
338
  setOpen(false);
324
339
  setComposing(null);
325
340
  }, [popoverRef]);
326
- const canAuthor = Boolean(capabilities && (onCreate || onUpdate));
341
+ const canAuthor = Boolean(capabilities && onCreate);
327
342
  const builtins = profiles.filter((profile) => profile.builtin);
328
343
  const custom = profiles.filter((profile) => !profile.builtin);
329
344
  const selectedName = profiles.find((profile) => profile.id === value)?.name ?? value;
330
345
  React$1.useEffect(() => {
331
- if (!locked) return;
346
+ if (!locked && !disabled) return;
332
347
  setOpen(false);
333
348
  setComposing(null);
334
- }, [locked]);
349
+ }, [
350
+ locked,
351
+ disabled,
352
+ setComposing
353
+ ]);
335
354
  function select(id) {
336
355
  onChange(id);
337
356
  setOpen(false);
338
357
  }
339
358
  async function save(draft) {
340
- if (draft.id) await onUpdate?.(draft.id, draft);
341
- else await onCreate?.(draft);
342
- setComposing(null);
359
+ if (pendingSave.current || locked || disabled) return;
360
+ const epoch = editorEpoch.current;
361
+ pendingSave.current = true;
362
+ setSaving(true);
363
+ setSaveError(null);
364
+ try {
365
+ if (draft.id) {
366
+ if (!onUpdate) throw new Error("Editing this agent is unavailable.");
367
+ await onUpdate(draft.id, draft);
368
+ } else {
369
+ if (!onCreate) throw new Error("Creating an agent is unavailable.");
370
+ await onCreate(draft);
371
+ }
372
+ if (editorEpoch.current === epoch) setComposing(null);
373
+ } catch (error) {
374
+ if (editorEpoch.current === epoch) setSaveError(error instanceof Error && error.message.trim() ? error.message : "Could not save this agent. Your draft is still here; try again.");
375
+ } finally {
376
+ if (editorEpoch.current === epoch) {
377
+ pendingSave.current = false;
378
+ setSaving(false);
379
+ }
380
+ }
343
381
  }
344
382
  if (locked && onNewChat) return /* @__PURE__ */ jsxs(InformativeLock, {
345
383
  ariaLabel: "Agent profile (locked)",
@@ -361,9 +399,13 @@ function AgentProfilePicker({ value, onChange, profiles, capabilities, onCreate,
361
399
  className: cn$1("relative inline-flex", className),
362
400
  children: [/* @__PURE__ */ jsxs("button", {
363
401
  type: "button",
364
- disabled: disabled || locked,
402
+ disabled: disabled || locked || saving,
365
403
  title: locked ? lockReason : void 0,
366
- onClick: () => setOpen((v) => !v),
404
+ onClick: () => {
405
+ if (pendingSave.current) return;
406
+ if (open) setComposing(null);
407
+ setOpen((v) => !v);
408
+ },
367
409
  className: cn$1("inline-flex h-8 items-center gap-1.5 rounded-lg border border-[var(--md3-outline-variant)] bg-surface-container px-2.5", "text-xs font-medium text-foreground shadow-sm transition-colors", "hover:border-[var(--md3-outline-variant)] hover:bg-surface-container-high", focusRing, "data-[state=open]:border-[var(--md3-outline-variant)] data-[state=open]:bg-surface-container-high", "disabled:cursor-not-allowed disabled:opacity-60", triggerClassName),
368
410
  "data-state": open ? "open" : "closed",
369
411
  "aria-label": "Agent profile",
@@ -375,7 +417,7 @@ function AgentProfilePicker({ value, onChange, profiles, capabilities, onCreate,
375
417
  }),
376
418
  !locked && /* @__PURE__ */ jsx(ChevronDown, { className: "ml-auto h-3.5 w-3.5 shrink-0 text-muted-foreground" })
377
419
  ]
378
- }), open && !locked && /* @__PURE__ */ jsx(AnchoredPopover, {
420
+ }), open && !locked && !disabled && /* @__PURE__ */ jsx(AnchoredPopover, {
379
421
  ref: popoverRef,
380
422
  anchorRef: ref,
381
423
  side,
@@ -384,7 +426,11 @@ function AgentProfilePicker({ value, onChange, profiles, capabilities, onCreate,
384
426
  children: composing ? /* @__PURE__ */ jsx(ProfileForm, {
385
427
  capabilities: capabilities ?? [],
386
428
  initial: composing === "new" ? void 0 : composing,
387
- onCancel: () => setComposing(null),
429
+ saving,
430
+ error: saveError,
431
+ onCancel: () => {
432
+ if (!pendingSave.current) setComposing(null);
433
+ },
388
434
  onSave: save
389
435
  }) : /* @__PURE__ */ jsxs("div", {
390
436
  className: "max-h-[min(60vh,420px)] overflow-y-auto",
@@ -460,16 +506,18 @@ function ProfileRow({ active, title, subtitle, onSelect, onEdit, onDelete }) {
460
506
  })]
461
507
  });
462
508
  }
463
- function ProfileForm({ capabilities, initial, onCancel, onSave }) {
509
+ function ProfileForm({ capabilities, initial, saving, error, onCancel, onSave }) {
464
510
  const [name, setName] = React$1.useState(initial?.name ?? "");
465
511
  const [caps, setCaps] = React$1.useState(initial?.capabilities ? [...initial.capabilities] : capabilities.map((c) => c.id));
466
512
  const [instructions, setInstructions] = React$1.useState(initial?.instructions ?? "");
467
513
  const toggle = (id) => setCaps((prev) => prev.includes(id) ? prev.filter((c) => c !== id) : [...prev, id]);
468
514
  return /* @__PURE__ */ jsxs("div", {
469
515
  className: "space-y-3 p-2.5",
516
+ "aria-busy": saving,
470
517
  children: [
471
518
  /* @__PURE__ */ jsx("input", {
472
519
  autoFocus: true,
520
+ disabled: saving,
473
521
  value: name,
474
522
  onChange: (event) => setName(event.target.value),
475
523
  placeholder: "Agent name (e.g. Tax Reviewer)",
@@ -484,6 +532,7 @@ function ProfileForm({ capabilities, initial, onCancel, onSave }) {
484
532
  className: "flex cursor-pointer items-start gap-2 rounded-md px-2 py-1.5 hover:bg-accent/40",
485
533
  children: [/* @__PURE__ */ jsx("input", {
486
534
  type: "checkbox",
535
+ disabled: saving,
487
536
  checked: caps.includes(cap.id),
488
537
  onChange: () => toggle(cap.id),
489
538
  className: "mt-0.5"
@@ -500,30 +549,37 @@ function ProfileForm({ capabilities, initial, onCancel, onSave }) {
500
549
  }, cap.id))
501
550
  })] }),
502
551
  /* @__PURE__ */ jsx("textarea", {
552
+ disabled: saving,
503
553
  value: instructions,
504
554
  onChange: (event) => setInstructions(event.target.value),
505
555
  rows: 2,
506
556
  placeholder: "Instructions (optional) — how this agent should behave",
507
557
  className: `w-full resize-none rounded-lg border bg-surface-container px-3 py-2 text-sm ${focusField}`
508
558
  }),
559
+ error && /* @__PURE__ */ jsx("p", {
560
+ role: "alert",
561
+ className: "text-sm text-destructive",
562
+ children: error
563
+ }),
509
564
  /* @__PURE__ */ jsxs("div", {
510
565
  className: "flex justify-end gap-2",
511
566
  children: [/* @__PURE__ */ jsx("button", {
512
567
  type: "button",
568
+ disabled: saving,
513
569
  onClick: onCancel,
514
570
  className: "rounded-lg px-3 py-1.5 text-sm text-muted-foreground hover:bg-accent/40",
515
571
  children: "Cancel"
516
572
  }), /* @__PURE__ */ jsx("button", {
517
573
  type: "button",
518
- disabled: !name.trim(),
519
- onClick: () => onSave({
574
+ disabled: saving || !name.trim(),
575
+ onClick: () => void onSave({
520
576
  id: initial?.id,
521
577
  name: name.trim(),
522
578
  capabilities: caps,
523
579
  instructions: instructions.trim()
524
580
  }),
525
581
  className: "rounded-lg bg-primary px-3 py-1.5 text-sm font-medium text-primary-foreground transition-opacity hover:opacity-90 disabled:opacity-40",
526
- children: "Save agent"
582
+ children: saving ? "Saving agent…" : "Save agent"
527
583
  })]
528
584
  })
529
585
  ]
package/dist/chat.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { A as ArtifactDockMessage, B as AgentProfilePickerProps, C as ThinkingIndicatorProps, D as ArtifactAgentDock, E as isViewerMessage, F as snapHarnessToModel, G as ReasoningLevelPicker, H as HARNESS_REASONING_OPTIONS, I as AgentProfileCapability, K as ReasoningLevelPickerProps, L as AgentProfileDraft, M as ArtifactKind, N as ArtifactScope, O as ArtifactAgentDockProps, P as modelProvider, R as AgentProfileOption, S as ThinkingIndicator, T as UserMessageProps, U as ReasoningLevel, V as DEFAULT_REASONING_LEVEL_OPTIONS, W as ReasoningLevelOption, _ as MessageAuthorProps, a as AgentTimelineMessageItem, b as MessageRole, c as AgentTimelineTone, d as ChatAuthor, f as ChatContainer, g as MessageAuthor, h as ChatMessageProps, i as AgentTimelineItem, j as ArtifactDockStreamEvent, k as ArtifactAgentDockTransport, l as AgentTimelineToolGroupItem, m as ChatMessage, n as AgentTimelineArtifactItem, o as AgentTimelineProps, p as ChatContainerProps, r as AgentTimelineCustomItem, s as AgentTimelineStatusItem, t as AgentTimeline, u as AgentTimelineToolItem, v as MessageList, w as UserMessage, x as TRANSCRIPT_TEXT, y as MessageListProps, z as AgentProfilePicker } from "./index-04xUKbln.js";
1
+ import { A as ArtifactDockMessage, B as AgentProfilePickerProps, C as ThinkingIndicatorProps, D as ArtifactAgentDock, E as isViewerMessage, F as snapHarnessToModel, G as ReasoningLevelPicker, H as HARNESS_REASONING_OPTIONS, I as AgentProfileCapability, K as ReasoningLevelPickerProps, L as AgentProfileDraft, M as ArtifactKind, N as ArtifactScope, O as ArtifactAgentDockProps, P as modelProvider, R as AgentProfileOption, S as ThinkingIndicator, T as UserMessageProps, U as ReasoningLevel, V as DEFAULT_REASONING_LEVEL_OPTIONS, W as ReasoningLevelOption, _ as MessageAuthorProps, a as AgentTimelineMessageItem, b as MessageRole, c as AgentTimelineTone, d as ChatAuthor, f as ChatContainer, g as MessageAuthor, h as ChatMessageProps, i as AgentTimelineItem, j as ArtifactDockStreamEvent, k as ArtifactAgentDockTransport, l as AgentTimelineToolGroupItem, m as ChatMessage, n as AgentTimelineArtifactItem, o as AgentTimelineProps, p as ChatContainerProps, r as AgentTimelineCustomItem, s as AgentTimelineStatusItem, t as AgentTimeline, u as AgentTimelineToolItem, v as MessageList, w as UserMessage, x as TRANSCRIPT_TEXT, y as MessageListProps, z as AgentProfilePicker } from "./index-D-U-1U0i.js";
2
2
  export { type AgentProfileCapability, type AgentProfileDraft, type AgentProfileOption, AgentProfilePicker, type AgentProfilePickerProps, AgentTimeline, type AgentTimelineArtifactItem, type AgentTimelineCustomItem, type AgentTimelineItem, type AgentTimelineMessageItem, type AgentTimelineProps, type AgentTimelineStatusItem, 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, TRANSCRIPT_TEXT, ThinkingIndicator, type ThinkingIndicatorProps, UserMessage, type UserMessageProps, isViewerMessage, modelProvider, snapHarnessToModel };
package/dist/chat.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as MessageList, c as UserMessage, d as modelProvider, f as snapHarnessToModel, g as ReasoningLevelPicker, h as HARNESS_REASONING_OPTIONS, i as MessageAuthor, l as isViewerMessage, m as DEFAULT_REASONING_LEVEL_OPTIONS, n as ChatContainer, o as TRANSCRIPT_TEXT, p as AgentProfilePicker, r as ChatMessage, s as ThinkingIndicator, t as AgentTimeline, u as ArtifactAgentDock } from "./chat-DRkKyE8E.js";
1
+ import { a as MessageList, c as UserMessage, d as modelProvider, f as snapHarnessToModel, g as ReasoningLevelPicker, h as HARNESS_REASONING_OPTIONS, i as MessageAuthor, l as isViewerMessage, m as DEFAULT_REASONING_LEVEL_OPTIONS, n as ChatContainer, o as TRANSCRIPT_TEXT, p as AgentProfilePicker, r as ChatMessage, s as ThinkingIndicator, t as AgentTimeline, u as ArtifactAgentDock } from "./chat-przZ1xCc.js";
2
2
  export { AgentProfilePicker, AgentTimeline, ArtifactAgentDock, ChatContainer, ChatMessage, DEFAULT_REASONING_LEVEL_OPTIONS, HARNESS_REASONING_OPTIONS, MessageAuthor, MessageList, ReasoningLevelPicker, TRANSCRIPT_TEXT, ThinkingIndicator, UserMessage, isViewerMessage, modelProvider, snapHarnessToModel };
@@ -100,7 +100,9 @@ interface AgentProfilePickerProps {
100
100
  * selection-only picker (the New / edit / delete affordances stay hidden).
101
101
  */
102
102
  capabilities?: ReadonlyArray<AgentProfileCapability>;
103
+ /** Resolve after commit; reject write failures to retain the draft and show its error. Do not reject a post-commit refresh failure. */
103
104
  onCreate?: (draft: AgentProfileDraft) => void | Promise<void>;
105
+ /** Same commit/rejection contract as onCreate. */
104
106
  onUpdate?: (id: string, draft: AgentProfileDraft) => void | Promise<void>;
105
107
  onDelete?: (id: string) => void | Promise<void>;
106
108
  disabled?: boolean;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
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
- import { A as ArtifactDockMessage, B as AgentProfilePickerProps, C as ThinkingIndicatorProps, D as ArtifactAgentDock, E as isViewerMessage, F as snapHarnessToModel, G as ReasoningLevelPicker, H as HARNESS_REASONING_OPTIONS, I as AgentProfileCapability, K as ReasoningLevelPickerProps, L as AgentProfileDraft, M as ArtifactKind, N as ArtifactScope, O as ArtifactAgentDockProps, P as modelProvider, R as AgentProfileOption, S as ThinkingIndicator, T as UserMessageProps, U as ReasoningLevel, V as DEFAULT_REASONING_LEVEL_OPTIONS, W as ReasoningLevelOption, _ as MessageAuthorProps, a as AgentTimelineMessageItem, b as MessageRole, c as AgentTimelineTone, d as ChatAuthor, f as ChatContainer, g as MessageAuthor, h as ChatMessageProps, i as AgentTimelineItem, j as ArtifactDockStreamEvent, k as ArtifactAgentDockTransport, l as AgentTimelineToolGroupItem, m as ChatMessage, n as AgentTimelineArtifactItem, o as AgentTimelineProps, p as ChatContainerProps, r as AgentTimelineCustomItem, s as AgentTimelineStatusItem, t as AgentTimeline, u as AgentTimelineToolItem, v as MessageList, w as UserMessage, x as TRANSCRIPT_TEXT, y as MessageListProps, z as AgentProfilePicker } from "./index-04xUKbln.js";
2
+ import { A as ArtifactDockMessage, B as AgentProfilePickerProps, C as ThinkingIndicatorProps, D as ArtifactAgentDock, E as isViewerMessage, F as snapHarnessToModel, G as ReasoningLevelPicker, H as HARNESS_REASONING_OPTIONS, I as AgentProfileCapability, K as ReasoningLevelPickerProps, L as AgentProfileDraft, M as ArtifactKind, N as ArtifactScope, O as ArtifactAgentDockProps, P as modelProvider, R as AgentProfileOption, S as ThinkingIndicator, T as UserMessageProps, U as ReasoningLevel, V as DEFAULT_REASONING_LEVEL_OPTIONS, W as ReasoningLevelOption, _ as MessageAuthorProps, a as AgentTimelineMessageItem, b as MessageRole, c as AgentTimelineTone, d as ChatAuthor, f as ChatContainer, g as MessageAuthor, h as ChatMessageProps, i as AgentTimelineItem, j as ArtifactDockStreamEvent, k as ArtifactAgentDockTransport, l as AgentTimelineToolGroupItem, m as ChatMessage, n as AgentTimelineArtifactItem, o as AgentTimelineProps, p as ChatContainerProps, r as AgentTimelineCustomItem, s as AgentTimelineStatusItem, t as AgentTimeline, u as AgentTimelineToolItem, v as MessageList, w as UserMessage, x as TRANSCRIPT_TEXT, y as MessageListProps, z as AgentProfilePicker } from "./index-D-U-1U0i.js";
3
3
  import { a as SharedMessagingRouteViewState, i as AgentTargetSummary, n as AgentMessagingConnection, r as AgentMessagingConnectionProps, t as AgentEnrollmentViewState } from "./index-ClRHbsoX.js";
4
4
  import { $ as SandboxTable, $t as Sidebar, A as MetricChartPoint, At as SIDEBAR_TOTAL_WIDTH, B as ProductVariant, Bt as RailButton, C as UsageSummary, Ct as OutOfCreditsModal, D as SystemLogsViewerProps, Dt as SIDEBAR_PANEL_WIDTH, E as SystemLogsViewer, Et as SIDEBAR_MOBILE_WIDTH, F as SidebarLayoutProps, Ft as RailTooltipProps, G as HARNESS_OPTIONS, Gt as RailFlyout, H as HarnessBrand, Ht as RailExpandable, I as DashboardLayout, It as McpServer, J as HarnessType, Jt as RailHeaderProps, K as HarnessPicker, Kt as RailFlyoutProps, L as DashboardLayoutProps, Lt as AppearanceController, M as SidebarLayout, Mt as SidebarProviderProps, N as SidebarLayoutFlyoutItem, Nt as useSidebar, O as MetricAreaChart, Ot as SIDEBAR_RAIL_LABELED_WIDTH, P as SidebarLayoutNavItem, Pt as RailTooltip, Q as BackendSelectorProps, Qt as RailSeparatorProps, R as DashboardUser, Rt as ProfileAvatar, S as GitStatusData, St as InsufficientBalance, T as UsageSummaryProps, Tt as parseInsufficientBalance, U as HarnessLogo, Ut as RailExpandableProps, V as HARNESS_BRAND, Vt as RailButtonProps, W as HarnessLogoProps, Wt as RailExpandableSubItem, X as Backend, Xt as RailModeButtonProps, Y as chatCapableHarnesses, Yt as RailModeButton, Z as BackendSelector, Zt as RailSeparator, _ as PortsList, _t as ResourceSnapshotItem, a as PromoBanner, an as SidebarPanelHeader, at as NewSandboxCard, b as GitPanel, bt as ResourceMeterProps, c as SnapshotList, cn as SidebarProps, ct as SandboxCardData, d as ProcessList, dn as SidebarRailFooterProps, dt as TeamRole, en as SidebarContent, et as SandboxTableProps, f as ProcessListProps, fn as SidebarRailNav, ft as canAdminSandbox, g as ExposedPort, gn as ThemeMode, gt as ResourceSnapshot, h as TemplateCardProps, hn as SidebarUser, ht as ActivityItem, i as SandboxPageShellProps, in as SidebarPanelContentProps, it as sandboxStatus, j as MetricChartTone, jt as SidebarProvider, k as MetricAreaChartProps, kt as SIDEBAR_RAIL_WIDTH, l as SnapshotListProps, ln as SidebarRail, lt as SandboxCardProps, m as TemplateCardData, mn as SidebarRailProps, mt as ActivityFeedProps, n as DashboardPageHeaderProps, nn as SidebarPanel, nt as SandboxStatusPill, o as PromoBannerProps, on as SidebarPanelHeaderProps, ot as NewSandboxCardProps, p as TemplateCard, pn as SidebarRailNavProps, pt as ActivityFeed, q as HarnessPickerProps, qt as RailHeader, r as SandboxPageShell, rn as SidebarPanelContent, rt as SandboxStatusPillProps, s as SnapshotInfo, sn as SidebarPanelProps, st as SandboxCard, t as DashboardPageHeader, tn as SidebarContentProps, tt as SANDBOX_STATUS, u as ProcessInfo, un as SidebarRailFooter, ut as SandboxStatus, v as PortsListProps, vt as ResourceSnapshotProps, w as UsageSummaryData, wt as OutOfCreditsModalProps, x as GitPanelProps, xt as INSUFFICIENT_BALANCE_CODE, y as GitCommitData, yt as ResourceMeter, z as NavItem, zt as ProfileAvatarProps } from "./index-DQzli0pf.js";
5
5
  import { a as canonicalModelId, i as ProviderMark, n as ModelBrandStack, o as modelBrandFor, r as ModelInfo, t as ModelBrandIdentity } from "./model-brand-B57CV8Lg.js";
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ import { t as usePtySession } from "./use-pty-session-Bf4hBLXJ.js";
10
10
  import { CSV_PREVIEW_ROW_LIMIT, FileArtifactPane, FileCard, FileList, FilePreview, FileTabs, FileTree, PdfViewer, RichFileTree, configurePdfViewer, detectFileFormat, fileExtension, filterFileTree, getCodeLanguage, getFormatLabel, getSyntaxLanguage, parseCsv, resolveFilePreviewKind } from "./files.js";
11
11
  import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-CYb9hevq.js";
12
12
  import { OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, OpenUIArtifactRenderer, findUnsupportedOpenUINode, validateOpenUIJsonArtifact, validateOpenUIJsonNode } from "./openui.js";
13
- import { a as MessageList, c as UserMessage, d as modelProvider, f as snapHarnessToModel, g as ReasoningLevelPicker, h as HARNESS_REASONING_OPTIONS, i as MessageAuthor, l as isViewerMessage, m as DEFAULT_REASONING_LEVEL_OPTIONS, n as ChatContainer, o as TRANSCRIPT_TEXT, p as AgentProfilePicker, r as ChatMessage, s as ThinkingIndicator, t as AgentTimeline, u as ArtifactAgentDock } from "./chat-DRkKyE8E.js";
13
+ import { a as MessageList, c as UserMessage, d as modelProvider, f as snapHarnessToModel, g as ReasoningLevelPicker, h as HARNESS_REASONING_OPTIONS, i as MessageAuthor, l as isViewerMessage, m as DEFAULT_REASONING_LEVEL_OPTIONS, n as ChatContainer, o as TRANSCRIPT_TEXT, p as AgentProfilePicker, r as ChatMessage, s as ThinkingIndicator, t as AgentTimeline, u as ArtifactAgentDock } from "./chat-przZ1xCc.js";
14
14
  import { ApprovalCard, ApprovalDiffSummary, ExpandedToolDetail, InlineThinkingItem, InlineToolItem, LiveDuration, RunGroup, RunPhaseList, RunRowShell, RunRowStatusDot, TaskList, ToolCallFeed, parseToolEvent, showsTaskPriority, taskProgress, taskStatus } from "./run.js";
15
15
  import "./vault-tree.js";
16
16
  import { a as TangleLoginButton, i as UserMenu, n as GitHubLoginButton, r as LoginLayout, t as AuthHeader } from "./auth-CWe17Hly.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/sandbox-ui",
3
- "version": "0.134.4",
3
+ "version": "0.134.5",
4
4
  "license": "MIT",
5
5
  "description": "Unified UI component library for Tangle Sandbox — primitives, chat, dashboard, terminal, editor, and workspace components",
6
6
  "repository": {