@mastra/playground-ui 23.0.2-alpha.2 → 24.0.0-alpha.0

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.
Files changed (85) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/index.cjs.js +4254 -13
  3. package/dist/index.cjs.js.map +1 -1
  4. package/dist/index.css +354 -84
  5. package/dist/index.es.js +4137 -16
  6. package/dist/index.es.js.map +1 -1
  7. package/dist/src/domains/logs/components/index.d.ts +6 -0
  8. package/dist/src/domains/logs/components/log-details-view.d.ts +12 -0
  9. package/dist/src/domains/logs/components/logs-error-content.d.ts +14 -0
  10. package/dist/src/domains/logs/components/logs-layout.d.ts +19 -0
  11. package/dist/src/domains/logs/components/logs-list-view.d.ts +20 -0
  12. package/dist/src/domains/logs/components/logs-toolbar.d.ts +13 -0
  13. package/dist/src/domains/logs/components/no-logs-info.d.ts +1 -0
  14. package/dist/src/domains/logs/hooks/index.d.ts +4 -0
  15. package/dist/src/domains/logs/hooks/use-logs-filter-persistence.d.ts +22 -0
  16. package/dist/src/domains/logs/hooks/use-logs-list-navigation.d.ts +22 -0
  17. package/dist/src/domains/logs/hooks/use-logs-url-state.d.ts +38 -0
  18. package/dist/src/domains/logs/hooks/use-logs.d.ts +1271 -0
  19. package/dist/src/domains/logs/index.d.ts +4 -0
  20. package/dist/src/domains/logs/log-filters.d.ts +109 -0
  21. package/dist/src/domains/logs/types.d.ts +35 -0
  22. package/dist/src/domains/metrics/components/bar-list.d.ts +21 -0
  23. package/dist/src/domains/metrics/components/date-range-selector.d.ts +1 -0
  24. package/dist/src/domains/metrics/components/index.d.ts +9 -0
  25. package/dist/src/domains/metrics/components/kpi-card-view.d.ts +9 -0
  26. package/dist/src/domains/metrics/components/latency-card-view.d.ts +11 -0
  27. package/dist/src/domains/metrics/components/metrics-utils.d.ts +15 -0
  28. package/dist/src/domains/metrics/components/model-usage-cost-card-view.d.ts +7 -0
  29. package/dist/src/domains/metrics/components/scores-card-view.d.ts +12 -0
  30. package/dist/src/domains/metrics/components/token-usage-by-agent-card-view.d.ts +7 -0
  31. package/dist/src/domains/metrics/components/traces-volume-card-view.d.ts +11 -0
  32. package/dist/src/domains/metrics/hooks/index.d.ts +12 -0
  33. package/dist/src/domains/metrics/hooks/use-agent-runs-kpi-metrics.d.ts +10 -0
  34. package/dist/src/domains/metrics/hooks/use-avg-score-kpi-metrics.d.ts +10 -0
  35. package/dist/src/domains/metrics/hooks/use-latency-metrics.d.ts +11 -0
  36. package/dist/src/domains/metrics/hooks/use-metrics-filters.d.ts +9 -0
  37. package/dist/src/domains/metrics/hooks/use-metrics.d.ts +43 -0
  38. package/dist/src/domains/metrics/hooks/use-model-cost-kpi-metrics.d.ts +7 -0
  39. package/dist/src/domains/metrics/hooks/use-model-usage-cost-metrics.d.ts +10 -0
  40. package/dist/src/domains/metrics/hooks/use-scores-metrics.d.ts +22 -0
  41. package/dist/src/domains/metrics/hooks/use-token-usage-by-agent-metrics.d.ts +9 -0
  42. package/dist/src/domains/metrics/hooks/use-total-tokens-kpi-metrics.d.ts +6 -0
  43. package/dist/src/domains/metrics/hooks/use-trace-volume-metrics.d.ts +10 -0
  44. package/dist/src/domains/metrics/index.d.ts +2 -0
  45. package/dist/src/domains/traces/components/format-hierarchical-spans.d.ts +12 -0
  46. package/dist/src/domains/traces/components/index.d.ts +18 -0
  47. package/dist/src/domains/traces/components/shared.d.ts +3 -0
  48. package/dist/src/domains/traces/components/span-data-panel-view.d.ts +26 -0
  49. package/dist/src/domains/traces/components/span-details-view.d.ts +14 -0
  50. package/dist/src/domains/traces/components/span-token-usage.d.ts +22 -0
  51. package/dist/src/domains/traces/components/timeline-expand-col.d.ts +12 -0
  52. package/dist/src/domains/traces/components/timeline-name-col.d.ts +15 -0
  53. package/dist/src/domains/traces/components/timeline-structure-sign.d.ts +5 -0
  54. package/dist/src/domains/traces/components/timeline-timing-col.d.ts +12 -0
  55. package/dist/src/domains/traces/components/trace-data-panel-view.d.ts +28 -0
  56. package/dist/src/domains/traces/components/trace-details-view.d.ts +18 -0
  57. package/dist/src/domains/traces/components/trace-keys-and-values.d.ts +16 -0
  58. package/dist/src/domains/traces/components/trace-timeline-span.d.ts +18 -0
  59. package/dist/src/domains/traces/components/trace-timeline.d.ts +15 -0
  60. package/dist/src/domains/traces/components/traces-error-content.d.ts +16 -0
  61. package/dist/src/domains/traces/components/traces-layout.d.ts +18 -0
  62. package/dist/src/domains/traces/components/traces-list-view.d.ts +39 -0
  63. package/dist/src/domains/traces/components/traces-toolbar.d.ts +19 -0
  64. package/dist/src/domains/traces/hooks/get-all-span-ids.d.ts +3 -0
  65. package/dist/src/domains/traces/hooks/index.d.ts +13 -0
  66. package/dist/src/domains/traces/hooks/use-entity-names.d.ts +7 -0
  67. package/dist/src/domains/traces/hooks/use-environments.d.ts +1 -0
  68. package/dist/src/domains/traces/hooks/use-service-names.d.ts +1 -0
  69. package/dist/src/domains/traces/hooks/use-span-detail.d.ts +46 -0
  70. package/dist/src/domains/traces/hooks/use-tags.d.ts +1 -0
  71. package/dist/src/domains/traces/hooks/use-trace-filter-persistence.d.ts +31 -0
  72. package/dist/src/domains/traces/hooks/use-trace-light-spans.d.ts +19 -0
  73. package/dist/src/domains/traces/hooks/use-trace-list-navigation.d.ts +12 -0
  74. package/dist/src/domains/traces/hooks/use-trace-span-navigation.d.ts +10 -0
  75. package/dist/src/domains/traces/hooks/use-trace-spans.d.ts +47 -0
  76. package/dist/src/domains/traces/hooks/use-trace-url-state.d.ts +53 -0
  77. package/dist/src/domains/traces/hooks/use-traces.d.ts +1549 -0
  78. package/dist/src/domains/traces/index.d.ts +8 -0
  79. package/dist/src/domains/traces/trace-filters.d.ts +121 -0
  80. package/dist/src/domains/traces/types.d.ts +35 -0
  81. package/dist/src/domains/traces/utils/group-traces-by-thread.d.ts +20 -0
  82. package/dist/src/domains/traces/utils/index.d.ts +2 -0
  83. package/dist/src/domains/traces/utils/span-utils.d.ts +15 -0
  84. package/dist/src/index.d.ts +3 -0
  85. package/package.json +13 -10
