@shuffleio/shuffle-mcps 0.0.60 → 0.0.63

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.
@@ -0,0 +1,155 @@
1
+ // ../Shuffle-Core/lib/analytics.ts
2
+ import ReactGA from "react-ga4";
3
+ import { isCloud } from "@shuffleio/shuffle-mcps";
4
+ var GA_MEASUREMENT_ID = "G-YSYM9JDVEE";
5
+ var _initialized = false;
6
+ function initAnalytics() {
7
+ if (_initialized) return;
8
+ if (!isCloud()) return;
9
+ if (typeof window === "undefined") return;
10
+ ReactGA.initialize(GA_MEASUREMENT_ID);
11
+ _initialized = true;
12
+ }
13
+ var canTrack = () => isCloud() && _initialized;
14
+ var GA_EVENTS = {
15
+ // Auth events
16
+ LOGIN_START: { category: "auth", action: "login_start" },
17
+ LOGIN_SUCCESS: { category: "auth", action: "login_success" },
18
+ LOGIN_FAILURE: { category: "auth", action: "login_failure" },
19
+ REGISTER_START: { category: "auth", action: "register_start" },
20
+ REGISTER_SUCCESS: { category: "auth", action: "register_success" },
21
+ LOGOUT: { category: "auth", action: "logout" },
22
+ // Onboarding events
23
+ ONBOARDING_START: { category: "onboarding", action: "onboarding_start" },
24
+ ONBOARDING_STEP: { category: "onboarding", action: "onboarding_step" },
25
+ ONBOARDING_COMPLETE: { category: "onboarding", action: "onboarding_complete" },
26
+ CHALLENGE_SELECTED: { category: "onboarding", action: "challenge_selected" },
27
+ TOOL_SELECTED: { category: "onboarding", action: "tool_selected" },
28
+ ONBOARDING_APP_CLICK: { category: "onboarding", action: "app_click" },
29
+ ONBOARDING_AUTH_TEST_SUCCESS: { category: "onboarding", action: "auth_test_success" },
30
+ ONBOARDING_AUTH_TEST_FAILURE: { category: "onboarding", action: "auth_test_failure" },
31
+ ONBOARDING_AUTOMATION_TOGGLE: { category: "onboarding", action: "automation_toggle" },
32
+ ONBOARDING_PRODUCT_CHOICE: { category: "onboarding", action: "product_choice" },
33
+ // Navigation events
34
+ CTA_CLICK: { category: "navigation", action: "cta_click" },
35
+ NAV_CLICK: { category: "navigation", action: "nav_click" },
36
+ EXTERNAL_LINK: { category: "navigation", action: "external_link" },
37
+ // Engagement events
38
+ SEARCH_USED: { category: "engagement", action: "search_used" },
39
+ CATEGORY_FILTER: { category: "engagement", action: "category_filter" },
40
+ APP_VIEWED: { category: "engagement", action: "app_viewed" },
41
+ // Conversion events
42
+ FREE_TRIAL_START: { category: "conversion", action: "free_trial_start" },
43
+ INTEGRATION_CONNECTED: { category: "conversion", action: "integration_connected" },
44
+ // Incident events
45
+ INCIDENT_AUTOMATION_CHANGE: { category: "incidents", action: "automation_change" },
46
+ INCIDENT_CREATE: { category: "incidents", action: "create" },
47
+ INCIDENT_RESOLVE: { category: "incidents", action: "resolve" },
48
+ INCIDENT_BULK_RESOLVE: { category: "incidents", action: "bulk_resolve" },
49
+ INCIDENT_SYNC: { category: "incidents", action: "sync" },
50
+ INCIDENT_INGESTION_TOGGLE: { category: "incidents", action: "ingestion_toggle" },
51
+ INCIDENT_MERGE: { category: "incidents", action: "merge" },
52
+ // Detection events
53
+ DETECTION_SENSOR_SELECT: { category: "detection", action: "sensor_select" },
54
+ DETECTION_SENSOR_CHECK: { category: "detection", action: "sensor_check" },
55
+ DETECTION_RULES_LOAD: { category: "detection", action: "rules_load" },
56
+ DETECTION_DEPLOY_CLICK: { category: "detection", action: "deploy_click" },
57
+ DETECTION_TEST_RUN: { category: "detection", action: "test_run" },
58
+ DETECTION_STEP_EXPAND: { category: "detection", action: "step_expand" },
59
+ DETECTION_ENV_CREATE: { category: "detection", action: "env_create" },
60
+ // Demo tour funnel events.
61
+ // Each fires with `label = stepId` and `value = stepIndex` so GA can build
62
+ // a step-ordinal funnel (e.g. how many users reach step 5 of the demo).
63
+ //
64
+ // Funnel layers:
65
+ // DEMO_START — user clicked "Start demo tour"
66
+ // DEMO_LIVE_ENV_* — environment bootstrap (workflows + feeds + IOCs) result
67
+ // DEMO_STEP_VIEW — user landed on a step (once per session per step)
68
+ // DEMO_STEP_ADVANCE — user clicked Next from a step (counts as "successful
69
+ // at this step" for steps without an explicit gate)
70
+ // DEMO_STEP_COMPLETE — gated step's requirement was satisfied (e.g. webhook on)
71
+ // DEMO_FORCE_CREATE_INCIDENTS — manual rescue button on the incidents step
72
+ // DEMO_FINISH — user reached the final wrap step
73
+ // DEMO_ABANDON — user closed/exited the tour before finishing
74
+ // DEMO_CLEANUP — user clicked "Clean up demo data"
75
+ // DEMO_MINIMIZE/RESTORE — drawer pill state
76
+ DEMO_START: { category: "demo", action: "demo_start" },
77
+ DEMO_LIVE_ENV_SUCCESS: { category: "demo", action: "demo_live_env_success" },
78
+ DEMO_LIVE_ENV_FAILURE: { category: "demo", action: "demo_live_env_failure" },
79
+ DEMO_STEP_VIEW: { category: "demo", action: "demo_step_view" },
80
+ DEMO_STEP_ADVANCE: { category: "demo", action: "demo_step_advance" },
81
+ DEMO_STEP_COMPLETE: { category: "demo", action: "demo_step_complete" },
82
+ DEMO_FORCE_CREATE_INCIDENTS: { category: "demo", action: "demo_force_create_incidents" },
83
+ DEMO_FINISH: { category: "demo", action: "demo_finish" },
84
+ DEMO_ABANDON: { category: "demo", action: "demo_abandon" },
85
+ DEMO_CLEANUP: { category: "demo", action: "demo_cleanup" },
86
+ DEMO_MINIMIZE: { category: "demo", action: "demo_minimize" },
87
+ DEMO_RESTORE: { category: "demo", action: "demo_restore" },
88
+ // Host monitor (Add Host) funnel events.
89
+ // OPEN — user opened the Add Host dialog
90
+ // DEPLOY — advanced from "checks" to "deploy" step (saw the install command)
91
+ // DETECTED — sensor actually checked in while the dialog was open (success)
92
+ // DISMISS — dialog closed (or page unmounted) without a successful detection (abandonment)
93
+ // Together these form a 4-step funnel: OPEN → DEPLOY → DETECTED, with DISMISS as the abandonment counter.
94
+ MONITOR_ADD_HOST_OPEN: { category: "monitors", action: "add_host_open" },
95
+ MONITOR_ADD_HOST_DEPLOY: { category: "monitors", action: "add_host_deploy" },
96
+ MONITOR_ADD_HOST_DETECTED: { category: "monitors", action: "add_host_detected" },
97
+ MONITOR_ADD_HOST_DISMISS: { category: "monitors", action: "add_host_dismiss" }
98
+ };
99
+ function trackEvent({ category, action, label, value, custom }) {
100
+ if (!canTrack()) return;
101
+ ReactGA.event(action, {
102
+ event_category: category,
103
+ event_label: label,
104
+ value,
105
+ ...custom
106
+ });
107
+ }
108
+ function trackPredefinedEvent(event, label, value, custom) {
109
+ trackEvent({
110
+ category: event.category,
111
+ action: event.action,
112
+ label,
113
+ value,
114
+ custom
115
+ });
116
+ }
117
+ function trackPageView(path, title) {
118
+ if (!canTrack()) return;
119
+ ReactGA.send({
120
+ hitType: "pageview",
121
+ page: path,
122
+ title: title || (typeof document !== "undefined" ? document.title : void 0)
123
+ });
124
+ }
125
+ function trackCTA(ctaName, location) {
126
+ trackPredefinedEvent(GA_EVENTS.CTA_CLICK, ctaName, void 0, {
127
+ cta_location: location
128
+ });
129
+ }
130
+ function trackOnboardingStep(stepNumber, stepName) {
131
+ trackPredefinedEvent(GA_EVENTS.ONBOARDING_STEP, stepName, stepNumber);
132
+ }
133
+ function trackReferralParams() {
134
+ if (typeof window === "undefined") return;
135
+ const params = new URLSearchParams(window.location.search);
136
+ const utmContent = params.get("utm_content");
137
+ const shuffleRef = params.get("shuffle_ref");
138
+ if (utmContent) {
139
+ trackEvent({ category: "navigation", action: "utm_content", label: utmContent });
140
+ }
141
+ if (shuffleRef) {
142
+ trackEvent({ category: "navigation", action: "shuffle_ref", label: shuffleRef });
143
+ }
144
+ }
145
+
146
+ export {
147
+ initAnalytics,
148
+ GA_EVENTS,
149
+ trackEvent,
150
+ trackPredefinedEvent,
151
+ trackPageView,
152
+ trackCTA,
153
+ trackOnboardingStep,
154
+ trackReferralParams
155
+ };
@@ -552,6 +552,12 @@ var isCapacitorNative = () => {
552
552
  const cap = window.Capacitor;
553
553
  return Boolean(cap?.isNativePlatform && cap.isNativePlatform());
554
554
  };
