@tangle-network/sandbox-ui 0.20.3 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -228,13 +228,19 @@ function useSessionStream({
228
228
  }
229
229
  }, [refetch]);
230
230
  handleSSEEventRef.current = handleSSEEvent;
231
- const send = useCallback(async (text) => {
231
+ const send = useCallback(async (text, options) => {
232
232
  if (!token || !sessionId || !apiUrl) return;
233
233
  try {
234
234
  const url = `${apiUrl}/session/sessions/${encodeURIComponent(sessionId)}/messages`;
235
235
  await fetchJson(url, token, {
236
236
  method: "POST",
237
- body: JSON.stringify({ parts: [{ type: "text", text }] })
237
+ body: JSON.stringify({
238
+ parts: [{ type: "text", text }],
239
+ ...options?.agent ? { agent: options.agent } : {},
240
+ ...options?.model ? { model: options.model } : {},
241
+ ...options?.system ? { system: options.system } : {},
242
+ ...options?.reasoningEffort ? { reasoningEffort: options.reasoningEffort } : {}
243
+ })
238
244
  });
239
245
  setIsStreaming(true);
240
246
  } catch (err) {
@@ -1474,6 +1474,7 @@ function SandboxWorkbench({
1474
1474
  ] })
1475
1475
  ] })
1476
1476
  ] });
