@tangle-network/sandbox-ui 0.45.0 → 0.47.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.
Files changed (45) hide show
  1. package/dist/{WorkflowGraph-7YYGIBNV.js → WorkflowGraph-EOV2P5AM.js} +2 -1
  2. package/dist/assets.js +1 -0
  3. package/dist/assistant.js +2 -1
  4. package/dist/auth.js +1 -0
  5. package/dist/chat.js +4 -3
  6. package/dist/{chunk-6NDOA4SB.js → chunk-2ISY4R72.js} +112 -104
  7. package/dist/{chunk-KIRJZUX2.js → chunk-BR2LMUAE.js} +61 -34
  8. package/dist/{chunk-H7GMPMPB.js → chunk-GTJ5PSK5.js} +90 -3
  9. package/dist/{chunk-CUUUFJF5.js → chunk-KOUYJ6QP.js} +23 -23
  10. package/dist/{chunk-3RNYDTQ3.js → chunk-LQHTCM56.js} +21 -27
  11. package/dist/chunk-NXUSLH7H.js +7528 -0
  12. package/dist/{chunk-2XNT74ZX.js → chunk-OMUIPJQZ.js} +28 -20
  13. package/dist/{chunk-KCWIC3SJ.js → chunk-PZ62T5PM.js} +281 -214
  14. package/dist/chunk-U67V476Y.js +35 -0
  15. package/dist/chunk-VIREDUBF.js +215 -0
  16. package/dist/dashboard.d.ts +82 -66
  17. package/dist/dashboard.js +5 -4
  18. package/dist/editor.js +2 -0
  19. package/dist/files.d.ts +5 -0
  20. package/dist/files.js +1 -0
  21. package/dist/globals.css +1170 -47
  22. package/dist/hooks.js +1 -0
  23. package/dist/index.d.ts +3 -1
  24. package/dist/index.js +95 -65
  25. package/dist/integrations.d.ts +5 -6
  26. package/dist/integrations.js +158 -63
  27. package/dist/markdown.js +2 -0
  28. package/dist/openui.d.ts +0 -5
  29. package/dist/openui.js +1 -0
  30. package/dist/pages.d.ts +1 -1
  31. package/dist/pages.js +89 -88
  32. package/dist/ports-list-DfG0VfPt.d.ts +17 -0
  33. package/dist/primitives.js +1 -0
  34. package/dist/run.js +1 -0
  35. package/dist/sdk-hooks.js +1 -0
  36. package/dist/stores.js +1 -0
  37. package/dist/styles.css +1170 -47
  38. package/dist/terminal.js +5 -209
  39. package/dist/utils.js +1 -0
  40. package/dist/workbench.d.ts +227 -0
  41. package/dist/workbench.js +40 -0
  42. package/dist/workflows.js +2 -1
  43. package/dist/workspace.d.ts +6 -2
  44. package/dist/workspace.js +2 -1
  45. package/package.json +13 -7