555
+ var isIos = () => {
556
+ return getPlatform() === "ios";
557
+ };
558
+ var isAndroid = () => {
559
+ return getPlatform() === "android";
560
+ };
555
561
  var isIosWebView = () => {
556
562
  if (typeof window === "undefined") return false;
557
563
  const cap = window.Capacitor;
@@ -813,7 +819,8 @@ var resetRegionUrl = () => {
813
819
  };
814
820
  var SHUFFLE_HOST_BASE_URL_EVENT = "shuffle:set-host-base-url";
815
821
  var setHostBaseUrl = (url) => {
816
- const next = url ? url.replace(/\/+$/, "") : null;
822
+ let next = url ? url.replace(/\/+$/, "") : null;
823
+ if (next && isShuffleCloudDomain(next) && !isDevEnvironment()) next = null;
817
824
  if (next === _hostBaseUrl) return;
818
825
  _hostBaseUrl = next;
819
826
  if (next) {
@@ -996,67 +1003,18 @@ var hasShuffleAuth = () => {
996
1003
  }
997
1004
  };
998
1005
 
999
- // appsCache.ts
1000
- var TTL_MS = 3e4;
1001
- var ERROR_TTL_MS = 3e4;
1002
- var cache = /* @__PURE__ */ new Map();
1003
- var cacheKey = (o) => `${o.baseUrl}|${o.path || "/api/v1/apps"}|${o.apiKey || ""}|${o.orgId || ""}`;
1004
- var doFetch = async (o) => {
1005
- const headers = {
1006
- ...getAuthHeader(o.orgId || void 0)
1007
- };
1008
- if (o.apiKey) headers["Authorization"] = `Bearer ${o.apiKey}`;
1009
- if (o.orgId) headers["Org-Id"] = o.orgId;
1010
- const response = await fetch(`${o.baseUrl}${o.path || "/api/v1/apps"}`, {
1011
- credentials: "include",
1012
- headers
1013
- });
1014
- if (!response.ok) return [];
1015
- const data = await response.json();
1016
- if (Array.isArray(data)) return data;
1017
- return Array.isArray(data?.data) ? data.data : [];
1018
- };
1019
- var fetchApps = (opts) => {
1020
- const key = cacheKey(opts);
1021
- const entry = cache.get(key) || {};
1022
- if (entry.data && entry.fetchedAt && Date.now() - entry.fetchedAt < TTL_MS) {
1023
- return Promise.resolve(entry.data);
1024
- }
1025
- if (entry.promise) return entry.promise;
1026
- const promise = doFetch(opts).then((data) => {
1027
- cache.set(key, { data, fetchedAt: Date.now() });
1028
- return data;
1029
- }).catch(() => {
1030
- cache.set(key, { data: [], fetchedAt: Date.now() - (TTL_MS - ERROR_TTL_MS) });
1031
- return [];
1032
- });
1033
- cache.set(key, { ...entry, promise });
1034
- return promise;
1035
- };
1036
- var invalidateAppsCache = (opts) => {
1037
- if (!opts) {
1038
- cache.clear();
1039
- return;
1040
- }
1041
- cache.delete(cacheKey(opts));
1042
- };
1043
- var fetchAppsViaApiConfig = () => {
1044
- const headers = getAuthHeader();
1045
- const orgId = headers["Org-Id"] || null;
1046
- return fetchApps({
1047
- baseUrl: API_CONFIG.baseUrl,
1048
- apiKey: API_CONFIG.apiKey,
1049
- orgId
1050
- });
1051
- };
1052
-
1053
1006
  export {
1054
1007
  resolveProductLink,
1055
1008
  registerProtectedOrigin,
1056
1009
  installFetchBreaker,
1057
1010
  isCapacitorNative,
1011
+ isIos,
1012
+ isAndroid,
1013
+ isIosWebView,
1014
+ isAndroidWebView,
1058
1015
  isShuffleCloudDomain,
1059
1016
  mapCloudRegionUrl,
1017
+ isDevEnvironment,
1060
1018
  isCloudDomain,
1061
1019
  isCloud,
1062
1020
  isOnprem,
@@ -1066,13 +1024,11 @@ export {
1066
1024
  setHostBaseUrl,
1067
1025
  getHostBaseUrl,
1068
1026
  getTrackedOrgId,
1027
+ getSessionToken,
1069
1028
  isShuffleSecurityBackend,
1070
1029
  API_CONFIG,
1071
1030
  getApiUrl,
1072
1031
  shuffleFetch,
1073
1032
  getAuthHeader,
1074
- hasShuffleAuth,
1075
- fetchApps,
1076
- invalidateAppsCache,
1077
- fetchAppsViaApiConfig
1033
+ hasShuffleAuth
1078
1034
  };
@@ -0,0 +1,27 @@
1
+ import {
2
+ DATASTORE_CATEGORIES,
3
+ deleteDatastoreItem,
4
+ deleteDatastoreItems,
5
+ filterItemsByCategory,
6
+ getDatastoreByCategory,
7
+ getDatastoreItem,
8
+ getDatastoreItemPublic,
9
+ getDatastorePageSize,
10
+ setDatastoreItem,
11
+ setDatastoreItems,
12
+ setRuntimeOrgId
13
+ } from "./chunk-QC2DO6WV.mjs";
14
+ import "./chunk-XNE7PKME.mjs";
15
+ export {
16
+ DATASTORE_CATEGORIES,
17
+ deleteDatastoreItem,
18
+ deleteDatastoreItems,
19
+ filterItemsByCategory,
20
+ getDatastoreByCategory,
21
+ getDatastoreItem,
22
+ getDatastoreItemPublic,
23
+ getDatastorePageSize,
24
+ setDatastoreItem,
25
+ setDatastoreItems,
26
+ setRuntimeOrgId
27
+ };
package/dist/index.d.mts CHANGED
@@ -136,6 +136,8 @@ interface AppAuthentication$1 {
136
136
  id: string;
137
137
  name: string;
138
138
  large_image: string;
139
+ categories?: string[];
140
+ description?: string;
139
141
  };
140
142
  fields: Array<{
141
143
  key: string;
@@ -149,6 +151,7 @@ interface AppAuthentication$1 {
149
151
  /** Whether the authentication has been validated (tests ran successfully) */
150
152
  valid: boolean;
151
153
  error?: string;
154
+ last_valid?: number;
152
155
  };
153
156
  }
154
157
  interface ShuffleMCPProps extends ShuffleHostProps {
@@ -390,6 +393,8 @@ interface AppDetailContentProps extends ShuffleHostProps {
390
393
  appName: string | null;
391
394
  /** Pre-resolved Algolia objectID (optional fast path) */
392
395
  appId?: string | null;
396
+ /** Pre-resolved app icon/image (optional fast path from chip/picker) */
397
+ appImage?: string | null;
393
398
  /** Callback to close the view (drawer mode) */
394
399
  onClose?: () => void;
395
400
  /** Callback when data is refreshed */
@@ -478,6 +483,12 @@ interface AppTitleHeaderProps extends ShuffleHostProps {
478
483
  activateLoading?: boolean;
479
484
  /** Called when user clicks Activate/Deactivate. */
480
485
  onActivateToggle?: () => void;
486
+ /** Ingestion state — `null` or undefined hides the Ingest button. */
487
+ isIngestEnabled?: boolean | null;
488
+ /** Whether ingestion toggle is in-flight. */
489
+ ingestLoading?: boolean;
490
+ /** Called when user clicks Enable ingest / Ingest enabled. */
491
+ onIngestToggle?: () => void;
481
492
  /** When true, visually highlight the Activate button to signal an
482
493
  * automatic click is happening (e.g. from a usecase auto-activate flow). */
483
494
  highlightActivate?: boolean;
@@ -1229,6 +1240,34 @@ interface AskAiWidgetProps extends Omit<AskAiSidePanelProps, 'open' | 'onClose'>
1229
1240
  */
1230
1241
  declare const useContextAwareAgent: (pathname?: string, search?: string) => AgentResolvedContext;
1231
1242
 
1243
+ /**
1244
+ * ApiCallViewer — Standardized, compact API call inspector and test runner.
1245
+ * Used across App Integrations and Documentation.
1246
+ *
1247
+ * Supports switching between cURL, Python, HTTP, and JSON payload inspection,
1248
+ * live testing via Shuffle HTTP app, and collapsible JSON parsing via JsonView.
1249
+ */
1250
+
1251
+ interface ApiCallConfig {
1252
+ method: string;
1253
+ url: string;
1254
+ headers?: Record<string, string>;
1255
+ body?: unknown;
1256
+ }
1257
+ type SnippetLang = 'curl' | 'python' | 'http' | 'json';
1258
+ interface ApiCallViewerProps extends ShuffleHostProps {
1259
+ /** Structured API call configuration */
1260
+ config?: ApiCallConfig;
1261
+ /** Raw cURL command string (e.g. from documentation markdown) */
1262
+ rawCurl?: string;
1263
+ /** Whether to mask the Authorization header value in display (default: true) */
1264
+ maskAuth?: boolean;
1265
+ /** Initial selected tab mode (default: 'curl') */
1266
+ defaultMode?: SnippetLang;
1267
+ /** Title displayed in the header (default: 'API Call') */
1268
+ title?: string;
1269
+ }
1270
+
1232
1271
  /**
1233
1272
  * API Configuration
1234
1273
  *
@@ -1926,6 +1965,8 @@ interface DatastoreResponse {
1926
1965
  totalAmount?: number;
1927
1966
  error?: string;
1928
1967
  diagnostics?: DatastoreDiagnostics;
1968
+ /** Raw items count from backend before client-side cross-category filtering */
1969
+ rawItemCount?: number;
1929
1970
  /** Per-key write result reported by the backend (v2 datastore writes). */
1930
1971
  keysExisted?: DatastoreKeyExisted[];
1931
1972
  /** True when the backend reports the stored value actually changed. */
@@ -1942,6 +1983,7 @@ interface DatastoreDiagnostics {
1942
1983
  contentType?: string | null;
1943
1984
  responseShape?: 'array' | 'keys' | 'data' | 'object' | 'unknown';
1944
1985
  itemCount?: number;
1986
+ rawItemCount?: number;
1945
1987
  totalAmount?: number | null;
1946
1988
  bodyPreview?: string;
1947
1989
  errorStage?: 'request' | 'response' | 'parse' | 'unknown';
@@ -1977,6 +2019,17 @@ declare const getDatastoreItemPublic: (key: string, orgId: string, authorization
1977
2019
  item?: DatastoreItem;
1978
2020
  }>;
1979
2021
  /**
2022
+ * Defensively filters items returned by datastore list APIs.
2023
+ * The Shuffle Core backend's list_cache API filters the category field with an
2024
+ * analyzed match query instead of an exact term match, causing cross-category
2025
+ * contamination among categories sharing prefixes (e.g. shuffle-security_*).
2026
+ * If an item explicitly carries a `category` property, ensure it matches the
2027
+ * requested category (or known aliases for vulns). Items without a category
2028
+ * property are preserved for backwards compatibility with legacy payloads.
2029
+ */
2030
+ declare const filterItemsByCategory: <T extends {
2031
+ category?: string;
2032
+ }>(items: T[], category: string) => T[];
1980
2033
  /**
1981
2034
  * Page size used for a category. Exported so callers that follow cursors can
1982
2035
  * tell a full page (more data may exist) from a short page (definitively the
@@ -2323,6 +2376,8 @@ declare const AskAiSidePanel: React__default.ComponentType<any>;
2323
2376
 
2324
2377
  declare const AskAiWidget: React__default.ComponentType<any>;
2325
2378
 
2379
+ declare const ApiCallViewer: React__default.ComponentType<any>;
2380
+
2326
2381
  declare const AgentActivityList: React__default.ComponentType<any>;
2327
2382
 
2328
2383
  declare const AgentExecutionDrawer: React__default.ComponentType<any>;
@@ -2334,4 +2389,4 @@ declare const LocalLLMConfig: React__default.ComponentType<any>;
2334
2389
 
2335
2390
  declare const AddAppModal: React__default.ComponentType<any>;
2336
2391
 
2337
- 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, 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, 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 };
2392
+ 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 };
package/dist/index.d.ts CHANGED
@@ -136,6 +136,8 @@ interface AppAuthentication$1 {
136
136
  id: string;
137
137
  name: string;
138
138
  large_image: string;
139
+ categories?: string[];
140
+ description?: string;
139
141
  };
140
142
  fields: Array<{
141
143
  key: string;
@@ -149,6 +151,7 @@ interface AppAuthentication$1 {
149
151
  /** Whether the authentication has been validated (tests ran successfully) */
150
152
  valid: boolean;
151
153
  error?: string;
154
+ last_valid?: number;
152
155
  };
153
156
  }
154
157
  interface ShuffleMCPProps extends ShuffleHostProps {
@@ -390,6 +393,8 @@ interface AppDetailContentProps extends ShuffleHostProps {
390
393
  appName: string | null;
391
394
  /** Pre-resolved Algolia objectID (optional fast path) */
392
395
  appId?: string | null;
396
+ /** Pre-resolved app icon/image (optional fast path from chip/picker) */
397
+ appImage?: string | null;
393
398
  /** Callback to close the view (drawer mode) */
394
399
  onClose?: () => void;
395
400
  /** Callback when data is refreshed */
@@ -478,6 +483,12 @@ interface AppTitleHeaderProps extends ShuffleHostProps {
478
483
  activateLoading?: boolean;
479
484
  /** Called when user clicks Activate/Deactivate. */
480
485
  onActivateToggle?: () => void;
486
+ /** Ingestion state — `null` or undefined hides the Ingest button. */
487
+ isIngestEnabled?: boolean | null;
488
+ /** Whether ingestion toggle is in-flight. */
489
+ ingestLoading?: boolean;
490
+ /** Called when user clicks Enable ingest / Ingest enabled. */
491
+ onIngestToggle?: () => void;
481
492
  /** When true, visually highlight the Activate button to signal an
482
493
  * automatic click is happening (e.g. from a usecase auto-activate flow). */
483
494
  highlightActivate?: boolean;
@@ -1229,6 +1240,34 @@ interface AskAiWidgetProps extends Omit<AskAiSidePanelProps, 'open' | 'onClose'>
1229
1240
  */
1230
1241
  declare const useContextAwareAgent: (pathname?: string, search?: string) => AgentResolvedContext;
1231
1242
 
1243
+ /**
1244
+ * ApiCallViewer — Standardized, compact API call inspector and test runner.
1245
+ * Used across App Integrations and Documentation.
1246
+ *
1247
+ * Supports switching between cURL, Python, HTTP, and JSON payload inspection,
1248
+ * live testing via Shuffle HTTP app, and collapsible JSON parsing via JsonView.
1249
+ */
1250
+
1251
+ interface ApiCallConfig {
1252
+ method: string;
1253
+ url: string;
1254
+ headers?: Record<string, string>;
1255
+ body?: unknown;
1256
+ }
1257
+ type SnippetLang = 'curl' | 'python' | 'http' | 'json';
1258
+ interface ApiCallViewerProps extends ShuffleHostProps {
1259
+ /** Structured API call configuration */
1260
+ config?: ApiCallConfig;
1261
+ /** Raw cURL command string (e.g. from documentation markdown) */
1262
+ rawCurl?: string;
1263
+ /** Whether to mask the Authorization header value in display (default: true) */
1264
+ maskAuth?: boolean;
1265
+ /** Initial selected tab mode (default: 'curl') */
1266
+ defaultMode?: SnippetLang;
1267
+ /** Title displayed in the header (default: 'API Call') */
1268
+ title?: string;
1269
+ }
1270
+
1232
1271
  /**
1233
1272
  * API Configuration
1234
1273
  *
@@ -1926,6 +1965,8 @@ interface DatastoreResponse {
1926
1965
  totalAmount?: number;
1927
1966
  error?: string;
1928
1967
  diagnostics?: DatastoreDiagnostics;
1968
+ /** Raw items count from backend before client-side cross-category filtering */
1969
+ rawItemCount?: number;
1929
1970
  /** Per-key write result reported by the backend (v2 datastore writes). */
1930
1971
  keysExisted?: DatastoreKeyExisted[];
1931
1972
  /** True when the backend reports the stored value actually changed. */
@@ -1942,6 +1983,7 @@ interface DatastoreDiagnostics {
1942
1983
  contentType?: string | null;
1943
1984
  responseShape?: 'array' | 'keys' | 'data' | 'object' | 'unknown';
1944
1985
  itemCount?: number;
1986
+ rawItemCount?: number;
1945
1987
  totalAmount?: number | null;
1946
1988
  bodyPreview?: string;
1947
1989
  errorStage?: 'request' | 'response' | 'parse' | 'unknown';
@@ -1977,6 +2019,17 @@ declare const getDatastoreItemPublic: (key: string, orgId: string, authorization
1977
2019
  item?: DatastoreItem;
1978
2020
  }>;
1979
2021
  /**
2022
+ * Defensively filters items returned by datastore list APIs.
2023
+ * The Shuffle Core backend's list_cache API filters the category field with an
2024
+ * analyzed match query instead of an exact term match, causing cross-category
2025
+ * contamination among categories sharing prefixes (e.g. shuffle-security_*).
2026
+ * If an item explicitly carries a `category` property, ensure it matches the
2027
+ * requested category (or known aliases for vulns). Items without a category
2028
+ * property are preserved for backwards compatibility with legacy payloads.
2029
+ */
2030
+ declare const filterItemsByCategory: <T extends {
2031
+ category?: string;
2032
+ }>(items: T[], category: string) => T[];
1980
2033
  /**
1981
2034
  * Page size used for a category. Exported so callers that follow cursors can
1982
2035
  * tell a full page (more data may exist) from a short page (definitively the
@@ -2323,6 +2376,8 @@ declare const AskAiSidePanel: React__default.ComponentType<any>;
2323
2376
 
2324
2377
  declare const AskAiWidget: React__default.ComponentType<any>;
2325
2378
 
2379
+ declare const ApiCallViewer: React__default.ComponentType<any>;
2380
+
2326
2381
  declare const AgentActivityList: React__default.ComponentType<any>;
2327
2382
 
2328
2383
  declare const AgentExecutionDrawer: React__default.ComponentType<any>;
@@ -2334,4 +2389,4 @@ declare const LocalLLMConfig: React__default.ComponentType<any>;
2334
2389
 
2335
2390
  declare const AddAppModal: React__default.ComponentType<any>;
2336
2391
 
2337
- 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, 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, 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 };
2392
+ 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 };