@shuffleio/shuffle-mcps 0.0.14 → 0.0.16

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.
@@ -2,7 +2,7 @@ import {
2
2
  fetchApps,
3
3
  fetchAppsViaApiConfig,
4
4
  invalidateAppsCache
5
- } from "./chunk-GALH24TQ.mjs";
5
+ } from "./chunk-FHIKSRCS.mjs";
6
6
  export {
7
7
  fetchApps,
8
8
  fetchAppsViaApiConfig,
@@ -4,7 +4,7 @@ var PROD_BACKEND = "https://shuffler.io";
4
4
  var CLOUD_DOMAINS = ["security.shuffler.io", "shutdown.no"];
5
5
  var getEnvVar = (key) => {
6
6
  try {
7
- const meta = import.meta;
7
+ const meta = new Function("try { return import.meta } catch { return undefined }")();
8
8
  return meta?.env?.[key];
9
9
  } catch {
10
10
  return void 0;
@@ -59,6 +59,17 @@ var API_CONFIG = {
59
59
  var getApiUrl = (endpoint) => {
60
60
  return `${API_CONFIG.baseUrl}${endpoint}`;
61
61
  };
62
+ var shuffleFetch = (url, init) => {
63
+ const { headers: extraHeaders, ...rest } = init || {};
64
+ return fetch(url, {
65
+ credentials: "include",
66
+ ...rest,
67
+ headers: {
68
+ ...getAuthHeader(),
69
+ ...extraHeaders
70
+ }
71
+ });
72
+ };
62
73
  var getAuthHeader = (overrideOrgId) => {
63
74
  const headers = {};
64
75
  const apiKey = API_CONFIG.apiKey;
@@ -130,6 +141,7 @@ export {
130
141
  getTrackedOrgId,
131
142
  API_CONFIG,
132
143
  getApiUrl,
144
+ shuffleFetch,
133
145
  getAuthHeader,
134
146
  fetchApps,
135
147
  invalidateAppsCache,
package/dist/index.d.mts CHANGED
@@ -2,11 +2,78 @@ import React$1, { ReactNode } from 'react';
2
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
  import { SxProps, Theme } from '@mui/material';
4
4
 
5
+ /**
6
+ * ShuffleMcpThemeProvider
7
+ *
8
+ * Mirror of Shuffle-Core's theme provider, scoped for the Shuffle-MCPs lib.
9
+ * Two jobs:
10
+ *
11
+ * 1. Pin MUI defaults (`size="small"`) so individual call sites never need to
12
+ * thread sizing through.
13
+ *
14
+ * 2. Bridge the host app's light/dark scheme into MUI:
15
+ * - `mode="auto"` (default) — track the `.dark` class on `<html>` and flip
16
+ * MUI `palette.mode` accordingly. Tokens (`hsl(var(--…))`) flip with the
17
+ * same class so nothing else needs to know about the theme.
18
+ * - `mode="light" | "dark"` — pin the wrapped subtree to that scheme. We
19
+ * render a `<div className="dark">` (or remove it) so Tailwind dark
20
+ * variants and CSS-variable overrides scope to this subtree only —
21
+ * useful when embedding MCPs inside a host that doesn't manage `.dark`
22
+ * on `<html>`.
23
+ *
24
+ * Wrap your MCP usage at any level:
25
+ *
26
+ * <ShuffleMcpThemeProvider mode="dark">
27
+ * <ShuffleMCP ... />
28
+ * </ShuffleMcpThemeProvider>
29
+ */
30
+
31
+ type ShuffleMcpColorMode = "light" | "dark" | "auto";
32
+ interface ShuffleMcpThemeProviderProps {
33
+ children: React$1.ReactNode;
34
+ /**
35
+ * Color mode for the wrapped subtree.
36
+ * - `"auto"` (default) — follow the host page's `.dark` class on `<html>`.
37
+ * - `"light"` / `"dark"` — pin the subtree to that scheme via a wrapping div.
38
+ */
39
+ mode?: ShuffleMcpColorMode;
40
+ }
41
+ declare const ShuffleMcpThemeProvider: React$1.FC<ShuffleMcpThemeProviderProps>;
42
+
43
+ /**
44
+ * Standard host-injected props passed to every top-level Shuffle-MCPs
45
+ * component the consumer mounts directly. Mirrors `ShuffleCoreHostProps` so a
46
+ * single context object can be threaded through any Shuffle surface.
47
+ *
48
+ * All fields are optional so components remain usable standalone; concrete
49
+ * components decide which ones they actually read.
50
+ *
51
+ * Conventional usage inside a component:
52
+ * - Skip auth-dependent fetches while `isLoaded === false`.
53
+ * - Skip authenticated-only fetches when `isLoggedIn === false`.
54
+ * - Prefer `globalUrl` over the bundled `API_CONFIG.baseUrl` when set.
55
+ * - Read org / role / support flags from `userdata` when available
56
+ * (e.g. `userdata?.active_org?.id`).
57
+ */
58
+ interface ShuffleHostProps {
59
+ /** True when rendered during SSR (skip window/document access). */
60
+ serverside?: boolean;
61
+ /** True once the host has finished hydrating auth + org info (/getinfo done). */
62
+ isLoaded?: boolean;
63
+ /** True when the active user session is authenticated. Only meaningful once `isLoaded` is true. */
64
+ isLoggedIn?: boolean;
65
+ /** Backend API base URL. Overrides `API_CONFIG.baseUrl` defaults when provided. */
66
+ globalUrl?: string;
67
+ /** Userdata returned by `GET /api/v1/getinfo` (active_org, support, etc.). */
68
+ userdata?: any;
69
+ }
70
+
5
71
  /**
6
72
  * Local Singul Library - Helpers
7
73
  * This is a local copy for development. Changes here should be merged back to:
8
74
  * https://github.com/Shuffle/singul.js
9
75
  */
76
+
10
77
  interface AlgoliaSearchApp {
11
78
  name: string;
12
79
  description: string;
@@ -84,7 +151,7 @@ interface AppAuthentication {
84
151
  error?: string;
85
152
  };
86
153
  }
87
- interface ShuffleMCPProps {
154
+ interface ShuffleMCPProps extends ShuffleHostProps {
88
155
  /**
89
156
  * Shuffle API key. Used as the `Authorization: Bearer` header on every
90
157
  * request the component makes (`/api/v1/apps/authentication`,
@@ -179,12 +246,6 @@ interface ShuffleMCPHandle {
179
246
  }
180
247
  declare const ShuffleMCP: React$1.ForwardRefExoticComponent<ShuffleMCPProps & React$1.RefAttributes<ShuffleMCPHandle>>;
181
248
 
182
- /**
183
- * AppDetailDrawer — Shows app detail content (header, auth, MCP chat, API viewer)
184
- * inside a drawer. Used from alluvial diagrams and the app search drawer.
185
- *
186
- * Accepts either an app name (fetches data) or pre-loaded app info.
187
- */
188
249
  /**
189
250
  * Singul standard actions catalog, keyed by lowercase category fragment.
190
251
  * Mirrors the canonical action names exposed by https://singul.io —
@@ -192,7 +253,7 @@ declare const ShuffleMCP: React$1.ForwardRefExoticComponent<ShuffleMCPProps & Re
192
253
  * Fields shown here are starter parameters; the full schema lives on
193
254
  * the Singul side and is editable in the curl preview below.
194
255
  */
195
- interface AppDetailDrawerProps {
256
+ interface AppDetailDrawerProps extends ShuffleHostProps {
196
257
  open: boolean;
197
258
  onClose: () => void;
198
259
  /** App name to load */
@@ -220,17 +281,13 @@ interface AppDetailDrawerProps {
220
281
  }
221
282
  declare function AppDetailDrawer({ open, onClose, appName, appId, anchor, width, onRefresh, onAddToCanvas, isAuthenticated, activeOrgId, }: AppDetailDrawerProps): react_jsx_runtime.JSX.Element;
222
283
 
223
- /**
224
- * AppSearchDrawer — Reusable drawer for searching apps.
225
- * Selecting an app opens the AppDetailDrawer for full configuration.
226
- */
227
284
  interface ConnectionPathApp {
228
285
  name: string;
229
286
  icon: string;
230
287
  hasValidAuth?: boolean;
231
288
  isActiveOnly?: boolean;
232
289
  }
233
- interface AppSearchDrawerProps {
290
+ interface AppSearchDrawerProps extends ShuffleHostProps {
234
291
  open: boolean;
235
292
  onClose: () => void;
236
293
  initialQuery?: string;
@@ -297,17 +354,38 @@ interface AppSearchDrawerProps {
297
354
  }
298
355
  declare function AppSearchDrawer({ open, onClose, initialQuery, title, subtitle, anchor, width, showPipelinesBanner, onQuickSelect, onSelectOverride, onDetailClose, onAddToCanvas, priorityCategory, connectionPathApps, pinnedApps, highlightAppName, highlightDelayMs, multiSelect, selectedApps, onSelectionChange, }: AppSearchDrawerProps): react_jsx_runtime.JSX.Element;
299
356
 
357
+ interface AiAgentPromptsEditorProps {
358
+ /** Ordered list of prompts. */
359
+ prompts: string[];
360
+ /** Per-prompt allow-list of app IDs/names (parallel array to `prompts`). */
361
+ apps: string[][];
362
+ /** Read-only mode: render prompts as plain text, no edit/add/remove. */
363
+ readOnly?: boolean;
364
+ /** Edit handlers — required when `readOnly` is false. */
365
+ onChangePrompt?: (index: number, value: string) => void;
366
+ onRemovePrompt?: (index: number) => void;
367
+ onAddPrompt?: () => void;
368
+ onRemoveApp?: (promptIndex: number, appKey: string) => void;
369
+ onAddAppRequested?: (promptIndex: number) => void;
370
+ /** Resolves an app key to its display metadata. */
371
+ resolveAppMeta: (key: string) => {
372
+ name: string;
373
+ image: string;
374
+ };
375
+ /** Optional slot to render a richer prompt editor (e.g. PopupTextEditor).
376
+ * If omitted, a multiline MUI TextField is rendered in edit mode. */
377
+ renderPromptInput?: (props: {
378
+ index: number;
379
+ value: string;
380
+ onChange: (next: string) => void;
381
+ placeholder: string;
382
+ }) => React$1.ReactNode;
383
+ }
384
+ declare const AiAgentPromptsEditor: React$1.FC<AiAgentPromptsEditorProps>;
385
+
300
386
  declare function ShufflePipelinesBanner(): react_jsx_runtime.JSX.Element;
301
387
 
302
- /**
303
- * AppTitleHeader — Standalone title/header card for an app.
304
- *
305
- * Shows avatar (with valid-auth border), name, Verified/Pending chip,
306
- * categories, and either an "Activate/Deactivate" or "+ Add" action.
307
- *
308
- * Pure presentational component — pass in already-resolved props.
309
- */
310
- interface AppTitleHeaderProps {
388
+ interface AppTitleHeaderProps extends ShuffleHostProps {
311
389
  /** Display name of the app (will be capitalized via CSS). */
312
390
  name: string;
313
391
  /** Image URL for the app icon. */
@@ -331,7 +409,7 @@ interface AppTitleHeaderProps {
331
409
  }
332
410
  declare function AppTitleHeader({ name, image, hasValidAuth, hasAnyAuth, isAuthenticated, categories, isActivated, activateLoading, onActivateToggle, onAdd, }: AppTitleHeaderProps): react_jsx_runtime.JSX.Element;
333
411
 
334
- interface AppAuthSectionProps {
412
+ interface AppAuthSectionProps extends ShuffleHostProps {
335
413
  /** Display name (used in copy when no auth exists). */
336
414
  displayName: string;
337
415
  /** Algolia app object — required to render the AuthCard. */
@@ -356,12 +434,7 @@ interface AppAuthSectionProps {
356
434
  }
357
435
  declare function AppAuthSection({ displayName, algoliaApp, resolvedAlgoliaId, authState, expanded, onToggle, authCount, isAuthenticated, matchingEntries, onAuthChange, onTestConnection, onSaveAuth, onRefreshAuth, }: AppAuthSectionProps): react_jsx_runtime.JSX.Element;
358
436
 
359
- /**
360
- * TryMcpSection — Standalone "Try MCP" block.
361
- *
362
- * Wraps the heading + AppMcpChat. Pass in the resolved app props.
363
- */
364
- interface TryMcpSectionProps {
437
+ interface TryMcpSectionProps extends ShuffleHostProps {
365
438
  appName: string;
366
439
  /** Image URL used as the chat avatar. */
367
440
  appIcon?: string;
@@ -372,16 +445,18 @@ interface TryMcpSectionProps {
372
445
  }
373
446
  declare function TryMcpSection({ appName, appIcon, appId, categories }: TryMcpSectionProps): react_jsx_runtime.JSX.Element;
374
447
 
375
- declare const SingulActionsPreview: ({ appName, appIcon, categories, activeOrgId, onAuthenticate, }: {
448
+ interface SingulActionsPreviewProps extends ShuffleHostProps {
376
449
  appName: string;
377
450
  appIcon?: string;
451
+ appId?: string | null;
378
452
  categories?: string[];
379
453
  activeOrgId?: string | null;
380
454
  /** Optional click handler invoked when the user presses the
381
455
  * "Authenticate {App}" button surfaced after an
382
456
  * `action: "app_authentication"` response. */
383
457
  onAuthenticate?: (appName: string) => void;
384
- }) => react_jsx_runtime.JSX.Element;
458
+ }
459
+ declare const SingulActionsPreview: ({ appName, appIcon, categories, activeOrgId, onAuthenticate, }: SingulActionsPreviewProps) => react_jsx_runtime.JSX.Element;
385
460
 
386
461
  /**
387
462
  * AgentUI — Standalone "start + debug agents" surface.
@@ -442,13 +517,13 @@ interface AgentUIProps {
442
517
  maxWidth?: number;
443
518
  /** Compact mode: hides the hero icon, shrinks padding. */
444
519
  compact?: boolean;
445
- /** Hide the "Select Apps / MCPs" chip row entirely. */
520
+ /** Hide the "Select Apps" chip row entirely. */
446
521
  hideAppPicker?: boolean;
447
522
  /** Hide the paperclip image-attachment button. */
448
523
  hideAttach?: boolean;
449
524
  /** Disable the "Start" tab in the run switcher (e.g. when viewing a fixed execution). */
450
525
  disableStartTab?: boolean;
451
- /** Label on the "Select Apps / MCPs" chip. */
526
+ /** Label on the "Select Apps" chip. */
452
527
  appPickerLabel?: string;
453
528
  /** Title on the AppSearchDrawer. */
454
529
  appPickerTitle?: string;
@@ -561,7 +636,7 @@ interface AgentUIProps {
561
636
  declare const AgentUI: React$1.FC<AgentUIProps>;
562
637
 
563
638
  type AgentRunDrawerTab = 'run' | 'permissions' | 'localLLM';
564
- interface AgentRunDrawerProps {
639
+ interface AgentRunDrawerProps extends ShuffleHostProps {
565
640
  open: boolean;
566
641
  onClose: () => void;
567
642
  /** Which tab to focus when the drawer opens. Default: 'run'. */
@@ -620,6 +695,11 @@ declare const API_CONFIG: {
620
695
  setApiKey(key: string | null): void;
621
696
  };
622
697
  declare const getApiUrl: (endpoint: string) => string;
698
+ /**
699
+ * Central fetch wrapper that ALWAYS includes credentials and auth headers.
700
+ * Use this instead of raw fetch() for all Shuffle API calls.
701
+ */
702
+ declare const shuffleFetch: (url: string, init?: RequestInit) => Promise<Response>;
623
703
  declare const getAuthHeader: (overrideOrgId?: string | null) => Record<string, string>;
624
704
 
625
705
  /**
@@ -704,7 +784,7 @@ interface AgentActivityParams {
704
784
  */
705
785
  declare const searchAgentActivity: (params?: AgentActivityParams) => Promise<AgentActivityResponse>;
706
786
 
707
- interface AgentActivityListProps {
787
+ interface AgentActivityListProps extends ShuffleHostProps {
708
788
  /** Optional Shuffle API key. Falls back to the shared API_CONFIG. */
709
789
  apiKey?: string;
710
790
  /** Optional Shuffle backend base URL. Falls back to the shared API_CONFIG. */
@@ -744,7 +824,7 @@ interface AgentActivityListProps {
744
824
  }
745
825
  declare const AgentActivityList: ({ apiKey, apiBaseUrl, orgId, onRunClick, onEditWorkflow, showSearchBar, showStatusChips, limit, emptyTitle, emptySubtitle, className, sx, toolbarSx, rowSx, }: AgentActivityListProps) => react_jsx_runtime.JSX.Element;
746
826
 
747
- interface AgentExecutionDrawerProps {
827
+ interface AgentExecutionDrawerProps extends ShuffleHostProps {
748
828
  open: boolean;
749
829
  onClose: () => void;
750
830
  /** The run to display. When null and `open=true`, drawer renders empty. */
@@ -774,6 +854,18 @@ interface AgentExecutionDrawerProps {
774
854
  }
775
855
  declare const AgentExecutionDrawer: ({ open, onClose, run, width, apiKey, apiBaseUrl, orgId, className, paperSx, headerSx, bodySx, topBanner, onSchedule, }: AgentExecutionDrawerProps) => react_jsx_runtime.JSX.Element;
776
856
 
857
+ interface AgentsViewProps extends ShuffleHostProps {
858
+ /**
859
+ * Required scheduler implementation. Receives the cron + prompt + apps
860
+ * from AgentUI and is responsible for creating the underlying scheduled
861
+ * workflow on the host backend.
862
+ */
863
+ onSchedule: NonNullable<AgentUIProps['onSchedule']>;
864
+ /** Override max content width of the inner stack. Defaults to 820. */
865
+ maxWidth?: number;
866
+ }
867
+ declare const AgentsView: ({ onSchedule, maxWidth }: AgentsViewProps) => react_jsx_runtime.JSX.Element;
868
+
777
869
  /**
778
870
  * Shared diagnosis utilities for an agent execution result.
779
871
  *
@@ -825,7 +917,7 @@ type OutputDiagnosis = {
825
917
  };
826
918
  declare const diagnoseOutputWarning: (run: DiagnosableRun) => OutputDiagnosis | null;
827
919
 
828
- interface Props {
920
+ interface Props extends ShuffleHostProps {
829
921
  run: DiagnosableRun | null | undefined;
830
922
  /** Outer padding wrapper. Defaults to `{ px: 2.5, pb: 0.5 }`. */
831
923
  sx?: Record<string, unknown>;
@@ -917,7 +1009,7 @@ declare function seedResolvedApp(idOrName: string, app: Partial<ResolvedApp>): v
917
1009
  /** Clear the resolver cache (e.g. on org change). */
918
1010
  declare function invalidateResolvedApps(): void;
919
1011
 
920
- interface IntegrationStatusProps {
1012
+ interface IntegrationStatusProps extends ShuffleHostProps {
921
1013
  collapsed: boolean;
922
1014
  /** When provided, only show integrations whose name is in this list */
923
1015
  filterApps?: string[];
@@ -977,7 +1069,7 @@ interface ApiAuthEntry {
977
1069
  last_valid?: number;
978
1070
  };
979
1071
  }
980
- interface AppAuthConfigProps {
1072
+ interface AppAuthConfigProps extends ShuffleHostProps {
981
1073
  apps: AlgoliaSearchApp[];
982
1074
  authStates: Record<string, AppAuthState>;
983
1075
  authenticatedApps?: ApiAuthEntry[];
@@ -987,7 +1079,7 @@ interface AppAuthConfigProps {
987
1079
  onSelectAuth?: (appId: string, authId: string) => void;
988
1080
  onRefreshAuth?: () => Promise<void> | void;
989
1081
  }
990
- interface AppAuthCardProps {
1082
+ interface AppAuthCardProps extends ShuffleHostProps {
991
1083
  app: AlgoliaSearchApp;
992
1084
  authState: AppAuthState;
993
1085
  isExpanded: boolean;
@@ -1007,8 +1099,14 @@ interface AppAuthCardProps {
1007
1099
  hideStatusChips?: boolean;
1008
1100
  /** Hide the documentation (book icon) link. */
1009
1101
  hideDocsLink?: boolean;
1102
+ /** Hide URL-like fields (name/id containing "url", "endpoint", or "host").
1103
+ * Use when the URL is supplied externally (e.g. via a provider preset). */
1104
+ hideUrlFields?: boolean;
1105
+ /** Render without the outer Card border so the component can be embedded
1106
+ * inside another bordered container without the nested "double border" look. */
1107
+ borderless?: boolean;
1010
1108
  }
1011
- declare const AppAuthCard: ({ app, authState, isExpanded, onToggle, onAuthChange, onTestConnection, onSaveAuth, apiAuthEntries, onSelectAuth, onRefreshAuth, disableUrlPrefill, hideHeader, hideStatusChips, hideDocsLink, }: AppAuthCardProps) => react_jsx_runtime.JSX.Element;
1109
+ declare const AppAuthCard: ({ app, authState, isExpanded, onToggle, onAuthChange, onTestConnection, onSaveAuth, apiAuthEntries, onSelectAuth, onRefreshAuth, disableUrlPrefill, hideHeader, hideStatusChips, hideDocsLink, hideUrlFields, borderless, }: AppAuthCardProps) => react_jsx_runtime.JSX.Element;
1012
1110
  declare const AppAuthConfig: ({ apps, authStates, authenticatedApps, onAuthChange, onTestConnection, onSaveAuth, onSelectAuth, onRefreshAuth, }: AppAuthConfigProps) => react_jsx_runtime.JSX.Element;
1013
1111
 
1014
1112
  declare function useAppAuth(): {
@@ -1291,4 +1389,24 @@ declare const invalidateAppsCache: (opts?: FetchAppsOptions) => void;
1291
1389
  */
1292
1390
  declare const fetchAppsViaApiConfig: () => Promise<any[]>;
1293
1391
 
1294
- export { API_CONFIG, AgentActivityList, type AgentActivityListProps, type AgentActivityParams, type AgentActivityResponse, type AgentDecision, AgentExecutionDrawer, type AgentExecutionDrawerProps, AgentIcon, type AgentRun, AgentRunDiagnosisBanner, AgentRunDrawer, type AgentRunDrawerProps, type AgentRunDrawerTab, type AgentRunResult, AgentUI, type AgentUIApp, type AgentUIProps, type AlgoliaSearchApp, type ApiAuthEntry, AppAuthCard, type AppAuthCardProps, AppAuthConfig, AppAuthSection, type AppAuthSectionProps, type AppAuthState, type AppAuthentication, AppDetailDrawer, AppDetailProvider, type AppLookupResult, AppSearchDrawer, type AppSelectedEvent, AppTitleHeader, type AppTitleHeaderProps, type AuthStatus, CASES_PATTERNS, COMMUNICATION_PATTERNS_NAMES, type CategoryAutomation, type CategoryConfig, type CustomStyles, DATASTORE_CATEGORIES, type DatastoreDiagnostics, type DatastoreItem, type DatastoreResponse, type DiagnosableRun, type DiagnosisEvidence, EDR_PATTERNS, EMAIL_APP_PATTERNS, FORWARD_TICKETS_WORKFLOW_NAME, type FetchAppsOptions, INGEST_TICKETS_WORKFLOW_NAME, type IngestionCategory, IntegrationStatus, type OutputDiagnosis, type ResolvedApp, SIEM_PATTERNS, ShuffleMCP, type ShuffleMCPHandle, type ShuffleMCPProps, ShufflePipelinesBanner, SingulActionsPreview, THREAT_INTEL_PATTERNS, TryMcpSection, type TryMcpSectionProps, VULN_SCANNER_PATTERNS, type ValidatedIngestionApp, ShuffleMCP as default, deleteDatastoreItem, deleteDatastoreItems, diagnoseOutputWarning, extractValidatedIngestionApps, extractWorkflowAppNames, fetchApps, fetchAppsViaApiConfig, findForwardTicketsWorkflow, findIngestTicketsWorkflow, getApiUrl, getAuthHeader, getDatastoreByCategory, getDatastoreItem, getDatastoreItemPublic, getFailureInfo, getIngestionCategory, hasOutputWarning, invalidateAppsCache, invalidateResolvedApps, isCloud, isCloudDomain, isEmailApp, isIngestionApp, isOnprem, isThreatIntelApp, isVulnScannerApp, isWorkflowScheduleStopped, normalizeAppName, parseRunResult, refreshAllIntegrationStatus, resolveApp, resolveApps, searchAgentActivity, seedResolvedApp, setDatastoreItem, setDatastoreItems, setRuntimeOrgId, setToastImpl, toast, useAppAuth, useAppDetail, useAppDetailOptional, useAppLookup };
1392
+ /**
1393
+ * Compact, reusable usage bar showing `usage / limit`. Designed to stack
1394
+ * tightly so multiple bars can sit anywhere (sidebars, footers, panels).
1395
+ *
1396
+ * Visual: neutral by default. Color only kicks in when approaching/over limit.
1397
+ * < 65% → muted foreground
1398
+ * 65-99% → severity-medium
1399
+ * >=100% → destructive
1400
+ */
1401
+ interface UsageBarProps {
1402
+ label: string;
1403
+ usage: number;
1404
+ limit: number;
1405
+ unit?: string;
1406
+ hint?: string;
1407
+ actionLabel?: string;
1408
+ actionHref?: string;
1409
+ }
1410
+ declare const UsageBar: React$1.FC<UsageBarProps>;
1411
+
1412
+ export { API_CONFIG, AgentActivityList, type AgentActivityListProps, type AgentActivityParams, type AgentActivityResponse, type AgentDecision, AgentExecutionDrawer, type AgentExecutionDrawerProps, AgentIcon, type AgentRun, AgentRunDiagnosisBanner, AgentRunDrawer, type AgentRunDrawerProps, type AgentRunDrawerTab, type AgentRunResult, AgentUI, type AgentUIApp, type AgentUIProps, AgentsView, type AgentsViewProps, AiAgentPromptsEditor, type AiAgentPromptsEditorProps, type AlgoliaSearchApp, type ApiAuthEntry, AppAuthCard, type AppAuthCardProps, AppAuthConfig, AppAuthSection, type AppAuthSectionProps, type AppAuthState, type AppAuthentication, AppDetailDrawer, AppDetailProvider, type AppLookupResult, AppSearchDrawer, type AppSelectedEvent, AppTitleHeader, type AppTitleHeaderProps, type AuthStatus, CASES_PATTERNS, COMMUNICATION_PATTERNS_NAMES, type CategoryAutomation, type CategoryConfig, type CustomStyles, DATASTORE_CATEGORIES, type DatastoreDiagnostics, type DatastoreItem, type DatastoreResponse, type DiagnosableRun, type DiagnosisEvidence, EDR_PATTERNS, EMAIL_APP_PATTERNS, FORWARD_TICKETS_WORKFLOW_NAME, type FetchAppsOptions, INGEST_TICKETS_WORKFLOW_NAME, type IngestionCategory, IntegrationStatus, type OutputDiagnosis, type ResolvedApp, SIEM_PATTERNS, type ShuffleHostProps, ShuffleMCP, type ShuffleMCPHandle, type ShuffleMCPProps, type ShuffleMcpColorMode, ShuffleMcpThemeProvider, type ShuffleMcpThemeProviderProps, ShufflePipelinesBanner, SingulActionsPreview, THREAT_INTEL_PATTERNS, TryMcpSection, type TryMcpSectionProps, UsageBar, type UsageBarProps, VULN_SCANNER_PATTERNS, type ValidatedIngestionApp, ShuffleMCP as default, deleteDatastoreItem, deleteDatastoreItems, diagnoseOutputWarning, extractValidatedIngestionApps, extractWorkflowAppNames, fetchApps, fetchAppsViaApiConfig, findForwardTicketsWorkflow, findIngestTicketsWorkflow, getApiUrl, getAuthHeader, getDatastoreByCategory, getDatastoreItem, getDatastoreItemPublic, getFailureInfo, getIngestionCategory, hasOutputWarning, invalidateAppsCache, invalidateResolvedApps, isCloud, isCloudDomain, isEmailApp, isIngestionApp, isOnprem, isThreatIntelApp, isVulnScannerApp, isWorkflowScheduleStopped, normalizeAppName, parseRunResult, refreshAllIntegrationStatus, resolveApp, resolveApps, searchAgentActivity, seedResolvedApp, setDatastoreItem, setDatastoreItems, setRuntimeOrgId, setToastImpl, shuffleFetch, toast, useAppAuth, useAppDetail, useAppDetailOptional, useAppLookup };