package/dist/hooks.js CHANGED
@@ -25,6 +25,7 @@ import {
25
25
  import {
26
26
  usePtySession
27
27
  } from "./chunk-77WVVJA4.js";
28
+ import "./chunk-U67V476Y.js";
28
29
  export {
29
30
  RealtimeSessionRegistry,
30
31
  createAuthFetcher,
package/dist/index.d.ts CHANGED
@@ -2,15 +2,17 @@ export { ArtifactPane, ArtifactPaneProps, Avatar, AvatarFallback, AvatarImage, B
2
2
  export { L as Logo, a as LogoProps, T as TangleKnot } from './logo-CZ6moVvw.js';
3
3
  export { CodeBlock as CodeBlockDisplay, Markdown, MarkdownProps } from '@tangle-network/ui/markdown';
4
4
  export { AgentWorkbench, ApprovalConfidenceStat, ApprovalItem, ApprovalQueue, ApprovalQueueProps, AuditCheck, AuditResults, AuditResultsProps, BannerType, CalendarEvent, CalendarView, CalendarViewProps, ContextBadge, DirectoryPane, DirectoryPaneProps, FormAudit, RuntimePane, RuntimePaneProps, SESSION_CREATED_EVENT, SandboxWorkbench, SandboxWorkbenchArtifact, SandboxWorkbenchCustomArtifact, SandboxWorkbenchFileArtifact, SandboxWorkbenchLayoutOptions, SandboxWorkbenchMarkdownArtifact, SandboxWorkbenchOpenUIArtifact, SandboxWorkbenchProps, SandboxWorkbenchSessionProps, SessionActivityMonitor, SessionActivityMonitorProps, SessionCreatedDetail, SessionOptimisticController, SessionSidebar, SessionSidebarBadge, SessionSidebarFilter, SessionSidebarItem, SessionSidebarLink, SessionSidebarProps, ShellShouldRevalidateArgs, ShellShouldRevalidateOptions, StatusBanner, StatusBannerProps, StatusBar, StatusBarProps, TaskBoard, TaskBoardColumn, TaskBoardItem, TaskBoardProps, TerminalLine, TerminalPanel, TerminalProps, UseOptimisticSessionItemsOptions, WorkspaceLayout, WorkspaceLayoutProps, createShellShouldRevalidate, dispatchSessionCreated, shellShouldRevalidate, useOptimisticSessionItems } from './workspace.js';
5
+ export { ArtifactView, BRAND_PRISM_THEME, CodeSurface, CodeSurfaceProps, CodeView, CodeViewProps, DiffStats, DiffView, DiffViewProps, FileBreadcrumb, FileBreadcrumbProps, GitStatusBadge, PanelHeader, PanelHeaderProps, PillTabItem, PillTabs, PillTabsProps, PreviewView, PreviewViewProps, SandboxArtifact, SandboxArtifactPane, SandboxArtifactPaneProps, SandboxArtifactTerminal, buildUnifiedPatch, computeDiffStats, resolveLanguage } from './workbench.js';
5
6
  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
7
  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
8
  export { AgentSessionControls, AgentSessionControlsProps, AgentSessionHarnessControl, AgentSessionModelControl, AgentSessionReasoningControl, ArtifactAgentDock, ArtifactAgentDockProps, ArtifactAgentDockTransport, ArtifactDockMessage, ArtifactDockStreamEvent, ArtifactKind, ArtifactScope, DEFAULT_REASONING_LEVEL_OPTIONS, HARNESS_MODEL_POLICIES, ReasoningLevel, ReasoningLevelOption, ReasoningLevelPicker, ReasoningLevelPickerProps, createFetchTransport, isModelCompatibleWithHarness, modelProvider, snapHarnessToModel, snapModelToHarness } from './chat.js';
8
9
  export { ExpandedToolDetail, ExpandedToolDetailProps, InlineThinkingItem, InlineThinkingItemProps, InlineToolItem, InlineToolItemProps, LiveDuration, RunGroup, RunGroupProps } from '@tangle-network/ui/run';
9
10
  export { CommandPreview, DiffPreview, GlobResultsPreview, GrepResultsPreview, QuestionPreview, WebSearchPreview, WriteFilePreview } from '@tangle-network/ui/tool-previews';
10
11
  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 { ActivityFeed, ActivityFeedProps, ActivityItem, Backend, BackendConfig, BackendConfigProps, BackendSelector, BackendSelectorProps, BackendStatusData, ClusterStatusBar, ClusterStatusBarProps, ClusterStatusItem, CreditBalance, CreditBalanceProps, DashboardLayout, DashboardLayoutProps, DashboardProfile, DashboardSnapshotInfo, DashboardUser, ExposedPort, GitCommitData, GitPanel, GitPanelProps, GitStatusData, HARNESS_BRAND, HARNESS_OPTIONS, HarnessBrand, HarnessLogo, HarnessLogoProps, HarnessPicker, HarnessPickerProps, INSUFFICIENT_BALANCE_CODE, InfoPanel, InfoPanelProps, InsufficientBalance, Invoice, InvoiceTable, InvoiceTableProps, McpServer, MetricAreaChart, MetricAreaChartProps, MetricChartPoint, MetricChartTone, 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, RailCollapseToggle, RailCollapseToggleProps, RailFlyout, RailFlyoutProps, RailModeButton, RailModeButtonProps, RailSeparator, RailSeparatorProps, RailThemeToggle, RailTooltip, RailTooltipProps, ResourceMeter, ResourceMeterProps, ResourceSnapshot, ResourceSnapshotItem, ResourceSnapshotProps, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, SandboxCardData, SandboxCardProps, SandboxStatus, SandboxTable, SandboxTableProps, Sidebar, SidebarContent, SidebarContentProps, SidebarLayout, SidebarLayoutFlyoutItem, SidebarLayoutNavItem, SidebarLayoutProps, 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, chatCapableHarnesses, parseInsufficientBalance, useSidebar } from './dashboard.js';
12
+ export { ActivityFeed, ActivityFeedProps, ActivityItem, Backend, BackendConfig, BackendConfigProps, BackendSelector, BackendSelectorProps, BackendStatusData, ClusterStatusBar, ClusterStatusBarProps, ClusterStatusItem, CreditBalance, CreditBalanceProps, DashboardLayout, DashboardLayoutProps, DashboardProfile, DashboardSnapshotInfo, DashboardUser, GitCommitData, GitPanel, GitPanelProps, GitStatusData, HARNESS_BRAND, HARNESS_OPTIONS, HarnessBrand, HarnessLogo, HarnessLogoProps, HarnessPicker, HarnessPickerProps, INSUFFICIENT_BALANCE_CODE, InfoPanel, InfoPanelProps, InsufficientBalance, Invoice, InvoiceTable, InvoiceTableProps, McpServer, MetricAreaChart, MetricAreaChartProps, MetricChartPoint, MetricChartTone, NavItem, NetworkConfig, NetworkConfigData, NetworkConfigProps, NewSandboxCard, NewSandboxCardProps, OutOfCreditsModal, OutOfCreditsModalProps, PlanCardData, PlanCards, PlanCardsProps, PlanFeature, ProcessInfo, ProcessList, ProcessListProps, ProductVariant, ProfileAvatar, ProfileAvatarProps, ProfileComparison, ProfileComparisonProps, ProfileSelector, ProfileSelectorProps, PromoBanner, PromoBannerProps, RailButton, RailButtonProps, RailCollapseToggle, RailCollapseToggleProps, RailFlyout, RailFlyoutProps, RailModeButton, RailModeButtonProps, RailSeparator, RailSeparatorProps, RailThemeToggle, RailTooltip, RailTooltipProps, ResourceMeter, ResourceMeterProps, ResourceSnapshot, ResourceSnapshotItem, ResourceSnapshotProps, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, SandboxCardData, SandboxCardProps, SandboxStatus, SandboxTable, SandboxTableProps, Sidebar, SidebarContent, SidebarContentProps, SidebarLayout, SidebarLayoutFlyoutItem, SidebarLayoutNavItem, SidebarLayoutProps, 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, chatCapableHarnesses, parseInsufficientBalance, useSidebar } from './dashboard.js';
12
13
  export { D as DEFAULT_FEATURED_MODEL_IDS, M as ModelInfo, a as ModelPicker, b as ModelPickerProps, c as ModelPickerVariant, d as canonicalModelId, e as dedupeModels, f as formatContext, g as formatPricing, m as modelDedupKey } from './model-picker-NOWFpRY4.js';
13
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';
15
+ export { E as ExposedPort, P as PortsList, a as PortsListProps } from './ports-list-DfG0VfPt.js';
14
16
  export { AuthHeader, AuthHeaderProps, GitHubLoginButton, GitHubLoginButtonProps, LoginLayout, LoginLayoutProps, SessionUser, UserMenu, UserMenuProps } from '@tangle-network/ui/auth';
15
17
  export { TangleLoginButton, TangleLoginButtonProps } from './auth.js';
16
18
  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';
package/dist/index.js CHANGED
@@ -76,6 +76,79 @@ import {
76
76
  timeAgo,
77
77
  truncateText
78
78
  } from "./chunk-TK46XFLM.js";
79
+ import {
80
+ OpenUIArtifactRenderer
81
+ } from "./chunk-AZ3AWMTM.js";
82
+ import {
83
+ AuthHeader,
84
+ GitHubLoginButton,
85
+ LoginLayout,
86
+ TangleLoginButton,
87
+ UserMenu
88
+ } from "./chunk-IOB2PW5Z.js";
89
+ import {
90
+ AgentSessionControls,
91
+ AgentTimeline,
92
+ ArtifactAgentDock,
93
+ ChatContainer,
94
+ ChatInput,
95
+ ChatMessage,
96
+ DEFAULT_REASONING_LEVEL_OPTIONS,
97
+ HARNESS_MODEL_POLICIES,
98
+ MessageList,
99
+ ReasoningLevelPicker,
100
+ ThinkingIndicator,
101
+ UserMessage,
102
+ createFetchTransport,
103
+ isModelCompatibleWithHarness,
104
+ modelProvider,
105
+ snapHarnessToModel,
106
+ snapModelToHarness
107
+ } from "./chunk-KOUYJ6QP.js";
108
+ import {
109
+ ExpandedToolDetail,
110
+ InlineThinkingItem,
111
+ InlineToolItem,
112
+ LiveDuration,
113
+ RunGroup
114
+ } from "./chunk-JBGKGLD7.js";
115
+ import {
116
+ AgentWorkbench,
117
+ ApprovalQueue,
118
+ ArtifactPane,
119
+ AuditResults,
120
+ CalendarView,
121
+ DirectoryPane,
122
+ RuntimePane,
123
+ SESSION_CREATED_EVENT,
124
+ SandboxWorkbench,
125
+ SessionActivityMonitor,
126
+ SessionSidebar,
127
+ StatusBanner,
128
+ StatusBar,
129
+ TaskBoard,
130
+ TerminalPanel,
131
+ WorkspaceLayout,
132
+ createShellShouldRevalidate,
133
+ dispatchSessionCreated,
134
+ shellShouldRevalidate,
135
+ useOptimisticSessionItems
136
+ } from "./chunk-2ISY4R72.js";
137
+ import {
138
+ BRAND_PRISM_THEME,
139
+ CodeSurface,
140
+ CodeView,
141
+ DiffView,
142
+ FileBreadcrumb,
143
+ GitStatusBadge,
144
+ PanelHeader,
145
+ PillTabs,
146
+ PreviewView,
147
+ SandboxArtifactPane,
148
+ buildUnifiedPatch,
149
+ computeDiffStats,
150
+ resolveLanguage
151
+ } from "./chunk-NXUSLH7H.js";
79
152
  import {
80
153
  FileArtifactPane,
81
154
  FilePreview,
@@ -138,17 +211,7 @@ import {
138
211
  canAdminSandbox,
139
212
  parseInsufficientBalance,
140
213
  useSidebar
141
- } from "./chunk-KCWIC3SJ.js";
142
- import {
143
- usePtySession
144
- } from "./chunk-77WVVJA4.js";
145
- import {
146
- AuthHeader,
147
- GitHubLoginButton,
148
- LoginLayout,
149
- TangleLoginButton,
150
- UserMenu
151
- } from "./chunk-IOB2PW5Z.js";
214
+ } from "./chunk-PZ62T5PM.js";
152
215
  import {
153
216
  BillingDashboard,
154
217
  InfoPanel,
@@ -156,7 +219,11 @@ import {
156
219
  TemplateCard,
157
220
  UsageChart,
158
221
  formatPrice
159
- } from "./chunk-2XNT74ZX.js";
222
+ } from "./chunk-OMUIPJQZ.js";
223
+ import "./chunk-VIREDUBF.js";
224
+ import {
225
+ usePtySession
226
+ } from "./chunk-77WVVJA4.js";
160
227
  import {
161
228
  Avatar,
162
229
  AvatarFallback,
@@ -244,25 +311,6 @@ import {
244
311
  useTheme,
245
312
  useToast
246
313
  } from "./chunk-4ZZUMXPX.js";
247
- import {
248
- AgentSessionControls,
249
- AgentTimeline,
250
- ArtifactAgentDock,
251
- ChatContainer,
252
- ChatInput,
253
- ChatMessage,
254
- DEFAULT_REASONING_LEVEL_OPTIONS,
255
- HARNESS_MODEL_POLICIES,
256
- MessageList,
257
- ReasoningLevelPicker,
258
- ThinkingIndicator,
259
- UserMessage,
260
- createFetchTransport,
261
- isModelCompatibleWithHarness,
262
- modelProvider,
263
- snapHarnessToModel,
264
- snapModelToHarness
265
- } from "./chunk-CUUUFJF5.js";
266
314
  import {
267
315
  BackendSelector,
268
316
  HARNESS_BRAND,
@@ -270,7 +318,7 @@ import {
270
318
  HarnessLogo,
271
319
  HarnessPicker,
272
320
  chatCapableHarnesses
273
- } from "./chunk-KIRJZUX2.js";
321
+ } from "./chunk-BR2LMUAE.js";
274
322
  import {
275
323
  DEFAULT_FEATURED_MODEL_IDS,
276
324
  ModelPicker,
@@ -279,40 +327,9 @@ import {
279
327
  formatContext,
280
328
  formatPricing,
281
329
  modelDedupKey
282
- } from "./chunk-3RNYDTQ3.js";
283
- import {
284
- ExpandedToolDetail,
285
- InlineThinkingItem,
286
- InlineToolItem,
287
- LiveDuration,
288
- RunGroup
289
- } from "./chunk-JBGKGLD7.js";
290
- import {
291
- AgentWorkbench,
292
- ApprovalQueue,
293
- ArtifactPane,
294
- AuditResults,
295
- CalendarView,
296
- DirectoryPane,
297
- RuntimePane,
298
- SESSION_CREATED_EVENT,
299
- SandboxWorkbench,
300
- SessionActivityMonitor,
301
- SessionSidebar,
302
- StatusBanner,
303
- StatusBar,
304
- TaskBoard,
305
- TerminalPanel,
306
- WorkspaceLayout,
307
- createShellShouldRevalidate,
308
- dispatchSessionCreated,
309
- shellShouldRevalidate,
310
- useOptimisticSessionItems
311
- } from "./chunk-6NDOA4SB.js";
330
+ } from "./chunk-LQHTCM56.js";
312
331
  import "./chunk-EI44GEQ5.js";
313
- import {
314
- OpenUIArtifactRenderer
315
- } from "./chunk-AZ3AWMTM.js";
332
+ import "./chunk-U67V476Y.js";
316
333
 
317
334
  // src/index.ts
318
335
  import { CodeBlock as CodeBlock2 } from "@tangle-network/ui/markdown";
@@ -344,6 +361,7 @@ export {
344
361
  Avatar,
345
362
  AvatarFallback,
346
363
  AvatarImage,
364
+ BRAND_PRISM_THEME,
347
365
  BackendConfig,
348
366
  BackendSelector,
349
367
  Badge,
@@ -362,6 +380,8 @@ export {
362
380
  ClusterStatusBar,
363
381
  CodeBlock,
364
382
  CodeBlock2 as CodeBlockDisplay,
383
+ CodeSurface,
384
+ CodeView,
365
385
  CommandPreview,
366
386
  CopyButton,
367
387
  CreditBalance,
@@ -379,6 +399,7 @@ export {
379
399
  DialogTitle,
380
400
  DialogTrigger,
381
401
  DiffPreview,
402
+ DiffView,
382
403
  DirectoryPane,
383
404
  DropZone,
384
405
  DropdownMenu,
@@ -399,11 +420,13 @@ export {
399
420
  EmptyState,
400
421
  ExpandedToolDetail,
401
422
  FileArtifactPane,
423
+ FileBreadcrumb,
402
424
  FilePreview,
403
425
  FileTabs,
404
426
  FileTree,
405
427
  GitHubLoginButton,
406
428
  GitPanel,
429
+ GitStatusBadge,
407
430
  GlobResultsPreview,
408
431
  GrepResultsPreview,
409
432
  HARNESS_BRAND,
@@ -430,8 +453,11 @@ export {
430
453
  NewSandboxCard,
431
454
  OpenUIArtifactRenderer,
432
455
  OutOfCreditsModal,
456
+ PanelHeader,
457
+ PillTabs,
433
458
  PlanCards,
434
459
  PortsList,
460
+ PreviewView,
435
461
  PricingPage,
436
462
  ProcessList,
437
463
  ProfileAvatar,
@@ -460,6 +486,7 @@ export {
460
486
  SIDEBAR_RAIL_LABELED_WIDTH,
461
487
  SIDEBAR_RAIL_WIDTH,
462
488
  SIDEBAR_TOTAL_WIDTH,
489
+ SandboxArtifactPane,
463
490
  SandboxCard,
464
491
  SandboxTable,
465
492
  SandboxWorkbench,
@@ -537,6 +564,7 @@ export {
537
564
  addMessage,
538
565
  addParts,
539
566
  badgeVariants,
567
+ buildUnifiedPatch,
540
568
  bumpActiveSessionActivity,
541
569
  buttonVariants,
542
570
  canAdminSandbox,
@@ -544,6 +572,7 @@ export {
544
572
  chatCapableHarnesses,
545
573
  clearChat,
546
574
  cn,
575
+ computeDiffStats,
547
576
  connectSession,
548
577
  copyText,
549
578
  createAuthFetcher,
@@ -579,6 +608,7 @@ export {
579
608
  partMapAtom,
580
609
  registerActiveSession,
581
610
  resetActiveSessions,
611
+ resolveLanguage,
582
612
  sessionAtom,
583
613
  setActiveSessionAttention,
584
614
  setActiveSessionConnection,
@@ -13,10 +13,7 @@ interface IntegrationConnection {
13
13
  connectorId?: string;
14
14
  status: "connected" | "pending" | "revoked" | "expired" | (string & {});
15
15
  grantedScopes?: string[];
16
- account?: {
17
- identity?: string;
18
- displayName?: string;
19
- } & Record<string, unknown>;
16
+ accountDisplay?: string | null;
20
17
  expiresAt?: string | null;
21
18
  createdAt?: string;
22
19
  updatedAt?: string;
@@ -57,8 +54,10 @@ interface IntegrationsPanelProps {
57
54
  connectorId: string;
58
55
  }) => void | Promise<void>;
59
56
  /**
60
- * Invoked when the user manages (disconnects) a live connection via the
61
- * hover-revealed affordance on a connected tile.
57
+ * Invoked when the user confirms disconnecting a live connection from the
58
+ * disconnect control on a connected tile. May return a promise; the
59
+ * confirmation dialog shows a loading state until it settles and surfaces a
60
+ * thrown error inline.
62
61
  */
63
62
  onDisconnect: (connectionId: string) => void | Promise<void>;
64
63
  /** Empty-state message when the catalog hasn't loaded any providers. */
@@ -1,14 +1,25 @@
1
1
  import {
2
- monogramColor,
3
- normalizeProviderId,
4
- providerLogoCandidates
5
- } from "./chunk-H7GMPMPB.js";
2
+ ProviderIcon,
3
+ normalizeProviderId
4
+ } from "./chunk-GTJ5PSK5.js";
5
+ import "./chunk-U67V476Y.js";
6
6
 
7
7
  // src/integrations/integrations-panel.tsx
8
8
  import * as React from "react";
9
- import { Card, CardContent, EmptyState } from "@tangle-network/ui/primitives";
9
+ import {
10
+ Button,
11
+ Card,
12
+ CardContent,
13
+ Dialog,
14
+ DialogContent,
15
+ DialogDescription,
16
+ DialogFooter,
17
+ DialogHeader,
18
+ DialogTitle,
19
+ EmptyState
20
+ } from "@tangle-network/ui/primitives";
10
21
  import { cn } from "@tangle-network/ui/utils";
11
- import { Check, Search, Settings2 } from "lucide-react";
22
+ import { Check, Search, Unplug } from "lucide-react";
12
23
  import { jsx, jsxs } from "react/jsx-runtime";
13
24
  var DEFAULT_FEATURED_IDS = [
14
25
  "gmail",
@@ -48,51 +59,7 @@ var DEFAULT_FEATURED_IDS = [
48
59
  function defaultConnectorOf(provider) {
49
60
  return provider.connectors?.[0]?.connectorId ?? provider.providerId;
50
61
  }
51
- function ProviderLogo({
52
- provider,
53
- size = 56
54
- }) {
55
- const candidates = React.useMemo(
56
- () => providerLogoCandidates({
57
- id: provider.providerId,
58
- iconUrl: provider.iconUrl
59
- }),
60
- [provider]
61
- );
62
- const [index, setIndex] = React.useState(0);
63
- const label = (provider.displayName ?? provider.providerId).trim();
64
- const initial = label.charAt(0).toUpperCase() || "?";
65
- const src = candidates[index];
66
- if (!src) {
67
- return /* @__PURE__ */ jsx(
68
- "span",
69
- {
70
- className: "flex shrink-0 items-center justify-center rounded-2xl font-semibold text-white",
71
- style: {
72
- width: size,
73
- height: size,
74
- backgroundColor: monogramColor(provider.providerId),
75
- fontSize: Math.round(size * 0.42)
76
- },
77
- "aria-hidden": true,
78
- children: initial
79
- }
80
- );
81
- }
82
- return /* @__PURE__ */ jsx(
83
- "img",
84
- {
85
- src,
86
- alt: "",
87
- width: size,
88
- height: size,
89
- loading: "lazy",
90
- className: "shrink-0 object-contain",
91
- style: { width: size, height: size },
92
- onError: () => setIndex((i) => i + 1)
93
- }
94
- );
95
- }
62
+ var LOGO_SIZE = 48;
96
63
  function buildConnectionIndex(connections) {
97
64
  const index = /* @__PURE__ */ new Map();
98
65
  for (const conn of connections) {
@@ -139,6 +106,12 @@ function IntegrationsPanel({
139
106
  }) {
140
107
  const [query, setQuery] = React.useState("");
141
108
  const [sort, setSort] = React.useState(defaultSort);
109
+ const [disconnectTarget, setDisconnectTarget] = React.useState(null);
110
+ const [isDisconnecting, setIsDisconnecting] = React.useState(false);
111
+ const [disconnectError, setDisconnectError] = React.useState(
112
+ null
113
+ );
114
+ const activeDisconnect = React.useRef(0);
142
115
  const connectionIndex = React.useMemo(
143
116
  () => buildConnectionIndex(connections),
144
117
  [connections]
@@ -161,6 +134,30 @@ function IntegrationsPanel({
161
134
  });
162
135
  return sorted;
163
136
  }, [catalog, query, sort, featuredRank]);
137
+ const closeDisconnect = React.useCallback(() => {
138
+ activeDisconnect.current += 1;
139
+ setIsDisconnecting(false);
140
+ setDisconnectTarget(null);
141
+ setDisconnectError(null);
142
+ }, []);
143
+ const confirmDisconnect = React.useCallback(async () => {
144
+ if (!disconnectTarget) return;
145
+ const reqId = activeDisconnect.current += 1;
146
+ setIsDisconnecting(true);
147
+ setDisconnectError(null);
148
+ try {
149
+ await Promise.resolve(onDisconnect(disconnectTarget.connectionId));
150
+ if (activeDisconnect.current !== reqId) return;
151
+ setDisconnectTarget(null);
152
+ } catch (e) {
153
+ if (activeDisconnect.current !== reqId) return;
154
+ setDisconnectError(
155
+ e instanceof Error ? e.message : "Failed to disconnect."
156
+ );
157
+ } finally {
158
+ if (activeDisconnect.current === reqId) setIsDisconnecting(false);
159
+ }
160
+ }, [disconnectTarget, onDisconnect]);
164
161
  if (error) {
165
162
  return /* @__PURE__ */ jsx(Card, { className: cn("border-destructive/50", className), children: /* @__PURE__ */ jsx(CardContent, { className: "py-6", children: /* @__PURE__ */ jsxs("p", { className: "text-sm text-destructive", children: [
166
163
  "Failed to load integrations: ",
@@ -195,6 +192,7 @@ function IntegrationsPanel({
195
192
  }
196
193
  );
197
194
  }
195
+ const disconnectAccountLabel = disconnectTarget?.accountDisplay;
198
196
  return /* @__PURE__ */ jsxs("div", { className: cn("space-y-4", className), children: [
199
197
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between", children: [
200
198
  /* @__PURE__ */ jsxs("div", { className: "flex flex-1 items-center gap-2 rounded-lg border border-border bg-card px-3 py-2", children: [
@@ -259,8 +257,9 @@ function IntegrationsPanel({
259
257
  {
260
258
  "data-testid": `integration-${provider.providerId}`,
261
259
  "data-connected": "true",
260
+ title: live.accountDisplay ? `${name} \u2014 ${live.accountDisplay}` : name,
262
261
  className: cn(
263
- "group relative flex aspect-square flex-col items-center justify-center gap-2 rounded-xl border p-3 text-center",
262
+ "relative flex aspect-square flex-col items-center justify-center gap-2 rounded-xl border p-3 text-center",
264
263
  "border-[var(--surface-success-border)] bg-[var(--surface-success-bg)]"
265
264
  ),
266
265
  children: [
@@ -269,16 +268,48 @@ function IntegrationsPanel({
269
268
  "button",
270
269
  {
271
270
  type: "button",
272
- onClick: () => onDisconnect(live.id),
273
- "data-testid": `manage-${provider.providerId}`,
274
- "aria-label": `Manage ${name}`,
275
- title: "Manage connection",
276
- className: "absolute right-1.5 top-1.5 flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground opacity-0 transition-opacity hover:bg-background hover:text-foreground group-hover:opacity-100",
277
- children: /* @__PURE__ */ jsx(Settings2, { className: "h-3.5 w-3.5" })
271
+ onClick: () => setDisconnectTarget({
272
+ connectionId: live.id,
273
+ name,
274
+ accountDisplay: live.accountDisplay
275
+ }),
276
+ "data-testid": `disconnect-${provider.providerId}`,
277
+ "aria-label": `Disconnect ${name}`,
278
+ title: "Disconnect",
279
+ className: "absolute right-1.5 top-1.5 flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground/70 transition-colors hover:bg-background hover:text-foreground focus-visible:bg-background focus-visible:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40",
280
+ children: /* @__PURE__ */ jsx(Unplug, { className: "h-3.5 w-3.5" })
281
+ }
282
+ ),
283
+ /* @__PURE__ */ jsx(
284
+ ProviderIcon,
285
+ {
286
+ id: provider.providerId,
287
+ iconUrl: provider.iconUrl,
288
+ displayName: provider.displayName,
289
+ size: LOGO_SIZE,
290
+ className: "rounded-2xl"
278
291
  }
279
292
  ),
280
- /* @__PURE__ */ jsx(ProviderLogo, { provider, size: 48 }),
281
- /* @__PURE__ */ jsx("span", { className: "line-clamp-2 w-full text-xs font-medium text-foreground", children: name })
293
+ /* @__PURE__ */ jsxs("div", { className: "flex h-8 w-full flex-col justify-center leading-4", children: [
294
+ /* @__PURE__ */ jsx(
295
+ "span",
296
+ {
297
+ className: cn(
298
+ "w-full text-xs font-medium text-foreground",
299
+ live.accountDisplay ? "truncate" : "line-clamp-2"
300
+ ),
301
+ children: name
302
+ }
303
+ ),
304
+ live.accountDisplay ? /* @__PURE__ */ jsx(
305
+ "span",
306
+ {
307
+ className: "w-full truncate text-[11px] leading-4 text-muted-foreground",
308
+ "data-testid": `account-${provider.providerId}`,
309
+ children: live.accountDisplay
310
+ }
311
+ ) : null
312
+ ] })
282
313
  ]
283
314
  },
284
315
  `${provider.providerId}:${connectorId}`
@@ -297,13 +328,77 @@ function IntegrationsPanel({
297
328
  "hover:border-primary/40 hover:bg-accent/40 hover:shadow-sm focus:outline-none focus-visible:border-primary/50 focus-visible:ring-2 focus-visible:ring-primary/20"
298
329
  ),
299
330
  children: [
300
- /* @__PURE__ */ jsx(ProviderLogo, { provider, size: 56 }),
301
- /* @__PURE__ */ jsx("span", { className: "line-clamp-2 w-full text-xs font-medium text-foreground", children: name })
331
+ /* @__PURE__ */ jsx(
332
+ ProviderIcon,
333
+ {
334
+ id: provider.providerId,
335
+ iconUrl: provider.iconUrl,
336
+ displayName: provider.displayName,
337
+ size: LOGO_SIZE,
338
+ className: "rounded-2xl"
339
+ }
340
+ ),
341
+ /* @__PURE__ */ jsx("span", { className: "line-clamp-2 h-8 w-full text-xs font-medium leading-4 text-foreground", children: name })
302
342
  ]
303
343
  },
304
344
  `${provider.providerId}:${connectorId}`
305
345
  );
306
- }) })
346
+ }) }),
347
+ /* @__PURE__ */ jsx(
348
+ Dialog,
349
+ {
350
+ open: !!disconnectTarget,
351
+ onOpenChange: (open) => {
352
+ if (!open) closeDisconnect();
353
+ },
354
+ children: /* @__PURE__ */ jsxs(
355
+ DialogContent,
356
+ {
357
+ className: "max-w-sm",
358
+ onCloseAutoFocus: (e) => e.preventDefault(),
359
+ children: [
360
+ /* @__PURE__ */ jsxs(DialogHeader, { children: [
361
+ /* @__PURE__ */ jsxs(DialogTitle, { children: [
362
+ "Disconnect ",
363
+ disconnectTarget?.name ?? "integration",
364
+ "?"
365
+ ] }),
366
+ /* @__PURE__ */ jsxs(DialogDescription, { children: [
367
+ "This removes Sandbox's access to your",
368
+ " ",
369
+ disconnectTarget?.name ?? "this",
370
+ " account",
371
+ disconnectAccountLabel ? ` (${disconnectAccountLabel})` : "",
372
+ ". You can reconnect anytime."
373
+ ] })
374
+ ] }),
375
+ disconnectError ? /* @__PURE__ */ jsx("p", { className: "text-sm text-destructive", role: "alert", children: disconnectError }) : null,
376
+ /* @__PURE__ */ jsxs(DialogFooter, { children: [
377
+ /* @__PURE__ */ jsx(
378
+ Button,
379
+ {
380
+ variant: "outline",
381
+ onClick: closeDisconnect,
382
+ "data-testid": "cancel-disconnect",
383
+ children: "Cancel"
384
+ }
385
+ ),
386
+ /* @__PURE__ */ jsx(
387
+ Button,
388
+ {
389
+ variant: "destructive",
390
+ loading: isDisconnecting,
391
+ onClick: confirmDisconnect,
392
+ "data-testid": "confirm-disconnect",
393
+ children: "Disconnect"
394
+ }
395
+ )
396
+ ] })
397
+ ]
398
+ }
399
+ )
400
+ }
401
+ )
307
402
  ] });
308
403
  }
309
404
 
package/dist/markdown.js CHANGED
@@ -1,3 +1,5 @@
1
+ import "./chunk-U67V476Y.js";
2
+
1
3
  // src/markdown/index.ts
2
4
  import {
3
5
  CodeBlock,
package/dist/openui.d.ts CHANGED
@@ -1,6 +1 @@
1
1
  export { OpenUIAction, OpenUIActionsNode, OpenUIArtifactRenderer, OpenUIArtifactRendererProps, OpenUIBadgeNode, OpenUICardNode, OpenUICodeNode, OpenUIComponentNode, OpenUIGridNode, OpenUIHeadingNode, OpenUIKeyValueNode, OpenUIMarkdownNode, OpenUIPrimitive, OpenUISeparatorNode, OpenUIStackNode, OpenUIStatNode, OpenUITableNode, OpenUITextNode } from '@tangle-network/ui/openui';
2
- import '@tangle-network/ui/run';
3
- import '@tangle-network/ui/files';
4
- import '@tangle-network/ui/utils';
5
- import '@tangle-network/ui/editor';
6
- import '@tangle-network/ui/markdown';
package/dist/openui.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  OpenUIArtifactRenderer
3
3
  } from "./chunk-AZ3AWMTM.js";
4
+ import "./chunk-U67V476Y.js";
4
5
  export {
5
6
  OpenUIArtifactRenderer
6
7
  };
package/dist/pages.d.ts CHANGED
@@ -202,7 +202,7 @@ interface ProvisioningConfig {
202
202
  key: string;
203
203
  value: string;
204
204
  }[];
205
- driver: "docker" | "firecracker" | "tangle";
205
+ driver: "docker" | "firecracker" | "host-agent-docker" | "host-agent-firecracker" | "tangle";
206
206
  bare: boolean;
207
207
  startupScriptIds?: string[];
208
208
  }