@mastra/playground-ui 44.0.0-alpha.0 → 44.0.0-alpha.2
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/CHANGELOG.md +20 -0
- package/dist/components/DataList.cjs.js +1 -1
- package/dist/components/DataList.es.js +1 -1
- package/dist/components/DateRangeTimeline.cjs.js +1 -1
- package/dist/components/DateRangeTimeline.cjs.js.map +1 -1
- package/dist/components/DateRangeTimeline.es.js +1 -1
- package/dist/components/DateRangeTimeline.es.js.map +1 -1
- package/dist/components/LogsDataList.cjs.js +1 -1
- package/dist/components/LogsDataList.es.js +1 -1
- package/dist/components/MarkdownRenderer.cjs.js +1 -1
- package/dist/components/MarkdownRenderer.es.js +1 -1
- package/dist/components/MessageScroller.cjs.js +1 -1
- package/dist/components/MessageScroller.cjs.js.map +1 -1
- package/dist/components/MessageScroller.es.js +1 -1
- package/dist/components/MessageScroller.es.js.map +1 -1
- package/dist/components/SankeyChart.cjs.js +67 -12
- package/dist/components/SankeyChart.cjs.js.map +1 -1
- package/dist/components/SankeyChart.es.js +67 -12
- package/dist/components/SankeyChart.es.js.map +1 -1
- package/dist/components/ai/plan.cjs.js +1 -1
- package/dist/components/ai/plan.es.js +1 -1
- package/dist/domains/logs/components/logs-list-view.cjs.js +1 -1
- package/dist/domains/logs/components/logs-list-view.es.js +1 -1
- package/dist/domains/logs/log-filters.cjs.js +4 -6
- package/dist/domains/logs/log-filters.cjs.js.map +1 -1
- package/dist/domains/logs/log-filters.es.js +4 -6
- package/dist/domains/logs/log-filters.es.js.map +1 -1
- package/dist/domains/metrics/metrics-filters.cjs.js +4 -6
- package/dist/domains/metrics/metrics-filters.cjs.js.map +1 -1
- package/dist/domains/metrics/metrics-filters.es.js +4 -6
- package/dist/domains/metrics/metrics-filters.es.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.cjs.js +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +1 -1
- package/dist/domains/traces/hooks/use-entity-names.cjs.js +3 -1
- package/dist/domains/traces/hooks/use-entity-names.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-entity-names.es.js +3 -1
- package/dist/domains/traces/hooks/use-entity-names.es.js.map +1 -1
- package/dist/domains/traces/trace-filters.cjs.js +4 -6
- package/dist/domains/traces/trace-filters.cjs.js.map +1 -1
- package/dist/domains/traces/trace-filters.es.js +4 -6
- package/dist/domains/traces/trace-filters.es.js.map +1 -1
- package/dist/{logs-data-list-BkmYnYuf.js → logs-data-list-BhDEUkXZ.js} +4 -5
- package/dist/logs-data-list-BhDEUkXZ.js.map +1 -0
- package/dist/{logs-data-list-B6XQnRed.cjs → logs-data-list-C_FyPCxE.cjs} +4 -5
- package/dist/logs-data-list-C_FyPCxE.cjs.map +1 -0
- package/dist/{markdown-renderer-CD2YXUdF.cjs → markdown-renderer-CfWz5SWN.cjs} +2 -2
- package/dist/{markdown-renderer-CD2YXUdF.cjs.map → markdown-renderer-CfWz5SWN.cjs.map} +1 -1
- package/dist/{markdown-renderer-BzKf1Gel.js → markdown-renderer-CqAR8lve.js} +2 -2
- package/dist/{markdown-renderer-BzKf1Gel.js.map → markdown-renderer-CqAR8lve.js.map} +1 -1
- package/dist/src/domains/logs/log-filters.d.ts +11 -9
- package/dist/src/domains/metrics/metrics-filters.d.ts +4 -4
- package/dist/src/domains/traces/trace-filters.d.ts +11 -9
- package/dist/src/ds/components/SankeyChart/sankey-chart-utils.d.ts +16 -0
- package/dist/src/ds/components/SankeyChart/use-sankey-chart-measurements.d.ts +1 -0
- package/dist/{traces-data-list-Bmx7jLZc.js → traces-data-list-CB4kjGeS.js} +3 -4
- package/dist/traces-data-list-CB4kjGeS.js.map +1 -0
- package/dist/{traces-data-list-Dx9tpivx.cjs → traces-data-list-CwGS6fk9.cjs} +3 -4
- package/dist/traces-data-list-CwGS6fk9.cjs.map +1 -0
- package/package.json +6 -6
- package/dist/logs-data-list-B6XQnRed.cjs.map +0 -1
- package/dist/logs-data-list-BkmYnYuf.js.map +0 -1
- package/dist/traces-data-list-Bmx7jLZc.js.map +0 -1
- package/dist/traces-data-list-Dx9tpivx.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-filters.cjs.js","sources":["../../../src/domains/traces/trace-filters.ts"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport type { ListTracesArgs } from '@mastra/core/storage';\nimport type { TraceDatePreset } from './types';\nimport type { PropertyFilterField, PropertyFilterToken } from '@/ds/components/PropertyFilter/types';\n\nexport type EntityOptions = { label: string; entityType: EntityType };\n\nexport const ROOT_ENTITY_TYPES = {\n AGENT: EntityType.AGENT,\n WORKFLOW: EntityType.WORKFLOW_RUN,\n SCORER: EntityType.SCORER,\n INGEST: EntityType.RAG_INGESTION,\n} as const;\n\nexport const ROOT_ENTITY_TYPE_OPTIONS = [\n { label: 'Agent', entityType: ROOT_ENTITY_TYPES.AGENT },\n { label: 'Workflow', entityType: ROOT_ENTITY_TYPES.WORKFLOW },\n { label: 'Scorer', entityType: ROOT_ENTITY_TYPES.SCORER },\n { label: 'Ingest', entityType: ROOT_ENTITY_TYPES.INGEST },\n] as const satisfies readonly EntityOptions[];\n\nexport type TraceStatusFilter = 'running' | 'success' | 'error';\n\nexport const TRACE_STATUS_OPTIONS = [\n { label: 'Running', value: 'running' },\n { label: 'Success', value: 'success' },\n { label: 'Error', value: 'error' },\n] as const satisfies readonly { label: string; value: TraceStatusFilter }[];\n\n/** Field ids for \"synthetic\" filter entries — they live in dedicated URL params\n * rather than the generic `filter*` set, but appear as rows in the Filter\n * popover so users can manage all filters from one place. */\nexport const TRACE_SYNTHETIC_FILTER_FIELD_IDS = ['rootEntityType', 'status'] as const;\n\nexport const TRACE_ROOT_ENTITY_TYPE_PARAM = 'rootEntityType';\nexport const TRACE_STATUS_PARAM = 'status';\nexport const TRACE_LIST_MODE_PARAM = 'listMode';\n/** Branch-mode only: identifies the anchor span that defines the displayed subtree.\n * Stable across intra-panel span navigation (which only changes `spanId`). */\nexport const TRACE_ANCHOR_SPAN_ID_PARAM = 'anchorSpanId';\nexport const TRACE_LIST_MODE_VALUES = new Set(['traces', 'branches'] as const);\nexport type TraceListMode = 'traces' | 'branches';\n\nexport const TRACE_LIST_MODE_OPTIONS = [\n { label: 'Traces (default)', value: 'traces' },\n { label: 'Branches', value: 'branches' },\n] as const satisfies readonly { label: string; value: TraceListMode }[];\nexport const TRACE_DATE_PRESET_PARAM = 'datePreset';\nexport const TRACE_DATE_FROM_PARAM = 'dateFrom';\nexport const TRACE_DATE_TO_PARAM = 'dateTo';\n\nexport const TRACE_DATE_PRESET_VALUES = new Set<TraceDatePreset>([\n 'all',\n 'last-24h',\n 'last-3d',\n 'last-7d',\n 'last-14d',\n 'last-30d',\n 'custom',\n]);\n\nexport const TRACE_PROPERTY_FILTER_PARAM_BY_FIELD = {\n tags: 'filterTags',\n entityId: 'filterEntityId',\n entityName: 'filterEntityName',\n traceId: 'filterTraceId',\n runId: 'filterRunId',\n threadId: 'filterThreadId',\n sessionId: 'filterSessionId',\n requestId: 'filterRequestId',\n resourceId: 'filterResourceId',\n userId: 'filterUserId',\n organizationId: 'filterOrganizationId',\n serviceName: 'filterServiceName',\n environment: 'filterEnvironment',\n experimentId: 'filterExperimentId',\n} as const;\n\nexport const TRACE_PROPERTY_FILTER_FIELD_IDS = Object.keys(TRACE_PROPERTY_FILTER_PARAM_BY_FIELD) as Array<\n keyof typeof TRACE_PROPERTY_FILTER_PARAM_BY_FIELD\n>;\n\nexport const TRACE_STATUS_VALUES = new Set<TraceStatusFilter>(['running', 'success', 'error']);\n\nexport const DEFAULT_TRACE_FILTERS_STORAGE_KEY = 'mastra:traces:saved-filters';\n\n/** Serialize the filter-related URL params (date + rootEntityType + status +\n * generic filterX set) to localStorage so the user can restore them on next\n * visit. Throws no errors — storage being unavailable is fine. */\nexport function saveTraceFiltersToStorage(\n params: URLSearchParams,\n storageKey: string = DEFAULT_TRACE_FILTERS_STORAGE_KEY,\n): void {\n const serialized = getPreservedTraceFilterParams(params);\n const preset = params.get(TRACE_DATE_PRESET_PARAM);\n if (preset) serialized.set(TRACE_DATE_PRESET_PARAM, preset);\n const from = params.get(TRACE_DATE_FROM_PARAM);\n if (from) serialized.set(TRACE_DATE_FROM_PARAM, from);\n const to = params.get(TRACE_DATE_TO_PARAM);\n if (to) serialized.set(TRACE_DATE_TO_PARAM, to);\n\n try {\n localStorage.setItem(storageKey, serialized.toString());\n } catch {\n // localStorage may be unavailable (private mode / quota) — silently skip.\n }\n}\n\n/** Forget any previously saved filter set. Called from the \"Remove filters\"\n * action so the next plain sidebar nav lands on an empty page. */\nexport function clearSavedTraceFilters(storageKey: string = DEFAULT_TRACE_FILTERS_STORAGE_KEY): void {\n try {\n localStorage.removeItem(storageKey);\n } catch {\n // ignore — storage may be unavailable\n }\n}\n\n/** Read a previously saved filter set and return it as URLSearchParams, or\n * null if nothing is saved or storage is unavailable. */\nexport function loadTraceFiltersFromStorage(\n storageKey: string = DEFAULT_TRACE_FILTERS_STORAGE_KEY,\n): URLSearchParams | null {\n try {\n const raw = localStorage.getItem(storageKey);\n if (!raw) return null;\n const parsed = new URLSearchParams(raw);\n return parsed.toString() ? parsed : null;\n } catch {\n return null;\n }\n}\n\n/** True when `params` carries any filter-related key — used to decide whether\n * to hydrate from localStorage on page mount (we only hydrate when the URL is\n * filter-clean, i.e. the user landed here via a plain sidebar nav). */\nexport function hasAnyTraceFilterParams(params: URLSearchParams): boolean {\n if (params.has(TRACE_DATE_PRESET_PARAM)) return true;\n if (params.has(TRACE_DATE_FROM_PARAM)) return true;\n if (params.has(TRACE_DATE_TO_PARAM)) return true;\n if (params.has(TRACE_ROOT_ENTITY_TYPE_PARAM)) return true;\n if (params.has(TRACE_STATUS_PARAM)) return true;\n if (params.has(TRACE_LIST_MODE_PARAM)) return true;\n for (const fieldId of TRACE_PROPERTY_FILTER_FIELD_IDS) {\n if (params.has(TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId])) return true;\n }\n return false;\n}\n\nexport function createTracePropertyFilterFields({\n availableTags,\n availableRootEntityNames,\n availableServiceNames,\n availableEnvironments,\n loading,\n}: {\n availableTags: string[];\n availableRootEntityNames: string[];\n availableServiceNames: string[];\n availableEnvironments: string[];\n loading?: {\n tags?: boolean;\n entityNames?: boolean;\n serviceNames?: boolean;\n environments?: boolean;\n };\n}): PropertyFilterField[] {\n const fields: PropertyFilterField[] = [\n {\n id: 'rootEntityType',\n label: 'Primitive Type',\n kind: 'pick-multi',\n searchable: false,\n options: ROOT_ENTITY_TYPE_OPTIONS.map(o => ({ label: o.label, value: o.entityType })),\n placeholder: 'Choose entity type',\n emptyText: 'No entity types.',\n },\n {\n id: 'entityName',\n label: 'Primitive Name',\n kind: 'pick-multi',\n options: availableRootEntityNames.map(name => ({ label: name, value: name })),\n placeholder: 'Choose entity names',\n emptyText: 'No entity names found.',\n isLoading: loading?.entityNames,\n },\n { id: 'entityId', label: 'Primitive ID', kind: 'text' },\n {\n id: 'status',\n label: 'Status',\n kind: 'pick-multi',\n searchable: false,\n options: TRACE_STATUS_OPTIONS.map(o => ({ label: o.label, value: o.value })),\n placeholder: 'Choose status',\n emptyText: 'No statuses.',\n },\n {\n id: 'tags',\n label: 'Tags',\n kind: 'pick-multi',\n multi: true,\n options: availableTags.map(tag => ({ label: tag, value: tag })),\n placeholder: 'Choose tags',\n emptyText: 'No tags found.',\n isLoading: loading?.tags,\n },\n {\n id: 'serviceName',\n label: 'Service Name',\n kind: 'pick-multi',\n options: availableServiceNames.map(name => ({ label: name, value: name })),\n placeholder: 'Choose service names',\n emptyText: 'No service names found.',\n isLoading: loading?.serviceNames,\n },\n {\n id: 'environment',\n label: 'Environment',\n kind: 'pick-multi',\n options: availableEnvironments.map(env => ({ label: env, value: env })),\n placeholder: 'Choose environments',\n emptyText: 'No environments found.',\n isLoading: loading?.environments,\n },\n { id: 'traceId', label: 'Trace ID', kind: 'text' },\n { id: 'runId', label: 'Run ID', kind: 'text' },\n { id: 'threadId', label: 'Thread ID', kind: 'text' },\n { id: 'sessionId', label: 'Session ID', kind: 'text' },\n { id: 'requestId', label: 'Request ID', kind: 'text' },\n { id: 'resourceId', label: 'Resource ID', kind: 'text' },\n { id: 'userId', label: 'User ID', kind: 'text' },\n { id: 'organizationId', label: 'Organization ID', kind: 'text' },\n { id: 'experimentId', label: 'Experiment ID', kind: 'text' },\n ];\n const byLabel = (a: PropertyFilterField, b: PropertyFilterField) => a.label.localeCompare(b.label);\n const pickMulti = fields.filter(f => f.kind === 'pick-multi').sort(byLabel);\n const text = fields.filter(f => f.kind === 'text').sort(byLabel);\n return [...pickMulti, ...text];\n}\n\n/**\n * Read filter tokens from URL search params preserving the order in which each\n * filter was first added (URLSearchParams iterates in insertion order). This\n * is used by the Filter popover + PropertyFilterApplied pills so the UI reflects the\n * order the user created the filters in.\n */\nexport function getTracePropertyFilterTokens(searchParams: URLSearchParams): PropertyFilterToken[] {\n const tokens: PropertyFilterToken[] = [];\n\n // Map URL param name → fieldId for both generic filterX params and the\n // dedicated synthetic params (rootEntityType, status).\n const paramToFieldId = new Map<string, string>([\n [TRACE_ROOT_ENTITY_TYPE_PARAM, 'rootEntityType'],\n [TRACE_STATUS_PARAM, 'status'],\n ]);\n for (const fieldId of TRACE_PROPERTY_FILTER_FIELD_IDS) {\n paramToFieldId.set(TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId], fieldId);\n }\n\n const seen = new Set<string>();\n for (const [paramName] of searchParams.entries()) {\n const fieldId = paramToFieldId.get(paramName);\n if (!fieldId || seen.has(fieldId)) continue;\n seen.add(fieldId);\n\n if (fieldId === 'tags') {\n const raw = searchParams.getAll(paramName);\n if (raw.length === 0) continue;\n // An empty `filterTags=` sentinel keeps the pill alive after a Reset\n // (neutral state = no selections) so users can re-pick without losing\n // the pill's position. Non-empty entries are the actual selected tags.\n tokens.push({ fieldId, value: raw.filter(Boolean) });\n continue;\n }\n\n // Text and synthetic single-value fields: include empty strings so\n // pending-but-not-yet-filled filters survive URL round-trips.\n const value = searchParams.get(paramName);\n if (value !== null) tokens.push({ fieldId, value });\n }\n\n return tokens;\n}\n\nexport function getPreservedTraceFilterParams(searchParams: URLSearchParams) {\n const next = new URLSearchParams();\n\n const rootEntityType = searchParams.get(TRACE_ROOT_ENTITY_TYPE_PARAM);\n if (rootEntityType) next.set(TRACE_ROOT_ENTITY_TYPE_PARAM, rootEntityType);\n\n const status = searchParams.get(TRACE_STATUS_PARAM);\n if (status) next.set(TRACE_STATUS_PARAM, status);\n\n const listMode = searchParams.get(TRACE_LIST_MODE_PARAM);\n if (listMode) next.set(TRACE_LIST_MODE_PARAM, listMode);\n\n for (const fieldId of TRACE_PROPERTY_FILTER_FIELD_IDS) {\n const param = TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId];\n if (fieldId === 'tags') {\n for (const value of searchParams.getAll(param)) {\n next.append(param, value);\n }\n continue;\n }\n\n const value = searchParams.get(param);\n if (value) {\n next.set(param, value);\n }\n }\n\n return next;\n}\n\n/**\n * Clear all filter params from `params` and re-add them in the given `tokens`\n * order so the URL (and therefore the PropertyFilterApplied pills) reflects the\n * creation order of filters. Handles the generic `filterX` params plus the\n * dedicated synthetic params (rootEntityType, status).\n */\nexport function applyTracePropertyFilterTokens(params: URLSearchParams, tokens: PropertyFilterToken[]) {\n params.delete(TRACE_ROOT_ENTITY_TYPE_PARAM);\n params.delete(TRACE_STATUS_PARAM);\n for (const fieldId of TRACE_PROPERTY_FILTER_FIELD_IDS) {\n params.delete(TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId]);\n }\n\n for (const token of tokens) {\n if (token.fieldId === 'rootEntityType' && typeof token.value === 'string') {\n params.set(TRACE_ROOT_ENTITY_TYPE_PARAM, token.value);\n continue;\n }\n if (token.fieldId === 'status' && typeof token.value === 'string') {\n params.set(TRACE_STATUS_PARAM, token.value);\n continue;\n }\n\n const param =\n TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[token.fieldId as keyof typeof TRACE_PROPERTY_FILTER_PARAM_BY_FIELD];\n if (!param) continue;\n\n if (token.fieldId === 'tags' && Array.isArray(token.value)) {\n if (token.value.length === 0) {\n // Empty sentinel — keeps the pill visible after Reset.\n params.append(param, '');\n } else {\n for (const value of token.value) {\n params.append(param, value);\n }\n }\n continue;\n }\n\n if (typeof token.value === 'string') {\n // Persist empty / 'Any' values too so neutralized-but-still-visible pills\n // survive URL round-trips. buildTraceListFilters skips these on the API\n // query side so neutrals never reach the backend.\n params.set(param, token.value.trim());\n }\n }\n}\n\nexport function buildTraceListFilters({\n rootEntityType,\n status,\n dateFrom,\n dateTo,\n tokens,\n}: {\n rootEntityType?: string;\n status?: TraceStatusFilter;\n dateFrom?: Date;\n dateTo?: Date;\n tokens: PropertyFilterToken[];\n}): ListTracesArgs['filters'] {\n const filters: NonNullable<ListTracesArgs['filters']> = {};\n\n if (rootEntityType) {\n filters.entityType = rootEntityType as NonNullable<ListTracesArgs['filters']>['entityType'];\n }\n\n if (status) {\n filters.status = status as NonNullable<ListTracesArgs['filters']>['status'];\n }\n\n if (dateFrom) {\n filters.startedAt = { start: dateFrom };\n }\n\n if (dateTo) {\n filters.endedAt = { end: dateTo };\n }\n\n for (const token of tokens) {\n if (token.fieldId === 'tags') {\n if (Array.isArray(token.value) && token.value.length > 0) {\n filters.tags = token.value;\n } else if (typeof token.value === 'string' && token.value.trim()) {\n // pick-multi tags: single-string token → wrap for the server's array schema.\n filters.tags = [token.value.trim()];\n }\n continue;\n }\n\n if (typeof token.value !== 'string') continue;\n // Skip empty-string tokens (unfilled pending filters) and 'Any'\n // (pick-multi single-select neutral state) so neutrals never reach the\n // backend.\n if (!token.value.trim()) continue;\n if (token.value === 'Any') continue;\n\n switch (token.fieldId) {\n case 'entityId':\n filters.entityId = token.value;\n break;\n case 'entityName':\n filters.entityName = token.value;\n break;\n case 'traceId':\n filters.traceId = token.value;\n break;\n case 'runId':\n filters.runId = token.value;\n break;\n case 'threadId':\n filters.threadId = token.value;\n break;\n case 'sessionId':\n filters.sessionId = token.value;\n break;\n case 'requestId':\n filters.requestId = token.value;\n break;\n case 'resourceId':\n filters.resourceId = token.value;\n break;\n case 'userId':\n filters.userId = token.value;\n break;\n case 'organizationId':\n filters.organizationId = token.value;\n break;\n case 'serviceName':\n filters.serviceName = token.value;\n break;\n case 'environment':\n filters.environment = token.value;\n break;\n case 'experimentId':\n filters.experimentId = token.value;\n break;\n default:\n break;\n }\n }\n\n return filters;\n}\n\n/**\n * \"Clear\" semantics: keep all filter pills but neutralize each value.\n * '' for text fields, 'Any' for single-select pick-multi, [] for multi-select pick-multi.\n * Date range is intentionally NOT touched here — that's a separate concern.\n */\nexport function neutralizeFilterTokens(\n filterFields: PropertyFilterField[],\n filterTokens: PropertyFilterToken[],\n): PropertyFilterToken[] {\n return filterTokens.map(token => {\n const field = filterFields.find(f => f.id === token.fieldId);\n if (!field) return token;\n if (field.kind === 'text') return { fieldId: token.fieldId, value: '' };\n if (field.kind === 'pick-multi') {\n if (field.omitAnyOption) return token;\n return field.multi ? { fieldId: token.fieldId, value: [] } : { fieldId: token.fieldId, value: 'Any' };\n }\n return token;\n });\n}\n"],"names":["EntityType","value"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trace-filters.cjs.js","sources":["../../../src/domains/traces/trace-filters.ts"],"sourcesContent":["import type { EntityType } from '@mastra/core/observability';\nimport type { ListTracesArgs } from '@mastra/core/storage';\nimport type { TraceDatePreset } from './types';\nimport type { PropertyFilterField, PropertyFilterToken } from '@/ds/components/PropertyFilter/types';\n\ntype EntityTypeValue = `${EntityType}`;\n\nexport type EntityOptions = { label: string; entityType: EntityTypeValue };\n\nexport const ROOT_ENTITY_TYPES = {\n AGENT: 'agent',\n WORKFLOW: 'workflow_run',\n SCORER: 'scorer',\n INGEST: 'rag_ingestion',\n} as const satisfies Record<string, EntityTypeValue>;\n\nexport const ROOT_ENTITY_TYPE_OPTIONS = [\n { label: 'Agent', entityType: ROOT_ENTITY_TYPES.AGENT },\n { label: 'Workflow', entityType: ROOT_ENTITY_TYPES.WORKFLOW },\n { label: 'Scorer', entityType: ROOT_ENTITY_TYPES.SCORER },\n { label: 'Ingest', entityType: ROOT_ENTITY_TYPES.INGEST },\n] as const satisfies readonly EntityOptions[];\n\nexport type TraceStatusFilter = 'running' | 'success' | 'error';\n\nexport const TRACE_STATUS_OPTIONS = [\n { label: 'Running', value: 'running' },\n { label: 'Success', value: 'success' },\n { label: 'Error', value: 'error' },\n] as const satisfies readonly { label: string; value: TraceStatusFilter }[];\n\n/** Field ids for \"synthetic\" filter entries — they live in dedicated URL params\n * rather than the generic `filter*` set, but appear as rows in the Filter\n * popover so users can manage all filters from one place. */\nexport const TRACE_SYNTHETIC_FILTER_FIELD_IDS = ['rootEntityType', 'status'] as const;\n\nexport const TRACE_ROOT_ENTITY_TYPE_PARAM = 'rootEntityType';\nexport const TRACE_STATUS_PARAM = 'status';\nexport const TRACE_LIST_MODE_PARAM = 'listMode';\n/** Branch-mode only: identifies the anchor span that defines the displayed subtree.\n * Stable across intra-panel span navigation (which only changes `spanId`). */\nexport const TRACE_ANCHOR_SPAN_ID_PARAM = 'anchorSpanId';\nexport const TRACE_LIST_MODE_VALUES = new Set(['traces', 'branches'] as const);\nexport type TraceListMode = 'traces' | 'branches';\n\nexport const TRACE_LIST_MODE_OPTIONS = [\n { label: 'Traces (default)', value: 'traces' },\n { label: 'Branches', value: 'branches' },\n] as const satisfies readonly { label: string; value: TraceListMode }[];\nexport const TRACE_DATE_PRESET_PARAM = 'datePreset';\nexport const TRACE_DATE_FROM_PARAM = 'dateFrom';\nexport const TRACE_DATE_TO_PARAM = 'dateTo';\n\nexport const TRACE_DATE_PRESET_VALUES = new Set<TraceDatePreset>([\n 'all',\n 'last-24h',\n 'last-3d',\n 'last-7d',\n 'last-14d',\n 'last-30d',\n 'custom',\n]);\n\nexport const TRACE_PROPERTY_FILTER_PARAM_BY_FIELD = {\n tags: 'filterTags',\n entityId: 'filterEntityId',\n entityName: 'filterEntityName',\n traceId: 'filterTraceId',\n runId: 'filterRunId',\n threadId: 'filterThreadId',\n sessionId: 'filterSessionId',\n requestId: 'filterRequestId',\n resourceId: 'filterResourceId',\n userId: 'filterUserId',\n organizationId: 'filterOrganizationId',\n serviceName: 'filterServiceName',\n environment: 'filterEnvironment',\n experimentId: 'filterExperimentId',\n} as const;\n\nexport const TRACE_PROPERTY_FILTER_FIELD_IDS = Object.keys(TRACE_PROPERTY_FILTER_PARAM_BY_FIELD) as Array<\n keyof typeof TRACE_PROPERTY_FILTER_PARAM_BY_FIELD\n>;\n\nexport const TRACE_STATUS_VALUES = new Set<TraceStatusFilter>(['running', 'success', 'error']);\n\nexport const DEFAULT_TRACE_FILTERS_STORAGE_KEY = 'mastra:traces:saved-filters';\n\n/** Serialize the filter-related URL params (date + rootEntityType + status +\n * generic filterX set) to localStorage so the user can restore them on next\n * visit. Throws no errors — storage being unavailable is fine. */\nexport function saveTraceFiltersToStorage(\n params: URLSearchParams,\n storageKey: string = DEFAULT_TRACE_FILTERS_STORAGE_KEY,\n): void {\n const serialized = getPreservedTraceFilterParams(params);\n const preset = params.get(TRACE_DATE_PRESET_PARAM);\n if (preset) serialized.set(TRACE_DATE_PRESET_PARAM, preset);\n const from = params.get(TRACE_DATE_FROM_PARAM);\n if (from) serialized.set(TRACE_DATE_FROM_PARAM, from);\n const to = params.get(TRACE_DATE_TO_PARAM);\n if (to) serialized.set(TRACE_DATE_TO_PARAM, to);\n\n try {\n localStorage.setItem(storageKey, serialized.toString());\n } catch {\n // localStorage may be unavailable (private mode / quota) — silently skip.\n }\n}\n\n/** Forget any previously saved filter set. Called from the \"Remove filters\"\n * action so the next plain sidebar nav lands on an empty page. */\nexport function clearSavedTraceFilters(storageKey: string = DEFAULT_TRACE_FILTERS_STORAGE_KEY): void {\n try {\n localStorage.removeItem(storageKey);\n } catch {\n // ignore — storage may be unavailable\n }\n}\n\n/** Read a previously saved filter set and return it as URLSearchParams, or\n * null if nothing is saved or storage is unavailable. */\nexport function loadTraceFiltersFromStorage(\n storageKey: string = DEFAULT_TRACE_FILTERS_STORAGE_KEY,\n): URLSearchParams | null {\n try {\n const raw = localStorage.getItem(storageKey);\n if (!raw) return null;\n const parsed = new URLSearchParams(raw);\n return parsed.toString() ? parsed : null;\n } catch {\n return null;\n }\n}\n\n/** True when `params` carries any filter-related key — used to decide whether\n * to hydrate from localStorage on page mount (we only hydrate when the URL is\n * filter-clean, i.e. the user landed here via a plain sidebar nav). */\nexport function hasAnyTraceFilterParams(params: URLSearchParams): boolean {\n if (params.has(TRACE_DATE_PRESET_PARAM)) return true;\n if (params.has(TRACE_DATE_FROM_PARAM)) return true;\n if (params.has(TRACE_DATE_TO_PARAM)) return true;\n if (params.has(TRACE_ROOT_ENTITY_TYPE_PARAM)) return true;\n if (params.has(TRACE_STATUS_PARAM)) return true;\n if (params.has(TRACE_LIST_MODE_PARAM)) return true;\n for (const fieldId of TRACE_PROPERTY_FILTER_FIELD_IDS) {\n if (params.has(TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId])) return true;\n }\n return false;\n}\n\nexport function createTracePropertyFilterFields({\n availableTags,\n availableRootEntityNames,\n availableServiceNames,\n availableEnvironments,\n loading,\n}: {\n availableTags: string[];\n availableRootEntityNames: string[];\n availableServiceNames: string[];\n availableEnvironments: string[];\n loading?: {\n tags?: boolean;\n entityNames?: boolean;\n serviceNames?: boolean;\n environments?: boolean;\n };\n}): PropertyFilterField[] {\n const fields: PropertyFilterField[] = [\n {\n id: 'rootEntityType',\n label: 'Primitive Type',\n kind: 'pick-multi',\n searchable: false,\n options: ROOT_ENTITY_TYPE_OPTIONS.map(o => ({ label: o.label, value: o.entityType })),\n placeholder: 'Choose entity type',\n emptyText: 'No entity types.',\n },\n {\n id: 'entityName',\n label: 'Primitive Name',\n kind: 'pick-multi',\n options: availableRootEntityNames.map(name => ({ label: name, value: name })),\n placeholder: 'Choose entity names',\n emptyText: 'No entity names found.',\n isLoading: loading?.entityNames,\n },\n { id: 'entityId', label: 'Primitive ID', kind: 'text' },\n {\n id: 'status',\n label: 'Status',\n kind: 'pick-multi',\n searchable: false,\n options: TRACE_STATUS_OPTIONS.map(o => ({ label: o.label, value: o.value })),\n placeholder: 'Choose status',\n emptyText: 'No statuses.',\n },\n {\n id: 'tags',\n label: 'Tags',\n kind: 'pick-multi',\n multi: true,\n options: availableTags.map(tag => ({ label: tag, value: tag })),\n placeholder: 'Choose tags',\n emptyText: 'No tags found.',\n isLoading: loading?.tags,\n },\n {\n id: 'serviceName',\n label: 'Service Name',\n kind: 'pick-multi',\n options: availableServiceNames.map(name => ({ label: name, value: name })),\n placeholder: 'Choose service names',\n emptyText: 'No service names found.',\n isLoading: loading?.serviceNames,\n },\n {\n id: 'environment',\n label: 'Environment',\n kind: 'pick-multi',\n options: availableEnvironments.map(env => ({ label: env, value: env })),\n placeholder: 'Choose environments',\n emptyText: 'No environments found.',\n isLoading: loading?.environments,\n },\n { id: 'traceId', label: 'Trace ID', kind: 'text' },\n { id: 'runId', label: 'Run ID', kind: 'text' },\n { id: 'threadId', label: 'Thread ID', kind: 'text' },\n { id: 'sessionId', label: 'Session ID', kind: 'text' },\n { id: 'requestId', label: 'Request ID', kind: 'text' },\n { id: 'resourceId', label: 'Resource ID', kind: 'text' },\n { id: 'userId', label: 'User ID', kind: 'text' },\n { id: 'organizationId', label: 'Organization ID', kind: 'text' },\n { id: 'experimentId', label: 'Experiment ID', kind: 'text' },\n ];\n const byLabel = (a: PropertyFilterField, b: PropertyFilterField) => a.label.localeCompare(b.label);\n const pickMulti = fields.filter(f => f.kind === 'pick-multi').sort(byLabel);\n const text = fields.filter(f => f.kind === 'text').sort(byLabel);\n return [...pickMulti, ...text];\n}\n\n/**\n * Read filter tokens from URL search params preserving the order in which each\n * filter was first added (URLSearchParams iterates in insertion order). This\n * is used by the Filter popover + PropertyFilterApplied pills so the UI reflects the\n * order the user created the filters in.\n */\nexport function getTracePropertyFilterTokens(searchParams: URLSearchParams): PropertyFilterToken[] {\n const tokens: PropertyFilterToken[] = [];\n\n // Map URL param name → fieldId for both generic filterX params and the\n // dedicated synthetic params (rootEntityType, status).\n const paramToFieldId = new Map<string, string>([\n [TRACE_ROOT_ENTITY_TYPE_PARAM, 'rootEntityType'],\n [TRACE_STATUS_PARAM, 'status'],\n ]);\n for (const fieldId of TRACE_PROPERTY_FILTER_FIELD_IDS) {\n paramToFieldId.set(TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId], fieldId);\n }\n\n const seen = new Set<string>();\n for (const [paramName] of searchParams.entries()) {\n const fieldId = paramToFieldId.get(paramName);\n if (!fieldId || seen.has(fieldId)) continue;\n seen.add(fieldId);\n\n if (fieldId === 'tags') {\n const raw = searchParams.getAll(paramName);\n if (raw.length === 0) continue;\n // An empty `filterTags=` sentinel keeps the pill alive after a Reset\n // (neutral state = no selections) so users can re-pick without losing\n // the pill's position. Non-empty entries are the actual selected tags.\n tokens.push({ fieldId, value: raw.filter(Boolean) });\n continue;\n }\n\n // Text and synthetic single-value fields: include empty strings so\n // pending-but-not-yet-filled filters survive URL round-trips.\n const value = searchParams.get(paramName);\n if (value !== null) tokens.push({ fieldId, value });\n }\n\n return tokens;\n}\n\nexport function getPreservedTraceFilterParams(searchParams: URLSearchParams) {\n const next = new URLSearchParams();\n\n const rootEntityType = searchParams.get(TRACE_ROOT_ENTITY_TYPE_PARAM);\n if (rootEntityType) next.set(TRACE_ROOT_ENTITY_TYPE_PARAM, rootEntityType);\n\n const status = searchParams.get(TRACE_STATUS_PARAM);\n if (status) next.set(TRACE_STATUS_PARAM, status);\n\n const listMode = searchParams.get(TRACE_LIST_MODE_PARAM);\n if (listMode) next.set(TRACE_LIST_MODE_PARAM, listMode);\n\n for (const fieldId of TRACE_PROPERTY_FILTER_FIELD_IDS) {\n const param = TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId];\n if (fieldId === 'tags') {\n for (const value of searchParams.getAll(param)) {\n next.append(param, value);\n }\n continue;\n }\n\n const value = searchParams.get(param);\n if (value) {\n next.set(param, value);\n }\n }\n\n return next;\n}\n\n/**\n * Clear all filter params from `params` and re-add them in the given `tokens`\n * order so the URL (and therefore the PropertyFilterApplied pills) reflects the\n * creation order of filters. Handles the generic `filterX` params plus the\n * dedicated synthetic params (rootEntityType, status).\n */\nexport function applyTracePropertyFilterTokens(params: URLSearchParams, tokens: PropertyFilterToken[]) {\n params.delete(TRACE_ROOT_ENTITY_TYPE_PARAM);\n params.delete(TRACE_STATUS_PARAM);\n for (const fieldId of TRACE_PROPERTY_FILTER_FIELD_IDS) {\n params.delete(TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId]);\n }\n\n for (const token of tokens) {\n if (token.fieldId === 'rootEntityType' && typeof token.value === 'string') {\n params.set(TRACE_ROOT_ENTITY_TYPE_PARAM, token.value);\n continue;\n }\n if (token.fieldId === 'status' && typeof token.value === 'string') {\n params.set(TRACE_STATUS_PARAM, token.value);\n continue;\n }\n\n const param =\n TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[token.fieldId as keyof typeof TRACE_PROPERTY_FILTER_PARAM_BY_FIELD];\n if (!param) continue;\n\n if (token.fieldId === 'tags' && Array.isArray(token.value)) {\n if (token.value.length === 0) {\n // Empty sentinel — keeps the pill visible after Reset.\n params.append(param, '');\n } else {\n for (const value of token.value) {\n params.append(param, value);\n }\n }\n continue;\n }\n\n if (typeof token.value === 'string') {\n // Persist empty / 'Any' values too so neutralized-but-still-visible pills\n // survive URL round-trips. buildTraceListFilters skips these on the API\n // query side so neutrals never reach the backend.\n params.set(param, token.value.trim());\n }\n }\n}\n\nexport function buildTraceListFilters({\n rootEntityType,\n status,\n dateFrom,\n dateTo,\n tokens,\n}: {\n rootEntityType?: string;\n status?: TraceStatusFilter;\n dateFrom?: Date;\n dateTo?: Date;\n tokens: PropertyFilterToken[];\n}): ListTracesArgs['filters'] {\n const filters: NonNullable<ListTracesArgs['filters']> = {};\n\n if (rootEntityType) {\n filters.entityType = rootEntityType as NonNullable<ListTracesArgs['filters']>['entityType'];\n }\n\n if (status) {\n filters.status = status as NonNullable<ListTracesArgs['filters']>['status'];\n }\n\n if (dateFrom) {\n filters.startedAt = { start: dateFrom };\n }\n\n if (dateTo) {\n filters.endedAt = { end: dateTo };\n }\n\n for (const token of tokens) {\n if (token.fieldId === 'tags') {\n if (Array.isArray(token.value) && token.value.length > 0) {\n filters.tags = token.value;\n } else if (typeof token.value === 'string' && token.value.trim()) {\n // pick-multi tags: single-string token → wrap for the server's array schema.\n filters.tags = [token.value.trim()];\n }\n continue;\n }\n\n if (typeof token.value !== 'string') continue;\n // Skip empty-string tokens (unfilled pending filters) and 'Any'\n // (pick-multi single-select neutral state) so neutrals never reach the\n // backend.\n if (!token.value.trim()) continue;\n if (token.value === 'Any') continue;\n\n switch (token.fieldId) {\n case 'entityId':\n filters.entityId = token.value;\n break;\n case 'entityName':\n filters.entityName = token.value;\n break;\n case 'traceId':\n filters.traceId = token.value;\n break;\n case 'runId':\n filters.runId = token.value;\n break;\n case 'threadId':\n filters.threadId = token.value;\n break;\n case 'sessionId':\n filters.sessionId = token.value;\n break;\n case 'requestId':\n filters.requestId = token.value;\n break;\n case 'resourceId':\n filters.resourceId = token.value;\n break;\n case 'userId':\n filters.userId = token.value;\n break;\n case 'organizationId':\n filters.organizationId = token.value;\n break;\n case 'serviceName':\n filters.serviceName = token.value;\n break;\n case 'environment':\n filters.environment = token.value;\n break;\n case 'experimentId':\n filters.experimentId = token.value;\n break;\n default:\n break;\n }\n }\n\n return filters;\n}\n\n/**\n * \"Clear\" semantics: keep all filter pills but neutralize each value.\n * '' for text fields, 'Any' for single-select pick-multi, [] for multi-select pick-multi.\n * Date range is intentionally NOT touched here — that's a separate concern.\n */\nexport function neutralizeFilterTokens(\n filterFields: PropertyFilterField[],\n filterTokens: PropertyFilterToken[],\n): PropertyFilterToken[] {\n return filterTokens.map(token => {\n const field = filterFields.find(f => f.id === token.fieldId);\n if (!field) return token;\n if (field.kind === 'text') return { fieldId: token.fieldId, value: '' };\n if (field.kind === 'pick-multi') {\n if (field.omitAnyOption) return token;\n return field.multi ? { fieldId: token.fieldId, value: [] } : { fieldId: token.fieldId, value: 'Any' };\n }\n return token;\n });\n}\n"],"names":["value"],"mappings":"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"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { EntityType } from '@mastra/core/observability';
|
|
2
|
-
|
|
3
1
|
const ROOT_ENTITY_TYPES = {
|
|
4
|
-
AGENT:
|
|
5
|
-
WORKFLOW:
|
|
6
|
-
SCORER:
|
|
7
|
-
INGEST:
|
|
2
|
+
AGENT: "agent",
|
|
3
|
+
WORKFLOW: "workflow_run",
|
|
4
|
+
SCORER: "scorer",
|
|
5
|
+
INGEST: "rag_ingestion"
|
|
8
6
|
};
|
|
9
7
|
const ROOT_ENTITY_TYPE_OPTIONS = [
|
|
10
8
|
{ label: "Agent", entityType: ROOT_ENTITY_TYPES.AGENT },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-filters.es.js","sources":["../../../src/domains/traces/trace-filters.ts"],"sourcesContent":["import { EntityType } from '@mastra/core/observability';\nimport type { ListTracesArgs } from '@mastra/core/storage';\nimport type { TraceDatePreset } from './types';\nimport type { PropertyFilterField, PropertyFilterToken } from '@/ds/components/PropertyFilter/types';\n\nexport type EntityOptions = { label: string; entityType: EntityType };\n\nexport const ROOT_ENTITY_TYPES = {\n AGENT: EntityType.AGENT,\n WORKFLOW: EntityType.WORKFLOW_RUN,\n SCORER: EntityType.SCORER,\n INGEST: EntityType.RAG_INGESTION,\n} as const;\n\nexport const ROOT_ENTITY_TYPE_OPTIONS = [\n { label: 'Agent', entityType: ROOT_ENTITY_TYPES.AGENT },\n { label: 'Workflow', entityType: ROOT_ENTITY_TYPES.WORKFLOW },\n { label: 'Scorer', entityType: ROOT_ENTITY_TYPES.SCORER },\n { label: 'Ingest', entityType: ROOT_ENTITY_TYPES.INGEST },\n] as const satisfies readonly EntityOptions[];\n\nexport type TraceStatusFilter = 'running' | 'success' | 'error';\n\nexport const TRACE_STATUS_OPTIONS = [\n { label: 'Running', value: 'running' },\n { label: 'Success', value: 'success' },\n { label: 'Error', value: 'error' },\n] as const satisfies readonly { label: string; value: TraceStatusFilter }[];\n\n/** Field ids for \"synthetic\" filter entries — they live in dedicated URL params\n * rather than the generic `filter*` set, but appear as rows in the Filter\n * popover so users can manage all filters from one place. */\nexport const TRACE_SYNTHETIC_FILTER_FIELD_IDS = ['rootEntityType', 'status'] as const;\n\nexport const TRACE_ROOT_ENTITY_TYPE_PARAM = 'rootEntityType';\nexport const TRACE_STATUS_PARAM = 'status';\nexport const TRACE_LIST_MODE_PARAM = 'listMode';\n/** Branch-mode only: identifies the anchor span that defines the displayed subtree.\n * Stable across intra-panel span navigation (which only changes `spanId`). */\nexport const TRACE_ANCHOR_SPAN_ID_PARAM = 'anchorSpanId';\nexport const TRACE_LIST_MODE_VALUES = new Set(['traces', 'branches'] as const);\nexport type TraceListMode = 'traces' | 'branches';\n\nexport const TRACE_LIST_MODE_OPTIONS = [\n { label: 'Traces (default)', value: 'traces' },\n { label: 'Branches', value: 'branches' },\n] as const satisfies readonly { label: string; value: TraceListMode }[];\nexport const TRACE_DATE_PRESET_PARAM = 'datePreset';\nexport const TRACE_DATE_FROM_PARAM = 'dateFrom';\nexport const TRACE_DATE_TO_PARAM = 'dateTo';\n\nexport const TRACE_DATE_PRESET_VALUES = new Set<TraceDatePreset>([\n 'all',\n 'last-24h',\n 'last-3d',\n 'last-7d',\n 'last-14d',\n 'last-30d',\n 'custom',\n]);\n\nexport const TRACE_PROPERTY_FILTER_PARAM_BY_FIELD = {\n tags: 'filterTags',\n entityId: 'filterEntityId',\n entityName: 'filterEntityName',\n traceId: 'filterTraceId',\n runId: 'filterRunId',\n threadId: 'filterThreadId',\n sessionId: 'filterSessionId',\n requestId: 'filterRequestId',\n resourceId: 'filterResourceId',\n userId: 'filterUserId',\n organizationId: 'filterOrganizationId',\n serviceName: 'filterServiceName',\n environment: 'filterEnvironment',\n experimentId: 'filterExperimentId',\n} as const;\n\nexport const TRACE_PROPERTY_FILTER_FIELD_IDS = Object.keys(TRACE_PROPERTY_FILTER_PARAM_BY_FIELD) as Array<\n keyof typeof TRACE_PROPERTY_FILTER_PARAM_BY_FIELD\n>;\n\nexport const TRACE_STATUS_VALUES = new Set<TraceStatusFilter>(['running', 'success', 'error']);\n\nexport const DEFAULT_TRACE_FILTERS_STORAGE_KEY = 'mastra:traces:saved-filters';\n\n/** Serialize the filter-related URL params (date + rootEntityType + status +\n * generic filterX set) to localStorage so the user can restore them on next\n * visit. Throws no errors — storage being unavailable is fine. */\nexport function saveTraceFiltersToStorage(\n params: URLSearchParams,\n storageKey: string = DEFAULT_TRACE_FILTERS_STORAGE_KEY,\n): void {\n const serialized = getPreservedTraceFilterParams(params);\n const preset = params.get(TRACE_DATE_PRESET_PARAM);\n if (preset) serialized.set(TRACE_DATE_PRESET_PARAM, preset);\n const from = params.get(TRACE_DATE_FROM_PARAM);\n if (from) serialized.set(TRACE_DATE_FROM_PARAM, from);\n const to = params.get(TRACE_DATE_TO_PARAM);\n if (to) serialized.set(TRACE_DATE_TO_PARAM, to);\n\n try {\n localStorage.setItem(storageKey, serialized.toString());\n } catch {\n // localStorage may be unavailable (private mode / quota) — silently skip.\n }\n}\n\n/** Forget any previously saved filter set. Called from the \"Remove filters\"\n * action so the next plain sidebar nav lands on an empty page. */\nexport function clearSavedTraceFilters(storageKey: string = DEFAULT_TRACE_FILTERS_STORAGE_KEY): void {\n try {\n localStorage.removeItem(storageKey);\n } catch {\n // ignore — storage may be unavailable\n }\n}\n\n/** Read a previously saved filter set and return it as URLSearchParams, or\n * null if nothing is saved or storage is unavailable. */\nexport function loadTraceFiltersFromStorage(\n storageKey: string = DEFAULT_TRACE_FILTERS_STORAGE_KEY,\n): URLSearchParams | null {\n try {\n const raw = localStorage.getItem(storageKey);\n if (!raw) return null;\n const parsed = new URLSearchParams(raw);\n return parsed.toString() ? parsed : null;\n } catch {\n return null;\n }\n}\n\n/** True when `params` carries any filter-related key — used to decide whether\n * to hydrate from localStorage on page mount (we only hydrate when the URL is\n * filter-clean, i.e. the user landed here via a plain sidebar nav). */\nexport function hasAnyTraceFilterParams(params: URLSearchParams): boolean {\n if (params.has(TRACE_DATE_PRESET_PARAM)) return true;\n if (params.has(TRACE_DATE_FROM_PARAM)) return true;\n if (params.has(TRACE_DATE_TO_PARAM)) return true;\n if (params.has(TRACE_ROOT_ENTITY_TYPE_PARAM)) return true;\n if (params.has(TRACE_STATUS_PARAM)) return true;\n if (params.has(TRACE_LIST_MODE_PARAM)) return true;\n for (const fieldId of TRACE_PROPERTY_FILTER_FIELD_IDS) {\n if (params.has(TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId])) return true;\n }\n return false;\n}\n\nexport function createTracePropertyFilterFields({\n availableTags,\n availableRootEntityNames,\n availableServiceNames,\n availableEnvironments,\n loading,\n}: {\n availableTags: string[];\n availableRootEntityNames: string[];\n availableServiceNames: string[];\n availableEnvironments: string[];\n loading?: {\n tags?: boolean;\n entityNames?: boolean;\n serviceNames?: boolean;\n environments?: boolean;\n };\n}): PropertyFilterField[] {\n const fields: PropertyFilterField[] = [\n {\n id: 'rootEntityType',\n label: 'Primitive Type',\n kind: 'pick-multi',\n searchable: false,\n options: ROOT_ENTITY_TYPE_OPTIONS.map(o => ({ label: o.label, value: o.entityType })),\n placeholder: 'Choose entity type',\n emptyText: 'No entity types.',\n },\n {\n id: 'entityName',\n label: 'Primitive Name',\n kind: 'pick-multi',\n options: availableRootEntityNames.map(name => ({ label: name, value: name })),\n placeholder: 'Choose entity names',\n emptyText: 'No entity names found.',\n isLoading: loading?.entityNames,\n },\n { id: 'entityId', label: 'Primitive ID', kind: 'text' },\n {\n id: 'status',\n label: 'Status',\n kind: 'pick-multi',\n searchable: false,\n options: TRACE_STATUS_OPTIONS.map(o => ({ label: o.label, value: o.value })),\n placeholder: 'Choose status',\n emptyText: 'No statuses.',\n },\n {\n id: 'tags',\n label: 'Tags',\n kind: 'pick-multi',\n multi: true,\n options: availableTags.map(tag => ({ label: tag, value: tag })),\n placeholder: 'Choose tags',\n emptyText: 'No tags found.',\n isLoading: loading?.tags,\n },\n {\n id: 'serviceName',\n label: 'Service Name',\n kind: 'pick-multi',\n options: availableServiceNames.map(name => ({ label: name, value: name })),\n placeholder: 'Choose service names',\n emptyText: 'No service names found.',\n isLoading: loading?.serviceNames,\n },\n {\n id: 'environment',\n label: 'Environment',\n kind: 'pick-multi',\n options: availableEnvironments.map(env => ({ label: env, value: env })),\n placeholder: 'Choose environments',\n emptyText: 'No environments found.',\n isLoading: loading?.environments,\n },\n { id: 'traceId', label: 'Trace ID', kind: 'text' },\n { id: 'runId', label: 'Run ID', kind: 'text' },\n { id: 'threadId', label: 'Thread ID', kind: 'text' },\n { id: 'sessionId', label: 'Session ID', kind: 'text' },\n { id: 'requestId', label: 'Request ID', kind: 'text' },\n { id: 'resourceId', label: 'Resource ID', kind: 'text' },\n { id: 'userId', label: 'User ID', kind: 'text' },\n { id: 'organizationId', label: 'Organization ID', kind: 'text' },\n { id: 'experimentId', label: 'Experiment ID', kind: 'text' },\n ];\n const byLabel = (a: PropertyFilterField, b: PropertyFilterField) => a.label.localeCompare(b.label);\n const pickMulti = fields.filter(f => f.kind === 'pick-multi').sort(byLabel);\n const text = fields.filter(f => f.kind === 'text').sort(byLabel);\n return [...pickMulti, ...text];\n}\n\n/**\n * Read filter tokens from URL search params preserving the order in which each\n * filter was first added (URLSearchParams iterates in insertion order). This\n * is used by the Filter popover + PropertyFilterApplied pills so the UI reflects the\n * order the user created the filters in.\n */\nexport function getTracePropertyFilterTokens(searchParams: URLSearchParams): PropertyFilterToken[] {\n const tokens: PropertyFilterToken[] = [];\n\n // Map URL param name → fieldId for both generic filterX params and the\n // dedicated synthetic params (rootEntityType, status).\n const paramToFieldId = new Map<string, string>([\n [TRACE_ROOT_ENTITY_TYPE_PARAM, 'rootEntityType'],\n [TRACE_STATUS_PARAM, 'status'],\n ]);\n for (const fieldId of TRACE_PROPERTY_FILTER_FIELD_IDS) {\n paramToFieldId.set(TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId], fieldId);\n }\n\n const seen = new Set<string>();\n for (const [paramName] of searchParams.entries()) {\n const fieldId = paramToFieldId.get(paramName);\n if (!fieldId || seen.has(fieldId)) continue;\n seen.add(fieldId);\n\n if (fieldId === 'tags') {\n const raw = searchParams.getAll(paramName);\n if (raw.length === 0) continue;\n // An empty `filterTags=` sentinel keeps the pill alive after a Reset\n // (neutral state = no selections) so users can re-pick without losing\n // the pill's position. Non-empty entries are the actual selected tags.\n tokens.push({ fieldId, value: raw.filter(Boolean) });\n continue;\n }\n\n // Text and synthetic single-value fields: include empty strings so\n // pending-but-not-yet-filled filters survive URL round-trips.\n const value = searchParams.get(paramName);\n if (value !== null) tokens.push({ fieldId, value });\n }\n\n return tokens;\n}\n\nexport function getPreservedTraceFilterParams(searchParams: URLSearchParams) {\n const next = new URLSearchParams();\n\n const rootEntityType = searchParams.get(TRACE_ROOT_ENTITY_TYPE_PARAM);\n if (rootEntityType) next.set(TRACE_ROOT_ENTITY_TYPE_PARAM, rootEntityType);\n\n const status = searchParams.get(TRACE_STATUS_PARAM);\n if (status) next.set(TRACE_STATUS_PARAM, status);\n\n const listMode = searchParams.get(TRACE_LIST_MODE_PARAM);\n if (listMode) next.set(TRACE_LIST_MODE_PARAM, listMode);\n\n for (const fieldId of TRACE_PROPERTY_FILTER_FIELD_IDS) {\n const param = TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId];\n if (fieldId === 'tags') {\n for (const value of searchParams.getAll(param)) {\n next.append(param, value);\n }\n continue;\n }\n\n const value = searchParams.get(param);\n if (value) {\n next.set(param, value);\n }\n }\n\n return next;\n}\n\n/**\n * Clear all filter params from `params` and re-add them in the given `tokens`\n * order so the URL (and therefore the PropertyFilterApplied pills) reflects the\n * creation order of filters. Handles the generic `filterX` params plus the\n * dedicated synthetic params (rootEntityType, status).\n */\nexport function applyTracePropertyFilterTokens(params: URLSearchParams, tokens: PropertyFilterToken[]) {\n params.delete(TRACE_ROOT_ENTITY_TYPE_PARAM);\n params.delete(TRACE_STATUS_PARAM);\n for (const fieldId of TRACE_PROPERTY_FILTER_FIELD_IDS) {\n params.delete(TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId]);\n }\n\n for (const token of tokens) {\n if (token.fieldId === 'rootEntityType' && typeof token.value === 'string') {\n params.set(TRACE_ROOT_ENTITY_TYPE_PARAM, token.value);\n continue;\n }\n if (token.fieldId === 'status' && typeof token.value === 'string') {\n params.set(TRACE_STATUS_PARAM, token.value);\n continue;\n }\n\n const param =\n TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[token.fieldId as keyof typeof TRACE_PROPERTY_FILTER_PARAM_BY_FIELD];\n if (!param) continue;\n\n if (token.fieldId === 'tags' && Array.isArray(token.value)) {\n if (token.value.length === 0) {\n // Empty sentinel — keeps the pill visible after Reset.\n params.append(param, '');\n } else {\n for (const value of token.value) {\n params.append(param, value);\n }\n }\n continue;\n }\n\n if (typeof token.value === 'string') {\n // Persist empty / 'Any' values too so neutralized-but-still-visible pills\n // survive URL round-trips. buildTraceListFilters skips these on the API\n // query side so neutrals never reach the backend.\n params.set(param, token.value.trim());\n }\n }\n}\n\nexport function buildTraceListFilters({\n rootEntityType,\n status,\n dateFrom,\n dateTo,\n tokens,\n}: {\n rootEntityType?: string;\n status?: TraceStatusFilter;\n dateFrom?: Date;\n dateTo?: Date;\n tokens: PropertyFilterToken[];\n}): ListTracesArgs['filters'] {\n const filters: NonNullable<ListTracesArgs['filters']> = {};\n\n if (rootEntityType) {\n filters.entityType = rootEntityType as NonNullable<ListTracesArgs['filters']>['entityType'];\n }\n\n if (status) {\n filters.status = status as NonNullable<ListTracesArgs['filters']>['status'];\n }\n\n if (dateFrom) {\n filters.startedAt = { start: dateFrom };\n }\n\n if (dateTo) {\n filters.endedAt = { end: dateTo };\n }\n\n for (const token of tokens) {\n if (token.fieldId === 'tags') {\n if (Array.isArray(token.value) && token.value.length > 0) {\n filters.tags = token.value;\n } else if (typeof token.value === 'string' && token.value.trim()) {\n // pick-multi tags: single-string token → wrap for the server's array schema.\n filters.tags = [token.value.trim()];\n }\n continue;\n }\n\n if (typeof token.value !== 'string') continue;\n // Skip empty-string tokens (unfilled pending filters) and 'Any'\n // (pick-multi single-select neutral state) so neutrals never reach the\n // backend.\n if (!token.value.trim()) continue;\n if (token.value === 'Any') continue;\n\n switch (token.fieldId) {\n case 'entityId':\n filters.entityId = token.value;\n break;\n case 'entityName':\n filters.entityName = token.value;\n break;\n case 'traceId':\n filters.traceId = token.value;\n break;\n case 'runId':\n filters.runId = token.value;\n break;\n case 'threadId':\n filters.threadId = token.value;\n break;\n case 'sessionId':\n filters.sessionId = token.value;\n break;\n case 'requestId':\n filters.requestId = token.value;\n break;\n case 'resourceId':\n filters.resourceId = token.value;\n break;\n case 'userId':\n filters.userId = token.value;\n break;\n case 'organizationId':\n filters.organizationId = token.value;\n break;\n case 'serviceName':\n filters.serviceName = token.value;\n break;\n case 'environment':\n filters.environment = token.value;\n break;\n case 'experimentId':\n filters.experimentId = token.value;\n break;\n default:\n break;\n }\n }\n\n return filters;\n}\n\n/**\n * \"Clear\" semantics: keep all filter pills but neutralize each value.\n * '' for text fields, 'Any' for single-select pick-multi, [] for multi-select pick-multi.\n * Date range is intentionally NOT touched here — that's a separate concern.\n */\nexport function neutralizeFilterTokens(\n filterFields: PropertyFilterField[],\n filterTokens: PropertyFilterToken[],\n): PropertyFilterToken[] {\n return filterTokens.map(token => {\n const field = filterFields.find(f => f.id === token.fieldId);\n if (!field) return token;\n if (field.kind === 'text') return { fieldId: token.fieldId, value: '' };\n if (field.kind === 'pick-multi') {\n if (field.omitAnyOption) return token;\n return field.multi ? { fieldId: token.fieldId, value: [] } : { fieldId: token.fieldId, value: 'Any' };\n }\n return token;\n });\n}\n"],"names":["value"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trace-filters.es.js","sources":["../../../src/domains/traces/trace-filters.ts"],"sourcesContent":["import type { EntityType } from '@mastra/core/observability';\nimport type { ListTracesArgs } from '@mastra/core/storage';\nimport type { TraceDatePreset } from './types';\nimport type { PropertyFilterField, PropertyFilterToken } from '@/ds/components/PropertyFilter/types';\n\ntype EntityTypeValue = `${EntityType}`;\n\nexport type EntityOptions = { label: string; entityType: EntityTypeValue };\n\nexport const ROOT_ENTITY_TYPES = {\n AGENT: 'agent',\n WORKFLOW: 'workflow_run',\n SCORER: 'scorer',\n INGEST: 'rag_ingestion',\n} as const satisfies Record<string, EntityTypeValue>;\n\nexport const ROOT_ENTITY_TYPE_OPTIONS = [\n { label: 'Agent', entityType: ROOT_ENTITY_TYPES.AGENT },\n { label: 'Workflow', entityType: ROOT_ENTITY_TYPES.WORKFLOW },\n { label: 'Scorer', entityType: ROOT_ENTITY_TYPES.SCORER },\n { label: 'Ingest', entityType: ROOT_ENTITY_TYPES.INGEST },\n] as const satisfies readonly EntityOptions[];\n\nexport type TraceStatusFilter = 'running' | 'success' | 'error';\n\nexport const TRACE_STATUS_OPTIONS = [\n { label: 'Running', value: 'running' },\n { label: 'Success', value: 'success' },\n { label: 'Error', value: 'error' },\n] as const satisfies readonly { label: string; value: TraceStatusFilter }[];\n\n/** Field ids for \"synthetic\" filter entries — they live in dedicated URL params\n * rather than the generic `filter*` set, but appear as rows in the Filter\n * popover so users can manage all filters from one place. */\nexport const TRACE_SYNTHETIC_FILTER_FIELD_IDS = ['rootEntityType', 'status'] as const;\n\nexport const TRACE_ROOT_ENTITY_TYPE_PARAM = 'rootEntityType';\nexport const TRACE_STATUS_PARAM = 'status';\nexport const TRACE_LIST_MODE_PARAM = 'listMode';\n/** Branch-mode only: identifies the anchor span that defines the displayed subtree.\n * Stable across intra-panel span navigation (which only changes `spanId`). */\nexport const TRACE_ANCHOR_SPAN_ID_PARAM = 'anchorSpanId';\nexport const TRACE_LIST_MODE_VALUES = new Set(['traces', 'branches'] as const);\nexport type TraceListMode = 'traces' | 'branches';\n\nexport const TRACE_LIST_MODE_OPTIONS = [\n { label: 'Traces (default)', value: 'traces' },\n { label: 'Branches', value: 'branches' },\n] as const satisfies readonly { label: string; value: TraceListMode }[];\nexport const TRACE_DATE_PRESET_PARAM = 'datePreset';\nexport const TRACE_DATE_FROM_PARAM = 'dateFrom';\nexport const TRACE_DATE_TO_PARAM = 'dateTo';\n\nexport const TRACE_DATE_PRESET_VALUES = new Set<TraceDatePreset>([\n 'all',\n 'last-24h',\n 'last-3d',\n 'last-7d',\n 'last-14d',\n 'last-30d',\n 'custom',\n]);\n\nexport const TRACE_PROPERTY_FILTER_PARAM_BY_FIELD = {\n tags: 'filterTags',\n entityId: 'filterEntityId',\n entityName: 'filterEntityName',\n traceId: 'filterTraceId',\n runId: 'filterRunId',\n threadId: 'filterThreadId',\n sessionId: 'filterSessionId',\n requestId: 'filterRequestId',\n resourceId: 'filterResourceId',\n userId: 'filterUserId',\n organizationId: 'filterOrganizationId',\n serviceName: 'filterServiceName',\n environment: 'filterEnvironment',\n experimentId: 'filterExperimentId',\n} as const;\n\nexport const TRACE_PROPERTY_FILTER_FIELD_IDS = Object.keys(TRACE_PROPERTY_FILTER_PARAM_BY_FIELD) as Array<\n keyof typeof TRACE_PROPERTY_FILTER_PARAM_BY_FIELD\n>;\n\nexport const TRACE_STATUS_VALUES = new Set<TraceStatusFilter>(['running', 'success', 'error']);\n\nexport const DEFAULT_TRACE_FILTERS_STORAGE_KEY = 'mastra:traces:saved-filters';\n\n/** Serialize the filter-related URL params (date + rootEntityType + status +\n * generic filterX set) to localStorage so the user can restore them on next\n * visit. Throws no errors — storage being unavailable is fine. */\nexport function saveTraceFiltersToStorage(\n params: URLSearchParams,\n storageKey: string = DEFAULT_TRACE_FILTERS_STORAGE_KEY,\n): void {\n const serialized = getPreservedTraceFilterParams(params);\n const preset = params.get(TRACE_DATE_PRESET_PARAM);\n if (preset) serialized.set(TRACE_DATE_PRESET_PARAM, preset);\n const from = params.get(TRACE_DATE_FROM_PARAM);\n if (from) serialized.set(TRACE_DATE_FROM_PARAM, from);\n const to = params.get(TRACE_DATE_TO_PARAM);\n if (to) serialized.set(TRACE_DATE_TO_PARAM, to);\n\n try {\n localStorage.setItem(storageKey, serialized.toString());\n } catch {\n // localStorage may be unavailable (private mode / quota) — silently skip.\n }\n}\n\n/** Forget any previously saved filter set. Called from the \"Remove filters\"\n * action so the next plain sidebar nav lands on an empty page. */\nexport function clearSavedTraceFilters(storageKey: string = DEFAULT_TRACE_FILTERS_STORAGE_KEY): void {\n try {\n localStorage.removeItem(storageKey);\n } catch {\n // ignore — storage may be unavailable\n }\n}\n\n/** Read a previously saved filter set and return it as URLSearchParams, or\n * null if nothing is saved or storage is unavailable. */\nexport function loadTraceFiltersFromStorage(\n storageKey: string = DEFAULT_TRACE_FILTERS_STORAGE_KEY,\n): URLSearchParams | null {\n try {\n const raw = localStorage.getItem(storageKey);\n if (!raw) return null;\n const parsed = new URLSearchParams(raw);\n return parsed.toString() ? parsed : null;\n } catch {\n return null;\n }\n}\n\n/** True when `params` carries any filter-related key — used to decide whether\n * to hydrate from localStorage on page mount (we only hydrate when the URL is\n * filter-clean, i.e. the user landed here via a plain sidebar nav). */\nexport function hasAnyTraceFilterParams(params: URLSearchParams): boolean {\n if (params.has(TRACE_DATE_PRESET_PARAM)) return true;\n if (params.has(TRACE_DATE_FROM_PARAM)) return true;\n if (params.has(TRACE_DATE_TO_PARAM)) return true;\n if (params.has(TRACE_ROOT_ENTITY_TYPE_PARAM)) return true;\n if (params.has(TRACE_STATUS_PARAM)) return true;\n if (params.has(TRACE_LIST_MODE_PARAM)) return true;\n for (const fieldId of TRACE_PROPERTY_FILTER_FIELD_IDS) {\n if (params.has(TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId])) return true;\n }\n return false;\n}\n\nexport function createTracePropertyFilterFields({\n availableTags,\n availableRootEntityNames,\n availableServiceNames,\n availableEnvironments,\n loading,\n}: {\n availableTags: string[];\n availableRootEntityNames: string[];\n availableServiceNames: string[];\n availableEnvironments: string[];\n loading?: {\n tags?: boolean;\n entityNames?: boolean;\n serviceNames?: boolean;\n environments?: boolean;\n };\n}): PropertyFilterField[] {\n const fields: PropertyFilterField[] = [\n {\n id: 'rootEntityType',\n label: 'Primitive Type',\n kind: 'pick-multi',\n searchable: false,\n options: ROOT_ENTITY_TYPE_OPTIONS.map(o => ({ label: o.label, value: o.entityType })),\n placeholder: 'Choose entity type',\n emptyText: 'No entity types.',\n },\n {\n id: 'entityName',\n label: 'Primitive Name',\n kind: 'pick-multi',\n options: availableRootEntityNames.map(name => ({ label: name, value: name })),\n placeholder: 'Choose entity names',\n emptyText: 'No entity names found.',\n isLoading: loading?.entityNames,\n },\n { id: 'entityId', label: 'Primitive ID', kind: 'text' },\n {\n id: 'status',\n label: 'Status',\n kind: 'pick-multi',\n searchable: false,\n options: TRACE_STATUS_OPTIONS.map(o => ({ label: o.label, value: o.value })),\n placeholder: 'Choose status',\n emptyText: 'No statuses.',\n },\n {\n id: 'tags',\n label: 'Tags',\n kind: 'pick-multi',\n multi: true,\n options: availableTags.map(tag => ({ label: tag, value: tag })),\n placeholder: 'Choose tags',\n emptyText: 'No tags found.',\n isLoading: loading?.tags,\n },\n {\n id: 'serviceName',\n label: 'Service Name',\n kind: 'pick-multi',\n options: availableServiceNames.map(name => ({ label: name, value: name })),\n placeholder: 'Choose service names',\n emptyText: 'No service names found.',\n isLoading: loading?.serviceNames,\n },\n {\n id: 'environment',\n label: 'Environment',\n kind: 'pick-multi',\n options: availableEnvironments.map(env => ({ label: env, value: env })),\n placeholder: 'Choose environments',\n emptyText: 'No environments found.',\n isLoading: loading?.environments,\n },\n { id: 'traceId', label: 'Trace ID', kind: 'text' },\n { id: 'runId', label: 'Run ID', kind: 'text' },\n { id: 'threadId', label: 'Thread ID', kind: 'text' },\n { id: 'sessionId', label: 'Session ID', kind: 'text' },\n { id: 'requestId', label: 'Request ID', kind: 'text' },\n { id: 'resourceId', label: 'Resource ID', kind: 'text' },\n { id: 'userId', label: 'User ID', kind: 'text' },\n { id: 'organizationId', label: 'Organization ID', kind: 'text' },\n { id: 'experimentId', label: 'Experiment ID', kind: 'text' },\n ];\n const byLabel = (a: PropertyFilterField, b: PropertyFilterField) => a.label.localeCompare(b.label);\n const pickMulti = fields.filter(f => f.kind === 'pick-multi').sort(byLabel);\n const text = fields.filter(f => f.kind === 'text').sort(byLabel);\n return [...pickMulti, ...text];\n}\n\n/**\n * Read filter tokens from URL search params preserving the order in which each\n * filter was first added (URLSearchParams iterates in insertion order). This\n * is used by the Filter popover + PropertyFilterApplied pills so the UI reflects the\n * order the user created the filters in.\n */\nexport function getTracePropertyFilterTokens(searchParams: URLSearchParams): PropertyFilterToken[] {\n const tokens: PropertyFilterToken[] = [];\n\n // Map URL param name → fieldId for both generic filterX params and the\n // dedicated synthetic params (rootEntityType, status).\n const paramToFieldId = new Map<string, string>([\n [TRACE_ROOT_ENTITY_TYPE_PARAM, 'rootEntityType'],\n [TRACE_STATUS_PARAM, 'status'],\n ]);\n for (const fieldId of TRACE_PROPERTY_FILTER_FIELD_IDS) {\n paramToFieldId.set(TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId], fieldId);\n }\n\n const seen = new Set<string>();\n for (const [paramName] of searchParams.entries()) {\n const fieldId = paramToFieldId.get(paramName);\n if (!fieldId || seen.has(fieldId)) continue;\n seen.add(fieldId);\n\n if (fieldId === 'tags') {\n const raw = searchParams.getAll(paramName);\n if (raw.length === 0) continue;\n // An empty `filterTags=` sentinel keeps the pill alive after a Reset\n // (neutral state = no selections) so users can re-pick without losing\n // the pill's position. Non-empty entries are the actual selected tags.\n tokens.push({ fieldId, value: raw.filter(Boolean) });\n continue;\n }\n\n // Text and synthetic single-value fields: include empty strings so\n // pending-but-not-yet-filled filters survive URL round-trips.\n const value = searchParams.get(paramName);\n if (value !== null) tokens.push({ fieldId, value });\n }\n\n return tokens;\n}\n\nexport function getPreservedTraceFilterParams(searchParams: URLSearchParams) {\n const next = new URLSearchParams();\n\n const rootEntityType = searchParams.get(TRACE_ROOT_ENTITY_TYPE_PARAM);\n if (rootEntityType) next.set(TRACE_ROOT_ENTITY_TYPE_PARAM, rootEntityType);\n\n const status = searchParams.get(TRACE_STATUS_PARAM);\n if (status) next.set(TRACE_STATUS_PARAM, status);\n\n const listMode = searchParams.get(TRACE_LIST_MODE_PARAM);\n if (listMode) next.set(TRACE_LIST_MODE_PARAM, listMode);\n\n for (const fieldId of TRACE_PROPERTY_FILTER_FIELD_IDS) {\n const param = TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId];\n if (fieldId === 'tags') {\n for (const value of searchParams.getAll(param)) {\n next.append(param, value);\n }\n continue;\n }\n\n const value = searchParams.get(param);\n if (value) {\n next.set(param, value);\n }\n }\n\n return next;\n}\n\n/**\n * Clear all filter params from `params` and re-add them in the given `tokens`\n * order so the URL (and therefore the PropertyFilterApplied pills) reflects the\n * creation order of filters. Handles the generic `filterX` params plus the\n * dedicated synthetic params (rootEntityType, status).\n */\nexport function applyTracePropertyFilterTokens(params: URLSearchParams, tokens: PropertyFilterToken[]) {\n params.delete(TRACE_ROOT_ENTITY_TYPE_PARAM);\n params.delete(TRACE_STATUS_PARAM);\n for (const fieldId of TRACE_PROPERTY_FILTER_FIELD_IDS) {\n params.delete(TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[fieldId]);\n }\n\n for (const token of tokens) {\n if (token.fieldId === 'rootEntityType' && typeof token.value === 'string') {\n params.set(TRACE_ROOT_ENTITY_TYPE_PARAM, token.value);\n continue;\n }\n if (token.fieldId === 'status' && typeof token.value === 'string') {\n params.set(TRACE_STATUS_PARAM, token.value);\n continue;\n }\n\n const param =\n TRACE_PROPERTY_FILTER_PARAM_BY_FIELD[token.fieldId as keyof typeof TRACE_PROPERTY_FILTER_PARAM_BY_FIELD];\n if (!param) continue;\n\n if (token.fieldId === 'tags' && Array.isArray(token.value)) {\n if (token.value.length === 0) {\n // Empty sentinel — keeps the pill visible after Reset.\n params.append(param, '');\n } else {\n for (const value of token.value) {\n params.append(param, value);\n }\n }\n continue;\n }\n\n if (typeof token.value === 'string') {\n // Persist empty / 'Any' values too so neutralized-but-still-visible pills\n // survive URL round-trips. buildTraceListFilters skips these on the API\n // query side so neutrals never reach the backend.\n params.set(param, token.value.trim());\n }\n }\n}\n\nexport function buildTraceListFilters({\n rootEntityType,\n status,\n dateFrom,\n dateTo,\n tokens,\n}: {\n rootEntityType?: string;\n status?: TraceStatusFilter;\n dateFrom?: Date;\n dateTo?: Date;\n tokens: PropertyFilterToken[];\n}): ListTracesArgs['filters'] {\n const filters: NonNullable<ListTracesArgs['filters']> = {};\n\n if (rootEntityType) {\n filters.entityType = rootEntityType as NonNullable<ListTracesArgs['filters']>['entityType'];\n }\n\n if (status) {\n filters.status = status as NonNullable<ListTracesArgs['filters']>['status'];\n }\n\n if (dateFrom) {\n filters.startedAt = { start: dateFrom };\n }\n\n if (dateTo) {\n filters.endedAt = { end: dateTo };\n }\n\n for (const token of tokens) {\n if (token.fieldId === 'tags') {\n if (Array.isArray(token.value) && token.value.length > 0) {\n filters.tags = token.value;\n } else if (typeof token.value === 'string' && token.value.trim()) {\n // pick-multi tags: single-string token → wrap for the server's array schema.\n filters.tags = [token.value.trim()];\n }\n continue;\n }\n\n if (typeof token.value !== 'string') continue;\n // Skip empty-string tokens (unfilled pending filters) and 'Any'\n // (pick-multi single-select neutral state) so neutrals never reach the\n // backend.\n if (!token.value.trim()) continue;\n if (token.value === 'Any') continue;\n\n switch (token.fieldId) {\n case 'entityId':\n filters.entityId = token.value;\n break;\n case 'entityName':\n filters.entityName = token.value;\n break;\n case 'traceId':\n filters.traceId = token.value;\n break;\n case 'runId':\n filters.runId = token.value;\n break;\n case 'threadId':\n filters.threadId = token.value;\n break;\n case 'sessionId':\n filters.sessionId = token.value;\n break;\n case 'requestId':\n filters.requestId = token.value;\n break;\n case 'resourceId':\n filters.resourceId = token.value;\n break;\n case 'userId':\n filters.userId = token.value;\n break;\n case 'organizationId':\n filters.organizationId = token.value;\n break;\n case 'serviceName':\n filters.serviceName = token.value;\n break;\n case 'environment':\n filters.environment = token.value;\n break;\n case 'experimentId':\n filters.experimentId = token.value;\n break;\n default:\n break;\n }\n }\n\n return filters;\n}\n\n/**\n * \"Clear\" semantics: keep all filter pills but neutralize each value.\n * '' for text fields, 'Any' for single-select pick-multi, [] for multi-select pick-multi.\n * Date range is intentionally NOT touched here — that's a separate concern.\n */\nexport function neutralizeFilterTokens(\n filterFields: PropertyFilterField[],\n filterTokens: PropertyFilterToken[],\n): PropertyFilterToken[] {\n return filterTokens.map(token => {\n const field = filterFields.find(f => f.id === token.fieldId);\n if (!field) return token;\n if (field.kind === 'text') return { fieldId: token.fieldId, value: '' };\n if (field.kind === 'pick-multi') {\n if (field.omitAnyOption) return token;\n return field.multi ? { fieldId: token.fieldId, value: [] } : { fieldId: token.fieldId, value: 'Any' };\n }\n return token;\n });\n}\n"],"names":["value"],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { a as DataListCell, b as DataListMonoCell, D as DataListRoot, c as DataListNextPageLoading, d as DataListTimeCell, e as DataListDateCell, f as DataListNoMatch, g as DataListSpacer, h as DataListRowButton, i as DataListTopCellSmart, j as DataListTopCellWithTooltip, k as DataListTopCell, l as DataListTop } from './data-list-top-cell-D9EsRa0k.js';
|
|
2
2
|
import { D as DataListRowLink, a as DataListRowWrapper } from './data-list-row-wrapper-DbGQIaO1.js';
|
|
3
3
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
4
|
-
import { EntityType } from '@mastra/core/observability';
|
|
5
4
|
import { AgentIcon } from './icons/AgentIcon.es.js';
|
|
6
5
|
import { ToolsIcon } from './icons/ToolsIcon.es.js';
|
|
7
6
|
import { WorkflowIcon } from './icons/WorkflowIcon.es.js';
|
|
@@ -22,12 +21,12 @@ function EntityTypeIcon({ entityType, className }) {
|
|
|
22
21
|
const iconClass = cn("size-3.5 shrink-0 text-neutral2", className);
|
|
23
22
|
const normalizedEntityType = entityType.toLowerCase();
|
|
24
23
|
switch (normalizedEntityType) {
|
|
25
|
-
case
|
|
24
|
+
case "agent":
|
|
26
25
|
return /* @__PURE__ */ jsx(AgentIcon, { className: iconClass, "aria-hidden": true });
|
|
27
26
|
case "workflow":
|
|
28
|
-
case
|
|
27
|
+
case "workflow_run":
|
|
29
28
|
return /* @__PURE__ */ jsx(WorkflowIcon, { className: iconClass, "aria-hidden": true });
|
|
30
|
-
case
|
|
29
|
+
case "tool":
|
|
31
30
|
return /* @__PURE__ */ jsx(ToolsIcon, { className: iconClass, "aria-hidden": true });
|
|
32
31
|
default:
|
|
33
32
|
return null;
|
|
@@ -78,4 +77,4 @@ const LogsDataList = Object.assign(DataListRoot, {
|
|
|
78
77
|
});
|
|
79
78
|
|
|
80
79
|
export { LogsDataList as L };
|
|
81
|
-
//# sourceMappingURL=logs-data-list-
|
|
80
|
+
//# sourceMappingURL=logs-data-list-BhDEUkXZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs-data-list-BhDEUkXZ.js","sources":["../src/ds/components/LogsDataList/logs-data-list-cells.tsx","../src/ds/components/LogsDataList/logs-data-list.tsx"],"sourcesContent":["import { DataListCell, DataListMonoCell } from '../DataList/data-list-cells';\ntype LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\nimport { ToolsIcon } from '@/ds/icons/ToolsIcon';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { cn } from '@/lib/utils';\n\nconst LEVEL_CONFIG: Record<LogLevel, { label: string; color: string }> = {\n debug: { label: 'DEBUG', color: '#71717a' },\n info: { label: 'INFO', color: '#60a5fa' },\n warn: { label: 'WARN', color: '#facc15' },\n error: { label: 'ERROR', color: '#f87171' },\n fatal: { label: 'FATAL', color: '#dc2626' },\n};\n\n// ---------------------------------------------------------------------------\n// LevelCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListLevelCellProps {\n level: LogLevel;\n}\n\nexport function LogsDataListLevelCell({ level }: LogsDataListLevelCellProps) {\n const config = LEVEL_CONFIG[level];\n\n return (\n <DataListCell height=\"compact\">\n <span className=\"text-ui-sm font-semibold uppercase\" style={{ color: config.color }}>\n {config.label}\n </span>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// EntityCell\n// ---------------------------------------------------------------------------\n\nfunction EntityTypeIcon({ entityType, className }: { entityType: string; className?: string }) {\n const iconClass = cn('size-3.5 shrink-0 text-neutral2', className);\n const normalizedEntityType = entityType.toLowerCase();\n\n switch (normalizedEntityType) {\n case 'agent':\n return <AgentIcon className={iconClass} aria-hidden />;\n case 'workflow':\n case 'workflow_run':\n return <WorkflowIcon className={iconClass} aria-hidden />;\n case 'tool':\n return <ToolsIcon className={iconClass} aria-hidden />;\n default:\n return null;\n }\n}\n\nexport interface LogsDataListEntityCellProps {\n entityType?: string | null;\n entityName?: string | null;\n}\n\nexport function LogsDataListEntityCell({ entityType, entityName }: LogsDataListEntityCellProps) {\n const type = entityType ?? '';\n\n return (\n <DataListCell height=\"compact\" className=\"flex min-w-0 items-center gap-2\">\n <EntityTypeIcon entityType={type} />\n {entityName ? <span className=\"text-ui-smd min-w-0 truncate\">{entityName}</span> : '-'}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// MessageCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListMessageCellProps {\n message: string;\n}\n\nexport function LogsDataListMessageCell({ message }: LogsDataListMessageCellProps) {\n return (\n <DataListCell height=\"compact\" className=\"text-ui-smd text-neutral4 min-w-0 truncate font-mono\">\n {message}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// DataCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListDataCellProps {\n data?: Record<string, unknown> | null;\n}\n\nexport function LogsDataListDataCell({ data }: LogsDataListDataCellProps) {\n if (!data || Object.keys(data).length === 0) {\n return <DataListCell height=\"compact\">{null}</DataListCell>;\n }\n\n const summary = Object.entries(data)\n .map(([k, v]) => {\n if (typeof v === 'string') return `${k}: ${v}`;\n try {\n return `${k}: ${JSON.stringify(v)}`;\n } catch {\n return `${k}: <unserializable>`;\n }\n })\n .join(', ');\n\n return <DataListMonoCell>{summary}</DataListMonoCell>;\n}\n","import { DataListDateCell, DataListTimeCell } from '../DataList/data-list-cells';\nimport { DataListNextPageLoading } from '../DataList/data-list-next-page-loading';\nimport { DataListNoMatch } from '../DataList/data-list-no-match';\nimport { DataListRoot } from '../DataList/data-list-root';\nimport { DataListRowButton } from '../DataList/data-list-row-button';\nimport { DataListRowLink } from '../DataList/data-list-row-link';\nimport { DataListRowWrapper } from '../DataList/data-list-row-wrapper';\nimport { DataListSpacer } from '../DataList/data-list-spacer';\nimport { DataListTop } from '../DataList/data-list-top';\nimport { DataListTopCell, DataListTopCellWithTooltip, DataListTopCellSmart } from '../DataList/data-list-top-cell';\nimport {\n LogsDataListLevelCell,\n LogsDataListEntityCell,\n LogsDataListMessageCell,\n LogsDataListDataCell,\n} from './logs-data-list-cells';\n\nexport const LogsDataList = Object.assign(DataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n TopCellSmart: DataListTopCellSmart,\n RowWrapper: DataListRowWrapper,\n RowButton: DataListRowButton,\n RowLink: DataListRowLink,\n Spacer: DataListSpacer,\n NoMatch: DataListNoMatch,\n DateCell: DataListDateCell,\n TimeCell: DataListTimeCell,\n LevelCell: LogsDataListLevelCell,\n EntityCell: LogsDataListEntityCell,\n MessageCell: LogsDataListMessageCell,\n DataCell: LogsDataListDataCell,\n NextPageLoading: DataListNextPageLoading,\n});\n"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
const dataListTopCell = require('./data-list-top-cell-DoeqMbd1.cjs');
|
|
4
4
|
const dataListRowWrapper = require('./data-list-row-wrapper-C-77LgWH.cjs');
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
|
-
const observability = require('@mastra/core/observability');
|
|
7
6
|
const icons_AgentIcon = require('./icons/AgentIcon.cjs.js');
|
|
8
7
|
const icons_ToolsIcon = require('./icons/ToolsIcon.cjs.js');
|
|
9
8
|
const icons_WorkflowIcon = require('./icons/WorkflowIcon.cjs.js');
|
|
@@ -24,12 +23,12 @@ function EntityTypeIcon({ entityType, className }) {
|
|
|
24
23
|
const iconClass = utils_cn.cn("size-3.5 shrink-0 text-neutral2", className);
|
|
25
24
|
const normalizedEntityType = entityType.toLowerCase();
|
|
26
25
|
switch (normalizedEntityType) {
|
|
27
|
-
case
|
|
26
|
+
case "agent":
|
|
28
27
|
return /* @__PURE__ */ jsxRuntime.jsx(icons_AgentIcon.AgentIcon, { className: iconClass, "aria-hidden": true });
|
|
29
28
|
case "workflow":
|
|
30
|
-
case
|
|
29
|
+
case "workflow_run":
|
|
31
30
|
return /* @__PURE__ */ jsxRuntime.jsx(icons_WorkflowIcon.WorkflowIcon, { className: iconClass, "aria-hidden": true });
|
|
32
|
-
case
|
|
31
|
+
case "tool":
|
|
33
32
|
return /* @__PURE__ */ jsxRuntime.jsx(icons_ToolsIcon.ToolsIcon, { className: iconClass, "aria-hidden": true });
|
|
34
33
|
default:
|
|
35
34
|
return null;
|
|
@@ -80,4 +79,4 @@ const LogsDataList = Object.assign(dataListTopCell.DataListRoot, {
|
|
|
80
79
|
});
|
|
81
80
|
|
|
82
81
|
exports.LogsDataList = LogsDataList;
|
|
83
|
-
//# sourceMappingURL=logs-data-list-
|
|
82
|
+
//# sourceMappingURL=logs-data-list-C_FyPCxE.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs-data-list-C_FyPCxE.cjs","sources":["../src/ds/components/LogsDataList/logs-data-list-cells.tsx","../src/ds/components/LogsDataList/logs-data-list.tsx"],"sourcesContent":["import { DataListCell, DataListMonoCell } from '../DataList/data-list-cells';\ntype LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\nimport { ToolsIcon } from '@/ds/icons/ToolsIcon';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { cn } from '@/lib/utils';\n\nconst LEVEL_CONFIG: Record<LogLevel, { label: string; color: string }> = {\n debug: { label: 'DEBUG', color: '#71717a' },\n info: { label: 'INFO', color: '#60a5fa' },\n warn: { label: 'WARN', color: '#facc15' },\n error: { label: 'ERROR', color: '#f87171' },\n fatal: { label: 'FATAL', color: '#dc2626' },\n};\n\n// ---------------------------------------------------------------------------\n// LevelCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListLevelCellProps {\n level: LogLevel;\n}\n\nexport function LogsDataListLevelCell({ level }: LogsDataListLevelCellProps) {\n const config = LEVEL_CONFIG[level];\n\n return (\n <DataListCell height=\"compact\">\n <span className=\"text-ui-sm font-semibold uppercase\" style={{ color: config.color }}>\n {config.label}\n </span>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// EntityCell\n// ---------------------------------------------------------------------------\n\nfunction EntityTypeIcon({ entityType, className }: { entityType: string; className?: string }) {\n const iconClass = cn('size-3.5 shrink-0 text-neutral2', className);\n const normalizedEntityType = entityType.toLowerCase();\n\n switch (normalizedEntityType) {\n case 'agent':\n return <AgentIcon className={iconClass} aria-hidden />;\n case 'workflow':\n case 'workflow_run':\n return <WorkflowIcon className={iconClass} aria-hidden />;\n case 'tool':\n return <ToolsIcon className={iconClass} aria-hidden />;\n default:\n return null;\n }\n}\n\nexport interface LogsDataListEntityCellProps {\n entityType?: string | null;\n entityName?: string | null;\n}\n\nexport function LogsDataListEntityCell({ entityType, entityName }: LogsDataListEntityCellProps) {\n const type = entityType ?? '';\n\n return (\n <DataListCell height=\"compact\" className=\"flex min-w-0 items-center gap-2\">\n <EntityTypeIcon entityType={type} />\n {entityName ? <span className=\"text-ui-smd min-w-0 truncate\">{entityName}</span> : '-'}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// MessageCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListMessageCellProps {\n message: string;\n}\n\nexport function LogsDataListMessageCell({ message }: LogsDataListMessageCellProps) {\n return (\n <DataListCell height=\"compact\" className=\"text-ui-smd text-neutral4 min-w-0 truncate font-mono\">\n {message}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// DataCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListDataCellProps {\n data?: Record<string, unknown> | null;\n}\n\nexport function LogsDataListDataCell({ data }: LogsDataListDataCellProps) {\n if (!data || Object.keys(data).length === 0) {\n return <DataListCell height=\"compact\">{null}</DataListCell>;\n }\n\n const summary = Object.entries(data)\n .map(([k, v]) => {\n if (typeof v === 'string') return `${k}: ${v}`;\n try {\n return `${k}: ${JSON.stringify(v)}`;\n } catch {\n return `${k}: <unserializable>`;\n }\n })\n .join(', ');\n\n return <DataListMonoCell>{summary}</DataListMonoCell>;\n}\n","import { DataListDateCell, DataListTimeCell } from '../DataList/data-list-cells';\nimport { DataListNextPageLoading } from '../DataList/data-list-next-page-loading';\nimport { DataListNoMatch } from '../DataList/data-list-no-match';\nimport { DataListRoot } from '../DataList/data-list-root';\nimport { DataListRowButton } from '../DataList/data-list-row-button';\nimport { DataListRowLink } from '../DataList/data-list-row-link';\nimport { DataListRowWrapper } from '../DataList/data-list-row-wrapper';\nimport { DataListSpacer } from '../DataList/data-list-spacer';\nimport { DataListTop } from '../DataList/data-list-top';\nimport { DataListTopCell, DataListTopCellWithTooltip, DataListTopCellSmart } from '../DataList/data-list-top-cell';\nimport {\n LogsDataListLevelCell,\n LogsDataListEntityCell,\n LogsDataListMessageCell,\n LogsDataListDataCell,\n} from './logs-data-list-cells';\n\nexport const LogsDataList = Object.assign(DataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n TopCellSmart: DataListTopCellSmart,\n RowWrapper: DataListRowWrapper,\n RowButton: DataListRowButton,\n RowLink: DataListRowLink,\n Spacer: DataListSpacer,\n NoMatch: DataListNoMatch,\n DateCell: DataListDateCell,\n TimeCell: DataListTimeCell,\n LevelCell: LogsDataListLevelCell,\n EntityCell: LogsDataListEntityCell,\n MessageCell: LogsDataListMessageCell,\n DataCell: LogsDataListDataCell,\n NextPageLoading: DataListNextPageLoading,\n});\n"],"names":["DataListCell","jsx","cn","AgentIcon","WorkflowIcon","ToolsIcon","jsxs","DataListMonoCell","DataListRoot","DataListTop","DataListTopCell","DataListTopCellWithTooltip","DataListTopCellSmart","DataListRowWrapper","DataListRowButton","DataListRowLink","DataListSpacer","DataListNoMatch","DataListDateCell","DataListTimeCell","DataListNextPageLoading"],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ function MarkdownRenderer({ children }) {
|
|
|
14
14
|
const CodeBlock = ({ children, className, language, ...restProps }) => {
|
|
15
15
|
const code$1 = typeof children === "string" ? children : childrenTakeAllStringContents(children);
|
|
16
16
|
const preClass = utils_cn.cn(
|
|
17
|
-
"overflow-x-scroll rounded-md border bg-surface1/50 p-4 font-mono text-sm
|
|
17
|
+
"[scrollbar-width:none] overflow-x-scroll rounded-md border bg-surface1/50 p-4 font-mono text-sm",
|
|
18
18
|
className
|
|
19
19
|
);
|
|
20
20
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "group/code relative mb-4", children: [
|
|
@@ -85,4 +85,4 @@ const COMPONENTS = {
|
|
|
85
85
|
};
|
|
86
86
|
|
|
87
87
|
exports.MarkdownRenderer = MarkdownRenderer;
|
|
88
|
-
//# sourceMappingURL=markdown-renderer-
|
|
88
|
+
//# sourceMappingURL=markdown-renderer-CfWz5SWN.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-renderer-
|
|
1
|
+
{"version":3,"file":"markdown-renderer-CfWz5SWN.cjs","sources":["../src/ds/components/MarkdownRenderer/markdown-renderer.tsx"],"sourcesContent":["import React from 'react';\nimport Markdown from 'react-markdown';\nimport type { Components } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\n\nimport { Code } from '@/ds/components/Code';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { cn } from '@/lib/utils';\n\nexport type MarkdownRendererProps = {\n children: string;\n};\n\nexport function MarkdownRenderer({ children }: MarkdownRendererProps) {\n const processedText = children.replace(/\\\\n/g, '\\n');\n\n return (\n <Markdown remarkPlugins={[remarkGfm]} components={COMPONENTS} className=\"space-y-3\">\n {processedText}\n </Markdown>\n );\n}\n\ninterface CodeBlockProps extends React.HTMLAttributes<HTMLPreElement> {\n children: React.ReactNode;\n className?: string;\n language: string;\n}\n\nconst CodeBlock = ({ children, className, language, ...restProps }: CodeBlockProps) => {\n const code = typeof children === 'string' ? children : childrenTakeAllStringContents(children);\n\n const preClass = cn(\n '[scrollbar-width:none] overflow-x-scroll rounded-md border bg-surface1/50 p-4 font-mono text-sm',\n className,\n );\n\n return (\n <div className=\"group/code relative mb-4\">\n <Code code={code} lang={language} className={preClass} {...restProps} />\n\n <div className=\"invisible absolute top-2 right-2 flex gap-1 rounded-lg p-1 opacity-0 transition-all duration-200 group-hover/code:visible group-hover/code:opacity-100\">\n <CopyButton content={code} copyMessage=\"Copied code to clipboard\" />\n </div>\n </div>\n );\n};\n\nfunction childrenTakeAllStringContents(element: any): string {\n if (typeof element === 'string') {\n return element;\n }\n\n if (element?.props?.children) {\n let children = element.props.children;\n\n if (Array.isArray(children)) {\n return children.map(child => childrenTakeAllStringContents(child)).join('');\n } else {\n return childrenTakeAllStringContents(children);\n }\n }\n\n return '';\n}\n\n// Create component wrappers with className\nconst COMPONENTS: Components = {\n h1: ({ children, ...props }) => (\n <h1 className=\"text-2xl font-semibold\" {...props}>\n {children}\n </h1>\n ),\n h2: ({ children, ...props }) => (\n <h2 className=\"text-xl font-semibold\" {...props}>\n {children}\n </h2>\n ),\n h3: ({ children, ...props }) => (\n <h3 className=\"text-lg font-semibold\" {...props}>\n {children}\n </h3>\n ),\n h4: ({ children, ...props }) => (\n <h4 className=\"text-base font-semibold\" {...props}>\n {children}\n </h4>\n ),\n h5: ({ children, ...props }) => (\n <h5 className=\"font-medium\" {...props}>\n {children}\n </h5>\n ),\n strong: ({ children, ...props }) => (\n <strong className=\"font-semibold\" {...props}>\n {children}\n </strong>\n ),\n a: ({ children, ...props }) => (\n <a className=\"underline underline-offset-2\" {...props}>\n {children}\n </a>\n ),\n blockquote: ({ children, ...props }) => (\n <blockquote className=\"border-neutral6 border-l-2 pl-4\" {...props}>\n {children}\n </blockquote>\n ),\n code: ({ children, className, ...rest }: any) => {\n const match = /language-(\\w+)/.exec(className || '');\n return match ? (\n <CodeBlock className={className} language={match[1]} {...rest}>\n {children}\n </CodeBlock>\n ) : (\n <code\n className={cn(\n 'font-mono [:not(pre)>&]:rounded-md [:not(pre)>&]:bg-surface1/50 [:not(pre)>&]:px-1 [:not(pre)>&]:py-0.5',\n )}\n {...rest}\n >\n {children}\n </code>\n );\n },\n pre: ({ children }: any) => children,\n ol: ({ children, ...props }) => (\n <ol className=\"list-decimal space-y-2 pl-6\" {...props}>\n {children}\n </ol>\n ),\n ul: ({ children, ...props }) => (\n <ul className=\"list-disc space-y-2 pl-6\" {...props}>\n {children}\n </ul>\n ),\n li: ({ children, ...props }) => (\n <li className=\"my-1.5\" {...props}>\n {children}\n </li>\n ),\n table: ({ children, ...props }) => (\n <table className=\"border-neutral6/20 w-full border-collapse overflow-y-auto rounded-md border\" {...props}>\n {children}\n </table>\n ),\n th: ({ children, ...props }) => (\n <th\n className=\"border-neutral6/20 border px-4 py-2 text-left font-bold [[align=center]]:text-center [[align=right]]:text-right\"\n {...props}\n >\n {children}\n </th>\n ),\n td: ({ children, ...props }) => (\n <td\n className=\"border-neutral6/20 border px-4 py-2 text-left [[align=center]]:text-center [[align=right]]:text-right\"\n {...props}\n >\n {children}\n </td>\n ),\n tr: ({ children, ...props }) => (\n <tr className=\"even:bg-surface4 m-0 border-t p-0\" {...props}>\n {children}\n </tr>\n ),\n p: ({ children, ...props }) => (\n <p className=\"leading-relaxed whitespace-pre-wrap\" {...props}>\n {children}\n </p>\n ),\n hr: ({ ...props }) => <hr className=\"border-neutral6/20\" {...props} />,\n};\n\nexport default MarkdownRenderer;\n"],"names":["jsx","code","cn","jsxs","Code","CopyButton"],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ function MarkdownRenderer({ children }) {
|
|
|
12
12
|
const CodeBlock = ({ children, className, language, ...restProps }) => {
|
|
13
13
|
const code = typeof children === "string" ? children : childrenTakeAllStringContents(children);
|
|
14
14
|
const preClass = cn(
|
|
15
|
-
"overflow-x-scroll rounded-md border bg-surface1/50 p-4 font-mono text-sm
|
|
15
|
+
"[scrollbar-width:none] overflow-x-scroll rounded-md border bg-surface1/50 p-4 font-mono text-sm",
|
|
16
16
|
className
|
|
17
17
|
);
|
|
18
18
|
return /* @__PURE__ */ jsxs("div", { className: "group/code relative mb-4", children: [
|
|
@@ -83,4 +83,4 @@ const COMPONENTS = {
|
|
|
83
83
|
};
|
|
84
84
|
|
|
85
85
|
export { MarkdownRenderer as M };
|
|
86
|
-
//# sourceMappingURL=markdown-renderer-
|
|
86
|
+
//# sourceMappingURL=markdown-renderer-CqAR8lve.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-renderer-
|
|
1
|
+
{"version":3,"file":"markdown-renderer-CqAR8lve.js","sources":["../src/ds/components/MarkdownRenderer/markdown-renderer.tsx"],"sourcesContent":["import React from 'react';\nimport Markdown from 'react-markdown';\nimport type { Components } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\n\nimport { Code } from '@/ds/components/Code';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { cn } from '@/lib/utils';\n\nexport type MarkdownRendererProps = {\n children: string;\n};\n\nexport function MarkdownRenderer({ children }: MarkdownRendererProps) {\n const processedText = children.replace(/\\\\n/g, '\\n');\n\n return (\n <Markdown remarkPlugins={[remarkGfm]} components={COMPONENTS} className=\"space-y-3\">\n {processedText}\n </Markdown>\n );\n}\n\ninterface CodeBlockProps extends React.HTMLAttributes<HTMLPreElement> {\n children: React.ReactNode;\n className?: string;\n language: string;\n}\n\nconst CodeBlock = ({ children, className, language, ...restProps }: CodeBlockProps) => {\n const code = typeof children === 'string' ? children : childrenTakeAllStringContents(children);\n\n const preClass = cn(\n '[scrollbar-width:none] overflow-x-scroll rounded-md border bg-surface1/50 p-4 font-mono text-sm',\n className,\n );\n\n return (\n <div className=\"group/code relative mb-4\">\n <Code code={code} lang={language} className={preClass} {...restProps} />\n\n <div className=\"invisible absolute top-2 right-2 flex gap-1 rounded-lg p-1 opacity-0 transition-all duration-200 group-hover/code:visible group-hover/code:opacity-100\">\n <CopyButton content={code} copyMessage=\"Copied code to clipboard\" />\n </div>\n </div>\n );\n};\n\nfunction childrenTakeAllStringContents(element: any): string {\n if (typeof element === 'string') {\n return element;\n }\n\n if (element?.props?.children) {\n let children = element.props.children;\n\n if (Array.isArray(children)) {\n return children.map(child => childrenTakeAllStringContents(child)).join('');\n } else {\n return childrenTakeAllStringContents(children);\n }\n }\n\n return '';\n}\n\n// Create component wrappers with className\nconst COMPONENTS: Components = {\n h1: ({ children, ...props }) => (\n <h1 className=\"text-2xl font-semibold\" {...props}>\n {children}\n </h1>\n ),\n h2: ({ children, ...props }) => (\n <h2 className=\"text-xl font-semibold\" {...props}>\n {children}\n </h2>\n ),\n h3: ({ children, ...props }) => (\n <h3 className=\"text-lg font-semibold\" {...props}>\n {children}\n </h3>\n ),\n h4: ({ children, ...props }) => (\n <h4 className=\"text-base font-semibold\" {...props}>\n {children}\n </h4>\n ),\n h5: ({ children, ...props }) => (\n <h5 className=\"font-medium\" {...props}>\n {children}\n </h5>\n ),\n strong: ({ children, ...props }) => (\n <strong className=\"font-semibold\" {...props}>\n {children}\n </strong>\n ),\n a: ({ children, ...props }) => (\n <a className=\"underline underline-offset-2\" {...props}>\n {children}\n </a>\n ),\n blockquote: ({ children, ...props }) => (\n <blockquote className=\"border-neutral6 border-l-2 pl-4\" {...props}>\n {children}\n </blockquote>\n ),\n code: ({ children, className, ...rest }: any) => {\n const match = /language-(\\w+)/.exec(className || '');\n return match ? (\n <CodeBlock className={className} language={match[1]} {...rest}>\n {children}\n </CodeBlock>\n ) : (\n <code\n className={cn(\n 'font-mono [:not(pre)>&]:rounded-md [:not(pre)>&]:bg-surface1/50 [:not(pre)>&]:px-1 [:not(pre)>&]:py-0.5',\n )}\n {...rest}\n >\n {children}\n </code>\n );\n },\n pre: ({ children }: any) => children,\n ol: ({ children, ...props }) => (\n <ol className=\"list-decimal space-y-2 pl-6\" {...props}>\n {children}\n </ol>\n ),\n ul: ({ children, ...props }) => (\n <ul className=\"list-disc space-y-2 pl-6\" {...props}>\n {children}\n </ul>\n ),\n li: ({ children, ...props }) => (\n <li className=\"my-1.5\" {...props}>\n {children}\n </li>\n ),\n table: ({ children, ...props }) => (\n <table className=\"border-neutral6/20 w-full border-collapse overflow-y-auto rounded-md border\" {...props}>\n {children}\n </table>\n ),\n th: ({ children, ...props }) => (\n <th\n className=\"border-neutral6/20 border px-4 py-2 text-left font-bold [[align=center]]:text-center [[align=right]]:text-right\"\n {...props}\n >\n {children}\n </th>\n ),\n td: ({ children, ...props }) => (\n <td\n className=\"border-neutral6/20 border px-4 py-2 text-left [[align=center]]:text-center [[align=right]]:text-right\"\n {...props}\n >\n {children}\n </td>\n ),\n tr: ({ children, ...props }) => (\n <tr className=\"even:bg-surface4 m-0 border-t p-0\" {...props}>\n {children}\n </tr>\n ),\n p: ({ children, ...props }) => (\n <p className=\"leading-relaxed whitespace-pre-wrap\" {...props}>\n {children}\n </p>\n ),\n hr: ({ ...props }) => <hr className=\"border-neutral6/20\" {...props} />,\n};\n\nexport default MarkdownRenderer;\n"],"names":[],"mappings":"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"}
|
|
@@ -3,28 +3,29 @@ import { ListLogsArgs } from '@mastra/core/storage';
|
|
|
3
3
|
import { LogLevel } from './types';
|
|
4
4
|
import { PropertyFilterField, PropertyFilterToken } from '../../ds/components/PropertyFilter/types';
|
|
5
5
|
export type LogsDatePreset = 'all' | 'last-24h' | 'last-3d' | 'last-7d' | 'last-14d' | 'last-30d' | 'custom';
|
|
6
|
+
type EntityTypeValue = `${EntityType}`;
|
|
6
7
|
export type LogsEntityOptions = {
|
|
7
8
|
label: string;
|
|
8
|
-
entityType:
|
|
9
|
+
entityType: EntityTypeValue;
|
|
9
10
|
};
|
|
10
11
|
export declare const LOGS_ROOT_ENTITY_TYPES: {
|
|
11
|
-
readonly AGENT:
|
|
12
|
-
readonly WORKFLOW:
|
|
13
|
-
readonly SCORER:
|
|
14
|
-
readonly INGEST:
|
|
12
|
+
readonly AGENT: "agent";
|
|
13
|
+
readonly WORKFLOW: "workflow_run";
|
|
14
|
+
readonly SCORER: "scorer";
|
|
15
|
+
readonly INGEST: "rag_ingestion";
|
|
15
16
|
};
|
|
16
17
|
export declare const LOGS_ROOT_ENTITY_TYPE_OPTIONS: readonly [{
|
|
17
18
|
readonly label: "Agent";
|
|
18
|
-
readonly entityType:
|
|
19
|
+
readonly entityType: "agent";
|
|
19
20
|
}, {
|
|
20
21
|
readonly label: "Workflow";
|
|
21
|
-
readonly entityType:
|
|
22
|
+
readonly entityType: "workflow_run";
|
|
22
23
|
}, {
|
|
23
24
|
readonly label: "Scorer";
|
|
24
|
-
readonly entityType:
|
|
25
|
+
readonly entityType: "scorer";
|
|
25
26
|
}, {
|
|
26
27
|
readonly label: "Ingest";
|
|
27
|
-
readonly entityType:
|
|
28
|
+
readonly entityType: "rag_ingestion";
|
|
28
29
|
}];
|
|
29
30
|
export declare const LOG_LEVEL_VALUES: readonly LogLevel[];
|
|
30
31
|
export declare const LOG_LEVEL_OPTIONS: readonly [{
|
|
@@ -107,3 +108,4 @@ export declare function buildLogsListFilters({ rootEntityType, dateFrom, dateTo,
|
|
|
107
108
|
* Date range is intentionally NOT touched here — that's a separate concern.
|
|
108
109
|
*/
|
|
109
110
|
export declare function neutralizeLogsFilterTokens(filterFields: PropertyFilterField[], filterTokens: PropertyFilterToken[]): PropertyFilterToken[];
|
|
111
|
+
export {};
|