@shuffleio/shuffle-mcps 0.0.17 → 0.0.18

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.
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import React$1, { ReactNode } from 'react';
2
- import * as react_jsx_runtime from 'react/jsx-runtime';
3
2
  import { SxProps, Theme } from '@mui/material';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
 
5
5
  /**
6
6
  * ShuffleMcpThemeProvider
@@ -30,10 +30,11 @@ import { SxProps, Theme } from '@mui/material';
30
30
 
31
31
  type ShuffleMcpColorMode = "light" | "dark" | "auto";
32
32
  interface ShuffleMcpThemeProviderProps {
33
- children: React$1.ReactNode;
33
+ children?: React$1.ReactNode;
34
34
  /**
35
35
  * Color mode for the wrapped subtree.
36
- * - `"auto"` (default) — follow the host page's `.dark` class on `<html>`.
36
+ * - `"dark"` (default) — render exactly like Shuffle Security standalone.
37
+ * - `"auto"` — follow the host page's `.dark` class on `<html>`.
37
38
  * - `"light"` / `"dark"` — pin the subtree to that scheme via a wrapping div.
38
39
  */
39
40
  mode?: ShuffleMcpColorMode;
@@ -244,115 +245,6 @@ interface ShuffleMCPHandle {
244
245
  search: (query: string) => void;
245
246
  clear: () => void;
246
247
  }
247
- declare const ShuffleMCP: React$1.ForwardRefExoticComponent<ShuffleMCPProps & React$1.RefAttributes<ShuffleMCPHandle>>;
248
-
249
- /**
250
- * Singul standard actions catalog, keyed by lowercase category fragment.
251
- * Mirrors the canonical action names exposed by https://singul.io —
252
- * each name becomes the `{action}` segment in `POST /api/{action}`.
253
- * Fields shown here are starter parameters; the full schema lives on
254
- * the Singul side and is editable in the curl preview below.
255
- */
256
- interface AppDetailDrawerProps extends ShuffleHostProps {
257
- open: boolean;
258
- onClose: () => void;
259
- /** App name to load */
260
- appName: string | null;
261
- /** Pre-resolved Algolia objectID — bypasses Algolia lookup when provided (e.g. when the
262
- * caller already had the hit, like AppSearchDrawer / "Add Ingestion Source"). */
263
- appId?: string | null;
264
- /** Anchor side */
265
- anchor?: 'left' | 'right';
266
- /** Width in px */
267
- width?: number;
268
- /** Called when drawer closes so parent can refresh data */
269
- onRefresh?: () => void;
270
- /** When set, replaces the Activate button with "+ Add" and calls this on click */
271
- onAddToCanvas?: (appInfo: {
272
- name: string;
273
- icon: string;
274
- algoliaId: string | null;
275
- }) => void;
276
- /** Whether the current user is authenticated. Defaults to true. */
277
- isAuthenticated?: boolean;
278
- /** Host app's currently active org id. If different from the library's tracked org,
279
- * an `Org-Id` header is injected into the Singul curl preview. */
280
- activeOrgId?: string | null;
281
- }
282
- declare function AppDetailDrawer({ open, onClose, appName, appId, anchor, width, onRefresh, onAddToCanvas, isAuthenticated, activeOrgId, }: AppDetailDrawerProps): react_jsx_runtime.JSX.Element;
283
-
284
- interface ConnectionPathApp {
285
- name: string;
286
- icon: string;
287
- hasValidAuth?: boolean;
288
- isActiveOnly?: boolean;
289
- }
290
- interface AppSearchDrawerProps extends ShuffleHostProps {
291
- open: boolean;
292
- onClose: () => void;
293
- initialQuery?: string;
294
- title?: string;
295
- subtitle?: string;
296
- anchor?: 'left' | 'right';
297
- width?: number;
298
- /** Show the Shuffle Pipelines banner above search results */
299
- showPipelinesBanner?: boolean;
300
- /** If provided, selecting an app calls this instead of opening AppDetailDrawer */
301
- onQuickSelect?: (app: {
302
- name: string;
303
- icon: string;
304
- categories: string[];
305
- id: string | null;
306
- }) => void;
307
- /** If provided, called before default behavior. Return true to prevent opening detail drawer. */
308
- onSelectOverride?: (app: {
309
- name: string;
310
- icon: string;
311
- categories: string[];
312
- }) => boolean;
313
- /** Called when the detail drawer closes, with the app name that was being configured */
314
- onDetailClose?: (appName: string) => void;
315
- /** When set, replaces Activate with "+ Add" in the detail drawer */
316
- onAddToCanvas?: (appInfo: {
317
- name: string;
318
- icon: string;
319
- algoliaId: string | null;
320
- }) => void;
321
- /** When set, apps matching this category are sorted to the top in user's apps */
322
- priorityCategory?: string;
323
- /** Apps currently in the connection path diagram — shown first in the drawer */
324
- connectionPathApps?: ConnectionPathApp[];
325
- /** Apps to pin at the top of the ShuffleMCP search results (deduped by name). */
326
- pinnedApps?: Array<{
327
- name: string;
328
- image_url: string;
329
- categories?: string[];
330
- objectID?: string;
331
- }>;
332
- /** Highlight (pulsing ring) the matching app card after `highlightDelayMs` */
333
- highlightAppName?: string;
334
- /** Delay before the highlight kicks in (default 5000ms) */
335
- highlightDelayMs?: number;
336
- /** Enable multi-select: clicking apps toggles them in/out of the selection,
337
- * drawer stays open, and the picker shows checkboxes + a primary-bordered
338
- * highlight on already-chosen rows. */
339
- multiSelect?: boolean;
340
- /** Currently chosen apps (used to highlight rows in multi-select mode).
341
- * Match is by objectID first, then by normalized name. */
342
- selectedApps?: Array<{
343
- name: string;
344
- id?: string | null;
345
- icon?: string;
346
- }>;
347
- /** Fires whenever the selection changes in multi-select mode. */
348
- onSelectionChange?: (apps: Array<{
349
- name: string;
350
- id: string | null;
351
- icon: string;
352
- categories: string[];
353
- }>) => void;
354
- }
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;
356
248
 