1477
+ const { composerControls, ...chatSession } = session;
1477
1478
  const center = /* @__PURE__ */ jsx9(
1478
1479
  ArtifactPane2,
1479
1480
  {
@@ -1484,14 +1485,17 @@ function SandboxWorkbench({
1484
1485
  headerActions: session.headerActions,
1485
1486
  className: "h-full",
1486
1487
  contentClassName: "bg-background",
1487
- children: /* @__PURE__ */ jsx9(
1488
- ChatContainer,
1489
- {
1490
- ...session,
1491
- className: "h-full",
1492
- presentation: session.presentation ?? "timeline"
1493
- }
1494
- )
1488
+ children: /* @__PURE__ */ jsxs9("div", { className: "flex h-full min-h-0 flex-col", children: [
1489
+ /* @__PURE__ */ jsx9(
1490
+ ChatContainer,
1491
+ {
1492
+ ...chatSession,
1493
+ className: "min-h-0 flex-1",
1494
+ presentation: session.presentation ?? "timeline"
1495
+ }
1496
+ ),
1497
+ composerControls && /* @__PURE__ */ jsx9("div", { className: "shrink-0 border-t border-border bg-muted/30 px-3 py-2", children: composerControls })
1498
+ ] })
1495
1499
  }
1496
1500
  );
1497
1501
  const artifactPanel = artifacts.length > 0 ? /* @__PURE__ */ jsxs9("section", { className: "flex h-full min-h-0 flex-col bg-background", children: [
@@ -1,6 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- export { B as BillingBalance, a as BillingDashboard, b as BillingDashboardProps, c as BillingSubscription, d as BillingUsage, M as ModelInfo, e as ModelPicker, f as ModelPickerProps, g as ModelPickerVariant, P as PricingPage, h as PricingPageProps, i as PricingTier, T as TemplateCard, j as TemplateCardData, k as TemplateCardProps, U as UsageChart, l as UsageChartProps, m as UsageDataPoint, n as canonicalModelId, o as formatContext, p as formatPrice, q as formatPricing } from './template-card-gf-InrfN.js';
3
+ export { B as Backend, a as BackendSelector, b as BackendSelectorProps, H as HARNESS_OPTIONS, c as HarnessPicker, d as HarnessPickerProps, e as HarnessType } from './harness-picker-C1W3rTeb.js';
4
+ export { M as ModelInfo, a as ModelPicker, b as ModelPickerProps, c as ModelPickerVariant, d as canonicalModelId, f as formatContext, e as formatPricing } from './model-picker-DUfMTQo5.js';
5
+ export { B as BillingBalance, a as BillingDashboard, b as BillingDashboardProps, c as BillingSubscription, d as BillingUsage, P as PricingPage, e as PricingPageProps, f as PricingTier, T as TemplateCard, g as TemplateCardData, h as TemplateCardProps, U as UsageChart, i as UsageChartProps, j as UsageDataPoint, k as formatPrice } from './template-card-UhV3pmRC.js';
4
6
 
5
7
  interface SidebarUser {
6
8
  email: string;
@@ -344,52 +346,6 @@ interface PlanCardsProps {
344
346
  }
345
347
  declare function PlanCards({ plans, className }: PlanCardsProps): react_jsx_runtime.JSX.Element;
346
348
 
347
- interface Backend {
348
- type: string;
349
- label: string;
350
- description?: string;
351
- }
352
- interface BackendSelectorProps {
353
- backends: Backend[];
354
- selected: string;
355
- onChange: (selected: string) => void;
356
- label?: string;
357
- placeholder?: string;
358
- className?: string;
359
- }
360
- declare function BackendSelector({ backends, selected, onChange, label, placeholder, className, }: BackendSelectorProps): react_jsx_runtime.JSX.Element;
361
-
362
- /**
363
- * Sandbox agent harness types — mirrors `BackendType` from
364
- * `@tangle-network/sandbox` SDK. Kept in lockstep with that enum:
365
- * if the SDK adds a backend, add it here too.
366
- */
367
- type HarnessType = "opencode" | "claude-code" | "codex" | "amp" | "factory-droids" | "cli-base";
368
- interface HarnessOption extends Backend {
369
- type: HarnessType;
370
- }
371
- /**
372
- * Default option list with human-readable copy. Order is curated so the
373
- * recommended choice (`opencode`) appears first; `cli-base` (no agent) last.
374
- */
375
- declare const HARNESS_OPTIONS: readonly HarnessOption[];
376
- interface HarnessPickerProps extends Omit<BackendSelectorProps, "backends" | "selected" | "onChange"> {
377
- value: HarnessType;
378
- onChange: (next: HarnessType) => void;
379
- /** Filter the available harnesses (e.g. by plan tier). Defaults to all. */
380
- available?: ReadonlyArray<HarnessType>;
381
- /** Override or extend the option metadata. Keys are HarnessType. */
382
- optionsOverride?: Partial<Record<HarnessType, Partial<Omit<HarnessOption, "type">>>>;
383
- }
384
- /**
385
- * Type-safe harness/backend selector for sandbox-backed agent products.
386
- *
387
- * Wraps the generic {@link BackendSelector} with the canonical harness list
388
- * baked in, so consumers don't have to re-declare it (or risk drifting from
389
- * the SDK enum).
390
- */
391
- declare function HarnessPicker({ value, onChange, available, optionsOverride, label, ...rest }: HarnessPickerProps): react_jsx_runtime.JSX.Element;
392
-
393
349
  type ProductVariant = "sandbox";
394
350
  interface NavItem {
395
351
  id: string;
@@ -670,4 +626,4 @@ interface InfoPanelProps {
670
626
  }
671
627
  declare function InfoPanel({ label, title, description, className }: InfoPanelProps): react_jsx_runtime.JSX.Element;
672
628
 
673
- export { type Backend, BackendConfig, type BackendConfigProps, BackendSelector, type BackendSelectorProps, type BackendStatusData, ClusterStatusBar, type ClusterStatusBarProps, type ClusterStatusItem, CreditBalance, type CreditBalanceProps, DashboardLayout, type DashboardLayoutProps, type Profile as DashboardProfile, type SnapshotInfo as DashboardSnapshotInfo, type DashboardUser, type ExposedPort, type GitCommitData, GitPanel, type GitPanelProps, type GitStatusData, HARNESS_OPTIONS, HarnessPicker, type HarnessPickerProps, type HarnessType, INSUFFICIENT_BALANCE_CODE, InfoPanel, type InfoPanelProps, type InsufficientBalance, type Invoice, InvoiceTable, type InvoiceTableProps, type McpServer, type NavItem, NetworkConfig, type NetworkConfigData, type NetworkConfigProps, NewSandboxCard, type NewSandboxCardProps, OutOfCreditsModal, type OutOfCreditsModalProps, type PlanCardData, PlanCards, type PlanCardsProps, type PlanFeature, PortsList, type PortsListProps, type ProcessInfo, ProcessList, type ProcessListProps, type ProductVariant, ProfileAvatar, type ProfileAvatarProps, ProfileComparison, type ProfileComparisonProps, ProfileSelector, type ProfileSelectorProps, PromoBanner, type PromoBannerProps, RailButton, type RailButtonProps, RailModeButton, type RailModeButtonProps, RailSeparator, type RailSeparatorProps, ResourceMeter, type ResourceMeterProps, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, type SandboxCardData, type SandboxCardProps, type SandboxStatus, SandboxTable, type SandboxTableProps, Sidebar, SidebarContent, type SidebarContentProps, 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, SnapshotList, type SnapshotListProps, SystemLogsViewer, type SystemLogsViewerProps, type TeamRole, UsageSummary, type UsageSummaryData, type UsageSummaryProps, type Variant, VariantList, type VariantListProps, type VariantOutcome, type VariantStatus, canAdminSandbox, parseInsufficientBalance, useSidebar };
629
+ export { BackendConfig, type BackendConfigProps, type BackendStatusData, ClusterStatusBar, type ClusterStatusBarProps, type ClusterStatusItem, CreditBalance, type CreditBalanceProps, DashboardLayout, type DashboardLayoutProps, type Profile as DashboardProfile, type SnapshotInfo as DashboardSnapshotInfo, type DashboardUser, type ExposedPort, type GitCommitData, GitPanel, type GitPanelProps, type GitStatusData, INSUFFICIENT_BALANCE_CODE, InfoPanel, type InfoPanelProps, type InsufficientBalance, type Invoice, InvoiceTable, type InvoiceTableProps, type McpServer, type NavItem, NetworkConfig, type NetworkConfigData, type NetworkConfigProps, NewSandboxCard, type NewSandboxCardProps, OutOfCreditsModal, type OutOfCreditsModalProps, type PlanCardData, PlanCards, type PlanCardsProps, type PlanFeature, PortsList, type PortsListProps, type ProcessInfo, ProcessList, type ProcessListProps, type ProductVariant, ProfileAvatar, type ProfileAvatarProps, ProfileComparison, type ProfileComparisonProps, ProfileSelector, type ProfileSelectorProps, PromoBanner, type PromoBannerProps, RailButton, type RailButtonProps, RailModeButton, type RailModeButtonProps, RailSeparator, type RailSeparatorProps, ResourceMeter, type ResourceMeterProps, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, type SandboxCardData, type SandboxCardProps, type SandboxStatus, SandboxTable, type SandboxTableProps, Sidebar, SidebarContent, type SidebarContentProps, 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, SnapshotList, type SnapshotListProps, SystemLogsViewer, type SystemLogsViewerProps, type TeamRole, UsageSummary, type UsageSummaryData, type UsageSummaryProps, type Variant, VariantList, type VariantListProps, type VariantOutcome, type VariantStatus, canAdminSandbox, parseInsufficientBalance, useSidebar };
package/dist/dashboard.js CHANGED
@@ -1,12 +1,9 @@
1
1
  import {
2
2
  BackendConfig,
3
- BackendSelector,
4
3
  ClusterStatusBar,
5
4
  CreditBalance,
6
5
  DashboardLayout,
7
6
  GitPanel,
8
- HARNESS_OPTIONS,
9
- HarnessPicker,
10
7
  INSUFFICIENT_BALANCE_CODE,
11
8
  InvoiceTable,
12
9
  NetworkConfig,
@@ -46,20 +43,27 @@ import {
46
43
  canAdminSandbox,
47
44
  parseInsufficientBalance,
48
45
  useSidebar
49
- } from "./chunk-R6QNJQRH.js";
46
+ } from "./chunk-FLWMBK77.js";
50
47
  import {
51
48
  BillingDashboard,
52
49
  InfoPanel,
53
- ModelPicker,
54
50
  PricingPage,
55
51
  TemplateCard,
56
52
  UsageChart,
53
+ formatPrice
54
+ } from "./chunk-DNZ4DTNA.js";
55
+ import "./chunk-7ZA5SEK3.js";
56
+ import {
57
+ BackendSelector,
58
+ HARNESS_OPTIONS,
59
+ HarnessPicker
60
+ } from "./chunk-ESRYVGHF.js";
61
+ import {
62
+ ModelPicker,
57
63
  canonicalModelId,
58
64
  formatContext,
59
- formatPrice,
60
65
  formatPricing
61
- } from "./chunk-QNVVKMEW.js";
62
- import "./chunk-7ZA5SEK3.js";
66
+ } from "./chunk-4KAPMTPU.js";
63
67
  import "./chunk-EI44GEQ5.js";
64
68
  export {
65
69
  BackendConfig,
package/dist/globals.css CHANGED
@@ -668,9 +668,6 @@
668
668
  .h-28 {
669
669
  height: calc(var(--spacing) * 28);
670
670
  }
671
- .h-32 {
672
- height: calc(var(--spacing) * 32);
673
- }
674
671
  .h-48 {
675
672
  height: calc(var(--spacing) * 48);
676
673
  }
@@ -2758,9 +2755,6 @@
2758
2755
  .underline {
2759
2756
  text-decoration-line: underline;
2760
2757
  }
2761
- .underline-offset-2 {
2762
- text-underline-offset: 2px;
2763
- }
2764
2758
  .underline-offset-4 {
2765
2759
  text-underline-offset: 4px;
2766
2760
  }
@@ -3503,11 +3497,6 @@
3503
3497
  color: var(--color-red-400);
3504
3498
  }
3505
3499
  }
3506
- .focus\:underline {
3507
- &:focus {
3508
- text-decoration-line: underline;
3509
- }
3510
- }
3511
3500
  .focus\:ring-0 {
3512
3501
  &:focus {
3513
3502
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
@@ -0,0 +1,49 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface Backend {
4
+ type: string;
5
+ label: string;
6
+ description?: string;
7
+ }
8
+ interface BackendSelectorProps {
9
+ backends: Backend[];
10
+ selected: string;
11
+ onChange: (selected: string) => void;
12
+ label?: string;
13
+ placeholder?: string;
14
+ className?: string;
15
+ }
16
+ declare function BackendSelector({ backends, selected, onChange, label, placeholder, className, }: BackendSelectorProps): react_jsx_runtime.JSX.Element;
17
+
18
+ /**
19
+ * Sandbox agent harness types — mirrors `BackendType` from
20
+ * `@tangle-network/sandbox` SDK. Kept in lockstep with that enum:
21
+ * if the SDK adds a backend, add it here too.
22
+ */
23
+ type HarnessType = "opencode" | "claude-code" | "codex" | "amp" | "factory-droids" | "cli-base";
24
+ interface HarnessOption extends Backend {
25
+ type: HarnessType;
26
+ }
27
+ /**
28
+ * Default option list with human-readable copy. Order is curated so the
29
+ * recommended choice (`opencode`) appears first; `cli-base` (no agent) last.
30
+ */
31
+ declare const HARNESS_OPTIONS: readonly HarnessOption[];
32
+ interface HarnessPickerProps extends Omit<BackendSelectorProps, "backends" | "selected" | "onChange"> {
33
+ value: HarnessType;
34
+ onChange: (next: HarnessType) => void;
35
+ /** Filter the available harnesses (e.g. by plan tier). Defaults to all. */
36
+ available?: ReadonlyArray<HarnessType>;
37
+ /** Override or extend the option metadata. Keys are HarnessType. */
38
+ optionsOverride?: Partial<Record<HarnessType, Partial<Omit<HarnessOption, "type">>>>;
39
+ }
40
+ /**
41
+ * Type-safe harness/backend selector for sandbox-backed agent products.
42
+ *
43
+ * Wraps the generic {@link BackendSelector} with the canonical harness list
44
+ * baked in, so consumers don't have to re-declare it (or risk drifting from
45
+ * the SDK enum).
46
+ */
47
+ declare function HarnessPicker({ value, onChange, available, optionsOverride, label, ...rest }: HarnessPickerProps): react_jsx_runtime.JSX.Element;
48
+
49
+ export { type Backend as B, HARNESS_OPTIONS as H, BackendSelector as a, type BackendSelectorProps as b, HarnessPicker as c, type HarnessPickerProps as d, type HarnessType as e };
package/dist/hooks.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { AgentStreamEvent, AppendUserMessageOptions, ApplySdkEventOptions, AuthUser, AutomationStreamEvent, BeginAssistantMessageOptions, BotStreamEvent, CompleteAssistantMessageOptions, ConnectionState, RealtimeSessionOptions, RealtimeSessionRegistry, RealtimeSessionRegistryProps, RealtimeSessionState, RealtimeSessionTarget, SSEEvent, SdkSessionAttachment, SdkSessionEvent, SdkSessionSeed, TaskStreamEvent, TerminalStreamEvent, UseAuthOptions, UseAuthResult, UseRunGroupsOptions, UseSSEStreamOptions, UseSSEStreamResult, UseSdkSessionOptions, UseSdkSessionReturn, UseToolCallStreamReturn, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useDropdownMenu, useLiveTime, useRealtimeSession, useRunCollapseState, useRunGroups, useSSEStream, useSdkSession, useToolCallStream } from '@tangle-network/ui/hooks';
2
2
  import * as _tanstack_react_query from '@tanstack/react-query';
3
3
  import { Session } from './types.js';
4
- export { SessionInfo, SidecarAuth, UseSessionStreamOptions, UseSessionStreamResult, UseSidecarAuthOptions, useSessionStream, useSidecarAuth } from './sdk-hooks.js';
4
+ export { e as SendMessageOptions, S as SessionInfo, a as SidecarAuth, U as UseSessionStreamOptions, b as UseSessionStreamResult, c as UseSidecarAuthOptions, u as useSessionStream, d as useSidecarAuth } from './sdk-hooks-jUbIngSV.js';
5
5
  import '@tangle-network/ui/types';
6
6
  import '@tangle-network/ui/stores';
7
7
  import '@tangle-network/ui/sdk-hooks';
package/dist/hooks.js CHANGED
@@ -24,7 +24,7 @@ import {
24
24
  import {
25
25
  useSessionStream,
26
26
  useSidecarAuth
27
- } from "./chunk-CMY7W45U.js";
27
+ } from "./chunk-MEDE37J5.js";
28
28
  export {
29
29
  RealtimeSessionRegistry,
30
30
  createAuthFetcher,
package/dist/index.d.ts CHANGED
@@ -4,17 +4,19 @@ export { CodeBlock as CodeBlockDisplay, Markdown, MarkdownProps } from '@tangle-
4
4
  export { AgentWorkbench, ApprovalConfidenceStat, ApprovalItem, ApprovalQueue, ApprovalQueueProps, AuditCheck, AuditResults, AuditResultsProps, BannerType, CalendarEvent, CalendarView, CalendarViewProps, ContextBadge, DirectoryPane, DirectoryPaneProps, FormAudit, RuntimePane, RuntimePaneProps, SandboxWorkbench, SandboxWorkbenchArtifact, SandboxWorkbenchCustomArtifact, SandboxWorkbenchFileArtifact, SandboxWorkbenchLayoutOptions, SandboxWorkbenchMarkdownArtifact, SandboxWorkbenchOpenUIArtifact, SandboxWorkbenchProps, SandboxWorkbenchSessionProps, SessionActivityMonitor, SessionActivityMonitorProps, SessionSidebar, SessionSidebarBadge, SessionSidebarFilter, SessionSidebarItem, SessionSidebarLink, SessionSidebarProps, StatusBanner, StatusBannerProps, StatusBar, StatusBarProps, TaskBoard, TaskBoardColumn, TaskBoardItem, TaskBoardProps, TerminalLine, TerminalPanel, TerminalProps, WorkspaceLayout, WorkspaceLayoutProps } from './workspace.js';
5
5
  export { OpenUIAction, OpenUIActionsNode, OpenUIArtifactRenderer, OpenUIArtifactRendererProps, OpenUIBadgeNode, OpenUICardNode, OpenUICodeNode, OpenUIComponentNode, OpenUIGridNode, OpenUIHeadingNode, OpenUIKeyValueNode, OpenUIMarkdownNode, OpenUIPrimitive, OpenUISeparatorNode, OpenUIStackNode, OpenUIStatNode, OpenUITableNode, OpenUITextNode } from '@tangle-network/ui/openui';
6
6
  export { AgentTimeline, AgentTimelineArtifactItem, AgentTimelineCustomItem, AgentTimelineItem, AgentTimelineMessageItem, AgentTimelineProps, AgentTimelineStatusItem, AgentTimelineTone, AgentTimelineToolGroupItem, AgentTimelineToolItem, ChatContainer, ChatContainerProps, ChatInput, ChatInputProps, ChatMessage, ChatMessageProps, MessageList, MessageListProps, MessageRole, PendingFile, ThinkingIndicator, ThinkingIndicatorProps, UserMessage, UserMessageProps } from '@tangle-network/ui/chat';
7
- export { ArtifactAgentDock, ArtifactAgentDockProps, ArtifactAgentDockTransport, ArtifactDockMessage, ArtifactDockStreamEvent, ArtifactKind, ArtifactScope, DEFAULT_REASONING_LEVEL_OPTIONS, ReasoningLevel, ReasoningLevelOption, ReasoningLevelPicker, ReasoningLevelPickerProps, createFetchTransport } from './chat.js';
7
+ export { AgentSessionControls, AgentSessionControlsProps, AgentSessionHarnessControl, AgentSessionModelControl, AgentSessionReasoningControl, ArtifactAgentDock, ArtifactAgentDockProps, ArtifactAgentDockTransport, ArtifactDockMessage, ArtifactDockStreamEvent, ArtifactKind, ArtifactScope, DEFAULT_REASONING_LEVEL_OPTIONS, ReasoningLevel, ReasoningLevelOption, ReasoningLevelPicker, ReasoningLevelPickerProps, createFetchTransport } from './chat.js';
8
8
  export { ExpandedToolDetail, ExpandedToolDetailProps, InlineThinkingItem, InlineThinkingItemProps, InlineToolItem, InlineToolItemProps, LiveDuration, RunGroup, RunGroupProps } from '@tangle-network/ui/run';
9
9
  export { CommandPreview, DiffPreview, GlobResultsPreview, GrepResultsPreview, QuestionPreview, WebSearchPreview, WriteFilePreview } from '@tangle-network/ui/tool-previews';
10
10
  export { FileArtifactPane, FileArtifactPaneProps, FileNode, FilePreview, FilePreviewProps, FileTabData, FileTabs, FileTabsProps, FileTree, FileTreeProps, FileTreeVisibilityOptions, RichFileTree, RichFileTreeGitEntry, RichFileTreeGitStatus, RichFileTreeProps, RichFileTreeThemeVars, filterFileTree } from '@tangle-network/ui/files';
11
- export { Backend, BackendConfig, BackendConfigProps, BackendSelector, BackendSelectorProps, BackendStatusData, ClusterStatusBar, ClusterStatusBarProps, ClusterStatusItem, CreditBalance, CreditBalanceProps, DashboardLayout, DashboardLayoutProps, DashboardProfile, DashboardSnapshotInfo, DashboardUser, ExposedPort, GitCommitData, GitPanel, GitPanelProps, GitStatusData, HARNESS_OPTIONS, HarnessPicker, HarnessPickerProps, HarnessType, INSUFFICIENT_BALANCE_CODE, InfoPanel, InfoPanelProps, InsufficientBalance, Invoice, InvoiceTable, InvoiceTableProps, McpServer, NavItem, NetworkConfig, NetworkConfigData, NetworkConfigProps, NewSandboxCard, NewSandboxCardProps, OutOfCreditsModal, OutOfCreditsModalProps, PlanCardData, PlanCards, PlanCardsProps, PlanFeature, PortsList, PortsListProps, ProcessInfo, ProcessList, ProcessListProps, ProductVariant, ProfileAvatar, ProfileAvatarProps, ProfileComparison, ProfileComparisonProps, ProfileSelector, ProfileSelectorProps, PromoBanner, PromoBannerProps, RailButton, RailButtonProps, RailModeButton, RailModeButtonProps, RailSeparator, RailSeparatorProps, ResourceMeter, ResourceMeterProps, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, SandboxCardData, SandboxCardProps, SandboxStatus, SandboxTable, SandboxTableProps, Sidebar, SidebarContent, SidebarContentProps, SidebarPanel, SidebarPanelContent, SidebarPanelContentProps, SidebarPanelHeader, SidebarPanelHeaderProps, SidebarPanelProps, SidebarProps, SidebarProvider, SidebarProviderProps, SidebarRail, SidebarRailFooter, SidebarRailFooterProps, SidebarRailHeader, SidebarRailHeaderProps, SidebarRailNav, SidebarRailNavProps, SidebarRailProps, SidebarUser, SnapshotList, SnapshotListProps, SystemLogsViewer, SystemLogsViewerProps, TeamRole, UsageSummary, UsageSummaryData, UsageSummaryProps, Variant, VariantList, VariantListProps, VariantOutcome, VariantStatus, canAdminSandbox, parseInsufficientBalance, useSidebar } from './dashboard.js';
12
- export { B as BillingBalance, a as BillingDashboard, b as BillingDashboardProps, c as BillingSubscription, d as BillingUsage, M as ModelInfo, e as ModelPicker, f as ModelPickerProps, g as ModelPickerVariant, P as PricingPage, h as PricingPageProps, i as PricingTier, T as TemplateCard, j as TemplateCardData, k as TemplateCardProps, U as UsageChart, l as UsageChartProps, m as UsageDataPoint, n as canonicalModelId, o as formatContext, p as formatPrice, q as formatPricing } from './template-card-gf-InrfN.js';
11
+ export { BackendConfig, BackendConfigProps, BackendStatusData, ClusterStatusBar, ClusterStatusBarProps, ClusterStatusItem, CreditBalance, CreditBalanceProps, DashboardLayout, DashboardLayoutProps, DashboardProfile, DashboardSnapshotInfo, DashboardUser, ExposedPort, GitCommitData, GitPanel, GitPanelProps, GitStatusData, INSUFFICIENT_BALANCE_CODE, InfoPanel, InfoPanelProps, InsufficientBalance, Invoice, InvoiceTable, InvoiceTableProps, McpServer, NavItem, NetworkConfig, NetworkConfigData, NetworkConfigProps, NewSandboxCard, NewSandboxCardProps, OutOfCreditsModal, OutOfCreditsModalProps, PlanCardData, PlanCards, PlanCardsProps, PlanFeature, PortsList, PortsListProps, ProcessInfo, ProcessList, ProcessListProps, ProductVariant, ProfileAvatar, ProfileAvatarProps, ProfileComparison, ProfileComparisonProps, ProfileSelector, ProfileSelectorProps, PromoBanner, PromoBannerProps, RailButton, RailButtonProps, RailModeButton, RailModeButtonProps, RailSeparator, RailSeparatorProps, ResourceMeter, ResourceMeterProps, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, SandboxCardData, SandboxCardProps, SandboxStatus, SandboxTable, SandboxTableProps, Sidebar, SidebarContent, SidebarContentProps, SidebarPanel, SidebarPanelContent, SidebarPanelContentProps, SidebarPanelHeader, SidebarPanelHeaderProps, SidebarPanelProps, SidebarProps, SidebarProvider, SidebarProviderProps, SidebarRail, SidebarRailFooter, SidebarRailFooterProps, SidebarRailHeader, SidebarRailHeaderProps, SidebarRailNav, SidebarRailNavProps, SidebarRailProps, SidebarUser, SnapshotList, SnapshotListProps, SystemLogsViewer, SystemLogsViewerProps, TeamRole, UsageSummary, UsageSummaryData, UsageSummaryProps, Variant, VariantList, VariantListProps, VariantOutcome, VariantStatus, canAdminSandbox, parseInsufficientBalance, useSidebar } from './dashboard.js';
12
+ export { B as Backend, a as BackendSelector, b as BackendSelectorProps, H as HARNESS_OPTIONS, c as HarnessPicker, d as HarnessPickerProps, e as HarnessType } from './harness-picker-C1W3rTeb.js';
13
+ export { M as ModelInfo, a as ModelPicker, b as ModelPickerProps, c as ModelPickerVariant, d as canonicalModelId, f as formatContext, e as formatPricing } from './model-picker-DUfMTQo5.js';
14
+ export { B as BillingBalance, a as BillingDashboard, b as BillingDashboardProps, c as BillingSubscription, d as BillingUsage, P as PricingPage, e as PricingPageProps, f as PricingTier, T as TemplateCard, g as TemplateCardData, h as TemplateCardProps, U as UsageChart, i as UsageChartProps, j as UsageDataPoint, k as formatPrice } from './template-card-UhV3pmRC.js';
13
15
  export { AuthHeader, AuthHeaderProps, GitHubLoginButton, GitHubLoginButtonProps, LoginLayout, LoginLayoutProps, SessionUser, UserMenu, UserMenuProps } from '@tangle-network/ui/auth';
14
16
  export { TangleLoginButton, TangleLoginButtonProps } from './auth.js';
15
17
  export { AgentStreamEvent, AppendUserMessageOptions, ApplySdkEventOptions, AuthUser, AutomationStreamEvent, BeginAssistantMessageOptions, BotStreamEvent, CompleteAssistantMessageOptions, RealtimeSessionOptions, RealtimeSessionRegistry, RealtimeSessionRegistryProps, RealtimeSessionState, RealtimeSessionTarget, SSEEvent, SdkSessionAttachment, SdkSessionEvent, SdkSessionSeed, TaskStreamEvent, TerminalStreamEvent, UseAuthOptions, UseAuthResult, UseRunGroupsOptions, UseSSEStreamOptions, UseSSEStreamResult, UseSdkSessionOptions, UseSdkSessionReturn, UseToolCallStreamReturn, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useDropdownMenu, useLiveTime, useRealtimeSession, useRunCollapseState, useRunGroups, useSSEStream, useSdkSession, useToolCallStream } from '@tangle-network/ui/hooks';
16
18
  export { SandboxMetrics, SidecarMetricsPayload, UsePtySessionOptions, UsePtySessionReturn, UseSandboxMetricsOptions, UseSandboxMetricsResult, useCreateSession, useDeleteSession, usePtySession, useRenameSession, useSandboxMetrics, useSessions } from './hooks.js';
17
- export { SessionInfo, SidecarAuth, UseSessionStreamOptions, UseSessionStreamResult, UseSidecarAuthOptions, useSessionStream, useSidecarAuth } from './sdk-hooks.js';
19
+ export { S as SessionInfo, a as SidecarAuth, U as UseSessionStreamOptions, b as UseSessionStreamResult, c as UseSidecarAuthOptions, u as useSessionStream, d as useSidecarAuth } from './sdk-hooks-jUbIngSV.js';
18
20
  export { ActiveProjectActivity, ActiveSessionActivityOptions, ActiveSessionConnectionOptions, ActiveSessionConnectionState, ActiveSessionReconnectState, ActiveSessionRecord, ActiveSessionStatus, ActiveSessionTransportMode, ActiveSessionsState, RegisterActiveSessionOptions, SessionProjectKey, activeSessionsAtom, addMessage, addParts, bumpActiveSessionActivity, clearChat, getActiveSession, getAllActiveSessions, getAllProjectActivity, getSessionsByActivity, getSessionsForNavbar, getSessionsForProject, getTotalRunningSessionCount, hasBackgroundRunningSessions, isStreamingAtom, messagesAtom, partMapAtom, registerActiveSession, resetActiveSessions, setActiveSessionAttention, setActiveSessionConnection, setActiveSessionError, setActiveSessionRunning, setForegroundActiveSession, unregisterActiveSession, updateActiveSessionMeta, updatePart, useActiveSession, useActiveSessions, useActiveSessionsState, useHasBackgroundRunningSessions, useNavbarSessions, useProjectActivity, useProjectSessions, useSessionsByActivity, useTotalRunningSessions } from '@tangle-network/ui/stores';
19
21
  export { ChatSession, connectSession, disconnectSession, sessionAtom } from './stores.js';
20
22
  export { AgentBranding, CustomToolRenderer, DisplayVariant, FinalTextPart, GroupedMessage, MessageRun, MessageUser, ReasoningPart, Run, RunStats, SessionMessage, SessionPart, TextPart, ToolCategory, ToolDisplayMetadata, ToolPart, ToolState, ToolStatus, ToolTime } from '@tangle-network/ui/types';
package/dist/index.js CHANGED
@@ -85,8 +85,9 @@ import {
85
85
  import {
86
86
  useSessionStream,
87
87
  useSidecarAuth
88
- } from "./chunk-CMY7W45U.js";
88
+ } from "./chunk-MEDE37J5.js";
89
89
  import {
90
+ AgentSessionControls,
90
91
  AgentTimeline,
91
92
  ArtifactAgentDock,
92
93
  ChatContainer,
@@ -98,7 +99,7 @@ import {
98
99
  ThinkingIndicator,
99
100
  UserMessage,
100
101
  createFetchTransport
101
- } from "./chunk-MQ52AYJX.js";
102
+ } from "./chunk-666PYT5K.js";
102
103
  import {
103
104
  ExpandedToolDetail,
104
105
  InlineThinkingItem,
@@ -122,7 +123,7 @@ import {
122
123
  TaskBoard,
123
124
  TerminalPanel,
124
125
  WorkspaceLayout
125
- } from "./chunk-CP2L6B53.js";
126
+ } from "./chunk-R6NONXFC.js";
126
127
  import {
127
128
  OpenUIArtifactRenderer
128
129
  } from "./chunk-AZ3AWMTM.js";
@@ -136,13 +137,10 @@ import {
136
137
  } from "./chunk-3J6FG3FJ.js";
137
138
  import {
138
139
  BackendConfig,
139
- BackendSelector,
140
140
  ClusterStatusBar,
141
141
  CreditBalance,
142
142
  DashboardLayout,
143
143
  GitPanel,
144
- HARNESS_OPTIONS,
145
- HarnessPicker,
146
144
  INSUFFICIENT_BALANCE_CODE,
147
145
  InvoiceTable,
148
146
  NetworkConfig,
@@ -182,19 +180,15 @@ import {
182
180
  canAdminSandbox,
183
181
  parseInsufficientBalance,
184
182
  useSidebar
185
- } from "./chunk-R6QNJQRH.js";
183
+ } from "./chunk-FLWMBK77.js";
186
184
  import {
187
185
  BillingDashboard,
188
186
  InfoPanel,
189
- ModelPicker,
190
187
  PricingPage,
191
188
  TemplateCard,
192
189
  UsageChart,
193
- canonicalModelId,
194
- formatContext,
195
- formatPrice,
196
- formatPricing
197
- } from "./chunk-QNVVKMEW.js";
190
+ formatPrice
191
+ } from "./chunk-DNZ4DTNA.js";
198
192
  import {
199
193
  Avatar,
200
194
  AvatarFallback,
@@ -282,6 +276,17 @@ import {
282
276
  useTheme,
283
277
  useToast
284
278
  } from "./chunk-7ZA5SEK3.js";
279
+ import {
280
+ BackendSelector,
281
+ HARNESS_OPTIONS,
282
+ HarnessPicker
283
+ } from "./chunk-ESRYVGHF.js";
284
+ import {
285
+ ModelPicker,
286
+ canonicalModelId,
287
+ formatContext,
288
+ formatPricing
289
+ } from "./chunk-4KAPMTPU.js";
285
290
  import "./chunk-EI44GEQ5.js";
286
291
 
287
292
  // src/index.ts
@@ -302,6 +307,7 @@ import {
302
307
  } from "@tangle-network/ui/tool-previews";
303
308
  import { Markdown } from "@tangle-network/ui/markdown";
304
309
  export {
310
+ AgentSessionControls,
305
311
  AgentTimeline,
306
312
  AgentWorkbench,
307
313
  ApprovalQueue,
@@ -1,5 +1,4 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as React from 'react';
3
2
 
4
3
  /**
5
4
  * Wire-format model entry as returned by `/v1/models` on the Tangle Router
@@ -92,88 +91,4 @@ declare function formatPricing(pricing: ModelInfo["pricing"]): string | null;
92
91
  declare function formatContext(ctx: number | undefined): string | null;
93
92
  declare function ModelPicker({ value, onChange, models, loading, recents, popular, excludeProviders, modalities, variant, label, placeholder, className, triggerClassName, disabled, }: ModelPickerProps): react_jsx_runtime.JSX.Element;
94
93
 
95
- interface BillingSubscription {
96
- status: string;
97
- tierName: string;
98
- renewsAt: string;
99
- }
100
- interface BillingBalance {
101
- available: number;
102
- used: number;
103
- }
104
- interface BillingUsage {
105
- period: string;
106
- total: number;
107
- byModel: Record<string, number>;
108
- }
109
- interface BillingDashboardProps {
110
- subscription: BillingSubscription | null;
111
- balance: BillingBalance;
112
- usage: BillingUsage;
113
- onManageSubscription: () => void;
114
- onAddCredits: () => void;
115
- variant?: "sandbox";
116
- className?: string;
117
- cardClassName?: string;
118
- }
119
- declare function BillingDashboard({ subscription, balance, usage, onManageSubscription, onAddCredits, variant, className, cardClassName, }: BillingDashboardProps): react_jsx_runtime.JSX.Element;
120
-
121
- interface PricingTier {
122
- id: string;
123
- name: string;
124
- description: string;
125
- monthlyPriceCents: number;
126
- yearlyPriceCents?: number;
127
- features: string[];
128
- recommended?: boolean;
129
- creditsPerMonth?: number;
130
- monthlyPriceId?: string;
131
- yearlyPriceId?: string;
132
- }
133
- interface PricingPageProps {
134
- tiers: PricingTier[];
135
- currentTierId?: string;
136
- billingPeriod: "monthly" | "yearly";
137
- onBillingPeriodChange: (period: "monthly" | "yearly") => void;
138
- onSelectTier: (tierId: string) => void;
139
- variant?: "sandbox";
140
- loading?: boolean;
141
- className?: string;
142
- cardClassName?: string;
143
- }
144
- /**
145
- * Formats an integer cent amount as a human-readable USD price.
146
- * Whole-dollar amounts omit decimals ($10), fractional amounts show two ($10.99).
147
- * Returns "$0" for non-finite or negative inputs.
148
- * @param cents - Amount in whole US cents (e.g. 1099 for $10.99).
149
- */
150
- declare function formatPrice(cents: number): string;
151
- declare function PricingPage({ tiers, currentTierId, billingPeriod, onBillingPeriodChange, onSelectTier, loading, className, }: PricingPageProps): react_jsx_runtime.JSX.Element;
152
-
153
- interface UsageDataPoint {
154
- date: string;
155
- value: number;
156
- }
157
- interface UsageChartProps {
158
- data: UsageDataPoint[];
159
- title: string;
160
- unit: string;
161
- className?: string;
162
- }
163
- declare function UsageChart({ data, title, unit, className }: UsageChartProps): react_jsx_runtime.JSX.Element;
164
-
165
- interface TemplateCardData {
166
- id: string;
167
- name: string;
168
- description: string;
169
- icon?: React.ReactNode;
170
- tags?: string[];
171
- }
172
- interface TemplateCardProps {
173
- template: TemplateCardData;
174
- onUseTemplate: (templateId: string) => void;
175
- className?: string;
176
- }
177
- declare function TemplateCard({ template, onUseTemplate, className }: TemplateCardProps): react_jsx_runtime.JSX.Element;
178
-
179
- export { type BillingBalance as B, type ModelInfo as M, PricingPage as P, TemplateCard as T, UsageChart as U, BillingDashboard as a, type BillingDashboardProps as b, type BillingSubscription as c, type BillingUsage as d, ModelPicker as e, type ModelPickerProps as f, type ModelPickerVariant as g, type PricingPageProps as h, type PricingTier as i, type TemplateCardData as j, type TemplateCardProps as k, type UsageChartProps as l, type UsageDataPoint as m, canonicalModelId as n, formatContext as o, formatPrice as p, formatPricing as q };
94
+ export { type ModelInfo as M, ModelPicker as a, type ModelPickerProps as b, type ModelPickerVariant as c, canonicalModelId as d, formatPricing as e, formatContext as f };
package/dist/pages.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { c as BillingSubscription, B as BillingBalance, d as BillingUsage, m as UsageDataPoint, i as PricingTier, M as ModelInfo, j as TemplateCardData } from './template-card-gf-InrfN.js';
2
+ import { c as BillingSubscription, B as BillingBalance, d as BillingUsage, j as UsageDataPoint, f as PricingTier, g as TemplateCardData } from './template-card-UhV3pmRC.js';
3
3
  import * as React from 'react';
4
+ export { M as ModelInfo } from './model-picker-DUfMTQo5.js';
4
5
 
5
6
  type ProductVariant$1 = "sandbox";
6
7
  interface BillingPageData {
@@ -89,37 +90,6 @@ interface ProvisioningWizardProps {
89
90
  onLoadStartupScripts?: () => Promise<StartupScriptEntry[]>;
90
91
  /** Plan-based resource limits — caps the slider maximums */
91
92
  resourceLimits?: ResourceLimits;
92
- /**
93
- * Models to surface in step 3, typically the wire-format payload from
94
- * Tangle Router's `/v1/models`. The wizard stores the canonical id
95
- * (`<provider>/<model>`) on `ProvisioningConfig.modelTier`, which is
96
- * the same shape the API expects for `backend.model.model`. While the
97
- * list is empty (e.g. router fetch in flight) the picker renders a
98
- * disabled trigger with "no models available" copy.
99
- */
100
- models?: ModelInfo[];
101
- /**
102
- * Canonical model ids to surface in the picker's "Popular" section.
103
- * Forwarded straight to ModelPicker. Use this to surface a curated set
104
- * of common models (e.g. one per provider/tier) without imposing a
105
- * Fast/Balanced/Best taxonomy.
106
- */
107
- popular?: ReadonlyArray<string>;
108
- /**
109
- * The user's saved preferred model id (canonical, e.g.
110
- * "openai/gpt-5.4"). Used as the initial `modelTier` when
111
- * `defaultConfig.modelTier` isn't set, and as the next-best fallback
112
- * when the current selection drops out of the loaded model list.
113
- * Persistence is the caller's responsibility.
114
- */
115
- defaultModel?: string | null;
116
- /**
117
- * Persist the current `modelTier` as the user's default. When provided,
118
- * the wizard renders a "Save as default" affordance under the model
119
- * picker. The wizard does not store anything itself — the caller owns
120
- * persistence (e.g. localStorage, account settings API).
121
- */
122
- onSetDefault?: (modelId: string) => void;
123
93
  sshAccess?: SshAccessConfig;
124
94
  /** Real pricing rates from the API for accurate cost calculation */
125
95
  pricingRates?: PricingRates;
@@ -142,8 +112,6 @@ interface ProvisioningConfig {
142
112
  cpuCores: number;
143
113
  ramGB: number;
144
114
  storageGB: number;
145
- modelTier: string;
146
- systemPrompt: string;
147
115
  name: string;
148
116
  gitUrl: string;
149
117
  envVars: {
@@ -155,7 +123,7 @@ interface ProvisioningConfig {
155
123
  startupScriptIds?: string[];
156
124
  }
157
125
  declare function resolveEnvironment(env: EnvironmentEntry): EnvironmentOption;
158
- declare function ProvisioningWizard({ environments: environmentsProp, onLoadEnvironments, onSubmit, onBack, className, variant, defaultEnvironment, defaultConfig, skipToReview, onLoadStartupScripts, resourceLimits, models, popular, defaultModel, onSetDefault, sshAccess, pricingRates, planTiers, }: ProvisioningWizardProps): react_jsx_runtime.JSX.Element;
126
+ declare function ProvisioningWizard({ environments: environmentsProp, onLoadEnvironments, onSubmit, onBack, className, variant, defaultEnvironment, defaultConfig, skipToReview, onLoadStartupScripts, resourceLimits, sshAccess, pricingRates, planTiers, }: ProvisioningWizardProps): react_jsx_runtime.JSX.Element;
159
127
 
160
128
  type ProductVariant = "sandbox";
161
129
  interface StandalonePricingPageProps {
@@ -318,7 +286,7 @@ interface StartupScriptsPageProps {
318
286
  declare function StartupScriptsPage({ apiClient, className }: StartupScriptsPageProps): react_jsx_runtime.JSX.Element;
319
287
 
320
288
  type TemplateCategory = "blockchain" | "ai-ml" | "frontend" | "infrastructure" | "general";
321
- type TemplatePreset = Omit<ProvisioningConfig, "name" | "gitUrl" | "envVars" | "driver" | "startupScriptIds" | "modelTier">;
289
+ type TemplatePreset = Omit<ProvisioningConfig, "name" | "gitUrl" | "envVars" | "driver" | "startupScriptIds">;
322
290
  declare function getPresetForTemplate(id: string): TemplatePreset;
323
291
 
324
- export { BillingPage, type BillingPageData, type BillingPageProps, type EnvironmentEntry, type EnvironmentOption, ModelInfo, type PlanTierInfo, type PricingRates, PricingTier, type ProductVariant$1 as ProductVariant, type Profile, type ProfileFormData, type ProfileMetrics, ProfilesPage, type ProfilesPageProps, type ProvisioningConfig, ProvisioningWizard, type ProvisioningWizardProps, type ResourceLimits, type ScriptType, type Secret, type SecretsApiClient, SecretsPage, type SecretsPageProps, type SshAccessConfig, type SshKeyOption, StandalonePricingPage, type StandalonePricingPageProps, type StartupScript, type StartupScriptEntry, type StartupScriptFormData, type StartupScriptsApiClient, StartupScriptsPage, type StartupScriptsPageProps, type TemplateCategory, type TemplatePreset, TemplatesPage, type TemplatesPageProps, getPresetForTemplate, resolveEnvironment };
292
+ export { BillingPage, type BillingPageData, type BillingPageProps, type EnvironmentEntry, type EnvironmentOption, type PlanTierInfo, type PricingRates, PricingTier, type ProductVariant$1 as ProductVariant, type Profile, type ProfileFormData, type ProfileMetrics, ProfilesPage, type ProfilesPageProps, type ProvisioningConfig, ProvisioningWizard, type ProvisioningWizardProps, type ResourceLimits, type ScriptType, type Secret, type SecretsApiClient, SecretsPage, type SecretsPageProps, type SshAccessConfig, type SshKeyOption, StandalonePricingPage, type StandalonePricingPageProps, type StartupScript, type StartupScriptEntry, type StartupScriptFormData, type StartupScriptsApiClient, StartupScriptsPage, type StartupScriptsPageProps, type TemplateCategory, type TemplatePreset, TemplatesPage, type TemplatesPageProps, getPresetForTemplate, resolveEnvironment };