@tangle-network/sandbox-ui 0.25.0 → 0.27.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.
@@ -1,8 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { e as HarnessType } from './harness-picker-ppDe7ap-.js';
4
- export { B as Backend, a as BackendSelector, b as BackendSelectorProps, H as HARNESS_OPTIONS, c as HarnessPicker, d as HarnessPickerProps } from './harness-picker-ppDe7ap-.js';
5
- 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';
3
+ import { e as HarnessType } from './harness-picker-lyeEncN4.js';
4
+ export { B as Backend, a as BackendSelector, b as BackendSelectorProps, H as HARNESS_OPTIONS, c as HarnessPicker, d as HarnessPickerProps, f as chatCapableHarnesses } from './harness-picker-lyeEncN4.js';
5
+ 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-Cmisf9Y8.js';
6
6
  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';
7
7
 
8
8
  interface SidebarUser {
package/dist/dashboard.js CHANGED
@@ -62,14 +62,18 @@ import {
62
62
  HARNESS_BRAND,
63
63
  HARNESS_OPTIONS,
64
64
  HarnessLogo,
65
- HarnessPicker
66
- } from "./chunk-HXIYUQN2.js";
65
+ HarnessPicker,
66
+ chatCapableHarnesses
67
+ } from "./chunk-ELGN7DPS.js";
67
68
  import {
69
+ DEFAULT_FEATURED_MODEL_IDS,
68
70
  ModelPicker,
69
71
  canonicalModelId,
72
+ dedupeModels,
70
73
  formatContext,
71
- formatPricing
72
- } from "./chunk-JDMX4HHN.js";
74
+ formatPricing,
75
+ modelDedupKey
76
+ } from "./chunk-6NQBODYV.js";
73
77
  import "./chunk-EI44GEQ5.js";
74
78
  export {
75
79
  ActivityFeed,
@@ -78,6 +82,7 @@ export {
78
82
  BillingDashboard,
79
83
  ClusterStatusBar,
80
84
  CreditBalance,
85
+ DEFAULT_FEATURED_MODEL_IDS,
81
86
  DashboardLayout,
82
87
  GitPanel,
83
88
  HARNESS_BRAND,
@@ -130,9 +135,12 @@ export {
130
135
  VariantList,
131
136
  canAdminSandbox,
132
137
  canonicalModelId,
138
+ chatCapableHarnesses,
139
+ dedupeModels,
133
140
  formatContext,
134
141
  formatPrice,
135
142
  formatPricing,
143
+ modelDedupKey,
136
144
  parseInsufficientBalance,
137
145
  useSidebar
138
146
  };
package/dist/globals.css CHANGED
@@ -30,7 +30,6 @@
30
30
  --color-violet-300: oklch(81.1% 0.111 293.571);
31
31
  --color-violet-400: oklch(70.2% 0.183 293.541);
32
32
  --color-violet-500: oklch(60.6% 0.25 292.717);
33
- --color-gray-900: oklch(21% 0.034 264.665);
34
33
  --color-zinc-400: oklch(70.5% 0.015 286.067);
35
34
  --color-neutral-400: oklch(70.8% 0 0);
36
35
  --color-neutral-500: oklch(55.6% 0 0);
@@ -326,6 +325,9 @@
326
325
  .top-1 {
327
326
  top: calc(var(--spacing) * 1);
328
327
  }
328
+ .top-1\.5 {
329
+ top: calc(var(--spacing) * 1.5);
330
+ }
329
331
  .top-1\/2 {
330
332
  top: calc(1 / 2 * 100%);
331
333
  }
@@ -356,6 +358,9 @@
356
358
  .right-1 {
357
359
  right: calc(var(--spacing) * 1);
358
360
  }
361
+ .right-1\.5 {
362
+ right: calc(var(--spacing) * 1.5);
363
+ }
359
364
  .right-2 {
360
365
  right: calc(var(--spacing) * 2);
361
366
  }
@@ -617,10 +622,6 @@
617
622
  .aspect-square {
618
623
  aspect-ratio: 1 / 1;
619
624
  }
620
- .size-6 {
621
- width: calc(var(--spacing) * 6);
622
- height: calc(var(--spacing) * 6);
623
- }
624
625
  .h-1 {
625
626
  height: calc(var(--spacing) * 1);
626
627
  }
@@ -1361,13 +1362,6 @@
1361
1362
  .gap-px {
1362
1363
  gap: 1px;
1363
1364
  }
1364
- .space-y-0 {
1365
- :where(& > :not(:last-child)) {
1366
- --tw-space-y-reverse: 0;
1367
- margin-block-start: calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));
1368
- margin-block-end: calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)));
1369
- }
1370
- }
1371
1365
  .space-y-0\.5 {
1372
1366
  :where(& > :not(:last-child)) {
1373
1367
  --tw-space-y-reverse: 0;
@@ -2022,9 +2016,6 @@
2022
2016
  background-color: color-mix(in oklab, var(--color-emerald-500) 10%, transparent);
2023
2017
  }
2024
2018
  }
