@shuffleio/shuffle-mcps 0.0.64 → 0.0.66

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
@@ -2,6 +2,67 @@ import * as React$1 from 'react';
2
2
  import React__default, { ReactNode } from 'react';
3
3
  import { SxProps, Theme, PopperProps } from '@mui/material';
4
4
 
5
+ /**
6
+ * RFC 4122 v4 UUID generator and global polyfill for crypto.randomUUID.
7
+ *
8
+ * In modern browsers, `crypto.randomUUID()` is restricted to Secure Contexts
9
+ * (HTTPS or localhost). When Shuffle Security is accessed over plain HTTP via
10
+ * an IP address or internal hostname (e.g. http://8.234.112.65:3002),
11
+ * `crypto.randomUUID` is undefined, throwing:
12
+ * TypeError: crypto.randomUUID is not a function
13
+ *
14
+ * This module ensures:
15
+ * 1. A resilient `safeRandomUUID()` function that works in all contexts:
16
+ * - Uses native `crypto.randomUUID()` if available
17
+ * - Falls back to `crypto.getRandomValues()` (which IS allowed in insecure contexts)
18
+ * - Falls back to `Math.random()` in extreme environments
19
+ * 2. A global shim installed on `crypto` and `Crypto.prototype` so any third-party
20
+ * or inline calls to `crypto.randomUUID()` succeed transparently.
21
+ */
22
+ /**
23
+ * Generates an RFC 4122 v4 compliant UUID string.
24
+ * Safe to call in both secure and insecure contexts (plain HTTP, older browsers, SSR).
25
+ */
26
+ declare function safeRandomUUID(): string;
27
+ declare const uuid: typeof safeRandomUUID;
28
+ /**
29
+ * Installs `randomUUID` on `crypto` and `Crypto.prototype` if not already present.
30
+ */
31
+ declare function installCryptoRandomUuidPolyfill(): void;
32
+
33
+ /**
34
+ * Global Browser Compatibility Shims & Defensive Resilience Layer.
35
+ *
36
+ * Prevents runtime crashes caused by restricted, undefined, or throwing
37
+ * browser APIs in insecure contexts (plain HTTP/IP, e.g. http://8.234.112.65:3002),
38
+ * older browsers, embedded WebViews, sandboxed iframes, and SSR environments.
39
+ *
40
+ * Polyfills and defensive wrappers included:
41
+ * 1. crypto.randomUUID (via crypto-polyfill)
42
+ * 2. navigator.clipboard.writeText / readText (with fallback to textarea + execCommand)
43
+ * 3. globalThis.ResizeObserver (safe no-op fallback)
44
+ * 4. globalThis.IntersectionObserver (safe no-op fallback)
45
+ * 5. window.matchMedia (safe media query list fallback)
46
+ * 6. globalThis.structuredClone (safe JSON/object clone fallback)
47
+ * 7. performance.now (Date.now fallback)
48
+ * 8. Element.prototype.scrollIntoView (safe option normalization)
49
+ */
50
+ /**
51
+ * Headless fallback copy using an offscreen textarea and document.execCommand('copy').
52
+ * Operates reliably in insecure contexts (HTTP/IP) where navigator.clipboard is absent.
53
+ */
54
+ declare function fallbackCopyText(text: string): boolean;
55
+ /**
56
+ * Installs navigator.clipboard polyfill and wraps existing writeText with fallback.
57
+ */
58
+ declare function installClipboardPolyfill(): void;
59
+
60
+ /**
61
+ * Self-contained clipboard export for the Singul / Shuffle-MCPs bundle.
62
+ */
63
+
64
+ declare function copyToClipboard(text: string): Promise<boolean>;
65
+
5
66
  /**
6
67
  * ShuffleMcpThemeProvider
7
68
  *
@@ -68,6 +129,72 @@ interface ShuffleHostProps {
68
129
  colorMode?: 'light' | 'dark' | 'auto';
69
130
  }
70
131
 
132
+ interface AiAgentPromptsEditorProps {
133
+ /** Ordered list of prompts. */
134
+ prompts: string[];
135
+ /** Per-prompt allow-list of app IDs/names (parallel array to `prompts`). */
136
+ apps: string[][];
137
+ /** Read-only mode: render prompts as plain text, no edit/add/remove. */
138
+ readOnly?: boolean;
139
+ /** Optional skill label (e.g. "Incident Handler") to show shared permission context. */
140
+ skillLabel?: string;
141
+ /** Optional check if an app key is a built-in default app for the active skill. */
142
+ isBuiltInApp?: (appKey: string) => boolean;
143
+ /** Edit handlers — required when `readOnly` is false. */
144
+ onChangePrompt?: (index: number, value: string) => void;
145
+ onRemovePrompt?: (index: number) => void;
146
+ onAddPrompt?: () => void;
147
+ onRemoveApp?: (promptIndex: number, appKey: string) => void;
148
+ onAddAppRequested?: (promptIndex: number) => void;
149
+ /** Resolves an app key to its display metadata. */
150
+ resolveAppMeta: (key: string) => {
151
+ name: string;
152
+ image: string;
153
+ };
154
+ /** Optional slot to render a richer prompt editor (e.g. PopupTextEditor).
155
+ * If omitted, a multiline MUI TextField is rendered in edit mode. */
156
+ renderPromptInput?: (props: {
157
+ index: number;
158
+ value: string;
159
+ onChange: (next: string) => void;
160
+ placeholder: string;
161
+ }) => React__default.ReactNode;
162
+ }
163
+
164
+ interface AppTitleHeaderProps extends ShuffleHostProps {
165
+ /** Display name of the app (will be capitalized via CSS). */
166
+ name: string;
167
+ /** Image URL for the app icon. */
168
+ image?: string;
169
+ /** Whether at least one valid authentication exists. */
170
+ hasValidAuth?: boolean;
171
+ /** Whether at least one auth entry exists (valid or not). */
172
+ hasAnyAuth?: boolean;
173
+ /** Whether the host is authenticated — controls Verified/Pending chip + Activate button visibility. */
174
+ isAuthenticated?: boolean;
175
+ /** App categories to display as chips. */
176
+ categories?: string[];
177
+ /** Activation state — `null` hides the Activate button. */
178
+ isActivated?: boolean | null;
179
+ /** Whether activation toggle is in-flight. */
180
+ activateLoading?: boolean;
181
+ /** Called when user clicks Activate/Deactivate. */
182
+ onActivateToggle?: () => void;
183
+ /** Ingestion state — `null` or undefined hides the Ingest button. */
184
+ isIngestEnabled?: boolean | null;
185
+ /** Whether ingestion toggle is in-flight. */
186
+ ingestLoading?: boolean;
187
+ /** Called when user clicks Enable ingest / Ingest enabled. */
188
+ onIngestToggle?: () => void;
189
+ /** When true, visually highlight the Activate button to signal an
190
+ * automatic click is happening (e.g. from a usecase auto-activate flow). */
191
+ highlightActivate?: boolean;
192
+ /** When provided, replaces the Activate button with "+ Add". */
193
+ onAdd?: () => void;
194
+ /** Called when the auth status chip is clicked (host may expand its auth section). */
195
+ onAuthClick?: () => void;
196
+ }
197
+
71
198
  /**
72
199
  * Local Singul Library - Helpers
73
200
  * This is a local copy for development. Changes here should be merged back to:
@@ -247,266 +374,6 @@ interface ShuffleMCPProps extends ShuffleHostProps {
247
374
  onCreateNewApp?: () => void;
248
375
  }
249
376
 
250
- /**
251
- * Local Singul Library - React Component
252
- * This is a local copy for development. Changes here should be merged back to:
253
- * https://github.com/Shuffle/singul.js
254
- */
255
-
256
- interface ShuffleMCPHandle {
257
- search: (query: string) => void;
258
- clear: () => void;
259
- focus: (selectAll?: boolean) => void;
260
- }
261
-
262
- type AuthStatus = 'pending' | 'testing' | 'connected' | 'error';
263
- interface AppAuthState {
264
- systemId: string;
265
- status: AuthStatus;
266
- credentials: Record<string, string>;
267
- errorMessage?: string;
268
- successMessage?: string;
269
- warningMessage?: string;
270
- workflowId?: string;
271
- executionId?: string;
272
- errorCode?: number;
273
- }
274
- interface AuthParameter {
275
- description: string;
276
- example: string;
277
- id: string;
278
- name: string;
279
- required: boolean;
280
- schema: {
281
- type: string;
282
- };
283
- }
284
- interface AppAuthentication {
285
- type: string;
286
- description?: string;
287
- redirect_uri?: string;
288
- token_uri?: string;
289
- refresh_uri?: string;
290
- authorization_url?: string;
291
- auth_uri?: string;
292
- authorize_url?: string;
293
- scope?: string[];
294
- client_id?: string;
295
- client_secret?: string;
296
- parameters?: AuthParameter[];
297
- }
298
- interface ApiAuthEntry {
299
- id?: string;
300
- label?: string;
301
- app: {
302
- id: string;
303
- name: string;
304
- large_image?: string;
305
- };
306
- active?: boolean;
307
- created?: number;
308
- edited?: number;
309
- validation?: {
310
- valid: boolean;
311
- error?: string;
312
- last_valid?: number;
313
- };
314
- }
315
- interface AppAuthConfigProps extends ShuffleHostProps {
316
- apps: AlgoliaSearchApp[];
317
- authStates: Record<string, AppAuthState>;
318
- authenticatedApps?: ApiAuthEntry[];
319
- onAuthChange: (appId: string, credentials: Record<string, string>) => void;
320
- onTestConnection: (appId: string, authenticationId?: string) => void;
321
- onSaveAuth: (appId: string, credentials: Record<string, string>) => Promise<boolean>;
322
- onSelectAuth?: (appId: string, authId: string) => void;
323
- onRefreshAuth?: () => Promise<void> | void;
324
- }
325
- interface AppAuthCardProps extends ShuffleHostProps {
326
- app: AlgoliaSearchApp;
327
- authState: AppAuthState;
328
- isExpanded: boolean;
329
- onToggle: () => void;
330
- onAuthChange: (appId: string, credentials: Record<string, string>) => void;
331
- onTestConnection: (appId: string, authenticationId?: string) => void;
332
- onSaveAuth: (appId: string, credentials: Record<string, string>) => Promise<boolean>;
333
- apiAuthEntries: ApiAuthEntry[];
334
- onSelectAuth?: (appId: string, authId: string) => void;
335
- /** Called to refresh auth entries (e.g. after OAuth popup closes) */
336
- onRefreshAuth?: () => Promise<void> | void;
337
- /** When true, do NOT auto-fill URL fields with the param.example value. */
338
- disableUrlPrefill?: boolean;
339
- /** Hide the entire card header row (app icon, name, description, chips, docs, expand). Body stays expanded. */
340
- hideHeader?: boolean;
341
- /** Hide the "Configured / Not configured" and "Tested / Not tested" chips. */
342
- hideStatusChips?: boolean;
343
- /** Hide the documentation (book icon) link. */
344
- hideDocsLink?: boolean;
345
- /** Hide URL-like fields (name/id containing "url", "endpoint", or "host").
346
- * Use when the URL is supplied externally (e.g. via a provider preset). */
347
- hideUrlFields?: boolean;
348
- /** Render without the outer Card border so the component can be embedded
349
- * inside another bordered container without the nested "double border" look. */
350
- borderless?: boolean;
351
- /** Compact mode for embedded auth setup (e.g. Local LLM). Hides the
352
- * "Select authentication" dropdown and the large "Pending Verification"
353
- * detail panel with its standalone Test Connection button. The inline
354
- * credentials form (with the small "Test Authentication" CTA) is always
355
- * visible so users can edit & retest in one place. */
356
- compactAuthForm?: boolean;
357
- /** Always render the "Select authentication" dropdown, even when there are no
358
- * saved entries yet, so the UI does not switch between two different shapes. */
359
- alwaysShowAuthSelector?: boolean;
360
- /** Suppress the "Authentication saved" success toast (embedded flows that
361
- * already give their own feedback, e.g. the LLM provider config). */
362
- suppressSaveToast?: boolean;
363
- /** Render additional fields inside the expanded body, above the credential
364
- * inputs. The slot receives the live `localCredentials` and a `setField`
365
- * helper so its values are persisted as part of the auth on Save. */
366
- extraFieldsSlot?: (api: {
367
- credentials: Record<string, string>;
368
- setField: (key: string, value: string) => void;
369
- }) => React.ReactNode;
370
- /** Known-ahead-of-time auth schema. When provided the fields render
371
- * instantly and no app-config request is made (no "Loading configuration"). */
372
- initialAuthConfig?: AppAuthentication;
373
- }
374
- declare const AppAuthCard: ({ app, authState, isExpanded, onToggle, onAuthChange, onTestConnection, onSaveAuth, apiAuthEntries, onSelectAuth, onRefreshAuth, disableUrlPrefill, hideHeader, hideStatusChips, hideDocsLink, hideUrlFields, borderless, compactAuthForm, alwaysShowAuthSelector, suppressSaveToast, extraFieldsSlot, initialAuthConfig, globalUrl, userdata, isLoaded, isLoggedIn, serverside, }: AppAuthCardProps) => React$1.JSX.Element;
375
- declare const AppAuthConfig: ({ apps, authStates, authenticatedApps, onAuthChange, onTestConnection, onSaveAuth, onSelectAuth, onRefreshAuth, globalUrl, userdata, isLoaded, isLoggedIn, serverside, }: AppAuthConfigProps) => React$1.JSX.Element;
376
-
377
- /**
378
- * AppDetailContent — Single source of truth for app details, authentication,
379
- * MCP testing, and action execution.
380
- *
381
- * Used by:
382
- * 1. AppDetailDrawer — in drawer mode (slide-out drawer with close button & incident stats).
383
- * 2. AppDetailPage — in page mode (full page with guest locking, quick info, and SEO reporting).
384
- */
385
-
386
- interface AppInfo {
387
- name: string;
388
- description: string;
389
- large_image?: string;
390
- categories?: string[];
391
- actions?: unknown[];
392
- authentication?: AppAuthentication;
393
- algoliaId?: string;
394
- [key: string]: unknown;
395
- }
396
- interface AppDetailContentProps extends ShuffleHostProps {
397
- /** Display mode */
398
- mode?: 'drawer' | 'page';
399
- /** Whether the parent container is open/mounted (used in drawer mode to defer network requests) */
400
- open?: boolean;
401
- /** App name to load */
402
- appName: string | null;
403
- /** Pre-resolved Algolia objectID (optional fast path) */
404
- appId?: string | null;
405
- /** Pre-resolved app icon/image (optional fast path from chip/picker) */
406
- appImage?: string | null;
407
- /** Callback to close the view (drawer mode) */
408
- onClose?: () => void;
409
- /** Callback when data is refreshed */
410
- onRefresh?: () => void;
411
- /** Action when adding to canvas (builder mode) */
412
- onAddToCanvas?: (app: {
413
- name: string;
414
- icon: string;
415
- algoliaId?: string | null;
416
- }) => void;
417
- /** Whether the user is authenticated. In page mode, false enables guest locked sections */
418
- isAuthenticated?: boolean;
419
- /** Active organization ID for multi-tenant scoping */
420
- activeOrgId?: string | null;
421
- /** Automatically fire Activate action once app is loaded */
422
- autoActivate?: boolean;
423
- /** Show incident ingestion/forwarding stats */
424
- showIncidentStats?: boolean;
425
- /** Show quick info summary cards (Auth Type, Configurations, Status) */
426
- showQuickInfo?: boolean;
427
- /** Show the live MCP ApiCallViewer */
428
- showApiCallViewer?: boolean;
429
- /** When true and isAuthenticated is false, renders GuestLockedSection */
430
- allowGuestLocked?: boolean;
431
- /** Notifies parent when app info is resolved (useful for page SEO / usePageMeta) */
432
- onAppInfoLoaded?: (info: AppInfo | null) => void;
433
- }
434
- /**
435
- * Compares a requested app name against a resolved app name to determine if they match,
436
- * close-match, or mismatch.
437
- */
438
- declare function checkAppNameMatch(requested?: string | null, resolved?: string | null): {
439
- isMatch: boolean;
440
- isCloseMatch: boolean;
441
- mismatch: boolean;
442
- };
443
-
444
- interface AiAgentPromptsEditorProps {
445
- /** Ordered list of prompts. */
446
- prompts: string[];
447
- /** Per-prompt allow-list of app IDs/names (parallel array to `prompts`). */
448
- apps: string[][];
449
- /** Read-only mode: render prompts as plain text, no edit/add/remove. */
450
- readOnly?: boolean;
451
- /** Optional skill label (e.g. "Incident Handler") to show shared permission context. */
452
- skillLabel?: string;
453
- /** Optional check if an app key is a built-in default app for the active skill. */
454
- isBuiltInApp?: (appKey: string) => boolean;
455
- /** Edit handlers — required when `readOnly` is false. */
456
- onChangePrompt?: (index: number, value: string) => void;
457
- onRemovePrompt?: (index: number) => void;
458
- onAddPrompt?: () => void;
459
- onRemoveApp?: (promptIndex: number, appKey: string) => void;
460
- onAddAppRequested?: (promptIndex: number) => void;
461
- /** Resolves an app key to its display metadata. */
462
- resolveAppMeta: (key: string) => {
463
- name: string;
464
- image: string;
465
- };
466
- /** Optional slot to render a richer prompt editor (e.g. PopupTextEditor).
467
- * If omitted, a multiline MUI TextField is rendered in edit mode. */
468
- renderPromptInput?: (props: {
469
- index: number;
470
- value: string;
471
- onChange: (next: string) => void;
472
- placeholder: string;
473
- }) => React__default.ReactNode;
474
- }
475
-
476
- interface AppTitleHeaderProps extends ShuffleHostProps {
477
- /** Display name of the app (will be capitalized via CSS). */
478
- name: string;
479
- /** Image URL for the app icon. */
480
- image?: string;
481
- /** Whether at least one valid authentication exists. */
482
- hasValidAuth?: boolean;
483
- /** Whether at least one auth entry exists (valid or not). */
484
- hasAnyAuth?: boolean;
485
- /** Whether the host is authenticated — controls Verified/Pending chip + Activate button visibility. */
486
- isAuthenticated?: boolean;
487
- /** App categories to display as chips. */
488
- categories?: string[];
489
- /** Activation state — `null` hides the Activate button. */
490
- isActivated?: boolean | null;
491
- /** Whether activation toggle is in-flight. */
492
- activateLoading?: boolean;
493
- /** Called when user clicks Activate/Deactivate. */
494
- onActivateToggle?: () => void;
495
- /** Ingestion state — `null` or undefined hides the Ingest button. */
496
- isIngestEnabled?: boolean | null;
497
- /** Whether ingestion toggle is in-flight. */
498
- ingestLoading?: boolean;
499
- /** Called when user clicks Enable ingest / Ingest enabled. */
500
- onIngestToggle?: () => void;
501
- /** When true, visually highlight the Activate button to signal an
502
- * automatic click is happening (e.g. from a usecase auto-activate flow). */
503
- highlightActivate?: boolean;
504
- /** When provided, replaces the Activate button with "+ Add". */
505
- onAdd?: () => void;
506
- /** Called when the auth status chip is clicked (host may expand its auth section). */
507
- onAuthClick?: () => void;
508
- }
509
-
510
377
  interface AppAuthSectionProps extends ShuffleHostProps {
511
378
  /** Display name (used in copy when no auth exists). */
512
379
  displayName: string;
@@ -840,6 +707,43 @@ interface AgentUIProps {
840
707
  vulnerabilityId?: string;
841
708
  /** Optional target workflow ID for edit-workflow skill */
842
709
  workflowId?: string;
710
+ /** Optional custom renderer for the tool search drawer (e.g. AppSearchDrawer from Shuffle-Core) */
711
+ renderToolDrawer?: (props: ToolDrawerRenderProps) => React__default.ReactNode;
712
+ /** Optional custom renderer for the app detail drawer (e.g. AppDetailDrawer from Shuffle-Core) */
713
+ renderAppDetailDrawer?: (props: AppDetailDrawerRenderProps) => React__default.ReactNode;
714
+ }
715
+ interface ToolDrawerRenderProps {
716
+ open: boolean;
717
+ initialQuery?: string;
718
+ onClose: () => void;
719
+ title?: string;
720
+ subtitle?: string;
721
+ multiSelect?: boolean;
722
+ selectedApps: Array<{
723
+ name: string;
724
+ id?: string | null;
725
+ icon?: string;
726
+ }>;
727
+ globalUrl?: string;
728
+ theme?: string;
729
+ colorMode?: 'light' | 'dark' | 'auto';
730
+ onSelectionChange: (next: Array<{
731
+ name: string;
732
+ id?: string | null;
733
+ icon?: string;
734
+ }>) => void;
735
+ }
736
+ interface AppDetailDrawerRenderProps {
737
+ open: boolean;
738
+ onClose: () => void;
739
+ appName?: string | null;
740
+ appId?: string | null;
741
+ appImage?: string | null;
742
+ activeOrgId?: string | null;
743
+ globalUrl?: string;
744
+ theme?: string;
745
+ colorMode?: 'light' | 'dark' | 'auto';
746
+ onRefresh?: () => void;
843
747
  }
844
748
  /** Set of confirmed live built-in Shuffle services that are always available in the platform */
845
749
  declare const VERIFIED_BUILTIN_APPS: Set<string>;
@@ -877,10 +781,10 @@ interface UseAgentPromptPrefixOptions {
877
781
  persist?: boolean;
878
782
  }
879
783
  declare const useAgentPromptPrefix: (options?: UseAgentPromptPrefixOptions) => {
880
- prompt: string;
881
- savePrompt: (next: string) => Promise<boolean>;
882
- hasFetched: boolean;
883
- isSaving: boolean;
784
+ prompt: any;
785
+ savePrompt: any;
786
+ hasFetched: any;
787
+ isSaving: any;
884
788
  };
885
789
 
886
790
  type AgentRunDrawerTab = 'run' | 'permissions' | 'localLLM';
@@ -1247,7 +1151,7 @@ interface AskAiWidgetProps extends Omit<AskAiSidePanelProps, 'open' | 'onClose'>
1247
1151
  /**
1248
1152
  * Convenience hook to get the active agent context for a given route.
1249
1153
  */
1250
- declare const useContextAwareAgent: (pathname?: string, search?: string) => AgentResolvedContext;
1154
+ declare const useContextAwareAgent: (pathname?: string, search?: string) => any;
1251
1155
 
1252
1156
  /**
1253
1157
  * ApiCallViewer — Standardized, compact API call inspector and test runner.
@@ -1527,6 +1431,17 @@ interface AgentActivityListProps extends ShuffleHostProps {
1527
1431
  initialRuns?: AgentRun[];
1528
1432
  /** When true, skips remote activity fetching entirely (e.g. for demo runs). */
1529
1433
  disableFetch?: boolean;
1434
+ /** Optional custom renderer for the app detail drawer (e.g. from Shuffle-Core) */
1435
+ renderAppDetailDrawer?: (props: {
1436
+ open: boolean;
1437
+ onClose: () => void;
1438
+ appName?: string | null;
1439
+ appId?: string | null;
1440
+ activeOrgId?: string | null;
1441
+ globalUrl?: string;
1442
+ theme?: string;
1443
+ colorMode?: 'light' | 'dark' | 'auto';
1444
+ }) => React.ReactNode;
1530
1445
  }