@@ -0,0 +1,4 @@
1
+ export * from './components';
2
+ export * from './hooks';
3
+ export * from './log-filters';
4
+ export type { LogRecord, LogLevel } from './types';
@@ -0,0 +1,109 @@
1
+ import { EntityType } from '@mastra/core/observability';
2
+ import { ListLogsArgs } from '@mastra/core/storage';
3
+ import { LogLevel } from './types';
4
+ import { PropertyFilterField, PropertyFilterToken } from '../../ds/components/PropertyFilter/types';
5
+ export type LogsDatePreset = 'all' | 'last-24h' | 'last-3d' | 'last-7d' | 'last-14d' | 'last-30d' | 'custom';
6
+ export type LogsEntityOptions = {
7
+ label: string;
8
+ entityType: EntityType;
9
+ };
10
+ export declare const LOGS_ROOT_ENTITY_TYPES: {
11
+ readonly AGENT: EntityType.AGENT;
12
+ readonly WORKFLOW: EntityType.WORKFLOW_RUN;
13
+ readonly SCORER: EntityType.SCORER;
14
+ readonly INGEST: EntityType.RAG_INGESTION;
15
+ };
16
+ export declare const LOGS_ROOT_ENTITY_TYPE_OPTIONS: readonly [{
17
+ readonly label: "Agent";
18
+ readonly entityType: EntityType.AGENT;
19
+ }, {
20
+ readonly label: "Workflow";
21
+ readonly entityType: EntityType.WORKFLOW_RUN;
22
+ }, {
23
+ readonly label: "Scorer";
24
+ readonly entityType: EntityType.SCORER;
25
+ }, {
26
+ readonly label: "Ingest";
27
+ readonly entityType: EntityType.RAG_INGESTION;
28
+ }];
29
+ export declare const LOG_LEVEL_VALUES: readonly LogLevel[];
30
+ export declare const LOG_LEVEL_OPTIONS: readonly [{
31
+ readonly label: "Debug";
32
+ readonly value: "debug";
33
+ }, {
34
+ readonly label: "Info";
35
+ readonly value: "info";
36
+ }, {
37
+ readonly label: "Warn";
38
+ readonly value: "warn";
39
+ }, {
40
+ readonly label: "Error";
41
+ readonly value: "error";
42
+ }, {
43
+ readonly label: "Fatal";
44
+ readonly value: "fatal";
45
+ }];
46
+ export declare const LOGS_ROOT_ENTITY_TYPE_PARAM = "rootEntityType";
47
+ export declare const LOGS_DATE_PRESET_PARAM = "datePreset";
48
+ export declare const LOGS_DATE_FROM_PARAM = "dateFrom";
49
+ export declare const LOGS_DATE_TO_PARAM = "dateTo";
50
+ export declare const LOGS_DATE_PRESET_VALUES: Set<LogsDatePreset>;
51
+ /**
52
+ * Generic filter URL params (filterX keys). Fields that carry multiple values
53
+ * (tags, level) use repeated params; everything else is a single string.
54
+ */
55
+ export declare const LOGS_PROPERTY_FILTER_PARAM_BY_FIELD: {
56
+ readonly level: "filterLevel";
57
+ readonly tags: "filterTags";
58
+ readonly entityName: "filterEntityName";
59
+ readonly traceId: "filterTraceId";
60
+ readonly spanId: "filterSpanId";
61
+ readonly runId: "filterRunId";
62
+ readonly threadId: "filterThreadId";
63
+ readonly sessionId: "filterSessionId";
64
+ readonly requestId: "filterRequestId";
65
+ readonly resourceId: "filterResourceId";
66
+ readonly userId: "filterUserId";
67
+ readonly organizationId: "filterOrganizationId";
68
+ readonly serviceName: "filterServiceName";
69
+ readonly environment: "filterEnvironment";
70
+ readonly experimentId: "filterExperimentId";
71
+ };
72
+ export declare const LOGS_PROPERTY_FILTER_FIELD_IDS: Array<keyof typeof LOGS_PROPERTY_FILTER_PARAM_BY_FIELD>;
73
+ export declare const DEFAULT_LOGS_FILTERS_STORAGE_KEY = "mastra:logs:saved-filters";
74
+ export declare function saveLogsFiltersToStorage(params: URLSearchParams, storageKey?: string): void;
75
+ export declare function clearSavedLogsFilters(storageKey?: string): void;
76
+ export declare function loadLogsFiltersFromStorage(storageKey?: string): URLSearchParams | null;
77
+ export declare function hasAnyLogsFilterParams(params: URLSearchParams): boolean;
78
+ export declare function createLogsPropertyFilterFields({ availableTags, availableRootEntityNames, availableServiceNames, availableEnvironments, loading, }: {
79
+ availableTags: string[];
80
+ availableRootEntityNames: string[];
81
+ availableServiceNames: string[];
82
+ availableEnvironments: string[];
83
+ loading?: {
84
+ tags?: boolean;
85
+ entityNames?: boolean;
86
+ serviceNames?: boolean;
87
+ environments?: boolean;
88
+ };
89
+ }): PropertyFilterField[];
90
+ /**
91
+ * Read filter tokens from URL search params preserving the order in which
92
+ * each filter was first added. Fields in LOGS_ARRAY_FIELD_IDS are read as
93
+ * string[]; an empty sentinel (`filterX=`) keeps the pill alive post-Reset.
94
+ */
95
+ export declare function getLogsPropertyFilterTokens(searchParams: URLSearchParams): PropertyFilterToken[];
96
+ export declare function getPreservedLogsFilterParams(searchParams: URLSearchParams): URLSearchParams;
97
+ export declare function applyLogsPropertyFilterTokens(params: URLSearchParams, tokens: PropertyFilterToken[]): void;
98
+ export declare function buildLogsListFilters({ rootEntityType, dateFrom, dateTo, tokens, }: {
99
+ rootEntityType?: string;
100
+ dateFrom?: Date;
101
+ dateTo?: Date;
102
+ tokens: PropertyFilterToken[];
103
+ }): ListLogsArgs['filters'];
104
+ /**
105
+ * "Clear" semantics for the logs toolbar: keep all filter pills but neutralize each value.
106
+ * '' for text fields, 'Any' for single-select pick-multi, [] for multi-select pick-multi.
107
+ * Date range is intentionally NOT touched here — that's a separate concern.
108
+ */
109
+ export declare function neutralizeLogsFilterTokens(filterFields: PropertyFilterField[], filterTokens: PropertyFilterToken[]): PropertyFilterToken[];
@@ -0,0 +1,35 @@
1
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';
2
+ export interface LogRecord {
3
+ /** Canonical unique id assigned by the storage backend. When present, used directly as the
4
+ * row id; otherwise a content hash is derived. */
5
+ logId?: string | null;
6
+ timestamp: Date | string;
7
+ level: LogLevel;
8
+ message: string;
9
+ data?: Record<string, unknown> | null;
10
+ traceId?: string | null;
11
+ spanId?: string | null;
12
+ entityType?: string | null;
13
+ entityId?: string | null;
14
+ entityName?: string | null;
15
+ parentEntityType?: string | null;
16
+ parentEntityId?: string | null;
17
+ parentEntityName?: string | null;
18
+ rootEntityType?: string | null;
19
+ rootEntityId?: string | null;
20
+ rootEntityName?: string | null;
21
+ userId?: string | null;
22
+ organizationId?: string | null;
23
+ resourceId?: string | null;
24
+ runId?: string | null;
25
+ sessionId?: string | null;
26
+ threadId?: string | null;
27
+ requestId?: string | null;
28
+ environment?: string | null;
29
+ source?: string | null;
30
+ serviceName?: string | null;
31
+ scope?: Record<string, unknown> | null;
32
+ experimentId?: string | null;
33
+ tags?: string[] | null;
34
+ metadata?: Record<string, unknown> | null;
35
+ }
@@ -0,0 +1,21 @@
1
+ export declare function BarListContent({ data, maxVal, fmt, color, valueLabel, legend, }: {
2
+ data: Array<{
3
+ name: string;
4
+ value: number;
5
+ }>;
6
+ maxVal: number;
7
+ fmt: (v: number) => string;
8
+ color: string;
9
+ valueLabel?: string;
10
+ legend?: Array<{
11
+ color: string;
12
+ label: string;
13
+ }>;
14
+ }): import("react/jsx-runtime").JSX.Element;
15
+ export declare function StackedRunsBars({ data }: {
16
+ data: Array<{
17
+ name: string;
18
+ completed: number;
19
+ errors: number;
20
+ }>;
21
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare function DateRangeSelector(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,9 @@
1
+ export { DateRangeSelector } from './date-range-selector';
2
+ export { formatCompact, formatCost, CHART_COLORS } from './metrics-utils';
3
+ export { BarListContent, StackedRunsBars } from './bar-list';
4
+ export { KpiCardView, type KpiCardViewProps } from './kpi-card-view';
5
+ export { LatencyCardView, type LatencyCardViewProps } from './latency-card-view';
6
+ export { ModelUsageCostCardView, type ModelUsageCostCardViewProps } from './model-usage-cost-card-view';
7
+ export { ScoresCardView, type ScoresCardViewProps } from './scores-card-view';
8
+ export { TokenUsageByAgentCardView, type TokenUsageByAgentCardViewProps } from './token-usage-by-agent-card-view';
9
+ export { TracesVolumeCardView, type TracesVolumeCardViewProps } from './traces-volume-card-view';
@@ -0,0 +1,9 @@
1
+ export interface KpiCardViewProps {
2
+ label: string;
3
+ value: string | null;
4
+ prevValue?: string;
5
+ changePct?: number | null;
6
+ isLoading: boolean;
7
+ isError: boolean;
8
+ }
9
+ export declare function KpiCardView({ label, value, prevValue, changePct, isLoading, isError }: KpiCardViewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { LatencyPoint } from '../hooks/use-latency-metrics';
2
+ export interface LatencyCardViewProps {
3
+ data: {
4
+ agentData: LatencyPoint[];
5
+ workflowData: LatencyPoint[];
6
+ toolData: LatencyPoint[];
7
+ } | undefined;
8
+ isLoading: boolean;
9
+ isError: boolean;
10
+ }
11
+ export declare function LatencyCardView({ data, isLoading, isError }: LatencyCardViewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,15 @@
1
+ export declare function formatCompact(n: number): string;
2
+ export declare function formatCost(value: number, unit?: string | null): string;
3
+ export declare const CHART_COLORS: {
4
+ readonly green: "#22c55e";
5
+ readonly orange: "#fb923c";
6
+ readonly pink: "#f472b6";
7
+ readonly purple: "#8b5cf6";
8
+ readonly blue: "#4f83f1";
9
+ readonly blueDark: "#2b5cd9";
10
+ readonly blueLight: "#6b8fe5";
11
+ readonly red: "#f87171";
12
+ readonly greenDark: "#15613a";
13
+ readonly redDark: "#991b1b";
14
+ readonly yellow: "#facc15";
15
+ };
@@ -0,0 +1,7 @@
1
+ import { ModelUsageRow } from '../hooks/use-model-usage-cost-metrics';
2
+ export interface ModelUsageCostCardViewProps {
3
+ rows: ModelUsageRow[] | undefined;
4
+ isLoading: boolean;
5
+ isError: boolean;
6
+ }
7
+ export declare function ModelUsageCostCardView({ rows, isLoading, isError }: ModelUsageCostCardViewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { ScorerSummary, ScoresOverTimePoint } from '../hooks/use-scores-metrics';
2
+ export interface ScoresCardViewProps {
3
+ data: {
4
+ summaryData: ScorerSummary[];
5
+ overTimeData: ScoresOverTimePoint[];
6
+ scorerNames: string[];
7
+ avgScore: number | null;
8
+ } | undefined;
9
+ isLoading: boolean;
10
+ isError: boolean;
11
+ }
12
+ export declare function ScoresCardView({ data, isLoading, isError }: ScoresCardViewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { TokenUsageByAgentRow } from '../hooks/use-token-usage-by-agent-metrics';
2
+ export interface TokenUsageByAgentCardViewProps {
3
+ data: TokenUsageByAgentRow[] | undefined;
4
+ isLoading: boolean;
5
+ isError: boolean;
6
+ }
7
+ export declare function TokenUsageByAgentCardView({ data, isLoading, isError }: TokenUsageByAgentCardViewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { VolumeRow } from '../hooks/use-trace-volume-metrics';
2
+ export interface TracesVolumeCardViewProps {
3
+ data: {
4
+ agentData: VolumeRow[];
5
+ workflowData: VolumeRow[];
6
+ toolData: VolumeRow[];
7
+ } | undefined;
8
+ isLoading: boolean;
9
+ isError: boolean;
10
+ }
11
+ export declare function TracesVolumeCardView({ data, isLoading, isError }: TracesVolumeCardViewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ export { MetricsProvider, useMetrics, isValidPreset, DATE_PRESETS } from './use-metrics';
2
+ export type { DatePreset, DateRange } from './use-metrics';
3
+ export { useMetricsFilters } from './use-metrics-filters';
4
+ export { useAgentRunsKpiMetrics } from './use-agent-runs-kpi-metrics';
5
+ export { useAvgScoreKpiMetrics } from './use-avg-score-kpi-metrics';
6
+ export { useModelCostKpiMetrics } from './use-model-cost-kpi-metrics';
7
+ export { useTotalTokensKpiMetrics } from './use-total-tokens-kpi-metrics';
8
+ export { useModelUsageCostMetrics, type ModelUsageRow } from './use-model-usage-cost-metrics';
9
+ export { useLatencyMetrics, type LatencyPoint } from './use-latency-metrics';
10
+ export { useTraceVolumeMetrics, type VolumeRow } from './use-trace-volume-metrics';
11
+ export { useScoresMetrics, type ScorerSummary, type ScoresOverTimePoint } from './use-scores-metrics';
12
+ export { useTokenUsageByAgentMetrics, type TokenUsageByAgentRow } from './use-token-usage-by-agent-metrics';
@@ -0,0 +1,10 @@
1
+ /** Total Agent Runs — count of agent duration metric observations */
2
+ export declare function useAgentRunsKpiMetrics(): import('@tanstack/react-query').UseQueryResult<{
3
+ value: number | null;
4
+ estimatedCost?: number | null | undefined;
5
+ costUnit?: string | null | undefined;
6
+ previousEstimatedCost?: number | null | undefined;
7
+ costChangePercent?: number | null | undefined;
8
+ previousValue?: number | null | undefined;
9
+ changePercent?: number | null | undefined;
10
+ }, Error>;
@@ -0,0 +1,10 @@
1
+ /** Avg Score — average score across all scorers via aggregate API */
2
+ export declare function useAvgScoreKpiMetrics(): import('@tanstack/react-query').UseQueryResult<{
3
+ value: null;
4
+ previousValue: null;
5
+ changePercent: null;
6
+ } | {
7
+ value: number;
8
+ previousValue: null;
9
+ changePercent: null;
10
+ }, Error>;
@@ -0,0 +1,11 @@
1
+ export interface LatencyPoint {
2
+ [key: string]: unknown;
3
+ time: string;
4
+ p50: number;
5
+ p95: number;
6
+ }
7
+ export declare function useLatencyMetrics(): import('@tanstack/react-query').UseQueryResult<{
8
+ agentData: LatencyPoint[];
9
+ workflowData: LatencyPoint[];
10
+ toolData: LatencyPoint[];
11
+ }, Error>;
@@ -0,0 +1,9 @@
1
+ import { DatePreset, DateRange } from './use-metrics';
2
+ export declare function useMetricsFilters(): {
3
+ datePreset: DatePreset;
4
+ customRange: DateRange | undefined;
5
+ timestamp: {
6
+ start: Date;
7
+ end: Date;
8
+ };
9
+ };
@@ -0,0 +1,43 @@
1
+ import { ReactNode } from '../../../../node_modules/@types/react';
2
+ declare const DATE_PRESETS: readonly [{
3
+ readonly label: "Last 24 hours";
4
+ readonly value: "24h";
5
+ }, {
6
+ readonly label: "Last 3 days";
7
+ readonly value: "3d";
8
+ }, {
9
+ readonly label: "Last 7 days";
10
+ readonly value: "7d";
11
+ }, {
12
+ readonly label: "Last 14 days";
13
+ readonly value: "14d";
14
+ }, {
15
+ readonly label: "Last 30 days";
16
+ readonly value: "30d";
17
+ }];
18
+ export type DatePreset = (typeof DATE_PRESETS)[number]['value'] | 'custom';
19
+ export { DATE_PRESETS };
20
+ export declare function isValidPreset(value: string | null | undefined): value is DatePreset;
21
+ export type DateRange = {
22
+ from?: Date;
23
+ to?: Date;
24
+ };
25
+ export declare const MetricsContext: import('../../../../node_modules/@types/react').Context<{
26
+ datePreset: DatePreset;
27
+ setDatePreset: (v: DatePreset) => void;
28
+ customRange: DateRange | undefined;
29
+ setCustomRange: (v: DateRange | undefined) => void;
30
+ dateRangeLabel: string;
31
+ }>;
32
+ export declare function useMetrics(): {
33
+ datePreset: DatePreset;
34
+ setDatePreset: (v: DatePreset) => void;
35
+ customRange: DateRange | undefined;
36
+ setCustomRange: (v: DateRange | undefined) => void;
37
+ dateRangeLabel: string;
38
+ };
39
+ export declare function MetricsProvider({ children, initialPreset, onPresetChange, }: {
40
+ children: ReactNode;
41
+ initialPreset?: DatePreset;
42
+ onPresetChange?: (preset: DatePreset) => void;
43
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ /** Total Model Cost — sum of estimatedCost across input and output token metrics */
2
+ export declare function useModelCostKpiMetrics(): import('@tanstack/react-query').UseQueryResult<{
3
+ cost: number | null;
4
+ costUnit: string | null;
5
+ previousCost: number | null;
6
+ costChangePercent: number | null;
7
+ }, Error>;
@@ -0,0 +1,10 @@
1
+ export interface ModelUsageRow {
2
+ model: string;
3
+ input: string;
4
+ output: string;
5
+ cacheRead: string;
6
+ cacheWrite: string;
7
+ cost: number | null;
8
+ costUnit: string | null;
9
+ }
10
+ export declare function useModelUsageCostMetrics(): import('@tanstack/react-query').UseQueryResult<ModelUsageRow[], Error>;
@@ -0,0 +1,22 @@
1
+ export interface ScorerSummary {
2
+ scorer: string;
3
+ avg: number;
4
+ min: number;
5
+ max: number;
6
+ count: number;
7
+ }
8
+ export interface ScoresOverTimePoint {
9
+ time: string;
10
+ [scorer: string]: string | number;
11
+ }
12
+ export declare function useScoresMetrics(): import('@tanstack/react-query').UseQueryResult<{
13
+ summaryData: never[];
14
+ overTimeData: never[];
15
+ scorerNames: never[];
16
+ avgScore: null;
17
+ } | {
18
+ summaryData: ScorerSummary[];
19
+ overTimeData: ScoresOverTimePoint[];
20
+ scorerNames: string[];
21
+ avgScore: number;
22
+ }, Error>;
@@ -0,0 +1,9 @@
1
+ export interface TokenUsageByAgentRow {
2
+ name: string;
3
+ total: number;
4
+ input: number;
5
+ output: number;
6
+ cost: number | null;
7
+ costUnit: string | null;
8
+ }
9
+ export declare function useTokenUsageByAgentMetrics(): import('@tanstack/react-query').UseQueryResult<TokenUsageByAgentRow[], Error>;
@@ -0,0 +1,6 @@
1
+ /** Total Tokens — sum of all input + output tokens */
2
+ export declare function useTotalTokensKpiMetrics(): import('@tanstack/react-query').UseQueryResult<{
3
+ value: number | null;
4
+ previousValue: number | null;
5
+ changePercent: number | null;
6
+ }, Error>;
@@ -0,0 +1,10 @@
1
+ export interface VolumeRow {
2
+ name: string;
3
+ completed: number;
4
+ errors: number;
5
+ }
6
+ export declare function useTraceVolumeMetrics(): import('@tanstack/react-query').UseQueryResult<{
7
+ agentData: VolumeRow[];
8
+ workflowData: VolumeRow[];
9
+ toolData: VolumeRow[];
10
+ }, Error>;
@@ -0,0 +1,2 @@
1
+ export * from './components';
2
+ export * from './hooks';
@@ -0,0 +1,12 @@
1
+ import { UISpan } from '../types';
2
+ /** Minimal span fields required for building the hierarchical timeline tree. */
3
+ type TimelineSpan = {
4
+ spanId: string;
5
+ name: string;
6
+ spanType: string;
7
+ startedAt: Date | string;
8
+ endedAt?: Date | string | null;
9
+ parentSpanId?: string | null;
10
+ };
11
+ export declare const formatHierarchicalSpans: (spans: TimelineSpan[]) => UISpan[];
12
+ export {};
@@ -0,0 +1,18 @@
1
+ export { formatHierarchicalSpans } from './format-hierarchical-spans';
2
+ export { getSpanTypeUi, spanTypePrefixes } from './shared';
3
+ export { SpanTokenUsage, type TokenUsage } from './span-token-usage';
4
+ export { TimelineExpandCol } from './timeline-expand-col';
5
+ export { TimelineNameCol } from './timeline-name-col';
6
+ export { TimelineStructureSign } from './timeline-structure-sign';
7
+ export { TimelineTimingCol } from './timeline-timing-col';
8
+ export { TraceKeysAndValues, type TraceKeysAndValuesProps } from './trace-keys-and-values';
9
+ export { TraceTimelineSpan } from './trace-timeline-span';
10
+ export { TraceTimeline } from './trace-timeline';
11
+ export { TracesToolbar } from './traces-toolbar';
12
+ export { TraceDataPanelView, type TraceDataPanelViewProps, type TraceDataPanelPlacement, } from './trace-data-panel-view';
13
+ export { SpanDataPanelView, type SpanDataPanelViewProps } from './span-data-panel-view';
14
+ export { SpanDetailsView, type SpanDetailsViewProps } from './span-details-view';
15
+ export { TraceDetailsView, type TraceDetailsViewProps } from './trace-details-view';
16
+ export { TracesLayout, type TracesLayoutProps } from './traces-layout';
17
+ export { TracesListView, type TracesListViewProps, type TracesListViewTrace } from './traces-list-view';
18
+ export { TracesErrorContent, type TracesErrorContentProps } from './traces-error-content';
@@ -0,0 +1,3 @@
1
+ import { UISpanStyle } from '../types';
2
+ export declare const spanTypePrefixes: string[];
3
+ export declare function getSpanTypeUi(type: string): UISpanStyle;
@@ -0,0 +1,26 @@
1
+ import { SpanRecord } from '@mastra/core/storage';
2
+ import { ReactNode } from '../../../../node_modules/@types/react';
3
+ export interface SpanDataPanelViewProps {
4
+ traceId: string;
5
+ spanId: string;
6
+ /** Full span record. Caller fetches via useSpanDetail. */
7
+ span: SpanRecord | undefined;
8
+ isLoading?: boolean;
9
+ onClose: () => void;
10
+ onPrevious?: () => void;
11
+ onNext?: () => void;
12
+ activeTab?: string;
13
+ onTabChange?: (tab: string) => void;
14
+ /**
15
+ * When provided, a "Scoring" tab appears; the slot receives the loaded span and renders
16
+ * whatever scoring UI the consumer wants. When undefined, only the "Details" tab renders.
17
+ */
18
+ scoringTabSlot?: (args: {
19
+ span: SpanRecord;
20
+ traceId: string;
21
+ spanId: string;
22
+ }) => ReactNode;
23
+ /** Optional count shown in the "Scoring" tab label (e.g. number of scores). */
24
+ scoringTabBadge?: ReactNode;
25
+ }
26
+ export declare function SpanDataPanelView({ traceId, spanId, span, isLoading, onClose, onPrevious, onNext, activeTab, onTabChange, scoringTabSlot, scoringTabBadge, }: SpanDataPanelViewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { SpanRecord } from '@mastra/core/storage';
2
+ export interface SpanDetailsViewProps {
3
+ spanId: string;
4
+ /** Full span record. Caller fetches via useSpanDetail. */
5
+ span: SpanRecord | undefined;
6
+ isLoading?: boolean;
7
+ onClose: () => void;
8
+ }
9
+ /**
10
+ * Compact span panel using `DataDetailsPanel` (popover-style). Shows basic span metadata +
11
+ * input/output/metadata/attributes code sections. Use this for inline span inspection; for the
12
+ * full-width span view with scoring tab + prev/next nav, use `SpanDataPanelView`.
13
+ */
14
+ export declare function SpanDetailsView({ spanId, span, isLoading, onClose }: SpanDetailsViewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,22 @@
1
+ import { InputTokenDetails, OutputTokenDetails } from '@mastra/core/observability';
2
+ type V5TokenUsage = {
3
+ inputTokens: number;
4
+ outputTokens: number;
5
+ reasoningTokens?: number;
6
+ cachedInputTokens?: number;
7
+ totalTokens: number;
8
+ inputDetails?: InputTokenDetails;
9
+ outputDetails?: OutputTokenDetails;
10
+ };
11
+ type LegacyTokenUsage = {
12
+ promptTokens: number;
13
+ completionTokens: number;
14
+ totalTokens: number;
15
+ };
16
+ export type TokenUsage = V5TokenUsage | LegacyTokenUsage;
17
+ type SpanTokenUsageProps = {
18
+ usage: TokenUsage;
19
+ className?: string;
20
+ };
21
+ export declare function SpanTokenUsage({ usage, className }: SpanTokenUsageProps): import("react/jsx-runtime").JSX.Element | null;
22
+ export {};
@@ -0,0 +1,12 @@
1
+ type TimelineExpandColProps = {
2
+ isSelected?: boolean;
3
+ isFaded?: boolean;
4
+ isExpanded?: boolean;
5
+ toggleChildren?: () => void;
6
+ expandAllDescendants?: () => void;
7
+ totalDescendants?: number;
8
+ allDescendantsExpanded?: boolean;
9
+ numOfChildren?: number;
10
+ };
11
+ export declare function TimelineExpandCol({ isSelected, isFaded, isExpanded, toggleChildren, expandAllDescendants, totalDescendants, allDescendantsExpanded, numOfChildren, }: TimelineExpandColProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
@@ -0,0 +1,15 @@
1
+ import { UISpan, UISpanStyle } from '../types';
2
+ type TimelineNameColProps = {
3
+ span: UISpan;
4
+ spanUI?: UISpanStyle | null;
5
+ isFaded?: boolean;
6
+ depth?: number;
7
+ onSpanClick?: (id: string) => void;
8
+ selectedSpanId?: string;
9
+ isLastChild?: boolean;
10
+ hasChildren?: boolean;
11
+ isRootSpan?: boolean;
12
+ isExpanded?: boolean;
13
+ };
14
+ export declare function TimelineNameCol({ span, spanUI: _spanUI, isFaded, depth, onSpanClick, selectedSpanId, isLastChild, hasChildren: _hasChildren, isRootSpan, isExpanded: _isExpanded, }: TimelineNameColProps): import("react/jsx-runtime").JSX.Element;
15
+ export {};
@@ -0,0 +1,5 @@
1
+ type TimelineStructureSignProps = {
2
+ isLastChild?: boolean;
3
+ };
4
+ export declare function TimelineStructureSign({ isLastChild }: TimelineStructureSignProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
@@ -0,0 +1,12 @@
1
+ import { UISpan } from '../types';
2
+ type TimelineTimingColProps = {
3
+ span: UISpan;
4
+ selectedSpanId?: string;
5
+ isFaded?: boolean;
6
+ overallLatency?: number;
7
+ overallStartTime?: string;
8
+ color?: string;
9
+ chartWidth?: 'wide' | 'default';
10
+ };
11
+ export declare function TimelineTimingCol({ span, selectedSpanId, isFaded, overallLatency, overallStartTime, color, chartWidth, }: TimelineTimingColProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
@@ -0,0 +1,28 @@
1
+ import { LightSpanRecord } from '@mastra/core/storage';
2
+ import { LinkComponent } from '../../../ds/types/link-component';
3
+ export type TraceDataPanelPlacement = 'traces-list' | 'trace-page';
4
+ export interface TraceDataPanelViewProps {
5
+ traceId: string;
6
+ /** Lightweight spans for the trace. Caller fetches via useTraceLightSpans. */
7
+ spans: LightSpanRecord[] | undefined;
8
+ isLoading?: boolean;
9
+ onClose: () => void;
10
+ onSpanSelect?: (spanId: string | undefined) => void;
11
+ onEvaluateTrace?: () => void;
12
+ /** When set, a "Save as Dataset Item" button appears; the consumer owns the dialog. */
13
+ onSaveAsDatasetItem?: (args: {
14
+ traceId: string;
15
+ rootSpanId: string | undefined;
16
+ }) => void;
17
+ initialSpanId?: string | null;
18
+ onPrevious?: () => void;
19
+ onNext?: () => void;
20
+ collapsed?: boolean;
21
+ onCollapsedChange?: (collapsed: boolean) => void;
22
+ placement: TraceDataPanelPlacement;
23
+ timelineChartWidth?: 'wide' | 'default';
24
+ /** When both are provided, renders an "Open trace page" button. */
25
+ LinkComponent?: LinkComponent;
26
+ traceHref?: string;
27
+ }
28
+ export declare function TraceDataPanelView({ traceId, spans, isLoading, onClose, onSpanSelect, onEvaluateTrace, onSaveAsDatasetItem, initialSpanId, onPrevious, onNext, collapsed: controlledCollapsed, onCollapsedChange, placement, timelineChartWidth, LinkComponent, traceHref, }: TraceDataPanelViewProps): import("react/jsx-runtime").JSX.Element;