@shuffleio/shuffle-mcps 0.0.8 → 0.0.9
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.cjs +3200 -1078
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +153 -14
- package/dist/index.d.ts +153 -14
- package/dist/index.js +3079 -962
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -276,8 +276,26 @@ interface AppSearchDrawerProps {
|
|
|
276
276
|
highlightAppName?: string;
|
|
277
277
|
/** Delay before the highlight kicks in (default 5000ms) */
|
|
278
278
|
highlightDelayMs?: number;
|
|
279
|
+
/** Enable multi-select: clicking apps toggles them in/out of the selection,
|
|
280
|
+
* drawer stays open, and the picker shows checkboxes + a primary-bordered
|
|
281
|
+
* highlight on already-chosen rows. */
|
|
282
|
+
multiSelect?: boolean;
|
|
283
|
+
/** Currently chosen apps (used to highlight rows in multi-select mode).
|
|
284
|
+
* Match is by objectID first, then by normalized name. */
|
|
285
|
+
selectedApps?: Array<{
|
|
286
|
+
name: string;
|
|
287
|
+
id?: string | null;
|
|
288
|
+
icon?: string;
|
|
289
|
+
}>;
|
|
290
|
+
/** Fires whenever the selection changes in multi-select mode. */
|
|
291
|
+
onSelectionChange?: (apps: Array<{
|
|
292
|
+
name: string;
|
|
293
|
+
id: string | null;
|
|
294
|
+
icon: string;
|
|
295
|
+
categories: string[];
|
|
296
|
+
}>) => void;
|
|
279
297
|
}
|
|
280
|
-
declare function AppSearchDrawer({ open, onClose, initialQuery, title, subtitle, anchor, width, showPipelinesBanner, onQuickSelect, onSelectOverride, onDetailClose, onAddToCanvas, priorityCategory, connectionPathApps, pinnedApps, highlightAppName, highlightDelayMs, }: AppSearchDrawerProps): react_jsx_runtime.JSX.Element;
|
|
298
|
+
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;
|
|
281
299
|
|
|
282
300
|
declare function ShufflePipelinesBanner(): react_jsx_runtime.JSX.Element;
|
|
283
301
|
|
|
@@ -354,20 +372,15 @@ interface TryMcpSectionProps {
|
|
|
354
372
|
}
|
|
355
373
|
declare function TryMcpSection({ appName, appIcon, appId, categories }: TryMcpSectionProps): react_jsx_runtime.JSX.Element;
|
|
356
374
|
|
|
357
|
-
|
|
358
|
-
* SingulActionsPreview — Standalone "Try individual actions" block.
|
|
359
|
-
*
|
|
360
|
-
* Renders the action picker (grouped by category), curl/python toggle,
|
|
361
|
-
* editable snippet, Play button (calls Shuffle Tools `execute_python` or
|
|
362
|
-
* the http app `curl` action) and a response area that streams in.
|
|
363
|
-
*
|
|
364
|
-
* Self-contained — pass in the app name + categories. Optionally pass
|
|
365
|
-
* `activeOrgId` so multi-org curl previews include the right Org-Id header.
|
|
366
|
-
*/
|
|
367
|
-
declare const SingulActionsPreview: ({ appName, categories, activeOrgId, }: {
|
|
375
|
+
declare const SingulActionsPreview: ({ appName, appIcon, categories, activeOrgId, onAuthenticate, }: {
|
|
368
376
|
appName: string;
|
|
377
|
+
appIcon?: string;
|
|
369
378
|
categories?: string[];
|
|
370
379
|
activeOrgId?: string | null;
|
|
380
|
+
/** Optional click handler invoked when the user presses the
|
|
381
|
+
* "Authenticate {App}" button surfaced after an
|
|
382
|
+
* `action: "app_authentication"` response. */
|
|
383
|
+
onAuthenticate?: (appName: string) => void;
|
|
371
384
|
}) => react_jsx_runtime.JSX.Element;
|
|
372
385
|
|
|
373
386
|
/**
|
|
@@ -486,6 +499,20 @@ interface AgentUIProps {
|
|
|
486
499
|
}) => void;
|
|
487
500
|
/** Called whenever the active top-level view changes (start / simple / detailed). */
|
|
488
501
|
onViewChange?: (view: 'start' | 'simple' | 'detailed') => void;
|
|
502
|
+
/**
|
|
503
|
+
* Called when the user saves a recurring schedule (cron expression) for the
|
|
504
|
+
* current prompt. When omitted, a toast is shown indicating scheduling is
|
|
505
|
+
* not wired up in this embed.
|
|
506
|
+
*/
|
|
507
|
+
onSchedule?: (info: {
|
|
508
|
+
cron: string;
|
|
509
|
+
input: string;
|
|
510
|
+
onStep?: (event: {
|
|
511
|
+
id: 'name' | 'workflow' | 'schedule';
|
|
512
|
+
state: 'active' | 'done' | 'error';
|
|
513
|
+
detail?: string;
|
|
514
|
+
}) => void;
|
|
515
|
+
}) => void | Promise<void>;
|
|
489
516
|
/**
|
|
490
517
|
* Optional Shuffle API key. When provided, all `/api/v1/*` calls made by
|
|
491
518
|
* this component (agent run, polling, app autoload, icon fallback) use it
|
|
@@ -689,8 +716,79 @@ interface AgentExecutionDrawerProps {
|
|
|
689
716
|
headerSx?: SxProps<Theme>;
|
|
690
717
|
/** Style overrides for the body container that wraps the embedded AgentUI. */
|
|
691
718
|
bodySx?: SxProps<Theme>;
|
|
719
|
+
/** Optional content rendered at the top of the body, before the embedded
|
|
720
|
+
* AgentUI. Use this to inject a shared "Needs attention" / failure
|
|
721
|
+
* diagnosis banner so the drawer mirrors the timeline status pill. */
|
|
722
|
+
topBanner?: React.ReactNode;
|
|
723
|
+
/** Handler for scheduling the loaded agent prompt from the execution view. */
|
|
724
|
+
onSchedule?: AgentUIProps['onSchedule'];
|
|
692
725
|
}
|
|
693
|
-
declare const AgentExecutionDrawer: ({ open, onClose, run, width, apiKey, apiBaseUrl, orgId, className, paperSx, headerSx, bodySx, }: AgentExecutionDrawerProps) => react_jsx_runtime.JSX.Element;
|
|
726
|
+
declare const AgentExecutionDrawer: ({ open, onClose, run, width, apiKey, apiBaseUrl, orgId, className, paperSx, headerSx, bodySx, topBanner, onSchedule, }: AgentExecutionDrawerProps) => react_jsx_runtime.JSX.Element;
|
|
727
|
+
|
|
728
|
+
/**
|
|
729
|
+
* Shared diagnosis utilities for an agent execution result.
|
|
730
|
+
*
|
|
731
|
+
* Lives in the Shuffle-MCPs lib so every surface that displays an agent run
|
|
732
|
+
* (AgentUI Simple/Detailed view, AgentExecutionDrawer, the incident-side
|
|
733
|
+
* AgentRunResultViewer, the activity feed status pill, ...) uses the EXACT
|
|
734
|
+
* same logic to decide whether the run "needs review" and what to tell the
|
|
735
|
+
* user about it.
|
|
736
|
+
*
|
|
737
|
+
* Pure logic — no React, no MUI, no project-side imports.
|
|
738
|
+
*/
|
|
739
|
+
/** Minimal run shape the diagnoser needs. Compatible with AgentRun and
|
|
740
|
+
* AgentUI's internal ExecutionData. */
|
|
741
|
+
interface DiagnosableRun {
|
|
742
|
+
status?: string;
|
|
743
|
+
results?: Array<{
|
|
744
|
+
result?: string;
|
|
745
|
+
} | any> | null;
|
|
746
|
+
}
|
|
747
|
+
/** Try to parse the result JSON from results[0].result, unwrapping AGENT-type executions. */
|
|
748
|
+
declare const parseRunResult: (run: DiagnosableRun) => {
|
|
749
|
+
raw: string | null;
|
|
750
|
+
parsed: any | null;
|
|
751
|
+
};
|
|
752
|
+
/** Extract failure info from a failed/aborted run. */
|
|
753
|
+
declare const getFailureInfo: (run: DiagnosableRun) => {
|
|
754
|
+
reason: string;
|
|
755
|
+
} | null;
|
|
756
|
+
/** Detect if the output content hints at an error/failure even if the run
|
|
757
|
+
* status is "finished". Only returns true when `diagnoseOutputWarning`
|
|
758
|
+
* would produce a concrete, actionable diagnosis — never on vague keyword
|
|
759
|
+
* matches alone. */
|
|
760
|
+
declare const hasOutputWarning: (run: DiagnosableRun) => boolean;
|
|
761
|
+
type DiagnosisEvidence = {
|
|
762
|
+
/** Dotted JSON path inside the parsed run result. */
|
|
763
|
+
path: string;
|
|
764
|
+
/** Trimmed snippet of the value at that path. */
|
|
765
|
+
value: string;
|
|
766
|
+
};
|
|
767
|
+
type OutputDiagnosis = {
|
|
768
|
+
kind: 'auth' | 'permission' | 'not_found' | 'rate_limit' | 'network' | 'validation' | 'generic';
|
|
769
|
+
status?: number;
|
|
770
|
+
title: string;
|
|
771
|
+
explanation: string;
|
|
772
|
+
remediation: string;
|
|
773
|
+
snippet?: string;
|
|
774
|
+
evidence: DiagnosisEvidence[];
|
|
775
|
+
};
|
|
776
|
+
declare const diagnoseOutputWarning: (run: DiagnosableRun) => OutputDiagnosis | null;
|
|
777
|
+
|
|
778
|
+
interface Props {
|
|
779
|
+
run: DiagnosableRun | null | undefined;
|
|
780
|
+
/** Outer padding wrapper. Defaults to `{ px: 2.5, pb: 0.5 }`. */
|
|
781
|
+
sx?: Record<string, unknown>;
|
|
782
|
+
/** When provided, the banner becomes clickable and asks the host to jump
|
|
783
|
+
* to the underlying decision (e.g. switch to the detailed timeline,
|
|
784
|
+
* expand that row, scroll to it). */
|
|
785
|
+
onJumpToEvidence?: (decisionIndex: number) => void;
|
|
786
|
+
/** Stable id used to persist dismissals per-execution. Falls back to
|
|
787
|
+
* `run.execution_id` if present. When neither is available, dismiss
|
|
788
|
+
* still works for the current mount but is not persisted. */
|
|
789
|
+
executionId?: string;
|
|
790
|
+
}
|
|
791
|
+
declare const AgentRunDiagnosisBanner: ({ run, sx, onJumpToEvidence, executionId }: Props) => react_jsx_runtime.JSX.Element;
|
|
694
792
|
|
|
695
793
|
/**
|
|
696
794
|
* useAppLookup — Resolve an app's display name, image, categories,
|
|
@@ -728,6 +826,47 @@ interface AppLookupResult {
|
|
|
728
826
|
}
|
|
729
827
|
declare function useAppLookup(appName: string | null): AppLookupResult;
|
|
730
828
|
|
|
829
|
+
/**
|
|
830
|
+
* resolveApp — General-purpose app resolver.
|
|
831
|
+
*
|
|
832
|
+
* Given an app id OR name, look it up across all three known sources and
|
|
833
|
+
* return a unified `{ id, name, image }` triple. Used anywhere we need to
|
|
834
|
+
* render an app chip/icon and only have a free-form identifier (decision
|
|
835
|
+
* `tool`, auth-request `appName`, `app_authentication` payload, etc.).
|
|
836
|
+
*
|
|
837
|
+
* Resolution order (each pass merges in any newly-found fields, so we keep
|
|
838
|
+
* going until id/name/image are all known or all sources are exhausted):
|
|
839
|
+
* 1. /api/v1/apps/authentication — covers user-installed/active apps,
|
|
840
|
+
* including private ones that may not be in the public catalog.
|
|
841
|
+
* 2. /api/v1/apps — covers everything visible to the org (activated
|
|
842
|
+
* and private uploads).
|
|
843
|
+
* 3. Algolia `appsearch` — canonical objectID + public catalog metadata.
|
|
844
|
+
*
|
|
845
|
+
* Results are cached in-memory by normalized key so repeat lookups for the
|
|
846
|
+
* same name/id are free.
|
|
847
|
+
*/
|
|
848
|
+
interface ResolvedApp {
|
|
849
|
+
/** Canonical id — Algolia objectID when known, otherwise Shuffle app id. */
|
|
850
|
+
id: string;
|
|
851
|
+
/** Display name (may be raw slug if no source had a friendly name). */
|
|
852
|
+
name: string;
|
|
853
|
+
/** Best available large image URL. Empty string if not found. */
|
|
854
|
+
image: string;
|
|
855
|
+
/** Categories from whichever source provided them. */
|
|
856
|
+
categories?: string[];
|
|
857
|
+
}
|
|
858
|
+
/**
|
|
859
|
+
* Resolve an app from id-or-name across auth + apps + Algolia.
|
|
860
|
+
* Returns `null` only if all three sources came back empty.
|
|
861
|
+
*/
|
|
862
|
+
declare function resolveApp(idOrName: string): Promise<ResolvedApp | null>;
|
|
863
|
+
/** Resolve many at once — convenience wrapper. */
|
|
864
|
+
declare function resolveApps(idsOrNames: string[]): Promise<Record<string, ResolvedApp>>;
|
|
865
|
+
/** Seed the cache (e.g. from chosenApps that already carry an icon). */
|
|
866
|
+
declare function seedResolvedApp(idOrName: string, app: Partial<ResolvedApp>): void;
|
|
867
|
+
/** Clear the resolver cache (e.g. on org change). */
|
|
868
|
+
declare function invalidateResolvedApps(): void;
|
|
869
|
+
|
|
731
870
|
interface IntegrationStatusProps {
|
|
732
871
|
collapsed: boolean;
|
|
733
872
|
/** When provided, only show integrations whose name is in this list */
|
|
@@ -830,4 +969,4 @@ type ToastApi = ((arg: ToastArg, opts?: ToastOptions) => void) & {
|
|
|
830
969
|
};
|
|
831
970
|
declare const toast: ToastApi;
|
|
832
971
|
|
|
833
|
-
export { API_CONFIG, AgentActivityList, type AgentActivityListProps, type AgentActivityParams, type AgentActivityResponse, type AgentDecision, AgentExecutionDrawer, type AgentExecutionDrawerProps, type AgentRun, AgentRunDrawer, type AgentRunDrawerProps, type AgentRunDrawerTab, type AgentRunResult, AgentUI, type AgentUIApp, type AgentUIProps, type AlgoliaSearchApp, AppAuthSection, type AppAuthSectionProps, type AppAuthentication, AppDetailDrawer, AppDetailProvider, type AppLookupResult, AppSearchDrawer, type AppSelectedEvent, AppTitleHeader, type AppTitleHeaderProps, type CustomStyles, IntegrationStatus, ShuffleMCP, type ShuffleMCPHandle, type ShuffleMCPProps, ShufflePipelinesBanner, SingulActionsPreview, TryMcpSection, type TryMcpSectionProps, ShuffleMCP as default, getApiUrl, getAuthHeader, refreshAllIntegrationStatus, searchAgentActivity, setToastImpl, toast, useAppAuth, useAppDetail, useAppLookup };
|
|
972
|
+
export { API_CONFIG, AgentActivityList, type AgentActivityListProps, type AgentActivityParams, type AgentActivityResponse, type AgentDecision, AgentExecutionDrawer, type AgentExecutionDrawerProps, type AgentRun, AgentRunDiagnosisBanner, AgentRunDrawer, type AgentRunDrawerProps, type AgentRunDrawerTab, type AgentRunResult, AgentUI, type AgentUIApp, type AgentUIProps, type AlgoliaSearchApp, AppAuthSection, type AppAuthSectionProps, type AppAuthentication, AppDetailDrawer, AppDetailProvider, type AppLookupResult, AppSearchDrawer, type AppSelectedEvent, AppTitleHeader, type AppTitleHeaderProps, type CustomStyles, type DiagnosableRun, type DiagnosisEvidence, IntegrationStatus, type OutputDiagnosis, type ResolvedApp, ShuffleMCP, type ShuffleMCPHandle, type ShuffleMCPProps, ShufflePipelinesBanner, SingulActionsPreview, TryMcpSection, type TryMcpSectionProps, ShuffleMCP as default, diagnoseOutputWarning, getApiUrl, getAuthHeader, getFailureInfo, hasOutputWarning, invalidateResolvedApps, parseRunResult, refreshAllIntegrationStatus, resolveApp, resolveApps, searchAgentActivity, seedResolvedApp, setToastImpl, toast, useAppAuth, useAppDetail, useAppLookup };
|
package/dist/index.d.ts
CHANGED
|
@@ -276,8 +276,26 @@ interface AppSearchDrawerProps {
|
|
|
276
276
|
highlightAppName?: string;
|
|
277
277
|
/** Delay before the highlight kicks in (default 5000ms) */
|
|
278
278
|
highlightDelayMs?: number;
|
|
279
|
+
/** Enable multi-select: clicking apps toggles them in/out of the selection,
|
|
280
|
+
* drawer stays open, and the picker shows checkboxes + a primary-bordered
|
|
281
|
+
* highlight on already-chosen rows. */
|
|
282
|
+
multiSelect?: boolean;
|
|
283
|
+
/** Currently chosen apps (used to highlight rows in multi-select mode).
|
|
284
|
+
* Match is by objectID first, then by normalized name. */
|
|
285
|
+
selectedApps?: Array<{
|
|
286
|
+
name: string;
|
|
287
|
+
id?: string | null;
|
|
288
|
+
icon?: string;
|
|
289
|
+
}>;
|
|
290
|
+
/** Fires whenever the selection changes in multi-select mode. */
|
|
291
|
+
onSelectionChange?: (apps: Array<{
|
|
292
|
+
name: string;
|
|
293
|
+
id: string | null;
|
|
294
|
+
icon: string;
|
|
295
|
+
categories: string[];
|
|
296
|
+
}>) => void;
|
|
279
297
|
}
|
|
280
|
-
declare function AppSearchDrawer({ open, onClose, initialQuery, title, subtitle, anchor, width, showPipelinesBanner, onQuickSelect, onSelectOverride, onDetailClose, onAddToCanvas, priorityCategory, connectionPathApps, pinnedApps, highlightAppName, highlightDelayMs, }: AppSearchDrawerProps): react_jsx_runtime.JSX.Element;
|
|
298
|
+
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;
|
|
281
299
|
|
|
282
300
|
declare function ShufflePipelinesBanner(): react_jsx_runtime.JSX.Element;
|
|
283
301
|
|
|
@@ -354,20 +372,15 @@ interface TryMcpSectionProps {
|
|
|
354
372
|
}
|
|
355
373
|
declare function TryMcpSection({ appName, appIcon, appId, categories }: TryMcpSectionProps): react_jsx_runtime.JSX.Element;
|
|
356
374
|
|
|
357
|
-
|
|
358
|
-
* SingulActionsPreview — Standalone "Try individual actions" block.
|
|
359
|
-
*
|
|
360
|
-
* Renders the action picker (grouped by category), curl/python toggle,
|
|
361
|
-
* editable snippet, Play button (calls Shuffle Tools `execute_python` or
|
|
362
|
-
* the http app `curl` action) and a response area that streams in.
|
|
363
|
-
*
|
|
364
|
-
* Self-contained — pass in the app name + categories. Optionally pass
|
|
365
|
-
* `activeOrgId` so multi-org curl previews include the right Org-Id header.
|
|
366
|
-
*/
|
|
367
|
-
declare const SingulActionsPreview: ({ appName, categories, activeOrgId, }: {
|
|
375
|
+
declare const SingulActionsPreview: ({ appName, appIcon, categories, activeOrgId, onAuthenticate, }: {
|
|
368
376
|
appName: string;
|
|
377
|
+
appIcon?: string;
|
|
369
378
|
categories?: string[];
|
|
370
379
|
activeOrgId?: string | null;
|
|
380
|
+
/** Optional click handler invoked when the user presses the
|
|
381
|
+
* "Authenticate {App}" button surfaced after an
|
|
382
|
+
* `action: "app_authentication"` response. */
|
|
383
|
+
onAuthenticate?: (appName: string) => void;
|
|
371
384
|
}) => react_jsx_runtime.JSX.Element;
|
|
372
385
|
|
|
373
386
|
/**
|
|
@@ -486,6 +499,20 @@ interface AgentUIProps {
|
|
|
486
499
|
}) => void;
|
|
487
500
|
/** Called whenever the active top-level view changes (start / simple / detailed). */
|
|
488
501
|
onViewChange?: (view: 'start' | 'simple' | 'detailed') => void;
|
|
502
|
+
/**
|
|
503
|
+
* Called when the user saves a recurring schedule (cron expression) for the
|
|
504
|
+
* current prompt. When omitted, a toast is shown indicating scheduling is
|
|
505
|
+
* not wired up in this embed.
|
|
506
|
+
*/
|
|
507
|
+
onSchedule?: (info: {
|
|
508
|
+
cron: string;
|
|
509
|
+
input: string;
|
|
510
|
+
onStep?: (event: {
|
|
511
|
+
id: 'name' | 'workflow' | 'schedule';
|
|
512
|
+
state: 'active' | 'done' | 'error';
|
|
513
|
+
detail?: string;
|
|
514
|
+
}) => void;
|
|
515
|
+
}) => void | Promise<void>;
|
|
489
516
|
/**
|
|
490
517
|
* Optional Shuffle API key. When provided, all `/api/v1/*` calls made by
|
|
491
518
|
* this component (agent run, polling, app autoload, icon fallback) use it
|
|
@@ -689,8 +716,79 @@ interface AgentExecutionDrawerProps {
|
|
|
689
716
|
headerSx?: SxProps<Theme>;
|
|
690
717
|
/** Style overrides for the body container that wraps the embedded AgentUI. */
|
|
691
718
|
bodySx?: SxProps<Theme>;
|
|
719
|
+
/** Optional content rendered at the top of the body, before the embedded
|
|
720
|
+
* AgentUI. Use this to inject a shared "Needs attention" / failure
|
|
721
|
+
* diagnosis banner so the drawer mirrors the timeline status pill. */
|
|
722
|
+
topBanner?: React.ReactNode;
|
|
723
|
+
/** Handler for scheduling the loaded agent prompt from the execution view. */
|
|
724
|
+
onSchedule?: AgentUIProps['onSchedule'];
|
|
692
725
|
}
|
|
693
|
-
declare const AgentExecutionDrawer: ({ open, onClose, run, width, apiKey, apiBaseUrl, orgId, className, paperSx, headerSx, bodySx, }: AgentExecutionDrawerProps) => react_jsx_runtime.JSX.Element;
|
|
726
|
+
declare const AgentExecutionDrawer: ({ open, onClose, run, width, apiKey, apiBaseUrl, orgId, className, paperSx, headerSx, bodySx, topBanner, onSchedule, }: AgentExecutionDrawerProps) => react_jsx_runtime.JSX.Element;
|
|
727
|
+
|
|
728
|
+
/**
|
|
729
|
+
* Shared diagnosis utilities for an agent execution result.
|
|
730
|
+
*
|
|
731
|
+
* Lives in the Shuffle-MCPs lib so every surface that displays an agent run
|
|
732
|
+
* (AgentUI Simple/Detailed view, AgentExecutionDrawer, the incident-side
|
|
733
|
+
* AgentRunResultViewer, the activity feed status pill, ...) uses the EXACT
|
|
734
|
+
* same logic to decide whether the run "needs review" and what to tell the
|
|
735
|
+
* user about it.
|
|
736
|
+
*
|
|
737
|
+
* Pure logic — no React, no MUI, no project-side imports.
|
|
738
|
+
*/
|
|
739
|
+
/** Minimal run shape the diagnoser needs. Compatible with AgentRun and
|
|
740
|
+
* AgentUI's internal ExecutionData. */
|
|
741
|
+
interface DiagnosableRun {
|
|
742
|
+
status?: string;
|
|
743
|
+
results?: Array<{
|
|
744
|
+
result?: string;
|
|
745
|
+
} | any> | null;
|
|
746
|
+
}
|
|
747
|
+
/** Try to parse the result JSON from results[0].result, unwrapping AGENT-type executions. */
|
|
748
|
+
declare const parseRunResult: (run: DiagnosableRun) => {
|
|
749
|
+
raw: string | null;
|
|
750
|
+
parsed: any | null;
|
|
751
|
+
};
|
|
752
|
+
/** Extract failure info from a failed/aborted run. */
|
|
753
|
+
declare const getFailureInfo: (run: DiagnosableRun) => {
|
|
754
|
+
reason: string;
|
|
755
|
+
} | null;
|
|
756
|
+
/** Detect if the output content hints at an error/failure even if the run
|
|
757
|
+
* status is "finished". Only returns true when `diagnoseOutputWarning`
|
|
758
|
+
* would produce a concrete, actionable diagnosis — never on vague keyword
|
|
759
|
+
* matches alone. */
|
|
760
|
+
declare const hasOutputWarning: (run: DiagnosableRun) => boolean;
|
|
761
|
+
type DiagnosisEvidence = {
|
|
762
|
+
/** Dotted JSON path inside the parsed run result. */
|
|
763
|
+
path: string;
|
|
764
|
+
/** Trimmed snippet of the value at that path. */
|
|
765
|
+
value: string;
|
|
766
|
+
};
|
|
767
|
+
type OutputDiagnosis = {
|
|
768
|
+
kind: 'auth' | 'permission' | 'not_found' | 'rate_limit' | 'network' | 'validation' | 'generic';
|
|
769
|
+
status?: number;
|
|
770
|
+
title: string;
|
|
771
|
+
explanation: string;
|
|
772
|
+
remediation: string;
|
|
773
|
+
snippet?: string;
|
|
774
|
+
evidence: DiagnosisEvidence[];
|
|
775
|
+
};
|
|
776
|
+
declare const diagnoseOutputWarning: (run: DiagnosableRun) => OutputDiagnosis | null;
|
|
777
|
+
|
|
778
|
+
interface Props {
|
|
779
|
+
run: DiagnosableRun | null | undefined;
|
|
780
|
+
/** Outer padding wrapper. Defaults to `{ px: 2.5, pb: 0.5 }`. */
|
|
781
|
+
sx?: Record<string, unknown>;
|
|
782
|
+
/** When provided, the banner becomes clickable and asks the host to jump
|
|
783
|
+
* to the underlying decision (e.g. switch to the detailed timeline,
|
|
784
|
+
* expand that row, scroll to it). */
|
|
785
|
+
onJumpToEvidence?: (decisionIndex: number) => void;
|
|
786
|
+
/** Stable id used to persist dismissals per-execution. Falls back to
|
|
787
|
+
* `run.execution_id` if present. When neither is available, dismiss
|
|
788
|
+
* still works for the current mount but is not persisted. */
|
|
789
|
+
executionId?: string;
|
|
790
|
+
}
|
|
791
|
+
declare const AgentRunDiagnosisBanner: ({ run, sx, onJumpToEvidence, executionId }: Props) => react_jsx_runtime.JSX.Element;
|
|
694
792
|
|
|
695
793
|
/**
|
|
696
794
|
* useAppLookup — Resolve an app's display name, image, categories,
|
|
@@ -728,6 +826,47 @@ interface AppLookupResult {
|
|
|
728
826
|
}
|
|
729
827
|
declare function useAppLookup(appName: string | null): AppLookupResult;
|
|
730
828
|
|
|
829
|
+
/**
|
|
830
|
+
* resolveApp — General-purpose app resolver.
|
|
831
|
+
*
|
|
832
|
+
* Given an app id OR name, look it up across all three known sources and
|
|
833
|
+
* return a unified `{ id, name, image }` triple. Used anywhere we need to
|
|
834
|
+
* render an app chip/icon and only have a free-form identifier (decision
|
|
835
|
+
* `tool`, auth-request `appName`, `app_authentication` payload, etc.).
|
|
836
|
+
*
|
|
837
|
+
* Resolution order (each pass merges in any newly-found fields, so we keep
|
|
838
|
+
* going until id/name/image are all known or all sources are exhausted):
|
|
839
|
+
* 1. /api/v1/apps/authentication — covers user-installed/active apps,
|
|
840
|
+
* including private ones that may not be in the public catalog.
|
|
841
|
+
* 2. /api/v1/apps — covers everything visible to the org (activated
|
|
842
|
+
* and private uploads).
|
|
843
|
+
* 3. Algolia `appsearch` — canonical objectID + public catalog metadata.
|
|
844
|
+
*
|
|
845
|
+
* Results are cached in-memory by normalized key so repeat lookups for the
|
|
846
|
+
* same name/id are free.
|
|
847
|
+
*/
|
|
848
|
+
interface ResolvedApp {
|
|
849
|
+
/** Canonical id — Algolia objectID when known, otherwise Shuffle app id. */
|
|
850
|
+
id: string;
|
|
851
|
+
/** Display name (may be raw slug if no source had a friendly name). */
|
|
852
|
+
name: string;
|
|
853
|
+
/** Best available large image URL. Empty string if not found. */
|
|
854
|
+
image: string;
|
|
855
|
+
/** Categories from whichever source provided them. */
|
|
856
|
+
categories?: string[];
|
|
857
|
+
}
|
|
858
|
+
/**
|
|
859
|
+
* Resolve an app from id-or-name across auth + apps + Algolia.
|
|
860
|
+
* Returns `null` only if all three sources came back empty.
|
|
861
|
+
*/
|
|
862
|
+
declare function resolveApp(idOrName: string): Promise<ResolvedApp | null>;
|
|
863
|
+
/** Resolve many at once — convenience wrapper. */
|
|
864
|
+
declare function resolveApps(idsOrNames: string[]): Promise<Record<string, ResolvedApp>>;
|
|
865
|
+
/** Seed the cache (e.g. from chosenApps that already carry an icon). */
|
|
866
|
+
declare function seedResolvedApp(idOrName: string, app: Partial<ResolvedApp>): void;
|
|
867
|
+
/** Clear the resolver cache (e.g. on org change). */
|
|
868
|
+
declare function invalidateResolvedApps(): void;
|
|
869
|
+
|
|
731
870
|
interface IntegrationStatusProps {
|
|
732
871
|
collapsed: boolean;
|
|
733
872
|
/** When provided, only show integrations whose name is in this list */
|
|
@@ -830,4 +969,4 @@ type ToastApi = ((arg: ToastArg, opts?: ToastOptions) => void) & {
|
|
|
830
969
|
};
|
|
831
970
|
declare const toast: ToastApi;
|
|
832
971
|
|
|
833
|
-
export { API_CONFIG, AgentActivityList, type AgentActivityListProps, type AgentActivityParams, type AgentActivityResponse, type AgentDecision, AgentExecutionDrawer, type AgentExecutionDrawerProps, type AgentRun, AgentRunDrawer, type AgentRunDrawerProps, type AgentRunDrawerTab, type AgentRunResult, AgentUI, type AgentUIApp, type AgentUIProps, type AlgoliaSearchApp, AppAuthSection, type AppAuthSectionProps, type AppAuthentication, AppDetailDrawer, AppDetailProvider, type AppLookupResult, AppSearchDrawer, type AppSelectedEvent, AppTitleHeader, type AppTitleHeaderProps, type CustomStyles, IntegrationStatus, ShuffleMCP, type ShuffleMCPHandle, type ShuffleMCPProps, ShufflePipelinesBanner, SingulActionsPreview, TryMcpSection, type TryMcpSectionProps, ShuffleMCP as default, getApiUrl, getAuthHeader, refreshAllIntegrationStatus, searchAgentActivity, setToastImpl, toast, useAppAuth, useAppDetail, useAppLookup };
|
|
972
|
+
export { API_CONFIG, AgentActivityList, type AgentActivityListProps, type AgentActivityParams, type AgentActivityResponse, type AgentDecision, AgentExecutionDrawer, type AgentExecutionDrawerProps, type AgentRun, AgentRunDiagnosisBanner, AgentRunDrawer, type AgentRunDrawerProps, type AgentRunDrawerTab, type AgentRunResult, AgentUI, type AgentUIApp, type AgentUIProps, type AlgoliaSearchApp, AppAuthSection, type AppAuthSectionProps, type AppAuthentication, AppDetailDrawer, AppDetailProvider, type AppLookupResult, AppSearchDrawer, type AppSelectedEvent, AppTitleHeader, type AppTitleHeaderProps, type CustomStyles, type DiagnosableRun, type DiagnosisEvidence, IntegrationStatus, type OutputDiagnosis, type ResolvedApp, ShuffleMCP, type ShuffleMCPHandle, type ShuffleMCPProps, ShufflePipelinesBanner, SingulActionsPreview, TryMcpSection, type TryMcpSectionProps, ShuffleMCP as default, diagnoseOutputWarning, getApiUrl, getAuthHeader, getFailureInfo, hasOutputWarning, invalidateResolvedApps, parseRunResult, refreshAllIntegrationStatus, resolveApp, resolveApps, searchAgentActivity, seedResolvedApp, setToastImpl, toast, useAppAuth, useAppDetail, useAppLookup };
|