1531
1446
 
1532
1447
  interface AgentExecutionDrawerProps extends ShuffleHostProps {
@@ -1607,6 +1522,10 @@ interface AgentsViewProps extends ShuffleHostProps {
1607
1522
  usecaseFilters?: AgentUsecaseFilter[];
1608
1523
  /** Per-skill readiness CTAs forwarded to the embedded AgentUI. */
1609
1524
  presetCtas?: AgentUIProps['presetCtas'];
1525
+ /** Custom renderer for the tool search drawer (forwarded to AgentUI) */
1526
+ renderToolDrawer?: AgentUIProps['renderToolDrawer'];
1527
+ /** Custom renderer for the app detail drawer (forwarded to AgentUI and AgentActivityList) */
1528
+ renderAppDetailDrawer?: AgentUIProps['renderAppDetailDrawer'];
1610
1529
  }
1611
1530
 
1612
1531
  interface AgentLocalModel {
@@ -1631,24 +1550,6 @@ interface LocalLLMConfigProps extends ShuffleHostProps {
1631
1550
  open?: boolean;
1632
1551
  }
1633
1552
 
1634
- /**
1635
- * AddAppModal — Two-phase modal for finding and authenticating apps.
1636
- *
1637
- * Phase 1: ShuffleMCP search (same style as /onboarding/sources)
1638
- * Phase 2: AppAuthCard for the selected app (same as /onboarding/authenticate)
1639
- *
1640
- * Self-contained: lives in Shuffle-MCPs so it can be used inside the library
1641
- * (e.g., AppSearchDrawer) without host-app imports.
1642
- */
1643
- interface AddAppModalProps {
1644
- open: boolean;
1645
- onClose: () => void;
1646
- /** Initial search query (e.g. category label like "SIEM") */
1647
- initialQuery: string;
1648
- /** Category label for display */
1649
- categoryLabel: string;
1650
- }
1651
-
1652
1553
  /**
1653
1554
  * useAppAuthFlow — Shared hook for the search→authenticate flow.
1654
1555
  * Encapsulates fetching auth entries, saving credentials, and testing connections.
@@ -1657,18 +1558,17 @@ interface AddAppModalProps {
1657
1558
  * Self-contained: lives in Shuffle-MCPs so library consumers can use the same
1658
1559
  * auth flow without host-app wiring.
1659
1560
  */
1660
-
1661
1561
  declare function useAppAuthFlow(): {
1662
- selectedApp: AlgoliaSearchApp;
1663
- authState: AppAuthState;
1664
- authenticatedApps: ApiAuthEntry[];
1665
- authLoading: boolean;
1666
- selectApp: (app: AlgoliaSearchApp) => void;
1667
- clearSelection: () => void;
1668
- handleAuthChange: (_appId: string, credentials: Record<string, string>) => void;
1669
- handleTestConnection: (systemId: string, authenticationId?: string) => Promise<void>;
1670
- handleSaveAuth: (appId: string, credentials: Record<string, string>) => Promise<boolean>;
1671
- refreshAuth: () => Promise<void>;
1562
+ selectedApp: any;
1563
+ authState: any;
1564
+ authenticatedApps: any;
1565
+ authLoading: any;
1566
+ selectApp: any;
1567
+ clearSelection: any;
1568
+ handleAuthChange: any;
1569
+ handleTestConnection: any;
1570
+ handleSaveAuth: any;
1571
+ refreshAuth: any;
1672
1572
  };
1673
1573
 
1674
1574
  /**
@@ -1834,13 +1734,13 @@ declare const refreshAllIntegrationStatus: () => void;
1834
1734
  declare const IntegrationStatus: ({ collapsed, filterApps, onAddClick, iconSize, onDisable, disabledApps, showAll, hideAddButton, hideHeader, priorityCategory, extraApps }: IntegrationStatusProps) => React$1.JSX.Element;
1835
1735
 
1836
1736
  declare function useAppAuth(): {
1837
- authStates: Record<string, AppAuthState>;
1838
- authenticatedApps: ApiAuthEntry[];
1839
- loading: boolean;
1840
- handleAuthChange: (systemId: string, credentials: Record<string, string>) => void;
1841
- handleTestConnection: (systemId: string, authenticationId?: string) => Promise<void>;
1842
- handleSaveAuth: (appId: string, credentials: Record<string, string>, appName?: string, label?: string) => Promise<boolean>;
1843
- refreshAuth: () => Promise<void>;
1737
+ authStates: any;
1738
+ authenticatedApps: any;
1739
+ loading: any;
1740
+ handleAuthChange: any;
1741
+ handleTestConnection: any;
1742
+ handleSaveAuth: any;
1743
+ refreshAuth: any;
1844
1744
  };
1845
1745
 
1846
1746
  interface AppDetailContextType {
@@ -1899,12 +1799,121 @@ interface AgentIconProps {
1899
1799
  */
1900
1800
  declare const AgentIcon: ({ size, className, style }: AgentIconProps) => React$1.JSX.Element;
1901
1801
 
1902
- /**
1903
- * Shuffle Datastore Service
1904
- *
1905
- * Provides reusable functions for interacting with the Shuffle datastore API.
1906
- * Uses the correct Shuffle cache API endpoints.
1907
- */
1802
+ type AuthStatus = 'pending' | 'testing' | 'connected' | 'error';
1803
+ interface AppAuthState {
1804
+ systemId: string;
1805
+ status: AuthStatus;
1806
+ credentials: Record<string, string>;
1807
+ errorMessage?: string;
1808
+ successMessage?: string;
1809
+ warningMessage?: string;
1810
+ workflowId?: string;
1811
+ executionId?: string;
1812
+ errorCode?: number;
1813
+ }
1814
+ interface AuthParameter {
1815
+ description: string;
1816
+ example: string;
1817
+ id: string;
1818
+ name: string;
1819
+ required: boolean;
1820
+ schema: {
1821
+ type: string;
1822
+ };
1823
+ }
1824
+ interface AppAuthentication {
1825
+ type: string;
1826
+ description?: string;
1827
+ redirect_uri?: string;
1828
+ token_uri?: string;
1829
+ refresh_uri?: string;
1830
+ authorization_url?: string;
1831
+ auth_uri?: string;
1832
+ authorize_url?: string;
1833
+ scope?: string[];
1834
+ client_id?: string;
1835
+ client_secret?: string;
1836
+ parameters?: AuthParameter[];
1837
+ }
1838
+ interface ApiAuthEntry {
1839
+ id?: string;
1840
+ label?: string;
1841
+ app: {
1842
+ id: string;
1843
+ name: string;
1844
+ large_image?: string;
1845
+ };
1846
+ active?: boolean;
1847
+ created?: number;
1848
+ edited?: number;
1849
+ validation?: {
1850
+ valid: boolean;
1851
+ error?: string;
1852
+ last_valid?: number;
1853
+ };
1854
+ }
1855
+ interface AppAuthConfigProps extends ShuffleHostProps {
1856
+ apps: AlgoliaSearchApp[];
1857
+ authStates: Record<string, AppAuthState>;
1858
+ authenticatedApps?: ApiAuthEntry[];
1859
+ onAuthChange: (appId: string, credentials: Record<string, string>) => void;
1860
+ onTestConnection: (appId: string, authenticationId?: string) => void;
1861
+ onSaveAuth: (appId: string, credentials: Record<string, string>) => Promise<boolean>;
1862
+ onSelectAuth?: (appId: string, authId: string) => void;
1863
+ onRefreshAuth?: () => Promise<void> | void;
1864
+ }
1865
+ interface AppAuthCardProps extends ShuffleHostProps {
1866
+ app: AlgoliaSearchApp;
1867
+ authState: AppAuthState;
1868
+ isExpanded: boolean;
1869
+ onToggle: () => void;
1870
+ onAuthChange: (appId: string, credentials: Record<string, string>) => void;
1871
+ onTestConnection: (appId: string, authenticationId?: string) => void;
1872
+ onSaveAuth: (appId: string, credentials: Record<string, string>) => Promise<boolean>;
1873
+ apiAuthEntries: ApiAuthEntry[];
1874
+ onSelectAuth?: (appId: string, authId: string) => void;
1875
+ /** Called to refresh auth entries (e.g. after OAuth popup closes) */
1876
+ onRefreshAuth?: () => Promise<void> | void;
1877
+ /** When true, do NOT auto-fill URL fields with the param.example value. */
1878
+ disableUrlPrefill?: boolean;
1879
+ /** Hide the entire card header row (app icon, name, description, chips, docs, expand). Body stays expanded. */
1880
+ hideHeader?: boolean;
1881
+ /** Hide the "Configured / Not configured" and "Tested / Not tested" chips. */
1882
+ hideStatusChips?: boolean;
1883
+ /** Hide the documentation (book icon) link. */
1884
+ hideDocsLink?: boolean;
1885
+ /** Hide URL-like fields (name/id containing "url", "endpoint", or "host").
1886
+ * Use when the URL is supplied externally (e.g. via a provider preset). */
1887
+ hideUrlFields?: boolean;
1888
+ /** Render without the outer Card border so the component can be embedded
1889
+ * inside another bordered container without the nested "double border" look. */
1890
+ borderless?: boolean;
1891
+ /** Compact mode for embedded auth setup (e.g. Local LLM). Hides the
1892
+ * "Select authentication" dropdown and the large "Pending Verification"
1893
+ * detail panel with its standalone Test Connection button. The inline
1894
+ * credentials form (with the small "Test Authentication" CTA) is always
1895
+ * visible so users can edit & retest in one place. */
1896
+ compactAuthForm?: boolean;
1897
+ /** Always render the "Select authentication" dropdown, even when there are no
1898
+ * saved entries yet, so the UI does not switch between two different shapes. */
1899
+ alwaysShowAuthSelector?: boolean;
1900
+ /** Suppress the "Authentication saved" success toast (embedded flows that
1901
+ * already give their own feedback, e.g. the LLM provider config). */
1902
+ suppressSaveToast?: boolean;
1903
+ /** Render additional fields inside the expanded body, above the credential
1904
+ * inputs. The slot receives the live `localCredentials` and a `setField`
1905
+ * helper so its values are persisted as part of the auth on Save. */
1906
+ extraFieldsSlot?: (api: {
1907
+ credentials: Record<string, string>;
1908
+ setField: (key: string, value: string) => void;
1909
+ }) => React.ReactNode;
1910
+ /** Known-ahead-of-time auth schema. When provided the fields render
1911
+ * instantly and no app-config request is made (no "Loading configuration"). */
1912
+ initialAuthConfig?: AppAuthentication;
1913
+ }
1914
+ declare const AppAuthCard: ({ app, authState, isExpanded, onToggle, onAuthChange, onTestConnection, onSaveAuth, apiAuthEntries, onSelectAuth, onRefreshAuth, disableUrlPrefill, hideHeader, hideStatusChips, hideDocsLink, hideUrlFields, borderless, compactAuthForm, alwaysShowAuthSelector, suppressSaveToast, extraFieldsSlot, initialAuthConfig, globalUrl, userdata, isLoaded, isLoggedIn, serverside, }: AppAuthCardProps) => React$1.JSX.Element;
1915
+ declare const AppAuthConfig: ({ apps, authStates, authenticatedApps, onAuthChange, onTestConnection, onSaveAuth, onSelectAuth, onRefreshAuth, globalUrl, userdata, isLoaded, isLoggedIn, serverside, }: AppAuthConfigProps) => React$1.JSX.Element;
1916
+
1908
1917
  interface DatastoreItem {
1909
1918
  key: string;
1910
1919
  value: string;
@@ -2004,6 +2013,7 @@ declare const setRuntimeOrgId: (orgId: string | null) => void;
2004
2013
  */
2005
2014
  declare const setDatastoreItem: (key: string, value: string | object, category: string, overrideOrgId?: string, options?: {
2006
2015
  regionUrl?: string;
2016
+ ignoreSecurityRules?: boolean;
2007
2017
  }) => Promise<DatastoreResponse>;
2008
2018
  /**
2009
2019
  * Set multiple items in the datastore (bulk create) using v2 API
@@ -2356,46 +2366,42 @@ declare function openSupportEscalation(context: SupportEscalationContext): void;
2356
2366
  * `colorMode` is preserved as a legacy alias (`"auto"` == `"system"`).
2357
2367
  */
2358
2368
  type ShuffleTheme = 'light' | 'dark' | 'system';
2369
+ type WithTheme<P> = P & {
2370
+ theme?: ShuffleTheme;
2371
+ colorMode?: ShuffleMcpColorMode;
2372
+ };
2359
2373
 
2360
- declare const ShuffleMCP: React__default.ForwardRefExoticComponent<any>;
2361
-
2362
- declare const AppDetailDrawer: React__default.ComponentType<any>;
2363
- declare const AppDetailContent: React__default.ComponentType<any>;
2364
-
2365
- declare const AppSearchDrawer: React__default.ComponentType<any>;
2366
- declare const AiAgentPromptsEditor: React__default.ComponentType<any>;
2367
-
2368
- declare const ShufflePipelinesBanner: React__default.ComponentType<any>;
2369
- declare const AppTitleHeader: React__default.ComponentType<any>;
2374
+ declare const AiAgentPromptsEditor: React.ComponentType<WithTheme<P>>;
2370
2375
 
2371
- declare const AppAuthSection: React__default.ComponentType<any>;
2376
+ declare const ShufflePipelinesBanner: React.ComponentType<WithTheme<P>>;
2377
+ declare const AppTitleHeader: React.ComponentType<WithTheme<P>>;
2372
2378
 
2373
- declare const TryMcpSection: React__default.ComponentType<any>;
2379
+ declare const AppAuthSection: React.ComponentType<WithTheme<P>>;
2374
2380
 
2375
- declare const SingulActionsPreview: React__default.ComponentType<any>;
2376
- declare const AgentUI: React__default.ComponentType<any>;
2381
+ declare const TryMcpSection: React.ComponentType<WithTheme<P>>;
2377
2382
 
2378
- declare const AgentRunDrawer: React__default.ComponentType<any>;
2383
+ declare const SingulActionsPreview: React.ComponentType<WithTheme<P>>;
2384
+ declare const AgentUI: React.ComponentType<WithTheme<P>>;
2379
2385
 
2380
- declare const AskAiButton: React__default.ComponentType<any>;
2386
+ declare const AgentRunDrawer: React.ComponentType<WithTheme<P>>;
2381
2387
 
2382
- declare const AskAiDrawer: React__default.ComponentType<any>;
2388
+ declare const AskAiButton: React.ComponentType<WithTheme<P>>;
2383
2389
 
2384
- declare const AskAiSidePanel: React__default.ComponentType<any>;
2390
+ declare const AskAiDrawer: React.ComponentType<WithTheme<P>>;
2385
2391
 
2386
- declare const AskAiWidget: React__default.ComponentType<any>;
2392
+ declare const AskAiSidePanel: React.ComponentType<WithTheme<P>>;
2387
2393
 
2388
- declare const ApiCallViewer: React__default.ComponentType<any>;
2394
+ declare const AskAiWidget: React.ComponentType<WithTheme<P>>;
2389
2395
 
2390
- declare const AgentActivityList: React__default.ComponentType<any>;
2396
+ declare const ApiCallViewer: React.ComponentType<WithTheme<P>>;
2391
2397
 
2392
- declare const AgentExecutionDrawer: React__default.ComponentType<any>;
2398
+ declare const AgentActivityList: React.ComponentType<WithTheme<P>>;
2393
2399
 
2394
- declare const AgentsView: React__default.ComponentType<any>;
2400
+ declare const AgentExecutionDrawer: React.ComponentType<WithTheme<P>>;
2395
2401
 
2396
- declare const AgentRunDiagnosisBanner: React__default.ComponentType<any>;
2397
- declare const LocalLLMConfig: React__default.ComponentType<any>;
2402
+ declare const AgentsView: React.ComponentType<WithTheme<P>>;
2398
2403
 
2399
- declare const AddAppModal: React__default.ComponentType<any>;
2404
+ declare const AgentRunDiagnosisBanner: React.ComponentType<WithTheme<P>>;
2405
+ declare const LocalLLMConfig: React.ComponentType<WithTheme<P>>;
2400
2406
 
2401
- export { AGENT_DRAWER_CLOSE_EVENT, AGENT_DRAWER_OPEN_EVENT, AGENT_DRAWER_STATE_EVENT, AGENT_PRESETS, AGENT_PROMPT_PREFIX_CATEGORY, API_CONFIG, ASK_AI_PANEL_WIDTH_STORAGE_KEY, AddAppModal, type AddAppModalProps, AgentActivityList, type AgentActivityListProps, type AgentActivityParams, type AgentActivityResponse, type AgentContextApp, type AgentContextRule, type AgentDecision, AgentExecutionDrawer, type AgentExecutionDrawerProps, AgentIcon, type AgentLocalModel, type AgentPreset, AgentPresets, type AgentPresetsProps, AgentPromptPrefixChip, type AgentPromptPrefixChipProps, type AgentResolvedContext, 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, type ApiCallConfig, ApiCallViewer, type ApiCallViewerProps, AppAuthCard, type AppAuthCardProps, AppAuthConfig, AppAuthSection, type AppAuthSectionProps, type AppAuthState, type AppAuthentication$1 as AppAuthentication, AppDetailContent, type AppDetailContentProps, AppDetailDrawer, AppDetailProvider, type AppInfo, type AppLookupResult, AppSearchDrawer, type AppSelectedEvent, AppTitleHeader, type AppTitleHeaderProps, AskAiButton, type AskAiButtonProps, AskAiDrawer, type AskAiDrawerProps, AskAiSidePanel, type AskAiSidePanelProps, AskAiWidget, type AskAiWidgetProps, type AuthStatus, CASES_PATTERNS, COMMUNICATION_PATTERNS_NAMES, type CategoryAutomation, type CategoryConfig, type ConnectedToolApp, type CustomStyles, DATASTORE_CATEGORIES, DEFAULT_AGENT_CONTEXT_RULES, DEFAULT_AGENT_PROMPT_PREFIX, DEMO_AGENT_RUNS, 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, LocalLLMConfig, type LocalLLMConfigProps, type LocalLLMTestResult, MAX_ASK_AI_PANEL_WIDTH, MAX_AUTO_ASSIGNED_TOOLS, MIN_ASK_AI_PANEL_WIDTH, ShuffleMarkdown as Markdown, MarkdownJsonBlock, type OutputDiagnosis, type PageContextChoice, type ResolvedApp, type ResolvedContactUserInfo, SIEM_PATTERNS, type ShuffleHostProps, ShuffleMCP, type ShuffleMCPHandle, type ShuffleMCPProps, ShuffleMarkdown, type ShuffleMcpColorMode, ShuffleMcpThemeProvider, type ShuffleMcpThemeProviderProps, ShufflePipelinesBanner, type ShuffleTheme, SingulActionsPreview, type SupportEscalationContext, THREAT_INTEL_PATTERNS, TryMcpSection, type TryMcpSectionProps, UsageBar, type UsageBarProps, type UseAgentPromptPrefixOptions, VERIFIED_BUILTIN_APPS, VULN_SCANNER_PATTERNS, type ValidatedIngestionApp, VideoEmbed, applyRegionFromPayload, buildSupportEscalationUrl, checkAppNameMatch, clearPageContextChoice, ShuffleMCP as default, deleteDatastoreItem, deleteDatastoreItems, diagnoseOutputWarning, extractActionAppNames, extractValidatedIngestionApps, extractWorkflowActionAppNames, extractWorkflowAppNames, fetchApps, fetchAppsViaApiConfig, fetchConnectedTools, filterItemsByCategory, findForwardTicketsWorkflow, findIngestTicketsWorkflow, getActivePageEntityName, getAgentContextRules, getApiUrl, getAuthHeader, getCachedConnectedTools, getDatastoreByCategory, getDatastoreItem, getDatastoreItemPublic, getDatastorePageSize, getFailureInfo, getHostBaseUrl, getIngestionCategory, getPageContextChoice, hasOutputWarning, installFetchBreaker, invalidateAppsCache, invalidateResolvedApps, isAgentRoute, isCloud, isCloudDomain, isEmailApp, isIngestionApp, isOnprem, isShuffleCloudDomain, isShuffleSecurityBackend, isThreatIntelApp, isVulnScannerApp, isWorkflowScheduleStopped, mapCloudRegionUrl, matchRoutePattern, mergeConnectedTools, normalizeAppName, openSupportEscalation, parseRunResult, refreshAllIntegrationStatus, registerAgentContextRule, registerProtectedOrigin, resetRegionUrl, resolveAgentContext, resolveApp, resolveApps, resolveConnectedTools, resolveContactUserInfo, resolveVideoUrl, scheduleAgentRun, searchAgentActivity, seedResolvedApp, setCachedConnectedTools, setDatastoreItem, setDatastoreItems, setHostBaseUrl, setPageContextChoice, setRegionUrl, setRuntimeOrgId, setToastImpl, shuffleFetch, toast, useAgentPromptPrefix, useAppAuth, useAppAuthFlow, useAppDetail, useAppDetailOptional, useAppLookup, useContextAwareAgent, useSyncHostBaseUrl };
2407
+ export { AGENT_DRAWER_CLOSE_EVENT, AGENT_DRAWER_OPEN_EVENT, AGENT_DRAWER_STATE_EVENT, AGENT_PRESETS, AGENT_PROMPT_PREFIX_CATEGORY, API_CONFIG, ASK_AI_PANEL_WIDTH_STORAGE_KEY, AgentActivityList, type AgentActivityListProps, type AgentActivityParams, type AgentActivityResponse, type AgentContextApp, type AgentContextRule, type AgentDecision, AgentExecutionDrawer, type AgentExecutionDrawerProps, AgentIcon, type AgentLocalModel, type AgentPreset, AgentPresets, type AgentPresetsProps, AgentPromptPrefixChip, type AgentPromptPrefixChipProps, type AgentResolvedContext, 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, type ApiCallConfig, ApiCallViewer, type ApiCallViewerProps, AppAuthCard, type AppAuthCardProps, AppAuthConfig, AppAuthSection, type AppAuthSectionProps, type AppAuthState, type AppAuthentication$1 as AppAuthentication, type AppDetailDrawerRenderProps, AppDetailProvider, type AppLookupResult, type AppSelectedEvent, AppTitleHeader, type AppTitleHeaderProps, AskAiButton, type AskAiButtonProps, AskAiDrawer, type AskAiDrawerProps, AskAiSidePanel, type AskAiSidePanelProps, AskAiWidget, type AskAiWidgetProps, type AuthStatus, CASES_PATTERNS, COMMUNICATION_PATTERNS_NAMES, type CategoryAutomation, type CategoryConfig, type ConnectedToolApp, type CustomStyles, DATASTORE_CATEGORIES, DEFAULT_AGENT_CONTEXT_RULES, DEFAULT_AGENT_PROMPT_PREFIX, DEMO_AGENT_RUNS, 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, LocalLLMConfig, type LocalLLMConfigProps, type LocalLLMTestResult, MAX_ASK_AI_PANEL_WIDTH, MAX_AUTO_ASSIGNED_TOOLS, MIN_ASK_AI_PANEL_WIDTH, ShuffleMarkdown as Markdown, MarkdownJsonBlock, type OutputDiagnosis, type PageContextChoice, type ResolvedApp, type ResolvedContactUserInfo, SIEM_PATTERNS, type ShuffleHostProps, type ShuffleMCPProps, ShuffleMarkdown, type ShuffleMcpColorMode, ShuffleMcpThemeProvider, type ShuffleMcpThemeProviderProps, ShufflePipelinesBanner, type ShuffleTheme, SingulActionsPreview, type SupportEscalationContext, THREAT_INTEL_PATTERNS, type ToolDrawerRenderProps, TryMcpSection, type TryMcpSectionProps, UsageBar, type UsageBarProps, type UseAgentPromptPrefixOptions, VERIFIED_BUILTIN_APPS, VULN_SCANNER_PATTERNS, type ValidatedIngestionApp, VideoEmbed, applyRegionFromPayload, buildSupportEscalationUrl, clearPageContextChoice, copyToClipboard, AgentsView as default, deleteDatastoreItem, deleteDatastoreItems, diagnoseOutputWarning, extractActionAppNames, extractValidatedIngestionApps, extractWorkflowActionAppNames, extractWorkflowAppNames, fallbackCopyText as fallbackCopyToClipboard, fetchApps, fetchAppsViaApiConfig, fetchConnectedTools, filterItemsByCategory, findForwardTicketsWorkflow, findIngestTicketsWorkflow, getActivePageEntityName, getAgentContextRules, getApiUrl, getAuthHeader, getCachedConnectedTools, getDatastoreByCategory, getDatastoreItem, getDatastoreItemPublic, getDatastorePageSize, getFailureInfo, getHostBaseUrl, getIngestionCategory, getPageContextChoice, hasOutputWarning, installClipboardPolyfill, installCryptoRandomUuidPolyfill, installFetchBreaker, invalidateAppsCache, invalidateResolvedApps, isAgentRoute, isCloud, isCloudDomain, isEmailApp, isIngestionApp, isOnprem, isShuffleCloudDomain, isShuffleSecurityBackend, isThreatIntelApp, isVulnScannerApp, isWorkflowScheduleStopped, mapCloudRegionUrl, matchRoutePattern, mergeConnectedTools, normalizeAppName, openSupportEscalation, parseRunResult, refreshAllIntegrationStatus, registerAgentContextRule, registerProtectedOrigin, resetRegionUrl, resolveAgentContext, resolveApp, resolveApps, resolveConnectedTools, resolveContactUserInfo, resolveVideoUrl, safeRandomUUID, scheduleAgentRun, searchAgentActivity, seedResolvedApp, setCachedConnectedTools, setDatastoreItem, setDatastoreItems, setHostBaseUrl, setPageContextChoice, setRegionUrl, setRuntimeOrgId, setToastImpl, shuffleFetch, toast, useAgentPromptPrefix, useAppAuth, useAppAuthFlow, useAppDetail, useAppDetailOptional, useAppLookup, useContextAwareAgent, useSyncHostBaseUrl, uuid };