357
249
  interface AiAgentPromptsEditorProps {
358
250
  /** Ordered list of prompts. */
@@ -381,9 +273,6 @@ interface AiAgentPromptsEditorProps {
381
273
  placeholder: string;
382
274
  }) => React$1.ReactNode;
383
275
  }
384
- declare const AiAgentPromptsEditor: React$1.FC<AiAgentPromptsEditorProps>;
385
-
386
- declare function ShufflePipelinesBanner(): react_jsx_runtime.JSX.Element;
387
276
 
388
277
  interface AppTitleHeaderProps extends ShuffleHostProps {
389
278
  /** Display name of the app (will be capitalized via CSS). */
@@ -407,7 +296,6 @@ interface AppTitleHeaderProps extends ShuffleHostProps {
407
296
  /** When provided, replaces the Activate button with "+ Add". */
408
297
  onAdd?: () => void;
409
298
  }
410
- declare function AppTitleHeader({ name, image, hasValidAuth, hasAnyAuth, isAuthenticated, categories, isActivated, activateLoading, onActivateToggle, onAdd, }: AppTitleHeaderProps): react_jsx_runtime.JSX.Element;
411
299
 
412
300
  interface AppAuthSectionProps extends ShuffleHostProps {
413
301
  /** Display name (used in copy when no auth exists). */
@@ -432,7 +320,6 @@ interface AppAuthSectionProps extends ShuffleHostProps {
432
320
  onSaveAuth: (appId: string, credentials: Record<string, string>) => Promise<boolean>;
433
321
  onRefreshAuth: () => void;
434
322
  }
435
- declare function AppAuthSection({ displayName, algoliaApp, resolvedAlgoliaId, authState, expanded, onToggle, authCount, isAuthenticated, matchingEntries, onAuthChange, onTestConnection, onSaveAuth, onRefreshAuth, }: AppAuthSectionProps): react_jsx_runtime.JSX.Element;
436
323
 
437
324
  interface TryMcpSectionProps extends ShuffleHostProps {
438
325
  appName: string;
@@ -443,20 +330,6 @@ interface TryMcpSectionProps extends ShuffleHostProps {
443
330
  /** App categories — used to pick suggested actions. */
444
331
  categories?: string[];
445
332
  }
446
- declare function TryMcpSection({ appName, appIcon, appId, categories }: TryMcpSectionProps): react_jsx_runtime.JSX.Element;
447
-
448
- interface SingulActionsPreviewProps extends ShuffleHostProps {
449
- appName: string;
450
- appIcon?: string;
451
- appId?: string | null;
452
- categories?: string[];
453
- activeOrgId?: string | null;
454
- /** Optional click handler invoked when the user presses the
455
- * "Authenticate {App}" button surfaced after an
456
- * `action: "app_authentication"` response. */
457
- onAuthenticate?: (appName: string) => void;
458
- }
459
- declare const SingulActionsPreview: ({ appName, appIcon, categories, activeOrgId, onAuthenticate, }: SingulActionsPreviewProps) => react_jsx_runtime.JSX.Element;
460
333
 
461
334
  /**
462
335
  * AgentUI — Standalone "start + debug agents" surface.
@@ -529,6 +402,17 @@ interface AgentUIProps {
529
402
  appPickerTitle?: string;
530
403
  /** Subtitle on the AppSearchDrawer. */
531
404
  appPickerSubtitle?: string;
405
+ /**
406
+ * Handler for the "Choose LLM" chip. When provided, takes full ownership
407
+ * of the click. When omitted, AgentUI dispatches a window
408
+ * `agent-drawer-open` CustomEvent — that's what the bundled
409
+ * `AgentRunDrawer` listens for. On hosts that don't mount the drawer,
410
+ * provide this prop to wire your own LLM picker (or set it to a no-op
411
+ * to hide the chip's intent entirely).
412
+ */
413
+ onChooseLLM?: () => void;
414
+ /** Hide the "Choose LLM" chip entirely. */
415
+ hideChooseLLM?: boolean;
532
416
  /** Tooltip on the submit button. Default: "⌘+Enter to send". */
533
417
  submitTooltip?: string;
534
418
  /** Custom icon for the submit button. */
@@ -633,7 +517,6 @@ interface AgentUIProps {
633
517
  /** Style overrides for the inner content card (the column under the run-switcher). */
634
518
  contentSx?: SxProps<Theme>;
635
519
  }
636
- declare const AgentUI: React$1.FC<AgentUIProps>;
637
520
 
638
521
  type AgentRunDrawerTab = 'run' | 'permissions' | 'localLLM';
639
522
  interface AgentRunDrawerProps extends ShuffleHostProps {
@@ -672,7 +555,6 @@ interface AgentRunDrawerProps extends ShuffleHostProps {
672
555
  /** Style overrides for the body container that wraps the active tab content. */
673
556
  bodySx?: SxProps<Theme>;
674
557
  }
675
- declare const AgentRunDrawer: ({ open, onClose, initialTab, permissionsSlot, localLLMSlot, localLLMTabBadge, permissionsDisabled, permissionsDisabledTooltip, agentUIProps, width, title, subtitle, className, paperSx, headerSx, tabsSx, bodySx, globalUrl, }: AgentRunDrawerProps) => react_jsx_runtime.JSX.Element;
676
558
 
677
559
  /** Check if running on a known Shuffle Cloud domain */
678
560
  declare const isCloudDomain: () => boolean;
@@ -842,7 +724,6 @@ interface AgentActivityListProps extends ShuffleHostProps {
842
724
  /** Style overrides for each individual run row. */
843
725
  rowSx?: SxProps<Theme>;
844
726
  }
845
- declare const AgentActivityList: ({ apiKey, apiBaseUrl, orgId, onRunClick, onEditWorkflow, showSearchBar, showStatusChips, limit, emptyTitle, emptySubtitle, className, sx, toolbarSx, rowSx, }: AgentActivityListProps) => react_jsx_runtime.JSX.Element;
846
727
 
847
728
  interface AgentExecutionDrawerProps extends ShuffleHostProps {
848
729
  open: boolean;
@@ -872,7 +753,6 @@ interface AgentExecutionDrawerProps extends ShuffleHostProps {
872
753
  /** Handler for scheduling the loaded agent prompt from the execution view. */
873
754
  onSchedule?: AgentUIProps['onSchedule'];
874
755
  }
875
- declare const AgentExecutionDrawer: ({ open, onClose, run, width, apiKey, apiBaseUrl, orgId, className, paperSx, headerSx, bodySx, topBanner, onSchedule, }: AgentExecutionDrawerProps) => react_jsx_runtime.JSX.Element;
876
756
 
877
757
  interface AgentsViewProps extends ShuffleHostProps {
878
758
  /**
@@ -883,8 +763,17 @@ interface AgentsViewProps extends ShuffleHostProps {
883
763
  onSchedule: NonNullable<AgentUIProps['onSchedule']>;
884
764
  /** Override max content width of the inner stack. Defaults to 820. */
885
765
  maxWidth?: number;
766
+ /**
767
+ * Optional handler for the "Choose LLM" chip. Forwarded to the embedded
768
+ * AgentUI. When omitted, AgentUI dispatches its legacy window event
769
+ * (handled by the bundled AgentRunDrawer in Shuffle Security). On other
770
+ * hosts, pass this prop to wire your own LLM picker — or set
771
+ * `hideChooseLLM` to remove the chip entirely.
772
+ */
773
+ onChooseLLM?: () => void;
774
+ /** Hide the "Choose LLM" chip in the embedded AgentUI. */
775
+ hideChooseLLM?: boolean;
886
776
  }
887
- declare const AgentsView: ({ onSchedule, maxWidth, globalUrl, isLoaded, isLoggedIn, userdata, serverside }: AgentsViewProps) => react_jsx_runtime.JSX.Element;
888
777
 
889
778
  /**
890
779
  * Shared diagnosis utilities for an agent execution result.
@@ -937,21 +826,6 @@ type OutputDiagnosis = {
937
826
  };
938
827
  declare const diagnoseOutputWarning: (run: DiagnosableRun) => OutputDiagnosis | null;
939
828
 
940
- interface Props extends ShuffleHostProps {
941
- run: DiagnosableRun | null | undefined;
942
- /** Outer padding wrapper. Defaults to `{ px: 2.5, pb: 0.5 }`. */
943
- sx?: Record<string, unknown>;
944
- /** When provided, the banner becomes clickable and asks the host to jump
945
- * to the underlying decision (e.g. switch to the detailed timeline,
946
- * expand that row, scroll to it). */
947
- onJumpToEvidence?: (decisionIndex: number) => void;
948
- /** Stable id used to persist dismissals per-execution. Falls back to
949
- * `run.execution_id` if present. When neither is available, dismiss
950
- * still works for the current mount but is not persisted. */
951
- executionId?: string;
952
- }
953
- declare const AgentRunDiagnosisBanner: ({ run, sx, onJumpToEvidence, executionId }: Props) => react_jsx_runtime.JSX.Element;
954
-
955
829
  /**
956
830
  * useAppLookup — Resolve an app's display name, image, categories,
957
831
  * canonical Algolia objectID and matching auth entries from just
@@ -1450,4 +1324,35 @@ interface UsageBarProps {
1450
1324
  }
1451
1325
  declare const UsageBar: React$1.FC<UsageBarProps>;
1452
1326
 
1327
+ /**
1328
+ * Local Singul Library — fully self-contained.
1329
+ * No host-app `@/` imports remain inside this folder (assets aside).
1330
+ */
1331
+
1332
+ declare const ShuffleMCP: React$1.ForwardRefExoticComponent<any>;
1333
+
1334
+ declare const AppDetailDrawer: React$1.ComponentType<any>;
1335
+ declare const AppSearchDrawer: React$1.ComponentType<any>;
1336
+ declare const AiAgentPromptsEditor: React$1.ComponentType<any>;
1337
+
1338
+ declare const ShufflePipelinesBanner: React$1.ComponentType<any>;
1339
+ declare const AppTitleHeader: React$1.ComponentType<any>;
1340
+
1341
+ declare const AppAuthSection: React$1.ComponentType<any>;
1342
+
1343
+ declare const TryMcpSection: React$1.ComponentType<any>;
1344
+
1345
+ declare const SingulActionsPreview: React$1.ComponentType<any>;
1346
+ declare const AgentUI: React$1.ComponentType<any>;
1347
+
1348
+ declare const AgentRunDrawer: React$1.ComponentType<any>;
1349
+
1350
+ declare const AgentActivityList: React$1.ComponentType<any>;
1351
+
1352
+ declare const AgentExecutionDrawer: React$1.ComponentType<any>;
1353
+
1354
+ declare const AgentsView: React$1.ComponentType<any>;
1355
+
1356
+ declare const AgentRunDiagnosisBanner: React$1.ComponentType<any>;
1357
+
1453
1358
  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, getHostBaseUrl, getIngestionCategory, hasOutputWarning, installFetchBreaker, invalidateAppsCache, invalidateResolvedApps, isCloud, isCloudDomain, isEmailApp, isIngestionApp, isOnprem, isThreatIntelApp, isVulnScannerApp, isWorkflowScheduleStopped, normalizeAppName, parseRunResult, refreshAllIntegrationStatus, registerProtectedOrigin, resetRegionUrl, resolveApp, resolveApps, searchAgentActivity, seedResolvedApp, setDatastoreItem, setDatastoreItems, setHostBaseUrl, setRegionUrl, setRuntimeOrgId, setToastImpl, shuffleFetch, toast, useAppAuth, useAppDetail, useAppDetailOptional, useAppLookup, useSyncHostBaseUrl };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import React$1, { ReactNode } from 'react';
2
- import * as react_jsx_runtime from 'react/jsx-runtime';
3
2
  import { SxProps, Theme } from '@mui/material';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
 
5
5
  /**
6
6
  * ShuffleMcpThemeProvider
@@ -30,10 +30,11 @@ import { SxProps, Theme } from '@mui/material';
30
30
 
31
31
  type ShuffleMcpColorMode = "light" | "dark" | "auto";
32
32
  interface ShuffleMcpThemeProviderProps {
33
- children: React$1.ReactNode;
33
+ children?: React$1.ReactNode;
34
34
  /**
35
35
  * Color mode for the wrapped subtree.
36
- * - `"auto"` (default) — follow the host page's `.dark` class on `<html>`.
36
+ * - `"dark"` (default) — render exactly like Shuffle Security standalone.
37
+ * - `"auto"` — follow the host page's `.dark` class on `<html>`.
37
38
  * - `"light"` / `"dark"` — pin the subtree to that scheme via a wrapping div.
38
39
  */
39
40
  mode?: ShuffleMcpColorMode;
@@ -244,115 +245,6 @@ interface ShuffleMCPHandle {
244
245
  search: (query: string) => void;
245
246
  clear: () => void;
246
247
  }
247
- declare const ShuffleMCP: React$1.ForwardRefExoticComponent<ShuffleMCPProps & React$1.RefAttributes<ShuffleMCPHandle>>;
248
-
249
- /**
250
- * Singul standard actions catalog, keyed by lowercase category fragment.
251
- * Mirrors the canonical action names exposed by https://singul.io —
252
- * each name becomes the `{action}` segment in `POST /api/{action}`.
253
- * Fields shown here are starter parameters; the full schema lives on
254
- * the Singul side and is editable in the curl preview below.
255
- */
256
- interface AppDetailDrawerProps extends ShuffleHostProps {
257
- open: boolean;
258
- onClose: () => void;
259
- /** App name to load */
260
- appName: string | null;
261
- /** Pre-resolved Algolia objectID — bypasses Algolia lookup when provided (e.g. when the
262
- * caller already had the hit, like AppSearchDrawer / "Add Ingestion Source"). */
263
- appId?: string | null;
264
- /** Anchor side */
265
- anchor?: 'left' | 'right';
266
- /** Width in px */
267
- width?: number;
268
- /** Called when drawer closes so parent can refresh data */
269
- onRefresh?: () => void;
270
- /** When set, replaces the Activate button with "+ Add" and calls this on click */
271
- onAddToCanvas?: (appInfo: {
272
- name: string;
273
- icon: string;
274
- algoliaId: string | null;
275
- }) => void;
276
- /** Whether the current user is authenticated. Defaults to true. */
277
- isAuthenticated?: boolean;
278
- /** Host app's currently active org id. If different from the library's tracked org,
279
- * an `Org-Id` header is injected into the Singul curl preview. */
280
- activeOrgId?: string | null;
281
- }
282
- declare function AppDetailDrawer({ open, onClose, appName, appId, anchor, width, onRefresh, onAddToCanvas, isAuthenticated, activeOrgId, }: AppDetailDrawerProps): react_jsx_runtime.JSX.Element;
283
-
284
- interface ConnectionPathApp {
285
- name: string;
286
- icon: string;
287
- hasValidAuth?: boolean;
288
- isActiveOnly?: boolean;
289
- }
290
- interface AppSearchDrawerProps extends ShuffleHostProps {
291
- open: boolean;
292
- onClose: () => void;
293
- initialQuery?: string;
294
- title?: string;
295
- subtitle?: string;
296
- anchor?: 'left' | 'right';
297
- width?: number;
298
- /** Show the Shuffle Pipelines banner above search results */
299
- showPipelinesBanner?: boolean;
300
- /** If provided, selecting an app calls this instead of opening AppDetailDrawer */
301
- onQuickSelect?: (app: {
302
- name: string;
303
- icon: string;
304
- categories: string[];
305
- id: string | null;
306
- }) => void;
307
- /** If provided, called before default behavior. Return true to prevent opening detail drawer. */
308
- onSelectOverride?: (app: {
309
- name: string;
310
- icon: string;
311
- categories: string[];
312
- }) => boolean;
313
- /** Called when the detail drawer closes, with the app name that was being configured */
314
- onDetailClose?: (appName: string) => void;
315
- /** When set, replaces Activate with "+ Add" in the detail drawer */
316
- onAddToCanvas?: (appInfo: {
317
- name: string;
318
- icon: string;
319
- algoliaId: string | null;
320
- }) => void;
321
- /** When set, apps matching this category are sorted to the top in user's apps */
322
- priorityCategory?: string;
323
- /** Apps currently in the connection path diagram — shown first in the drawer */
324
- connectionPathApps?: ConnectionPathApp[];
325
- /** Apps to pin at the top of the ShuffleMCP search results (deduped by name). */
326
- pinnedApps?: Array<{
327
- name: string;
328
- image_url: string;
329
- categories?: string[];
330
- objectID?: string;
331
- }>;
332
- /** Highlight (pulsing ring) the matching app card after `highlightDelayMs` */
333
- highlightAppName?: string;
334
- /** Delay before the highlight kicks in (default 5000ms) */
335
- highlightDelayMs?: number;
336
- /** Enable multi-select: clicking apps toggles them in/out of the selection,
337
- * drawer stays open, and the picker shows checkboxes + a primary-bordered
338
- * highlight on already-chosen rows. */
339
- multiSelect?: boolean;
340
- /** Currently chosen apps (used to highlight rows in multi-select mode).
341
- * Match is by objectID first, then by normalized name. */
342
- selectedApps?: Array<{
343
- name: string;
344
- id?: string | null;
345
- icon?: string;
346
- }>;
347
- /** Fires whenever the selection changes in multi-select mode. */
348
- onSelectionChange?: (apps: Array<{
349
- name: string;
350
- id: string | null;
351
- icon: string;
352
- categories: string[];
353
- }>) => void;
354
- }
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;
356
248
 
357
249
  interface AiAgentPromptsEditorProps {
358
250
  /** Ordered list of prompts. */
@@ -381,9 +273,6 @@ interface AiAgentPromptsEditorProps {
381
273
  placeholder: string;
382
274
  }) => React$1.ReactNode;
383
275
  }
384
- declare const AiAgentPromptsEditor: React$1.FC<AiAgentPromptsEditorProps>;
385
-
386
- declare function ShufflePipelinesBanner(): react_jsx_runtime.JSX.Element;
387
276
 
388
277
  interface AppTitleHeaderProps extends ShuffleHostProps {
389
278
  /** Display name of the app (will be capitalized via CSS). */
@@ -407,7 +296,6 @@ interface AppTitleHeaderProps extends ShuffleHostProps {
407
296
  /** When provided, replaces the Activate button with "+ Add". */
408
297
  onAdd?: () => void;
409
298
  }
410
- declare function AppTitleHeader({ name, image, hasValidAuth, hasAnyAuth, isAuthenticated, categories, isActivated, activateLoading, onActivateToggle, onAdd, }: AppTitleHeaderProps): react_jsx_runtime.JSX.Element;
411
299
 
412
300
  interface AppAuthSectionProps extends ShuffleHostProps {
413
301
  /** Display name (used in copy when no auth exists). */
@@ -432,7 +320,6 @@ interface AppAuthSectionProps extends ShuffleHostProps {
432
320
  onSaveAuth: (appId: string, credentials: Record<string, string>) => Promise<boolean>;
433
321
  onRefreshAuth: () => void;
434
322
  }
435
- declare function AppAuthSection({ displayName, algoliaApp, resolvedAlgoliaId, authState, expanded, onToggle, authCount, isAuthenticated, matchingEntries, onAuthChange, onTestConnection, onSaveAuth, onRefreshAuth, }: AppAuthSectionProps): react_jsx_runtime.JSX.Element;
436
323
 
437
324
  interface TryMcpSectionProps extends ShuffleHostProps {
438
325
  appName: string;
@@ -443,20 +330,6 @@ interface TryMcpSectionProps extends ShuffleHostProps {
443
330
  /** App categories — used to pick suggested actions. */
444
331
  categories?: string[];
445
332
  }
446
- declare function TryMcpSection({ appName, appIcon, appId, categories }: TryMcpSectionProps): react_jsx_runtime.JSX.Element;
447
-
448
- interface SingulActionsPreviewProps extends ShuffleHostProps {
449
- appName: string;
450
- appIcon?: string;
451
- appId?: string | null;
452
- categories?: string[];
453
- activeOrgId?: string | null;
454
- /** Optional click handler invoked when the user presses the
455
- * "Authenticate {App}" button surfaced after an
456
- * `action: "app_authentication"` response. */
457
- onAuthenticate?: (appName: string) => void;
458
- }
459
- declare const SingulActionsPreview: ({ appName, appIcon, categories, activeOrgId, onAuthenticate, }: SingulActionsPreviewProps) => react_jsx_runtime.JSX.Element;
460
333
 
461
334
  /**
462
335
  * AgentUI — Standalone "start + debug agents" surface.
@@ -529,6 +402,17 @@ interface AgentUIProps {
529
402
  appPickerTitle?: string;
530
403
  /** Subtitle on the AppSearchDrawer. */
531
404
  appPickerSubtitle?: string;
405
+ /**
406
+ * Handler for the "Choose LLM" chip. When provided, takes full ownership
407
+ * of the click. When omitted, AgentUI dispatches a window
408
+ * `agent-drawer-open` CustomEvent — that's what the bundled
409
+ * `AgentRunDrawer` listens for. On hosts that don't mount the drawer,
410
+ * provide this prop to wire your own LLM picker (or set it to a no-op
411
+ * to hide the chip's intent entirely).
412
+ */
413
+ onChooseLLM?: () => void;
414
+ /** Hide the "Choose LLM" chip entirely. */
415
+ hideChooseLLM?: boolean;
532
416
  /** Tooltip on the submit button. Default: "⌘+Enter to send". */
533
417
  submitTooltip?: string;
534
418
  /** Custom icon for the submit button. */
@@ -633,7 +517,6 @@ interface AgentUIProps {
633
517
  /** Style overrides for the inner content card (the column under the run-switcher). */
634
518
  contentSx?: SxProps<Theme>;
635
519
  }
636
- declare const AgentUI: React$1.FC<AgentUIProps>;
637
520
 
638
521
  type AgentRunDrawerTab = 'run' | 'permissions' | 'localLLM';
639
522
  interface AgentRunDrawerProps extends ShuffleHostProps {
@@ -672,7 +555,6 @@ interface AgentRunDrawerProps extends ShuffleHostProps {
672
555
  /** Style overrides for the body container that wraps the active tab content. */
673
556
  bodySx?: SxProps<Theme>;
674
557
  }
675
- declare const AgentRunDrawer: ({ open, onClose, initialTab, permissionsSlot, localLLMSlot, localLLMTabBadge, permissionsDisabled, permissionsDisabledTooltip, agentUIProps, width, title, subtitle, className, paperSx, headerSx, tabsSx, bodySx, globalUrl, }: AgentRunDrawerProps) => react_jsx_runtime.JSX.Element;
676
558
 
677
559
  /** Check if running on a known Shuffle Cloud domain */
678
560
  declare const isCloudDomain: () => boolean;
@@ -842,7 +724,6 @@ interface AgentActivityListProps extends ShuffleHostProps {
842
724
  /** Style overrides for each individual run row. */
843
725
  rowSx?: SxProps<Theme>;
844
726
  }
845
- declare const AgentActivityList: ({ apiKey, apiBaseUrl, orgId, onRunClick, onEditWorkflow, showSearchBar, showStatusChips, limit, emptyTitle, emptySubtitle, className, sx, toolbarSx, rowSx, }: AgentActivityListProps) => react_jsx_runtime.JSX.Element;
846
727
 
847
728
  interface AgentExecutionDrawerProps extends ShuffleHostProps {
848
729
  open: boolean;
@@ -872,7 +753,6 @@ interface AgentExecutionDrawerProps extends ShuffleHostProps {
872
753
  /** Handler for scheduling the loaded agent prompt from the execution view. */
873
754
  onSchedule?: AgentUIProps['onSchedule'];
874
755
  }
875
- declare const AgentExecutionDrawer: ({ open, onClose, run, width, apiKey, apiBaseUrl, orgId, className, paperSx, headerSx, bodySx, topBanner, onSchedule, }: AgentExecutionDrawerProps) => react_jsx_runtime.JSX.Element;
876
756
 
877
757
  interface AgentsViewProps extends ShuffleHostProps {
878
758
  /**
@@ -883,8 +763,17 @@ interface AgentsViewProps extends ShuffleHostProps {
883
763
  onSchedule: NonNullable<AgentUIProps['onSchedule']>;
884
764
  /** Override max content width of the inner stack. Defaults to 820. */
885
765
  maxWidth?: number;
766
+ /**
767
+ * Optional handler for the "Choose LLM" chip. Forwarded to the embedded
768
+ * AgentUI. When omitted, AgentUI dispatches its legacy window event
769
+ * (handled by the bundled AgentRunDrawer in Shuffle Security). On other
770
+ * hosts, pass this prop to wire your own LLM picker — or set
771
+ * `hideChooseLLM` to remove the chip entirely.
772
+ */
773
+ onChooseLLM?: () => void;
774
+ /** Hide the "Choose LLM" chip in the embedded AgentUI. */
775
+ hideChooseLLM?: boolean;
886
776
  }
887
- declare const AgentsView: ({ onSchedule, maxWidth, globalUrl, isLoaded, isLoggedIn, userdata, serverside }: AgentsViewProps) => react_jsx_runtime.JSX.Element;
888
777
 
889
778
  /**
890
779
  * Shared diagnosis utilities for an agent execution result.
@@ -937,21 +826,6 @@ type OutputDiagnosis = {
937
826
  };
938
827
  declare const diagnoseOutputWarning: (run: DiagnosableRun) => OutputDiagnosis | null;
939
828
 
940
- interface Props extends ShuffleHostProps {
941
- run: DiagnosableRun | null | undefined;
942
- /** Outer padding wrapper. Defaults to `{ px: 2.5, pb: 0.5 }`. */
943
- sx?: Record<string, unknown>;
944
- /** When provided, the banner becomes clickable and asks the host to jump
945
- * to the underlying decision (e.g. switch to the detailed timeline,
946
- * expand that row, scroll to it). */
947
- onJumpToEvidence?: (decisionIndex: number) => void;
948
- /** Stable id used to persist dismissals per-execution. Falls back to
949
- * `run.execution_id` if present. When neither is available, dismiss
950
- * still works for the current mount but is not persisted. */
951
- executionId?: string;
952
- }
953
- declare const AgentRunDiagnosisBanner: ({ run, sx, onJumpToEvidence, executionId }: Props) => react_jsx_runtime.JSX.Element;
954
-
955
829
  /**
956
830
  * useAppLookup — Resolve an app's display name, image, categories,
957
831
  * canonical Algolia objectID and matching auth entries from just
@@ -1450,4 +1324,35 @@ interface UsageBarProps {
1450
1324
  }
1451
1325
  declare const UsageBar: React$1.FC<UsageBarProps>;
1452
1326
 
1327
+ /**
1328
+ * Local Singul Library — fully self-contained.
1329
+ * No host-app `@/` imports remain inside this folder (assets aside).
1330
+ */
1331
+
1332
+ declare const ShuffleMCP: React$1.ForwardRefExoticComponent<any>;
1333
+
1334
+ declare const AppDetailDrawer: React$1.ComponentType<any>;
1335
+ declare const AppSearchDrawer: React$1.ComponentType<any>;
1336
+ declare const AiAgentPromptsEditor: React$1.ComponentType<any>;
1337
+
1338
+ declare const ShufflePipelinesBanner: React$1.ComponentType<any>;
1339
+ declare const AppTitleHeader: React$1.ComponentType<any>;
1340
+
1341
+ declare const AppAuthSection: React$1.ComponentType<any>;
1342
+
1343
+ declare const TryMcpSection: React$1.ComponentType<any>;
1344
+
1345
+ declare const SingulActionsPreview: React$1.ComponentType<any>;
1346
+ declare const AgentUI: React$1.ComponentType<any>;
1347
+
1348
+ declare const AgentRunDrawer: React$1.ComponentType<any>;
1349
+
1350
+ declare const AgentActivityList: React$1.ComponentType<any>;
1351
+
1352
+ declare const AgentExecutionDrawer: React$1.ComponentType<any>;
1353
+
1354
+ declare const AgentsView: React$1.ComponentType<any>;
1355
+
1356
+ declare const AgentRunDiagnosisBanner: React$1.ComponentType<any>;
1357
+
1453
1358
  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, getHostBaseUrl, getIngestionCategory, hasOutputWarning, installFetchBreaker, invalidateAppsCache, invalidateResolvedApps, isCloud, isCloudDomain, isEmailApp, isIngestionApp, isOnprem, isThreatIntelApp, isVulnScannerApp, isWorkflowScheduleStopped, normalizeAppName, parseRunResult, refreshAllIntegrationStatus, registerProtectedOrigin, resetRegionUrl, resolveApp, resolveApps, searchAgentActivity, seedResolvedApp, setDatastoreItem, setDatastoreItems, setHostBaseUrl, setRegionUrl, setRuntimeOrgId, setToastImpl, shuffleFetch, toast, useAppAuth, useAppDetail, useAppDetailOptional, useAppLookup, useSyncHostBaseUrl };