2025
- .bg-gray-900 {
2026
- background-color: var(--color-gray-900);
2027
- }
2028
2019
  .bg-green-400 {
2029
2020
  background-color: var(--color-green-400);
2030
2021
  }
@@ -2862,10 +2853,6 @@
2862
2853
  --tw-shadow: 0 8px 20px var(--tw-shadow-color, rgba(15,23,42,0.12));
2863
2854
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2864
2855
  }
2865
- .shadow-\[inset_2px_0_0_hsl\(var\(--primary\)\)\] {
2866
- --tw-shadow: inset 2px 0 0 var(--tw-shadow-color, hsl(var(--primary)));
2867
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2868
- }
2869
2856
  .shadow-\[var\(--chat-input-shadow\,0_1px_2px_rgba\(15\,23\,42\,0\.05\)\)\] {
2870
2857
  --tw-shadow: var(--chat-input-shadow,0 1px 2px rgba(15,23,42,0.05));
2871
2858
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -3408,6 +3395,14 @@
3408
3395
  }
3409
3396
  }
3410
3397
  }
3398
+ .hover\:shadow-sm {
3399
+ &:hover {
3400
+ @media (hover: hover) {
3401
+ --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
3402
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3403
+ }
3404
+ }
3405
+ }
3411
3406
  .hover\:brightness-110 {
3412
3407
  &:hover {
3413
3408
  @media (hover: hover) {
@@ -3428,11 +3423,6 @@
3428
3423
  border-color: var(--border-accent-hover);
3429
3424
  }
3430
3425
  }
3431
- .focus\:border-transparent {
3432
- &:focus {
3433
- border-color: transparent;
3434
- }
3435
- }
3436
3426
  .focus\:text-\[var\(--surface-danger-text\)\] {
3437
3427
  &:focus {
3438
3428
  color: var(--surface-danger-text);
@@ -3714,6 +3704,11 @@
3714
3704
  flex-wrap: nowrap;
3715
3705
  }
3716
3706
  }
3707
+ .sm\:items-center {
3708
+ @media (width >= 40rem) {
3709
+ align-items: center;
3710
+ }
3711
+ }
3717
3712
  .sm\:justify-between {
3718
3713
  @media (width >= 40rem) {
3719
3714
  justify-content: space-between;
@@ -3800,6 +3795,11 @@
3800
3795
  grid-template-columns: repeat(4, minmax(0, 1fr));
3801
3796
  }
3802
3797
  }
3798
+ .md\:grid-cols-5 {
3799
+ @media (width >= 48rem) {
3800
+ grid-template-columns: repeat(5, minmax(0, 1fr));
3801
+ }
3802
+ }
3803
3803
  .md\:flex-row {
3804
3804
  @media (width >= 48rem) {
3805
3805
  flex-direction: row;
@@ -3850,6 +3850,11 @@
3850
3850
  grid-template-columns: repeat(4, minmax(0, 1fr));
3851
3851
  }
3852
3852
  }
3853
+ .lg\:grid-cols-6 {
3854
+ @media (width >= 64rem) {
3855
+ grid-template-columns: repeat(6, minmax(0, 1fr));
3856
+ }
3857
+ }
3853
3858
  .lg\:grid-cols-\[minmax\(0\,1\.35fr\)_minmax\(20rem\,0\.9fr\)\] {
3854
3859
  @media (width >= 64rem) {
3855
3860
  grid-template-columns: minmax(0,1.35fr) minmax(20rem,0.9fr);
@@ -28,12 +28,21 @@ declare function BackendSelector({ backends, selected, onChange, label, placehol
28
28
  type HarnessType = "opencode" | "claude-code" | "codex" | "amp" | "factory-droids" | "cli-base" | "kimi-code" | "openclaw" | "nanoclaw" | "hermes";
29
29
  interface HarnessOption extends Backend {
30
30
  type: HarnessType;
31
+ /**
32
+ * Whether this harness can drive an interactive chat session. `false` for
33
+ * shell-only backends (`cli-base`) that have no conversational agent — the
34
+ * chat composer filters these out (see {@link chatCapableHarnesses}) while
35
+ * scheduled/non-chat surfaces keep them.
36
+ */
37
+ chatCapable: boolean;
31
38
  }
32
39
  /**
33
40
  * Default option list with human-readable copy. Order is curated so the
34
41
  * recommended choice (`opencode`) appears first; `cli-base` (no agent) last.
35
42
  */
36
43
  declare const HARNESS_OPTIONS: readonly HarnessOption[];
44
+ /** Harness types that can drive an interactive chat session. */
45
+ declare const chatCapableHarnesses: ReadonlyArray<HarnessType>;
37
46
  interface HarnessPickerProps extends Omit<BackendSelectorProps, "backends" | "selected" | "onChange"> {
38
47
  value: HarnessType;
39
48
  onChange: (next: HarnessType) => void;
@@ -51,4 +60,4 @@ interface HarnessPickerProps extends Omit<BackendSelectorProps, "backends" | "se
51
60
  */
52
61
  declare function HarnessPicker({ value, onChange, available, optionsOverride, label, ...rest }: HarnessPickerProps): react_jsx_runtime.JSX.Element;
53
62
 
54
- 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 };
63
+ 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, chatCapableHarnesses as f };
package/dist/index.d.ts CHANGED
@@ -9,8 +9,8 @@ export { ExpandedToolDetail, ExpandedToolDetailProps, InlineThinkingItem, Inline
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
11
  export { ActivityFeed, ActivityFeedProps, ActivityItem, BackendConfig, BackendConfigProps, BackendStatusData, ClusterStatusBar, ClusterStatusBarProps, ClusterStatusItem, CreditBalance, CreditBalanceProps, DashboardLayout, DashboardLayoutProps, DashboardProfile, DashboardSnapshotInfo, DashboardUser, ExposedPort, GitCommitData, GitPanel, GitPanelProps, GitStatusData, HARNESS_BRAND, HarnessBrand, HarnessLogo, HarnessLogoProps, 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, RailModeButton, RailModeButtonProps, RailSeparator, RailSeparatorProps, ResourceMeter, ResourceMeterProps, ResourceSnapshot, ResourceSnapshotItem, ResourceSnapshotProps, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, SandboxCardData, SandboxCardProps, SandboxStatus, SandboxTable, SandboxTableProps, Sidebar, SidebarContent, SidebarContentProps, SidebarLayout, 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, 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-ppDe7ap-.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';
12
+ export { B as Backend, a as BackendSelector, b as BackendSelectorProps, H as HARNESS_OPTIONS, c as HarnessPicker, d as HarnessPickerProps, e as HarnessType, f as chatCapableHarnesses } from './harness-picker-lyeEncN4.js';
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-Cmisf9Y8.js';
14
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
15
  export { AuthHeader, AuthHeaderProps, GitHubLoginButton, GitHubLoginButtonProps, LoginLayout, LoginLayoutProps, SessionUser, UserMenu, UserMenuProps } from '@tangle-network/ui/auth';
16
16
  export { TangleLoginButton, TangleLoginButtonProps } from './auth.js';
package/dist/index.js CHANGED
@@ -104,7 +104,7 @@ import {
104
104
  modelProvider,
105
105
  snapHarnessToModel,
106
106
  snapModelToHarness
107
- } from "./chunk-KANKBACI.js";
107
+ } from "./chunk-BJFWPP5T.js";
108
108
  import {
109
109
  ExpandedToolDetail,
110
110
  InlineThinkingItem,
@@ -128,7 +128,7 @@ import {
128
128
  TaskBoard,
129
129
  TerminalPanel,
130
130
  WorkspaceLayout
131
- } from "./chunk-BP6ZTBI6.js";
131
+ } from "./chunk-I3IVCGND.js";
132
132
  import {
133
133
  OpenUIArtifactRenderer
134
134
  } from "./chunk-AZ3AWMTM.js";
@@ -290,14 +290,18 @@ import {
290
290
  HARNESS_BRAND,
291
291
  HARNESS_OPTIONS,
292
292
  HarnessLogo,
293
- HarnessPicker
294
- } from "./chunk-HXIYUQN2.js";
293
+ HarnessPicker,
294
+ chatCapableHarnesses
295
+ } from "./chunk-ELGN7DPS.js";
295
296
  import {
297
+ DEFAULT_FEATURED_MODEL_IDS,
296
298
  ModelPicker,
297
299
  canonicalModelId,
300
+ dedupeModels,
298
301
  formatContext,
299
- formatPricing
300
- } from "./chunk-JDMX4HHN.js";
302
+ formatPricing,
303
+ modelDedupKey
304
+ } from "./chunk-6NQBODYV.js";
301
305
  import "./chunk-EI44GEQ5.js";
302
306
 
303
307
  // src/index.ts
@@ -351,6 +355,7 @@ export {
351
355
  CommandPreview,
352
356
  CopyButton,
353
357
  CreditBalance,
358
+ DEFAULT_FEATURED_MODEL_IDS,
354
359
  DEFAULT_REASONING_LEVEL_OPTIONS,
355
360
  DashboardLayout,
356
361
  Dialog,
@@ -520,12 +525,14 @@ export {
520
525
  buttonVariants,
521
526
  canAdminSandbox,
522
527
  canonicalModelId,
528
+ chatCapableHarnesses,
523
529
  clearChat,
524
530
  cn,
525
531
  connectSession,
526
532
  copyText,
527
533
  createAuthFetcher,
528
534
  createFetchTransport,
535
+ dedupeModels,
529
536
  disconnectSession,
530
537
  filterFileTree,
531
538
  formatBytes,
@@ -548,6 +555,7 @@ export {
548
555
  isModelCompatibleWithHarness,
549
556
  isStreamingAtom,
550
557
  messagesAtom,
558
+ modelDedupKey,
551
559
  modelProvider,
552
560
  parseInsufficientBalance,
553
561
  partMapAtom,
@@ -41,6 +41,7 @@ interface IntegrationHealth {
41
41
  message?: string;
42
42
  }
43
43
 
44
+ type IntegrationSort = "featured" | "alpha";
44
45
  interface IntegrationsPanelProps {
45
46
  catalog: IntegrationProvider[];
46
47
  connections: IntegrationConnection[];
@@ -48,20 +49,31 @@ interface IntegrationsPanelProps {
48
49
  isLoading?: boolean;
49
50
  error?: Error | null;
50
51
  /**
51
- * Invoked when the user clicks "Connect" on a catalog tile. The
52
- * consumer should call its data hook's `connect(...)` action.
52
+ * Invoked when the user clicks an unconnected provider tile. The consumer
53
+ * should call its data hook's `connect(...)` action.
53
54
  */
54
55
  onConnect: (input: {
55
56
  providerId: string;
56
57
  connectorId: string;
57
58
  }) => void | Promise<void>;
58
- /** Invoked when the user clicks "Disconnect" on a live connection. */
59
+ /**
60
+ * Invoked when the user manages (disconnects) a live connection via the
61
+ * hover-revealed affordance on a connected tile.
62
+ */
59
63
  onDisconnect: (connectionId: string) => void | Promise<void>;
60
64
  /** Empty-state message when the catalog hasn't loaded any providers. */
61
65
  emptyCatalogLabel?: string;
66
+ /**
67
+ * Provider ids surfaced first (in this order) before the rest are sorted
68
+ * alphabetically. Matching is normalized (case / separators ignored).
69
+ * Defaults to a curated list of common GTM/work providers.
70
+ */
71
+ featuredIds?: string[];
72
+ /** Initial sort mode. Defaults to "featured". */
73
+ defaultSort?: IntegrationSort;
62
74
  className?: string;
63
75
  }
64
- declare function IntegrationsPanel({ catalog, connections, healthByConnectionId, isLoading, error, onConnect, onDisconnect, emptyCatalogLabel, className, }: IntegrationsPanelProps): react_jsx_runtime.JSX.Element;
76
+ declare function IntegrationsPanel({ catalog, connections, healthByConnectionId, isLoading, error, onConnect, onDisconnect, emptyCatalogLabel, featuredIds, defaultSort, className, }: IntegrationsPanelProps): react_jsx_runtime.JSX.Element;
65
77
 
66
78
  /**
67
79
  * Endpoint contract expected on the consumer app's server (which
@@ -111,4 +123,4 @@ interface ConnectInput {
111
123
  }
112
124
  declare function useIntegrations({ apiBaseUrl, fetchImpl, autoLoad, }: UseIntegrationsOptions): UseIntegrationsResult;
113
125
 
114
- export { type ConnectInput, type IntegrationConnection, type IntegrationConnector, type IntegrationHealth, type IntegrationProvider, IntegrationsPanel, type IntegrationsPanelProps, type UseIntegrationsOptions, type UseIntegrationsResult, useIntegrations };
126
+ export { type ConnectInput, type IntegrationConnection, type IntegrationConnector, type IntegrationHealth, type IntegrationProvider, type IntegrationSort, IntegrationsPanel, type IntegrationsPanelProps, type UseIntegrationsOptions, type UseIntegrationsResult, useIntegrations };