@tangle-network/sandbox-ui 0.26.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
@@ -325,6 +325,9 @@
325
325
  .top-1 {
326
326
  top: calc(var(--spacing) * 1);
327
327
  }
328
+ .top-1\.5 {
329
+ top: calc(var(--spacing) * 1.5);
330
+ }
328
331
  .top-1\/2 {
329
332
  top: calc(1 / 2 * 100%);
330
333
  }
@@ -355,6 +358,9 @@
355
358
  .right-1 {
356
359
  right: calc(var(--spacing) * 1);
357
360
  }
361
+ .right-1\.5 {
362
+ right: calc(var(--spacing) * 1.5);
363
+ }
358
364
  .right-2 {
359
365
  right: calc(var(--spacing) * 2);
360
366
  }
@@ -616,10 +622,6 @@
616
622
  .aspect-square {
617
623
  aspect-ratio: 1 / 1;
618
624
  }
619
- .size-6 {
620
- width: calc(var(--spacing) * 6);
621
- height: calc(var(--spacing) * 6);
622
- }
623
625
  .h-1 {
624
626
  height: calc(var(--spacing) * 1);
625
627
  }
@@ -1360,13 +1362,6 @@
1360
1362
  .gap-px {
1361
1363
  gap: 1px;
1362
1364
  }
1363
- .space-y-0 {
1364
- :where(& > :not(:last-child)) {
1365
- --tw-space-y-reverse: 0;
1366
- margin-block-start: calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));
1367
- margin-block-end: calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)));
1368
- }
1369
- }
1370
1365
  .space-y-0\.5 {
1371
1366
  :where(& > :not(:last-child)) {
1372
1367
  --tw-space-y-reverse: 0;
@@ -2858,10 +2853,6 @@
2858
2853
  --tw-shadow: 0 8px 20px var(--tw-shadow-color, rgba(15,23,42,0.12));
2859
2854
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2860
2855
  }
2861
- .shadow-\[inset_2px_0_0_hsl\(var\(--primary\)\)\] {
2862
- --tw-shadow: inset 2px 0 0 var(--tw-shadow-color, hsl(var(--primary)));
2863
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2864
- }
2865
2856
  .shadow-\[var\(--chat-input-shadow\,0_1px_2px_rgba\(15\,23\,42\,0\.05\)\)\] {
2866
2857
  --tw-shadow: var(--chat-input-shadow,0 1px 2px rgba(15,23,42,0.05));
2867
2858
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -3404,6 +3395,14 @@
3404
3395
  }
3405
3396
  }
3406
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
+ }
3407
3406
  .hover\:brightness-110 {
3408
3407
  &:hover {
3409
3408
  @media (hover: hover) {
@@ -3705,6 +3704,11 @@
3705
3704
  flex-wrap: nowrap;
3706
3705
  }
3707
3706
  }
3707
+ .sm\:items-center {
3708
+ @media (width >= 40rem) {
3709
+ align-items: center;
3710
+ }
3711
+ }
3708
3712
  .sm\:justify-between {
3709
3713
  @media (width >= 40rem) {
3710
3714
  justify-content: space-between;
@@ -3791,6 +3795,11 @@
3791
3795
  grid-template-columns: repeat(4, minmax(0, 1fr));
3792
3796
  }
3793
3797
  }
3798
+ .md\:grid-cols-5 {
3799
+ @media (width >= 48rem) {
3800
+ grid-template-columns: repeat(5, minmax(0, 1fr));
3801
+ }
3802
+ }
3794
3803
  .md\:flex-row {
3795
3804
  @media (width >= 48rem) {
3796
3805
  flex-direction: row;
@@ -3841,6 +3850,11 @@
3841
3850
  grid-template-columns: repeat(4, minmax(0, 1fr));
3842
3851
  }
3843
3852
  }
3853
+ .lg\:grid-cols-6 {
3854
+ @media (width >= 64rem) {
3855
+ grid-template-columns: repeat(6, minmax(0, 1fr));
3856
+ }
3857
+ }
3844
3858
  .lg\:grid-cols-\[minmax\(0\,1\.35fr\)_minmax\(20rem\,0\.9fr\)\] {
3845
3859
  @media (width >= 64rem) {
3846
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 };