@mastra/playground-ui 52.0.0-alpha.11 → 52.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/components/LogsDataList.cjs.js +0 -1
  2. package/dist/components/LogsDataList.cjs.js.map +1 -1
  3. package/dist/components/LogsDataList.es.js +0 -1
  4. package/dist/components/LogsDataList.es.js.map +1 -1
  5. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +17 -14
  6. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  7. package/dist/domains/traces/components/trace-data-panel-view.es.js +17 -14
  8. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  9. package/dist/ee/signals/components/entity-index-list.cjs.js +0 -1
  10. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  11. package/dist/ee/signals/components/entity-index-list.es.js +0 -1
  12. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  13. package/dist/ee/signals/components/signals-empty-state.cjs.js +1 -1
  14. package/dist/ee/signals/components/signals-empty-state.cjs.js.map +1 -1
  15. package/dist/ee/signals/components/signals-empty-state.es.js +1 -1
  16. package/dist/ee/signals/components/signals-empty-state.es.js.map +1 -1
  17. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +11 -5
  18. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  19. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +11 -5
  20. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  21. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +3 -25
  22. package/dist/ee/signals/settings/trace-signal-settings.cjs.js.map +1 -1
  23. package/dist/ee/signals/settings/trace-signal-settings.es.js +3 -25
  24. package/dist/ee/signals/settings/trace-signal-settings.es.js.map +1 -1
  25. package/dist/ee/signals/trace-intelligence-explainer.cjs.js +1 -1
  26. package/dist/ee/signals/trace-intelligence-explainer.cjs.js.map +1 -1
  27. package/dist/ee/signals/trace-intelligence-explainer.es.js +1 -1
  28. package/dist/ee/signals/trace-intelligence-explainer.es.js.map +1 -1
  29. package/dist/hooks/use-in-view.cjs.js +12 -9
  30. package/dist/hooks/use-in-view.cjs.js.map +1 -1
  31. package/dist/hooks/use-in-view.es.js +13 -10
  32. package/dist/hooks/use-in-view.es.js.map +1 -1
  33. package/dist/src/domains/traces/components/trace-data-panel-view.d.ts +6 -2
  34. package/dist/src/hooks/use-in-view.d.ts +15 -2
  35. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"signals-empty-state.cjs.js","sources":["../../../../src/ee/signals/components/signals-empty-state.tsx"],"sourcesContent":["import type { EntityLearningProgressResponse, SignalCatalogEntry } from '@mastra/client-js';\nimport { CpuIcon } from 'lucide-react';\nimport type { CSSProperties, ReactNode } from 'react';\n\nimport './signals-empty-state.css';\nimport { Button } from '../../../ds/components/Button';\nimport { Card } from '../../../ds/components/Card';\nimport { nodeColor } from '../../../ds/components/SankeyChart/sankeyColor';\nimport type { LinkComponent } from '../../../ds/types/link-component';\nimport { getSignalHue } from '../signal-colors';\nimport { BUILT_IN_SIGNAL_CATALOG, orderedSignals, signalDescription, signalLabel } from '../signal-formatting';\n\nconst traceRows = [\n ['chat.completion', '1.2s'],\n ['tool.search_docs', '340ms'],\n ['workflow.support', '2.8s'],\n];\n\nconst signalStyle = (label: string): CSSProperties => ({\n color: nodeColor(getSignalHue(label)),\n});\n\nconst PipelineConnector = () => (\n <div aria-hidden=\"true\" className=\"relative hidden h-full items-center lg:flex\">\n <div className=\"border-border1 w-full border-t border-dashed\" />\n <span className=\"signals-pipeline-connector bg-positive1 absolute left-1/2 size-2.5 -translate-x-1/2 rounded-full shadow-[0_0_12px_currentColor]\" />\n </div>\n);\n\nexport type TraceIntelligenceProgress = EntityLearningProgressResponse;\n\nexport type SignalsEmptyStateProps = {\n actionSlot?: ReactNode;\n LinkComponent?: LinkComponent;\n progress?: TraceIntelligenceProgress;\n signalCatalog?: readonly SignalCatalogEntry[];\n isRangeEmpty?: boolean;\n};\n\nfunction formatNumber(value: number) {\n return new Intl.NumberFormat('en-US').format(value);\n}\n\nfunction statusCopy(progress?: TraceIntelligenceProgress, isRangeEmpty?: boolean) {\n if (isRangeEmpty) {\n return {\n title: 'No Trace Intelligence themes in this date range.',\n body: 'Choose a wider snapshot date range, or wait for newly processed traces to form recurring themes.',\n };\n }\n if (!progress || progress.status === 'collecting') {\n return {\n title: 'Collecting traces for Trace Intelligence.',\n body: 'Trace Intelligence starts grouping recurring patterns after your deployed agents send enough completed traces.',\n };\n }\n if (progress.status === 'ready') {\n return {\n title: 'Trace Intelligence themes are ready.',\n body: 'Select at least two available trace signal types to see how goals, outcomes, behaviors, and sentiment connect.',\n };\n }\n return {\n title: 'Analyzing traces for Trace Intelligence.',\n body: 'Trace signals have started processing. Themes appear after enough generated and embedded trace signals form recurring patterns.',\n };\n}\n\nfunction ProgressSummary({ progress }: { progress: TraceIntelligenceProgress }) {\n const catalog = progress.signalCatalog ?? BUILT_IN_SIGNAL_CATALOG;\n const enabledSignalCount = catalog.filter(signal => signal.enabled).length;\n const readySignalCount = catalog.filter(signal => signal.enabled && signal.status === 'ready').length;\n return (\n <dl className=\"mt-4 grid gap-2 sm:grid-cols-3\">\n <div className=\"border-border1 bg-surface3 rounded-md border px-3 py-2\">\n <dt className=\"text-neutral3 text-xs\">Traces analyzed</dt>\n <dd className=\"text-neutral6 mt-1 text-lg font-semibold\">{formatNumber(progress.traceCount)}</dd>\n </div>\n <div className=\"border-border1 bg-surface3 rounded-md border px-3 py-2\">\n <dt className=\"text-neutral3 text-xs\">Trace signal types ready</dt>\n <dd className=\"text-neutral6 mt-1 text-lg font-semibold\">\n {progress.signalCatalog ? readySignalCount : progress.availableSignals.length} of {enabledSignalCount}\n </dd>\n </div>\n <div className=\"border-border1 bg-surface3 rounded-md border px-3 py-2\">\n <dt className=\"text-neutral3 text-xs\">Status</dt>\n <dd className=\"text-neutral6 mt-1 text-lg font-semibold capitalize\">{progress.status}</dd>\n </div>\n </dl>\n );\n}\n\nfunction SignalProgressList({ progress }: { progress?: TraceIntelligenceProgress }) {\n if (!progress) return null;\n\n const catalog = progress.signalCatalog ?? BUILT_IN_SIGNAL_CATALOG;\n return (\n <ul aria-label=\"Trace signal processing progress\" className=\"mt-3 grid gap-2 sm:grid-cols-2 lg:grid-cols-4\">\n {orderedSignals(\n catalog,\n catalog.filter(signal => signal.enabled).map(signal => signal.name),\n ).map(signalName => {\n const value = progress.signals[signalName] ?? { generated: 0, embedded: 0 };\n const catalogEntry = catalog.find(signal => signal.name === signalName);\n const label = signalLabel(catalog, signalName);\n const isReady = catalogEntry ? catalogEntry.status === 'ready' : progress.availableSignals.includes(signalName);\n return (\n <li className=\"border-border1 bg-surface2 rounded-md border px-3 py-2\" key={signalName}>\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-sm font-semibold\" style={signalStyle(signalName)}>\n {label}\n </span>\n <span className=\"text-neutral4 text-xs\">{isReady ? 'Themes ready' : 'Processing'}</span>\n </div>\n <p className=\"text-neutral3 mt-1 text-xs\">\n {formatNumber(value.generated)} generated · {formatNumber(value.embedded)} embedded\n </p>\n </li>\n );\n })}\n </ul>\n );\n}\n\nexport function PendingSignalProgress({\n progress,\n signalCatalog,\n}: {\n progress?: TraceIntelligenceProgress;\n signalCatalog: readonly SignalCatalogEntry[];\n}) {\n const catalog = progress?.signalCatalog ?? signalCatalog;\n const pendingSignals = catalog.filter(signal => signal.enabled && signal.status !== 'ready');\n if (pendingSignals.length === 0) return null;\n\n return (\n <section className=\"border-border1 bg-surface2 rounded-lg border p-4\" aria-labelledby=\"pending-signals-heading\">\n <h2 id=\"pending-signals-heading\" className=\"text-neutral6 text-sm font-semibold\">\n Signals building themes\n </h2>\n <p className=\"text-neutral3 mt-1 text-xs\">\n Themes appear once enough new traces are analyzed, embedded, and clustered.\n </p>\n <ul aria-label=\"Pending trace signals\" className=\"mt-3 grid gap-2 sm:grid-cols-2\">\n {pendingSignals.map(signal => {\n const value = progress?.signals[signal.name] ?? { generated: 0, embedded: 0 };\n return (\n <li className=\"border-border1 bg-surface1 rounded-md border px-3 py-2\" key={signal.name}>\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-sm font-semibold\" style={signalStyle(signal.name)}>\n {signalLabel(catalog, signal.name)}\n </span>\n <span className=\"text-neutral4 text-xs capitalize\">{signal.status}</span>\n </div>\n {signalDescription(catalog, signal.name) ? (\n <p className=\"text-neutral3 mt-1 text-xs\">{signalDescription(catalog, signal.name)}</p>\n ) : null}\n <p className=\"text-neutral3 mt-1 text-xs\">\n {formatNumber(value.generated)} generated · {formatNumber(value.embedded)} embedded\n </p>\n </li>\n );\n })}\n </ul>\n </section>\n );\n}\n\nexport const SignalsEmptyState = ({\n actionSlot,\n LinkComponent = 'a',\n progress,\n signalCatalog,\n isRangeEmpty,\n}: SignalsEmptyStateProps) => {\n const copy = statusCopy(progress, isRangeEmpty);\n const catalog = signalCatalog ?? progress?.signalCatalog ?? BUILT_IN_SIGNAL_CATALOG;\n const enabledSignalNames = orderedSignals(\n catalog,\n catalog.filter(signal => signal.enabled).map(signal => signal.name),\n );\n const signalDefinitions = enabledSignalNames.map(name => ({\n key: name,\n label: signalLabel(catalog, name),\n description: signalDescription(catalog, name),\n }));\n\n return (\n <section className=\"bg-surface1 min-h-full w-full p-6 md:px-10 lg:px-12 xl:px-[4.375rem]\">\n <div className=\"mx-auto w-full max-w-260\">\n <header>\n <p className=\"text-neutral4 flex items-center gap-2 font-mono text-xs tracking-wider uppercase\">\n <span aria-hidden=\"true\" className=\"bg-accent1 size-2 rounded-full\" />\n Trace Intelligence\n </p>\n <h1 className=\"text-header-xl text-neutral6 mt-2 font-medium tracking-tight\">\n Understand what drives every agent interaction\n </h1>\n <p className=\"text-neutral3 mt-2 max-w-180 text-sm leading-5\">\n Trace Intelligence groups recurring goals, outcomes, behaviors, and sentiment across completed traces.\n </p>\n </header>\n\n <div\n role=\"list\"\n aria-label=\"Trace Intelligence analysis pipeline\"\n className=\"mt-14 grid gap-4 lg:grid-cols-[17.5rem_4.5rem_17.5rem_4.5rem_minmax(0,1fr)] lg:gap-0\"\n >\n <div role=\"listitem\" className=\"min-h-50 p-5\">\n <h2 className=\"text-neutral6 text-lg font-semibold\">Traces</h2>\n <p className=\"text-neutral3 mt-0.5 text-xs\">Every agent interaction</p>\n <p className=\"text-neutral3 mt-5 font-mono text-[0.6875rem] tracking-[0.18em] uppercase\">Input</p>\n <div className=\"mt-2.5 space-y-2\">\n {traceRows.map(([name, duration]) => (\n <div\n className=\"border-border1 bg-surface3 text-ui-xs flex items-center justify-between rounded border px-3 py-1.5 font-mono\"\n key={name}\n >\n <span className=\"text-neutral4\">{name}</span>\n <span className=\"text-neutral3\">{duration}</span>\n </div>\n ))}\n </div>\n </div>\n\n <PipelineConnector />\n\n <Card\n as=\"div\"\n role=\"listitem\"\n className=\"flex min-h-50 flex-col items-center p-5 text-center\"\n elevation=\"elevated\"\n >\n <h2 className=\"text-neutral6 text-lg font-semibold\">Trace Intelligence</h2>\n <p className=\"text-neutral3 mt-0.5 text-xs\">Finds recurring themes</p>\n <div aria-hidden=\"true\" className=\"relative mt-5 flex size-20 items-center justify-center\">\n <span className=\"signals-engine-pulse border-positive1/15 absolute size-20 rounded-full border\" />\n <span className=\"border-positive1/25 absolute size-14 rounded-full border\" />\n <span className=\"border-positive1/40 bg-positive1/5 absolute size-9 rounded-full border shadow-[0_0_24px_var(--color-positive1)]\" />\n <CpuIcon className=\"text-positive1 relative size-4\" />\n </div>\n <p className=\"text-ui-xs text-neutral3 mt-3 max-w-40 leading-4\">\n Clusters similar trace signals into themes for each dimension\n </p>\n </Card>\n\n <PipelineConnector />\n\n <div role=\"listitem\" className=\"min-h-50 p-5\">\n <h2 className=\"text-neutral6 text-lg font-semibold\">Theme analysis</h2>\n <p className=\"text-neutral3 mt-0.5 text-xs\">How recurring patterns connect</p>\n <p className=\"text-neutral3 mt-5 font-mono text-[0.6875rem] tracking-[0.18em] uppercase\">Output</p>\n <div className=\"mt-3 flex flex-wrap gap-2\">\n {signalDefinitions.map(signal => (\n <span\n className=\"signals-chip bg-surface3 inline-flex items-center gap-2 rounded border border-current/25 px-2.5 py-1.5 text-xs font-medium shadow-[0_0_14px_color-mix(in_oklch,currentColor_12%,transparent)]\"\n key={signal.key}\n style={signalStyle(signal.key)}\n >\n <span aria-hidden=\"true\" className=\"size-1.5 rounded-full bg-current shadow-[0_0_7px_currentColor]\" />\n {signal.label}\n </span>\n ))}\n </div>\n </div>\n </div>\n\n <section className=\"mt-10\" aria-labelledby=\"signal-definitions-heading\">\n <h2 id=\"signal-definitions-heading\" className=\"text-neutral6 text-lg font-semibold\">\n What each trace signal means\n </h2>\n <ul aria-label=\"Trace signal definitions\" className=\"mt-4 grid gap-3 sm:grid-cols-2\">\n {signalDefinitions.map(signal => (\n <li className=\"px-1 py-2\" key={signal.key}>\n <h3 className=\"text-sm font-semibold\" style={signalStyle(signal.key)}>\n {signal.label}\n </h3>\n {signal.description ? (\n <p className=\"text-neutral3 mt-1.5 text-xs leading-5\">{signal.description}</p>\n ) : null}\n </li>\n ))}\n </ul>\n </section>\n\n <aside className=\"border-border1 bg-surface2 mt-9 rounded-md border px-5 py-4\">\n <div className=\"flex min-w-0 items-start gap-3\">\n <span\n aria-hidden=\"true\"\n className=\"bg-warning1 mt-1.5 size-2 shrink-0 rounded-full shadow-[0_0_9px_currentColor]\"\n />\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-neutral3 text-xs leading-5\">\n <strong className=\"text-neutral5 font-semibold\">{copy.title}</strong> {copy.body}\n </p>\n {progress ? <ProgressSummary progress={progress} /> : null}\n <SignalProgressList progress={progress} />\n </div>\n </div>\n <div className=\"mt-4 flex shrink-0 flex-wrap items-center gap-2 sm:justify-end\">\n {actionSlot}\n <Button\n as=\"a\"\n href=\"https://mastra.ai/en/docs/mastra-platform/trace-intelligence\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n variant=\"outline\"\n size=\"sm\"\n >\n Read the docs<span className=\"sr-only\"> (opens in new tab)</span>\n </Button>\n <Button as={LinkComponent} href=\"/traces\" variant=\"primary\" size=\"sm\">\n View incoming traces\n </Button>\n </div>\n </aside>\n </div>\n </section>\n );\n};\n"],"names":["nodeColor","getSignalHue","jsxs","jsx","BUILT_IN_SIGNAL_CATALOG","orderedSignals","signalLabel","signalDescription","Card","CpuIcon","Button"],"mappings":"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"}
1
+ {"version":3,"file":"signals-empty-state.cjs.js","sources":["../../../../src/ee/signals/components/signals-empty-state.tsx"],"sourcesContent":["import type { EntityLearningProgressResponse, SignalCatalogEntry } from '@mastra/client-js';\nimport { CpuIcon } from 'lucide-react';\nimport type { CSSProperties, ReactNode } from 'react';\n\nimport './signals-empty-state.css';\nimport { Button } from '../../../ds/components/Button';\nimport { Card } from '../../../ds/components/Card';\nimport { nodeColor } from '../../../ds/components/SankeyChart/sankeyColor';\nimport type { LinkComponent } from '../../../ds/types/link-component';\nimport { getSignalHue } from '../signal-colors';\nimport { BUILT_IN_SIGNAL_CATALOG, orderedSignals, signalDescription, signalLabel } from '../signal-formatting';\n\nconst traceRows = [\n ['chat.completion', '1.2s'],\n ['tool.search_docs', '340ms'],\n ['workflow.support', '2.8s'],\n];\n\nconst signalStyle = (label: string): CSSProperties => ({\n color: nodeColor(getSignalHue(label)),\n});\n\nconst PipelineConnector = () => (\n <div aria-hidden=\"true\" className=\"relative hidden h-full items-center lg:flex\">\n <div className=\"border-border1 w-full border-t border-dashed\" />\n <span className=\"signals-pipeline-connector bg-positive1 absolute left-1/2 size-2.5 -translate-x-1/2 rounded-full shadow-[0_0_12px_currentColor]\" />\n </div>\n);\n\nexport type TraceIntelligenceProgress = EntityLearningProgressResponse;\n\nexport type SignalsEmptyStateProps = {\n actionSlot?: ReactNode;\n LinkComponent?: LinkComponent;\n progress?: TraceIntelligenceProgress;\n signalCatalog?: readonly SignalCatalogEntry[];\n isRangeEmpty?: boolean;\n};\n\nfunction formatNumber(value: number) {\n return new Intl.NumberFormat('en-US').format(value);\n}\n\nfunction statusCopy(progress?: TraceIntelligenceProgress, isRangeEmpty?: boolean) {\n if (isRangeEmpty) {\n return {\n title: 'No Trace Intelligence themes in this date range.',\n body: 'Choose a wider snapshot date range, or wait for newly processed traces to form recurring themes.',\n };\n }\n if (!progress || progress.status === 'collecting') {\n return {\n title: 'Collecting traces for Trace Intelligence.',\n body: 'Trace Intelligence starts grouping recurring patterns after your deployed agents send enough completed traces.',\n };\n }\n if (progress.status === 'ready') {\n return {\n title: 'Trace Intelligence themes are ready.',\n body: 'Select at least two available trace signal types to see how goals, outcomes, behaviors, and sentiment connect.',\n };\n }\n return {\n title: 'Analyzing traces for Trace Intelligence.',\n body: 'Trace signals have started processing. Themes appear after enough generated and embedded trace signals form recurring patterns.',\n };\n}\n\nfunction ProgressSummary({ progress }: { progress: TraceIntelligenceProgress }) {\n const catalog = progress.signalCatalog ?? BUILT_IN_SIGNAL_CATALOG;\n const enabledSignalCount = catalog.filter(signal => signal.enabled).length;\n const readySignalCount = catalog.filter(signal => signal.enabled && signal.status === 'ready').length;\n return (\n <dl className=\"mt-4 grid gap-2 sm:grid-cols-3\">\n <div className=\"border-border1 bg-surface3 rounded-md border px-3 py-2\">\n <dt className=\"text-neutral3 text-xs\">Traces analyzed</dt>\n <dd className=\"text-neutral6 mt-1 text-lg font-semibold\">{formatNumber(progress.traceCount)}</dd>\n </div>\n <div className=\"border-border1 bg-surface3 rounded-md border px-3 py-2\">\n <dt className=\"text-neutral3 text-xs\">Trace signal types ready</dt>\n <dd className=\"text-neutral6 mt-1 text-lg font-semibold\">\n {progress.signalCatalog ? readySignalCount : progress.availableSignals.length} of {enabledSignalCount}\n </dd>\n </div>\n <div className=\"border-border1 bg-surface3 rounded-md border px-3 py-2\">\n <dt className=\"text-neutral3 text-xs\">Status</dt>\n <dd className=\"text-neutral6 mt-1 text-lg font-semibold capitalize\">{progress.status}</dd>\n </div>\n </dl>\n );\n}\n\nfunction SignalProgressList({ progress }: { progress?: TraceIntelligenceProgress }) {\n if (!progress) return null;\n\n const catalog = progress.signalCatalog ?? BUILT_IN_SIGNAL_CATALOG;\n return (\n <ul aria-label=\"Trace signal processing progress\" className=\"mt-3 grid gap-2 sm:grid-cols-2 lg:grid-cols-4\">\n {orderedSignals(\n catalog,\n catalog.filter(signal => signal.enabled).map(signal => signal.name),\n ).map(signalName => {\n const value = progress.signals[signalName] ?? { generated: 0, embedded: 0 };\n const catalogEntry = catalog.find(signal => signal.name === signalName);\n const label = signalLabel(catalog, signalName);\n const isReady = catalogEntry ? catalogEntry.status === 'ready' : progress.availableSignals.includes(signalName);\n return (\n <li className=\"border-border1 bg-surface2 rounded-md border px-3 py-2\" key={signalName}>\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-sm font-semibold\" style={signalStyle(signalName)}>\n {label}\n </span>\n <span className=\"text-neutral4 text-xs\">{isReady ? 'Themes ready' : 'Processing'}</span>\n </div>\n <p className=\"text-neutral3 mt-1 text-xs\">\n {formatNumber(value.generated)} generated · {formatNumber(value.embedded)} embedded\n </p>\n </li>\n );\n })}\n </ul>\n );\n}\n\nexport function PendingSignalProgress({\n progress,\n signalCatalog,\n}: {\n progress?: TraceIntelligenceProgress;\n signalCatalog: readonly SignalCatalogEntry[];\n}) {\n const catalog = progress?.signalCatalog ?? signalCatalog;\n const pendingSignals = catalog.filter(signal => signal.enabled && signal.status !== 'ready');\n if (pendingSignals.length === 0) return null;\n\n return (\n <section className=\"border-border1 bg-surface2 rounded-lg border p-4\" aria-labelledby=\"pending-signals-heading\">\n <h2 id=\"pending-signals-heading\" className=\"text-neutral6 text-sm font-semibold\">\n Signals building themes\n </h2>\n <p className=\"text-neutral3 mt-1 text-xs\">\n Themes appear once enough new traces are analyzed, embedded, and clustered.\n </p>\n <ul aria-label=\"Pending trace signals\" className=\"mt-3 grid gap-2 sm:grid-cols-2\">\n {pendingSignals.map(signal => {\n const value = progress?.signals[signal.name] ?? { generated: 0, embedded: 0 };\n return (\n <li className=\"border-border1 bg-surface3 rounded-md border px-3 py-2 font-sans\" key={signal.name}>\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-sm font-semibold\" style={signalStyle(signal.name)}>\n {signalLabel(catalog, signal.name)}\n </span>\n <span className=\"text-neutral4 text-xs capitalize\">{signal.status}</span>\n </div>\n {signalDescription(catalog, signal.name) ? (\n <p className=\"text-neutral3 mt-1 text-xs\">{signalDescription(catalog, signal.name)}</p>\n ) : null}\n <p className=\"text-neutral3 mt-1 text-xs\">\n {formatNumber(value.generated)} generated · {formatNumber(value.embedded)} embedded\n </p>\n </li>\n );\n })}\n </ul>\n </section>\n );\n}\n\nexport const SignalsEmptyState = ({\n actionSlot,\n LinkComponent = 'a',\n progress,\n signalCatalog,\n isRangeEmpty,\n}: SignalsEmptyStateProps) => {\n const copy = statusCopy(progress, isRangeEmpty);\n const catalog = signalCatalog ?? progress?.signalCatalog ?? BUILT_IN_SIGNAL_CATALOG;\n const enabledSignalNames = orderedSignals(\n catalog,\n catalog.filter(signal => signal.enabled).map(signal => signal.name),\n );\n const signalDefinitions = enabledSignalNames.map(name => ({\n key: name,\n label: signalLabel(catalog, name),\n description: signalDescription(catalog, name),\n }));\n\n return (\n <section className=\"bg-surface1 min-h-full w-full p-6 md:px-10 lg:px-12 xl:px-[4.375rem]\">\n <div className=\"mx-auto w-full max-w-260\">\n <header>\n <p className=\"text-neutral4 flex items-center gap-2 font-mono text-xs tracking-wider uppercase\">\n <span aria-hidden=\"true\" className=\"bg-accent1 size-2 rounded-full\" />\n Trace Intelligence\n </p>\n <h1 className=\"text-header-xl text-neutral6 mt-2 font-medium tracking-tight\">\n Understand what drives every agent interaction\n </h1>\n <p className=\"text-neutral3 mt-2 max-w-180 text-sm leading-5\">\n Trace Intelligence groups recurring goals, outcomes, behaviors, and sentiment across completed traces.\n </p>\n </header>\n\n <div\n role=\"list\"\n aria-label=\"Trace Intelligence analysis pipeline\"\n className=\"mt-14 grid gap-4 lg:grid-cols-[17.5rem_4.5rem_17.5rem_4.5rem_minmax(0,1fr)] lg:gap-0\"\n >\n <div role=\"listitem\" className=\"min-h-50 p-5\">\n <h2 className=\"text-neutral6 text-lg font-semibold\">Traces</h2>\n <p className=\"text-neutral3 mt-0.5 text-xs\">Every agent interaction</p>\n <p className=\"text-neutral3 mt-5 font-mono text-[0.6875rem] tracking-[0.18em] uppercase\">Input</p>\n <div className=\"mt-2.5 space-y-2\">\n {traceRows.map(([name, duration]) => (\n <div\n className=\"border-border1 bg-surface3 text-ui-xs flex items-center justify-between rounded border px-3 py-1.5 font-mono\"\n key={name}\n >\n <span className=\"text-neutral4\">{name}</span>\n <span className=\"text-neutral3\">{duration}</span>\n </div>\n ))}\n </div>\n </div>\n\n <PipelineConnector />\n\n <Card\n as=\"div\"\n role=\"listitem\"\n className=\"flex min-h-50 flex-col items-center p-5 text-center\"\n elevation=\"elevated\"\n >\n <h2 className=\"text-neutral6 text-lg font-semibold\">Trace Intelligence</h2>\n <p className=\"text-neutral3 mt-0.5 text-xs\">Finds recurring themes</p>\n <div aria-hidden=\"true\" className=\"relative mt-5 flex size-20 items-center justify-center\">\n <span className=\"signals-engine-pulse border-positive1/15 absolute size-20 rounded-full border\" />\n <span className=\"border-positive1/25 absolute size-14 rounded-full border\" />\n <span className=\"border-positive1/40 bg-positive1/5 absolute size-9 rounded-full border shadow-[0_0_24px_var(--color-positive1)]\" />\n <CpuIcon className=\"text-positive1 relative size-4\" />\n </div>\n <p className=\"text-ui-xs text-neutral3 mt-3 max-w-40 leading-4\">\n Clusters similar trace signals into themes for each dimension\n </p>\n </Card>\n\n <PipelineConnector />\n\n <div role=\"listitem\" className=\"min-h-50 p-5\">\n <h2 className=\"text-neutral6 text-lg font-semibold\">Theme analysis</h2>\n <p className=\"text-neutral3 mt-0.5 text-xs\">How recurring patterns connect</p>\n <p className=\"text-neutral3 mt-5 font-mono text-[0.6875rem] tracking-[0.18em] uppercase\">Output</p>\n <div className=\"mt-3 flex flex-wrap gap-2\">\n {signalDefinitions.map(signal => (\n <span\n className=\"signals-chip bg-surface3 inline-flex items-center gap-2 rounded border border-current/25 px-2.5 py-1.5 text-xs font-medium shadow-[0_0_14px_color-mix(in_oklch,currentColor_12%,transparent)]\"\n key={signal.key}\n style={signalStyle(signal.key)}\n >\n <span aria-hidden=\"true\" className=\"size-1.5 rounded-full bg-current shadow-[0_0_7px_currentColor]\" />\n {signal.label}\n </span>\n ))}\n </div>\n </div>\n </div>\n\n <section className=\"mt-10\" aria-labelledby=\"signal-definitions-heading\">\n <h2 id=\"signal-definitions-heading\" className=\"text-neutral6 text-lg font-semibold\">\n What each trace signal means\n </h2>\n <ul aria-label=\"Trace signal definitions\" className=\"mt-4 grid gap-3 sm:grid-cols-2\">\n {signalDefinitions.map(signal => (\n <li className=\"px-1 py-2\" key={signal.key}>\n <h3 className=\"text-sm font-semibold\" style={signalStyle(signal.key)}>\n {signal.label}\n </h3>\n {signal.description ? (\n <p className=\"text-neutral3 mt-1.5 text-xs leading-5\">{signal.description}</p>\n ) : null}\n </li>\n ))}\n </ul>\n </section>\n\n <aside className=\"border-border1 bg-surface2 mt-9 rounded-md border px-5 py-4\">\n <div className=\"flex min-w-0 items-start gap-3\">\n <span\n aria-hidden=\"true\"\n className=\"bg-warning1 mt-1.5 size-2 shrink-0 rounded-full shadow-[0_0_9px_currentColor]\"\n />\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-neutral3 text-xs leading-5\">\n <strong className=\"text-neutral5 font-semibold\">{copy.title}</strong> {copy.body}\n </p>\n {progress ? <ProgressSummary progress={progress} /> : null}\n <SignalProgressList progress={progress} />\n </div>\n </div>\n <div className=\"mt-4 flex shrink-0 flex-wrap items-center gap-2 sm:justify-end\">\n {actionSlot}\n <Button\n as=\"a\"\n href=\"https://mastra.ai/en/docs/mastra-platform/trace-intelligence\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n variant=\"outline\"\n size=\"sm\"\n >\n Read the docs<span className=\"sr-only\"> (opens in new tab)</span>\n </Button>\n <Button as={LinkComponent} href=\"/traces\" variant=\"primary\" size=\"sm\">\n View incoming traces\n </Button>\n </div>\n </aside>\n </div>\n </section>\n );\n};\n"],"names":["nodeColor","getSignalHue","jsxs","jsx","BUILT_IN_SIGNAL_CATALOG","orderedSignals","signalLabel","signalDescription","Card","CpuIcon","Button"],"mappings":"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"}
@@ -105,7 +105,7 @@ function PendingSignalProgress({
105
105
  /* @__PURE__ */ jsx("p", { className: "text-neutral3 mt-1 text-xs", children: "Themes appear once enough new traces are analyzed, embedded, and clustered." }),
106
106
  /* @__PURE__ */ jsx("ul", { "aria-label": "Pending trace signals", className: "mt-3 grid gap-2 sm:grid-cols-2", children: pendingSignals.map((signal) => {
107
107
  const value = progress?.signals[signal.name] ?? { generated: 0, embedded: 0 };
108
- return /* @__PURE__ */ jsxs("li", { className: "border-border1 bg-surface1 rounded-md border px-3 py-2", children: [
108
+ return /* @__PURE__ */ jsxs("li", { className: "border-border1 bg-surface3 rounded-md border px-3 py-2 font-sans", children: [
109
109
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
110
110
  /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold", style: signalStyle(signal.name), children: signalLabel(catalog, signal.name) }),
111
111
  /* @__PURE__ */ jsx("span", { className: "text-neutral4 text-xs capitalize", children: signal.status })
@@ -1 +1 @@
1
- {"version":3,"file":"signals-empty-state.es.js","sources":["../../../../src/ee/signals/components/signals-empty-state.tsx"],"sourcesContent":["import type { EntityLearningProgressResponse, SignalCatalogEntry } from '@mastra/client-js';\nimport { CpuIcon } from 'lucide-react';\nimport type { CSSProperties, ReactNode } from 'react';\n\nimport './signals-empty-state.css';\nimport { Button } from '../../../ds/components/Button';\nimport { Card } from '../../../ds/components/Card';\nimport { nodeColor } from '../../../ds/components/SankeyChart/sankeyColor';\nimport type { LinkComponent } from '../../../ds/types/link-component';\nimport { getSignalHue } from '../signal-colors';\nimport { BUILT_IN_SIGNAL_CATALOG, orderedSignals, signalDescription, signalLabel } from '../signal-formatting';\n\nconst traceRows = [\n ['chat.completion', '1.2s'],\n ['tool.search_docs', '340ms'],\n ['workflow.support', '2.8s'],\n];\n\nconst signalStyle = (label: string): CSSProperties => ({\n color: nodeColor(getSignalHue(label)),\n});\n\nconst PipelineConnector = () => (\n <div aria-hidden=\"true\" className=\"relative hidden h-full items-center lg:flex\">\n <div className=\"border-border1 w-full border-t border-dashed\" />\n <span className=\"signals-pipeline-connector bg-positive1 absolute left-1/2 size-2.5 -translate-x-1/2 rounded-full shadow-[0_0_12px_currentColor]\" />\n </div>\n);\n\nexport type TraceIntelligenceProgress = EntityLearningProgressResponse;\n\nexport type SignalsEmptyStateProps = {\n actionSlot?: ReactNode;\n LinkComponent?: LinkComponent;\n progress?: TraceIntelligenceProgress;\n signalCatalog?: readonly SignalCatalogEntry[];\n isRangeEmpty?: boolean;\n};\n\nfunction formatNumber(value: number) {\n return new Intl.NumberFormat('en-US').format(value);\n}\n\nfunction statusCopy(progress?: TraceIntelligenceProgress, isRangeEmpty?: boolean) {\n if (isRangeEmpty) {\n return {\n title: 'No Trace Intelligence themes in this date range.',\n body: 'Choose a wider snapshot date range, or wait for newly processed traces to form recurring themes.',\n };\n }\n if (!progress || progress.status === 'collecting') {\n return {\n title: 'Collecting traces for Trace Intelligence.',\n body: 'Trace Intelligence starts grouping recurring patterns after your deployed agents send enough completed traces.',\n };\n }\n if (progress.status === 'ready') {\n return {\n title: 'Trace Intelligence themes are ready.',\n body: 'Select at least two available trace signal types to see how goals, outcomes, behaviors, and sentiment connect.',\n };\n }\n return {\n title: 'Analyzing traces for Trace Intelligence.',\n body: 'Trace signals have started processing. Themes appear after enough generated and embedded trace signals form recurring patterns.',\n };\n}\n\nfunction ProgressSummary({ progress }: { progress: TraceIntelligenceProgress }) {\n const catalog = progress.signalCatalog ?? BUILT_IN_SIGNAL_CATALOG;\n const enabledSignalCount = catalog.filter(signal => signal.enabled).length;\n const readySignalCount = catalog.filter(signal => signal.enabled && signal.status === 'ready').length;\n return (\n <dl className=\"mt-4 grid gap-2 sm:grid-cols-3\">\n <div className=\"border-border1 bg-surface3 rounded-md border px-3 py-2\">\n <dt className=\"text-neutral3 text-xs\">Traces analyzed</dt>\n <dd className=\"text-neutral6 mt-1 text-lg font-semibold\">{formatNumber(progress.traceCount)}</dd>\n </div>\n <div className=\"border-border1 bg-surface3 rounded-md border px-3 py-2\">\n <dt className=\"text-neutral3 text-xs\">Trace signal types ready</dt>\n <dd className=\"text-neutral6 mt-1 text-lg font-semibold\">\n {progress.signalCatalog ? readySignalCount : progress.availableSignals.length} of {enabledSignalCount}\n </dd>\n </div>\n <div className=\"border-border1 bg-surface3 rounded-md border px-3 py-2\">\n <dt className=\"text-neutral3 text-xs\">Status</dt>\n <dd className=\"text-neutral6 mt-1 text-lg font-semibold capitalize\">{progress.status}</dd>\n </div>\n </dl>\n );\n}\n\nfunction SignalProgressList({ progress }: { progress?: TraceIntelligenceProgress }) {\n if (!progress) return null;\n\n const catalog = progress.signalCatalog ?? BUILT_IN_SIGNAL_CATALOG;\n return (\n <ul aria-label=\"Trace signal processing progress\" className=\"mt-3 grid gap-2 sm:grid-cols-2 lg:grid-cols-4\">\n {orderedSignals(\n catalog,\n catalog.filter(signal => signal.enabled).map(signal => signal.name),\n ).map(signalName => {\n const value = progress.signals[signalName] ?? { generated: 0, embedded: 0 };\n const catalogEntry = catalog.find(signal => signal.name === signalName);\n const label = signalLabel(catalog, signalName);\n const isReady = catalogEntry ? catalogEntry.status === 'ready' : progress.availableSignals.includes(signalName);\n return (\n <li className=\"border-border1 bg-surface2 rounded-md border px-3 py-2\" key={signalName}>\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-sm font-semibold\" style={signalStyle(signalName)}>\n {label}\n </span>\n <span className=\"text-neutral4 text-xs\">{isReady ? 'Themes ready' : 'Processing'}</span>\n </div>\n <p className=\"text-neutral3 mt-1 text-xs\">\n {formatNumber(value.generated)} generated · {formatNumber(value.embedded)} embedded\n </p>\n </li>\n );\n })}\n </ul>\n );\n}\n\nexport function PendingSignalProgress({\n progress,\n signalCatalog,\n}: {\n progress?: TraceIntelligenceProgress;\n signalCatalog: readonly SignalCatalogEntry[];\n}) {\n const catalog = progress?.signalCatalog ?? signalCatalog;\n const pendingSignals = catalog.filter(signal => signal.enabled && signal.status !== 'ready');\n if (pendingSignals.length === 0) return null;\n\n return (\n <section className=\"border-border1 bg-surface2 rounded-lg border p-4\" aria-labelledby=\"pending-signals-heading\">\n <h2 id=\"pending-signals-heading\" className=\"text-neutral6 text-sm font-semibold\">\n Signals building themes\n </h2>\n <p className=\"text-neutral3 mt-1 text-xs\">\n Themes appear once enough new traces are analyzed, embedded, and clustered.\n </p>\n <ul aria-label=\"Pending trace signals\" className=\"mt-3 grid gap-2 sm:grid-cols-2\">\n {pendingSignals.map(signal => {\n const value = progress?.signals[signal.name] ?? { generated: 0, embedded: 0 };\n return (\n <li className=\"border-border1 bg-surface1 rounded-md border px-3 py-2\" key={signal.name}>\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-sm font-semibold\" style={signalStyle(signal.name)}>\n {signalLabel(catalog, signal.name)}\n </span>\n <span className=\"text-neutral4 text-xs capitalize\">{signal.status}</span>\n </div>\n {signalDescription(catalog, signal.name) ? (\n <p className=\"text-neutral3 mt-1 text-xs\">{signalDescription(catalog, signal.name)}</p>\n ) : null}\n <p className=\"text-neutral3 mt-1 text-xs\">\n {formatNumber(value.generated)} generated · {formatNumber(value.embedded)} embedded\n </p>\n </li>\n );\n })}\n </ul>\n </section>\n );\n}\n\nexport const SignalsEmptyState = ({\n actionSlot,\n LinkComponent = 'a',\n progress,\n signalCatalog,\n isRangeEmpty,\n}: SignalsEmptyStateProps) => {\n const copy = statusCopy(progress, isRangeEmpty);\n const catalog = signalCatalog ?? progress?.signalCatalog ?? BUILT_IN_SIGNAL_CATALOG;\n const enabledSignalNames = orderedSignals(\n catalog,\n catalog.filter(signal => signal.enabled).map(signal => signal.name),\n );\n const signalDefinitions = enabledSignalNames.map(name => ({\n key: name,\n label: signalLabel(catalog, name),\n description: signalDescription(catalog, name),\n }));\n\n return (\n <section className=\"bg-surface1 min-h-full w-full p-6 md:px-10 lg:px-12 xl:px-[4.375rem]\">\n <div className=\"mx-auto w-full max-w-260\">\n <header>\n <p className=\"text-neutral4 flex items-center gap-2 font-mono text-xs tracking-wider uppercase\">\n <span aria-hidden=\"true\" className=\"bg-accent1 size-2 rounded-full\" />\n Trace Intelligence\n </p>\n <h1 className=\"text-header-xl text-neutral6 mt-2 font-medium tracking-tight\">\n Understand what drives every agent interaction\n </h1>\n <p className=\"text-neutral3 mt-2 max-w-180 text-sm leading-5\">\n Trace Intelligence groups recurring goals, outcomes, behaviors, and sentiment across completed traces.\n </p>\n </header>\n\n <div\n role=\"list\"\n aria-label=\"Trace Intelligence analysis pipeline\"\n className=\"mt-14 grid gap-4 lg:grid-cols-[17.5rem_4.5rem_17.5rem_4.5rem_minmax(0,1fr)] lg:gap-0\"\n >\n <div role=\"listitem\" className=\"min-h-50 p-5\">\n <h2 className=\"text-neutral6 text-lg font-semibold\">Traces</h2>\n <p className=\"text-neutral3 mt-0.5 text-xs\">Every agent interaction</p>\n <p className=\"text-neutral3 mt-5 font-mono text-[0.6875rem] tracking-[0.18em] uppercase\">Input</p>\n <div className=\"mt-2.5 space-y-2\">\n {traceRows.map(([name, duration]) => (\n <div\n className=\"border-border1 bg-surface3 text-ui-xs flex items-center justify-between rounded border px-3 py-1.5 font-mono\"\n key={name}\n >\n <span className=\"text-neutral4\">{name}</span>\n <span className=\"text-neutral3\">{duration}</span>\n </div>\n ))}\n </div>\n </div>\n\n <PipelineConnector />\n\n <Card\n as=\"div\"\n role=\"listitem\"\n className=\"flex min-h-50 flex-col items-center p-5 text-center\"\n elevation=\"elevated\"\n >\n <h2 className=\"text-neutral6 text-lg font-semibold\">Trace Intelligence</h2>\n <p className=\"text-neutral3 mt-0.5 text-xs\">Finds recurring themes</p>\n <div aria-hidden=\"true\" className=\"relative mt-5 flex size-20 items-center justify-center\">\n <span className=\"signals-engine-pulse border-positive1/15 absolute size-20 rounded-full border\" />\n <span className=\"border-positive1/25 absolute size-14 rounded-full border\" />\n <span className=\"border-positive1/40 bg-positive1/5 absolute size-9 rounded-full border shadow-[0_0_24px_var(--color-positive1)]\" />\n <CpuIcon className=\"text-positive1 relative size-4\" />\n </div>\n <p className=\"text-ui-xs text-neutral3 mt-3 max-w-40 leading-4\">\n Clusters similar trace signals into themes for each dimension\n </p>\n </Card>\n\n <PipelineConnector />\n\n <div role=\"listitem\" className=\"min-h-50 p-5\">\n <h2 className=\"text-neutral6 text-lg font-semibold\">Theme analysis</h2>\n <p className=\"text-neutral3 mt-0.5 text-xs\">How recurring patterns connect</p>\n <p className=\"text-neutral3 mt-5 font-mono text-[0.6875rem] tracking-[0.18em] uppercase\">Output</p>\n <div className=\"mt-3 flex flex-wrap gap-2\">\n {signalDefinitions.map(signal => (\n <span\n className=\"signals-chip bg-surface3 inline-flex items-center gap-2 rounded border border-current/25 px-2.5 py-1.5 text-xs font-medium shadow-[0_0_14px_color-mix(in_oklch,currentColor_12%,transparent)]\"\n key={signal.key}\n style={signalStyle(signal.key)}\n >\n <span aria-hidden=\"true\" className=\"size-1.5 rounded-full bg-current shadow-[0_0_7px_currentColor]\" />\n {signal.label}\n </span>\n ))}\n </div>\n </div>\n </div>\n\n <section className=\"mt-10\" aria-labelledby=\"signal-definitions-heading\">\n <h2 id=\"signal-definitions-heading\" className=\"text-neutral6 text-lg font-semibold\">\n What each trace signal means\n </h2>\n <ul aria-label=\"Trace signal definitions\" className=\"mt-4 grid gap-3 sm:grid-cols-2\">\n {signalDefinitions.map(signal => (\n <li className=\"px-1 py-2\" key={signal.key}>\n <h3 className=\"text-sm font-semibold\" style={signalStyle(signal.key)}>\n {signal.label}\n </h3>\n {signal.description ? (\n <p className=\"text-neutral3 mt-1.5 text-xs leading-5\">{signal.description}</p>\n ) : null}\n </li>\n ))}\n </ul>\n </section>\n\n <aside className=\"border-border1 bg-surface2 mt-9 rounded-md border px-5 py-4\">\n <div className=\"flex min-w-0 items-start gap-3\">\n <span\n aria-hidden=\"true\"\n className=\"bg-warning1 mt-1.5 size-2 shrink-0 rounded-full shadow-[0_0_9px_currentColor]\"\n />\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-neutral3 text-xs leading-5\">\n <strong className=\"text-neutral5 font-semibold\">{copy.title}</strong> {copy.body}\n </p>\n {progress ? <ProgressSummary progress={progress} /> : null}\n <SignalProgressList progress={progress} />\n </div>\n </div>\n <div className=\"mt-4 flex shrink-0 flex-wrap items-center gap-2 sm:justify-end\">\n {actionSlot}\n <Button\n as=\"a\"\n href=\"https://mastra.ai/en/docs/mastra-platform/trace-intelligence\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n variant=\"outline\"\n size=\"sm\"\n >\n Read the docs<span className=\"sr-only\"> (opens in new tab)</span>\n </Button>\n <Button as={LinkComponent} href=\"/traces\" variant=\"primary\" size=\"sm\">\n View incoming traces\n </Button>\n </div>\n </aside>\n </div>\n </section>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signals-empty-state.es.js","sources":["../../../../src/ee/signals/components/signals-empty-state.tsx"],"sourcesContent":["import type { EntityLearningProgressResponse, SignalCatalogEntry } from '@mastra/client-js';\nimport { CpuIcon } from 'lucide-react';\nimport type { CSSProperties, ReactNode } from 'react';\n\nimport './signals-empty-state.css';\nimport { Button } from '../../../ds/components/Button';\nimport { Card } from '../../../ds/components/Card';\nimport { nodeColor } from '../../../ds/components/SankeyChart/sankeyColor';\nimport type { LinkComponent } from '../../../ds/types/link-component';\nimport { getSignalHue } from '../signal-colors';\nimport { BUILT_IN_SIGNAL_CATALOG, orderedSignals, signalDescription, signalLabel } from '../signal-formatting';\n\nconst traceRows = [\n ['chat.completion', '1.2s'],\n ['tool.search_docs', '340ms'],\n ['workflow.support', '2.8s'],\n];\n\nconst signalStyle = (label: string): CSSProperties => ({\n color: nodeColor(getSignalHue(label)),\n});\n\nconst PipelineConnector = () => (\n <div aria-hidden=\"true\" className=\"relative hidden h-full items-center lg:flex\">\n <div className=\"border-border1 w-full border-t border-dashed\" />\n <span className=\"signals-pipeline-connector bg-positive1 absolute left-1/2 size-2.5 -translate-x-1/2 rounded-full shadow-[0_0_12px_currentColor]\" />\n </div>\n);\n\nexport type TraceIntelligenceProgress = EntityLearningProgressResponse;\n\nexport type SignalsEmptyStateProps = {\n actionSlot?: ReactNode;\n LinkComponent?: LinkComponent;\n progress?: TraceIntelligenceProgress;\n signalCatalog?: readonly SignalCatalogEntry[];\n isRangeEmpty?: boolean;\n};\n\nfunction formatNumber(value: number) {\n return new Intl.NumberFormat('en-US').format(value);\n}\n\nfunction statusCopy(progress?: TraceIntelligenceProgress, isRangeEmpty?: boolean) {\n if (isRangeEmpty) {\n return {\n title: 'No Trace Intelligence themes in this date range.',\n body: 'Choose a wider snapshot date range, or wait for newly processed traces to form recurring themes.',\n };\n }\n if (!progress || progress.status === 'collecting') {\n return {\n title: 'Collecting traces for Trace Intelligence.',\n body: 'Trace Intelligence starts grouping recurring patterns after your deployed agents send enough completed traces.',\n };\n }\n if (progress.status === 'ready') {\n return {\n title: 'Trace Intelligence themes are ready.',\n body: 'Select at least two available trace signal types to see how goals, outcomes, behaviors, and sentiment connect.',\n };\n }\n return {\n title: 'Analyzing traces for Trace Intelligence.',\n body: 'Trace signals have started processing. Themes appear after enough generated and embedded trace signals form recurring patterns.',\n };\n}\n\nfunction ProgressSummary({ progress }: { progress: TraceIntelligenceProgress }) {\n const catalog = progress.signalCatalog ?? BUILT_IN_SIGNAL_CATALOG;\n const enabledSignalCount = catalog.filter(signal => signal.enabled).length;\n const readySignalCount = catalog.filter(signal => signal.enabled && signal.status === 'ready').length;\n return (\n <dl className=\"mt-4 grid gap-2 sm:grid-cols-3\">\n <div className=\"border-border1 bg-surface3 rounded-md border px-3 py-2\">\n <dt className=\"text-neutral3 text-xs\">Traces analyzed</dt>\n <dd className=\"text-neutral6 mt-1 text-lg font-semibold\">{formatNumber(progress.traceCount)}</dd>\n </div>\n <div className=\"border-border1 bg-surface3 rounded-md border px-3 py-2\">\n <dt className=\"text-neutral3 text-xs\">Trace signal types ready</dt>\n <dd className=\"text-neutral6 mt-1 text-lg font-semibold\">\n {progress.signalCatalog ? readySignalCount : progress.availableSignals.length} of {enabledSignalCount}\n </dd>\n </div>\n <div className=\"border-border1 bg-surface3 rounded-md border px-3 py-2\">\n <dt className=\"text-neutral3 text-xs\">Status</dt>\n <dd className=\"text-neutral6 mt-1 text-lg font-semibold capitalize\">{progress.status}</dd>\n </div>\n </dl>\n );\n}\n\nfunction SignalProgressList({ progress }: { progress?: TraceIntelligenceProgress }) {\n if (!progress) return null;\n\n const catalog = progress.signalCatalog ?? BUILT_IN_SIGNAL_CATALOG;\n return (\n <ul aria-label=\"Trace signal processing progress\" className=\"mt-3 grid gap-2 sm:grid-cols-2 lg:grid-cols-4\">\n {orderedSignals(\n catalog,\n catalog.filter(signal => signal.enabled).map(signal => signal.name),\n ).map(signalName => {\n const value = progress.signals[signalName] ?? { generated: 0, embedded: 0 };\n const catalogEntry = catalog.find(signal => signal.name === signalName);\n const label = signalLabel(catalog, signalName);\n const isReady = catalogEntry ? catalogEntry.status === 'ready' : progress.availableSignals.includes(signalName);\n return (\n <li className=\"border-border1 bg-surface2 rounded-md border px-3 py-2\" key={signalName}>\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-sm font-semibold\" style={signalStyle(signalName)}>\n {label}\n </span>\n <span className=\"text-neutral4 text-xs\">{isReady ? 'Themes ready' : 'Processing'}</span>\n </div>\n <p className=\"text-neutral3 mt-1 text-xs\">\n {formatNumber(value.generated)} generated · {formatNumber(value.embedded)} embedded\n </p>\n </li>\n );\n })}\n </ul>\n );\n}\n\nexport function PendingSignalProgress({\n progress,\n signalCatalog,\n}: {\n progress?: TraceIntelligenceProgress;\n signalCatalog: readonly SignalCatalogEntry[];\n}) {\n const catalog = progress?.signalCatalog ?? signalCatalog;\n const pendingSignals = catalog.filter(signal => signal.enabled && signal.status !== 'ready');\n if (pendingSignals.length === 0) return null;\n\n return (\n <section className=\"border-border1 bg-surface2 rounded-lg border p-4\" aria-labelledby=\"pending-signals-heading\">\n <h2 id=\"pending-signals-heading\" className=\"text-neutral6 text-sm font-semibold\">\n Signals building themes\n </h2>\n <p className=\"text-neutral3 mt-1 text-xs\">\n Themes appear once enough new traces are analyzed, embedded, and clustered.\n </p>\n <ul aria-label=\"Pending trace signals\" className=\"mt-3 grid gap-2 sm:grid-cols-2\">\n {pendingSignals.map(signal => {\n const value = progress?.signals[signal.name] ?? { generated: 0, embedded: 0 };\n return (\n <li className=\"border-border1 bg-surface3 rounded-md border px-3 py-2 font-sans\" key={signal.name}>\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-sm font-semibold\" style={signalStyle(signal.name)}>\n {signalLabel(catalog, signal.name)}\n </span>\n <span className=\"text-neutral4 text-xs capitalize\">{signal.status}</span>\n </div>\n {signalDescription(catalog, signal.name) ? (\n <p className=\"text-neutral3 mt-1 text-xs\">{signalDescription(catalog, signal.name)}</p>\n ) : null}\n <p className=\"text-neutral3 mt-1 text-xs\">\n {formatNumber(value.generated)} generated · {formatNumber(value.embedded)} embedded\n </p>\n </li>\n );\n })}\n </ul>\n </section>\n );\n}\n\nexport const SignalsEmptyState = ({\n actionSlot,\n LinkComponent = 'a',\n progress,\n signalCatalog,\n isRangeEmpty,\n}: SignalsEmptyStateProps) => {\n const copy = statusCopy(progress, isRangeEmpty);\n const catalog = signalCatalog ?? progress?.signalCatalog ?? BUILT_IN_SIGNAL_CATALOG;\n const enabledSignalNames = orderedSignals(\n catalog,\n catalog.filter(signal => signal.enabled).map(signal => signal.name),\n );\n const signalDefinitions = enabledSignalNames.map(name => ({\n key: name,\n label: signalLabel(catalog, name),\n description: signalDescription(catalog, name),\n }));\n\n return (\n <section className=\"bg-surface1 min-h-full w-full p-6 md:px-10 lg:px-12 xl:px-[4.375rem]\">\n <div className=\"mx-auto w-full max-w-260\">\n <header>\n <p className=\"text-neutral4 flex items-center gap-2 font-mono text-xs tracking-wider uppercase\">\n <span aria-hidden=\"true\" className=\"bg-accent1 size-2 rounded-full\" />\n Trace Intelligence\n </p>\n <h1 className=\"text-header-xl text-neutral6 mt-2 font-medium tracking-tight\">\n Understand what drives every agent interaction\n </h1>\n <p className=\"text-neutral3 mt-2 max-w-180 text-sm leading-5\">\n Trace Intelligence groups recurring goals, outcomes, behaviors, and sentiment across completed traces.\n </p>\n </header>\n\n <div\n role=\"list\"\n aria-label=\"Trace Intelligence analysis pipeline\"\n className=\"mt-14 grid gap-4 lg:grid-cols-[17.5rem_4.5rem_17.5rem_4.5rem_minmax(0,1fr)] lg:gap-0\"\n >\n <div role=\"listitem\" className=\"min-h-50 p-5\">\n <h2 className=\"text-neutral6 text-lg font-semibold\">Traces</h2>\n <p className=\"text-neutral3 mt-0.5 text-xs\">Every agent interaction</p>\n <p className=\"text-neutral3 mt-5 font-mono text-[0.6875rem] tracking-[0.18em] uppercase\">Input</p>\n <div className=\"mt-2.5 space-y-2\">\n {traceRows.map(([name, duration]) => (\n <div\n className=\"border-border1 bg-surface3 text-ui-xs flex items-center justify-between rounded border px-3 py-1.5 font-mono\"\n key={name}\n >\n <span className=\"text-neutral4\">{name}</span>\n <span className=\"text-neutral3\">{duration}</span>\n </div>\n ))}\n </div>\n </div>\n\n <PipelineConnector />\n\n <Card\n as=\"div\"\n role=\"listitem\"\n className=\"flex min-h-50 flex-col items-center p-5 text-center\"\n elevation=\"elevated\"\n >\n <h2 className=\"text-neutral6 text-lg font-semibold\">Trace Intelligence</h2>\n <p className=\"text-neutral3 mt-0.5 text-xs\">Finds recurring themes</p>\n <div aria-hidden=\"true\" className=\"relative mt-5 flex size-20 items-center justify-center\">\n <span className=\"signals-engine-pulse border-positive1/15 absolute size-20 rounded-full border\" />\n <span className=\"border-positive1/25 absolute size-14 rounded-full border\" />\n <span className=\"border-positive1/40 bg-positive1/5 absolute size-9 rounded-full border shadow-[0_0_24px_var(--color-positive1)]\" />\n <CpuIcon className=\"text-positive1 relative size-4\" />\n </div>\n <p className=\"text-ui-xs text-neutral3 mt-3 max-w-40 leading-4\">\n Clusters similar trace signals into themes for each dimension\n </p>\n </Card>\n\n <PipelineConnector />\n\n <div role=\"listitem\" className=\"min-h-50 p-5\">\n <h2 className=\"text-neutral6 text-lg font-semibold\">Theme analysis</h2>\n <p className=\"text-neutral3 mt-0.5 text-xs\">How recurring patterns connect</p>\n <p className=\"text-neutral3 mt-5 font-mono text-[0.6875rem] tracking-[0.18em] uppercase\">Output</p>\n <div className=\"mt-3 flex flex-wrap gap-2\">\n {signalDefinitions.map(signal => (\n <span\n className=\"signals-chip bg-surface3 inline-flex items-center gap-2 rounded border border-current/25 px-2.5 py-1.5 text-xs font-medium shadow-[0_0_14px_color-mix(in_oklch,currentColor_12%,transparent)]\"\n key={signal.key}\n style={signalStyle(signal.key)}\n >\n <span aria-hidden=\"true\" className=\"size-1.5 rounded-full bg-current shadow-[0_0_7px_currentColor]\" />\n {signal.label}\n </span>\n ))}\n </div>\n </div>\n </div>\n\n <section className=\"mt-10\" aria-labelledby=\"signal-definitions-heading\">\n <h2 id=\"signal-definitions-heading\" className=\"text-neutral6 text-lg font-semibold\">\n What each trace signal means\n </h2>\n <ul aria-label=\"Trace signal definitions\" className=\"mt-4 grid gap-3 sm:grid-cols-2\">\n {signalDefinitions.map(signal => (\n <li className=\"px-1 py-2\" key={signal.key}>\n <h3 className=\"text-sm font-semibold\" style={signalStyle(signal.key)}>\n {signal.label}\n </h3>\n {signal.description ? (\n <p className=\"text-neutral3 mt-1.5 text-xs leading-5\">{signal.description}</p>\n ) : null}\n </li>\n ))}\n </ul>\n </section>\n\n <aside className=\"border-border1 bg-surface2 mt-9 rounded-md border px-5 py-4\">\n <div className=\"flex min-w-0 items-start gap-3\">\n <span\n aria-hidden=\"true\"\n className=\"bg-warning1 mt-1.5 size-2 shrink-0 rounded-full shadow-[0_0_9px_currentColor]\"\n />\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-neutral3 text-xs leading-5\">\n <strong className=\"text-neutral5 font-semibold\">{copy.title}</strong> {copy.body}\n </p>\n {progress ? <ProgressSummary progress={progress} /> : null}\n <SignalProgressList progress={progress} />\n </div>\n </div>\n <div className=\"mt-4 flex shrink-0 flex-wrap items-center gap-2 sm:justify-end\">\n {actionSlot}\n <Button\n as=\"a\"\n href=\"https://mastra.ai/en/docs/mastra-platform/trace-intelligence\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n variant=\"outline\"\n size=\"sm\"\n >\n Read the docs<span className=\"sr-only\"> (opens in new tab)</span>\n </Button>\n <Button as={LinkComponent} href=\"/traces\" variant=\"primary\" size=\"sm\">\n View incoming traces\n </Button>\n </div>\n </aside>\n </div>\n </section>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ require('@tanstack/react-query');
9
9
  const ee_signals_useTraceIntelligence = require('../use-trace-intelligence.cjs.js');
10
10
  const ee_signals_hooks_useThemeEntities = require('../hooks/use-theme-entities.cjs.js');
11
11
  const ee_signals_settings_traceSignalSettings = require('../settings/trace-signal-settings.cjs.js');
12
+ const ee_signals_traceIntelligenceExplainer = require('../trace-intelligence-explainer.cjs.js');
12
13
  const ee_signals_components_entityIndexCompactGrid = require('./entity-index-compact-grid.cjs.js');
13
14
  const ee_signals_components_entityIndexList = require('./entity-index-list.cjs.js');
14
15
  const ee_signals_components_entityIndexModel = require('./entity-index-model.cjs.js');
@@ -41,7 +42,8 @@ function EntityIndexControls({
41
42
  onSearchChange,
42
43
  onSortChange,
43
44
  onViewChange,
44
- headerAction
45
+ headerAction,
46
+ signalCatalog
45
47
  }) {
46
48
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-3 sm:flex-row sm:items-center", children: [
47
49
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-w-120 flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -54,6 +56,7 @@ function EntityIndexControls({
54
56
  }
55
57
  ) }),
56
58
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2 sm:ml-auto sm:justify-end", children: [
59
+ /* @__PURE__ */ jsxRuntime.jsx(ee_signals_traceIntelligenceExplainer.TraceIntelligenceExplainer, { signalCatalog }),
57
60
  /* @__PURE__ */ jsxRuntime.jsxs(select.Select, { value: sort, onValueChange: onSortChange, children: [
58
61
  /* @__PURE__ */ jsxRuntime.jsx(select.SelectTrigger, { "aria-label": "Sort entities", size: "md", variant: "ghost", className: "w-auto min-w-36", children: /* @__PURE__ */ jsxRuntime.jsx(select.SelectValue, {}) }),
59
62
  /* @__PURE__ */ jsxRuntime.jsxs(select.SelectContent, { align: "end", children: [
@@ -68,7 +71,7 @@ function EntityIndexControls({
68
71
  Button.Button,
69
72
  {
70
73
  type: "button",
71
- variant: view === "list" ? "default" : "ghost",
74
+ variant: view === "list" ? "primary" : "outline",
72
75
  size: "icon-md",
73
76
  tooltip: "List view",
74
77
  "aria-pressed": view === "list",
@@ -80,7 +83,7 @@ function EntityIndexControls({
80
83
  Button.Button,
81
84
  {
82
85
  type: "button",
83
- variant: view === "compact" ? "default" : "ghost",
86
+ variant: view === "compact" ? "primary" : "outline",
84
87
  size: "icon-md",
85
88
  tooltip: "Compact view",
86
89
  "aria-pressed": view === "compact",
@@ -104,10 +107,12 @@ function TraceIntelligenceEntityIndex({
104
107
  headerAction
105
108
  }) {
106
109
  const entitiesQuery = ee_signals_hooks_useThemeEntities.useThemeEntities(entityType);
107
- const { LinkComponent, signalManagement } = ee_signals_useTraceIntelligence.useTraceIntelligence();
110
+ const { LinkComponent, signalCatalog: contextSignalCatalog, signalManagement } = ee_signals_useTraceIntelligence.useTraceIntelligence();
108
111
  const [settingsOpen, setSettingsOpen] = React.useState(false);
109
112
  if (entitiesQuery.error) return /* @__PURE__ */ jsxRuntime.jsx(EntityIndexError, { error: entitiesQuery.error });
110
- const entities = ee_signals_components_entityIndexModel.filterAndSortEntities(entitiesQuery.data?.entities ?? [], search, sort);
113
+ const sourceEntities = entitiesQuery.data?.entities ?? [];
114
+ const signalCatalog = sourceEntities.find((entity) => entity.signalCatalog?.length)?.signalCatalog ?? contextSignalCatalog;
115
+ const entities = ee_signals_components_entityIndexModel.filterAndSortEntities(sourceEntities, search, sort);
111
116
  const hasSearch = search.trim().length > 0;
112
117
  let body = /* @__PURE__ */ jsxRuntime.jsx(
113
118
  ee_signals_components_entityIndexList.EntityIndexList,
@@ -150,6 +155,7 @@ function TraceIntelligenceEntityIndex({
150
155
  onSearchChange,
151
156
  onSortChange,
152
157
  onViewChange,
158
+ signalCatalog,
153
159
  headerAction: headerAction || signalManagement ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
154
160
  headerAction,
155
161
  signalManagement ? /* @__PURE__ */ jsxRuntime.jsx(ee_signals_settings_traceSignalSettings.TraceSignalSettingsButton, { open: settingsOpen, onClick: () => setSettingsOpen((open) => !open) }) : null
@@ -1 +1 @@
1
- {"version":3,"file":"trace-intelligence-entity-index.cjs.js","sources":["../../../../src/ee/signals/components/trace-intelligence-entity-index.tsx"],"sourcesContent":["import type { ThemeLearningEntity } from '@mastra/client-js';\nimport { Columns2, List, Radar } from 'lucide-react';\nimport { useState, type ReactNode } from 'react';\n\nimport { useThemeEntities } from '../hooks';\nimport { TraceSignalSettingsButton, TraceSignalSettingsPanel } from '../settings/trace-signal-settings';\nimport { useTraceIntelligence } from '../use-trace-intelligence';\nimport { EntityIndexCompactGrid } from './entity-index-compact-grid';\nimport { EntityIndexList } from './entity-index-list';\nimport { filterAndSortEntities } from './entity-index-model';\nimport type { TraceIntelligenceEntitySort, TraceIntelligenceEntityView } from './entity-index-model';\nimport { Button } from '@/ds/components/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup';\nimport { DataListSkeleton } from '@/ds/components/DataList';\nimport { EmptyState } from '@/ds/components/EmptyState';\nimport { ErrorState } from '@/ds/components/ErrorState';\nimport { ListSearch } from '@/ds/components/ListSearch';\nimport { NoDataPageLayout, PageLayout } from '@/ds/components/PageLayout';\nimport { PermissionDenied } from '@/ds/components/PermissionDenied';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { SessionExpired } from '@/ds/components/SessionExpired';\nimport { is401UnauthorizedError, is403ForbiddenError } from '@/utils/errors';\n\nexport type { TraceIntelligenceEntitySort, TraceIntelligenceEntityView } from './entity-index-model';\n\nconst listColumns = 'minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)';\n\nexport interface TraceIntelligenceEntityIndexProps {\n entityType: string;\n search: string;\n sort: TraceIntelligenceEntitySort;\n view: TraceIntelligenceEntityView;\n onSearchChange: (search: string) => void;\n onSortChange: (sort: TraceIntelligenceEntitySort) => void;\n onViewChange: (view: TraceIntelligenceEntityView) => void;\n getEntityHref: (entity: ThemeLearningEntity) => string;\n headerAction?: ReactNode;\n}\n\nfunction EntityIndexError({ error }: { error: Error }) {\n if (is401UnauthorizedError(error)) {\n return (\n <NoDataPageLayout>\n <SessionExpired />\n </NoDataPageLayout>\n );\n }\n if (is403ForbiddenError(error)) {\n return (\n <NoDataPageLayout>\n <PermissionDenied resource=\"Trace Intelligence\" />\n </NoDataPageLayout>\n );\n }\n return (\n <NoDataPageLayout>\n <ErrorState title=\"Failed to load Trace Intelligence\" message={error.message} />\n </NoDataPageLayout>\n );\n}\n\nfunction EntityIndexControls({\n search,\n sort,\n view,\n onSearchChange,\n onSortChange,\n onViewChange,\n headerAction,\n}: Pick<\n TraceIntelligenceEntityIndexProps,\n 'search' | 'sort' | 'view' | 'onSearchChange' | 'onSortChange' | 'onViewChange' | 'headerAction'\n>) {\n return (\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center\">\n <div className=\"max-w-120 flex-1\">\n <ListSearch\n value={search}\n onSearch={onSearchChange}\n label=\"Filter entities\"\n placeholder=\"Filter by entity identifier\"\n />\n </div>\n <div className=\"flex items-center justify-between gap-2 sm:ml-auto sm:justify-end\">\n <Select<TraceIntelligenceEntitySort> value={sort} onValueChange={onSortChange}>\n <SelectTrigger aria-label=\"Sort entities\" size=\"md\" variant=\"ghost\" className=\"w-auto min-w-36\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent align=\"end\">\n <SelectItem value=\"default\">Default order</SelectItem>\n <SelectItem value=\"entity-asc\">Entity: A–Z</SelectItem>\n <SelectItem value=\"entity-desc\">Entity: Z–A</SelectItem>\n </SelectContent>\n </Select>\n {headerAction}\n <ButtonsGroup spacing=\"close\" aria-label=\"Entities view\">\n <Button\n type=\"button\"\n variant={view === 'list' ? 'default' : 'ghost'}\n size=\"icon-md\"\n tooltip=\"List view\"\n aria-pressed={view === 'list'}\n onClick={() => onViewChange('list')}\n >\n <List />\n </Button>\n <Button\n type=\"button\"\n variant={view === 'compact' ? 'default' : 'ghost'}\n size=\"icon-md\"\n tooltip=\"Compact view\"\n aria-pressed={view === 'compact'}\n onClick={() => onViewChange('compact')}\n >\n <Columns2 />\n </Button>\n </ButtonsGroup>\n </div>\n </div>\n );\n}\n\nexport function TraceIntelligenceEntityIndex({\n entityType,\n search,\n sort,\n view,\n onSearchChange,\n onSortChange,\n onViewChange,\n getEntityHref,\n headerAction,\n}: TraceIntelligenceEntityIndexProps) {\n const entitiesQuery = useThemeEntities(entityType);\n const { LinkComponent, signalManagement } = useTraceIntelligence();\n const [settingsOpen, setSettingsOpen] = useState(false);\n\n if (entitiesQuery.error) return <EntityIndexError error={entitiesQuery.error} />;\n\n const entities = filterAndSortEntities(entitiesQuery.data?.entities ?? [], search, sort);\n const hasSearch = search.trim().length > 0;\n let body = (\n <EntityIndexList\n entities={entities}\n hasSearch={hasSearch}\n getEntityHref={getEntityHref}\n LinkComponent={LinkComponent}\n />\n );\n if (entitiesQuery.isPending) {\n body = (\n <div role=\"status\" aria-label=\"Loading Trace Intelligence entities\">\n <DataListSkeleton columns={listColumns} />\n </div>\n );\n } else if (entitiesQuery.data.entities.length === 0 && !hasSearch) {\n body = (\n <EmptyState\n iconSlot={<Radar aria-hidden=\"true\" />}\n titleSlot=\"No Trace Intelligence entities yet\"\n descriptionSlot=\"Entities appear after Trace Intelligence begins collecting generated signal data.\"\n />\n );\n } else if (view === 'compact') {\n body = (\n <EntityIndexCompactGrid\n entities={entities}\n hasSearch={hasSearch}\n getEntityHref={getEntityHref}\n LinkComponent={LinkComponent}\n />\n );\n }\n\n return (\n <PageLayout width=\"narrow\" height=\"full\" className=\"max-w-7xl grid-rows-[auto_minmax(0,1fr)] content-normal\">\n <PageLayout.TopArea>\n <EntityIndexControls\n search={search}\n sort={sort}\n view={view}\n onSearchChange={onSearchChange}\n onSortChange={onSortChange}\n onViewChange={onViewChange}\n headerAction={\n headerAction || signalManagement ? (\n <>\n {headerAction}\n {signalManagement ? (\n <TraceSignalSettingsButton open={settingsOpen} onClick={() => setSettingsOpen(open => !open)} />\n ) : null}\n </>\n ) : undefined\n }\n />\n </PageLayout.TopArea>\n <div\n className={\n settingsOpen\n ? 'grid max-h-full min-h-0 grid-cols-1 items-start gap-4 lg:grid-cols-[1fr_1fr]'\n : 'grid min-h-0 grid-cols-1'\n }\n >\n <div className=\"min-h-0 min-w-0\">{body}</div>\n {settingsOpen ? <TraceSignalSettingsPanel onClose={() => setSettingsOpen(false)} /> : null}\n </div>\n </PageLayout>\n );\n}\n"],"names":["is401UnauthorizedError","jsx","NoDataPageLayout","SessionExpired","is403ForbiddenError","PermissionDenied","ErrorState","jsxs","ListSearch","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","ButtonsGroup","Button","List","Columns2","useThemeEntities","useTraceIntelligence","useState","filterAndSortEntities","EntityIndexList","DataListSkeleton","EmptyState","Radar","EntityIndexCompactGrid","PageLayout","Fragment","TraceSignalSettingsButton","TraceSignalSettingsPanel"],"mappings":"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"}
1
+ {"version":3,"file":"trace-intelligence-entity-index.cjs.js","sources":["../../../../src/ee/signals/components/trace-intelligence-entity-index.tsx"],"sourcesContent":["import type { SignalCatalogEntry, ThemeLearningEntity } from '@mastra/client-js';\nimport { Columns2, List, Radar } from 'lucide-react';\nimport { useState, type ReactNode } from 'react';\n\nimport { useThemeEntities } from '../hooks';\nimport { TraceSignalSettingsButton, TraceSignalSettingsPanel } from '../settings/trace-signal-settings';\nimport { TraceIntelligenceExplainer } from '../trace-intelligence-explainer';\nimport { useTraceIntelligence } from '../use-trace-intelligence';\nimport { EntityIndexCompactGrid } from './entity-index-compact-grid';\nimport { EntityIndexList } from './entity-index-list';\nimport { filterAndSortEntities } from './entity-index-model';\nimport type { TraceIntelligenceEntitySort, TraceIntelligenceEntityView } from './entity-index-model';\nimport { Button } from '@/ds/components/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup';\nimport { DataListSkeleton } from '@/ds/components/DataList';\nimport { EmptyState } from '@/ds/components/EmptyState';\nimport { ErrorState } from '@/ds/components/ErrorState';\nimport { ListSearch } from '@/ds/components/ListSearch';\nimport { NoDataPageLayout, PageLayout } from '@/ds/components/PageLayout';\nimport { PermissionDenied } from '@/ds/components/PermissionDenied';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { SessionExpired } from '@/ds/components/SessionExpired';\nimport { is401UnauthorizedError, is403ForbiddenError } from '@/utils/errors';\n\nexport type { TraceIntelligenceEntitySort, TraceIntelligenceEntityView } from './entity-index-model';\n\nconst listColumns = 'minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)';\n\nexport interface TraceIntelligenceEntityIndexProps {\n entityType: string;\n search: string;\n sort: TraceIntelligenceEntitySort;\n view: TraceIntelligenceEntityView;\n onSearchChange: (search: string) => void;\n onSortChange: (sort: TraceIntelligenceEntitySort) => void;\n onViewChange: (view: TraceIntelligenceEntityView) => void;\n getEntityHref: (entity: ThemeLearningEntity) => string;\n headerAction?: ReactNode;\n}\n\nfunction EntityIndexError({ error }: { error: Error }) {\n if (is401UnauthorizedError(error)) {\n return (\n <NoDataPageLayout>\n <SessionExpired />\n </NoDataPageLayout>\n );\n }\n if (is403ForbiddenError(error)) {\n return (\n <NoDataPageLayout>\n <PermissionDenied resource=\"Trace Intelligence\" />\n </NoDataPageLayout>\n );\n }\n return (\n <NoDataPageLayout>\n <ErrorState title=\"Failed to load Trace Intelligence\" message={error.message} />\n </NoDataPageLayout>\n );\n}\n\nfunction EntityIndexControls({\n search,\n sort,\n view,\n onSearchChange,\n onSortChange,\n onViewChange,\n headerAction,\n signalCatalog,\n}: Pick<\n TraceIntelligenceEntityIndexProps,\n 'search' | 'sort' | 'view' | 'onSearchChange' | 'onSortChange' | 'onViewChange' | 'headerAction'\n> & { signalCatalog: readonly SignalCatalogEntry[] }) {\n return (\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center\">\n <div className=\"max-w-120 flex-1\">\n <ListSearch\n value={search}\n onSearch={onSearchChange}\n label=\"Filter entities\"\n placeholder=\"Filter by entity identifier\"\n />\n </div>\n <div className=\"flex items-center justify-between gap-2 sm:ml-auto sm:justify-end\">\n <TraceIntelligenceExplainer signalCatalog={signalCatalog} />\n <Select<TraceIntelligenceEntitySort> value={sort} onValueChange={onSortChange}>\n <SelectTrigger aria-label=\"Sort entities\" size=\"md\" variant=\"ghost\" className=\"w-auto min-w-36\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent align=\"end\">\n <SelectItem value=\"default\">Default order</SelectItem>\n <SelectItem value=\"entity-asc\">Entity: A–Z</SelectItem>\n <SelectItem value=\"entity-desc\">Entity: Z–A</SelectItem>\n </SelectContent>\n </Select>\n {headerAction}\n <ButtonsGroup spacing=\"close\" aria-label=\"Entities view\">\n <Button\n type=\"button\"\n variant={view === 'list' ? 'primary' : 'outline'}\n size=\"icon-md\"\n tooltip=\"List view\"\n aria-pressed={view === 'list'}\n onClick={() => onViewChange('list')}\n >\n <List />\n </Button>\n <Button\n type=\"button\"\n variant={view === 'compact' ? 'primary' : 'outline'}\n size=\"icon-md\"\n tooltip=\"Compact view\"\n aria-pressed={view === 'compact'}\n onClick={() => onViewChange('compact')}\n >\n <Columns2 />\n </Button>\n </ButtonsGroup>\n </div>\n </div>\n );\n}\n\nexport function TraceIntelligenceEntityIndex({\n entityType,\n search,\n sort,\n view,\n onSearchChange,\n onSortChange,\n onViewChange,\n getEntityHref,\n headerAction,\n}: TraceIntelligenceEntityIndexProps) {\n const entitiesQuery = useThemeEntities(entityType);\n const { LinkComponent, signalCatalog: contextSignalCatalog, signalManagement } = useTraceIntelligence();\n const [settingsOpen, setSettingsOpen] = useState(false);\n\n if (entitiesQuery.error) return <EntityIndexError error={entitiesQuery.error} />;\n\n const sourceEntities = entitiesQuery.data?.entities ?? [];\n const signalCatalog =\n sourceEntities.find(entity => entity.signalCatalog?.length)?.signalCatalog ?? contextSignalCatalog;\n const entities = filterAndSortEntities(sourceEntities, search, sort);\n const hasSearch = search.trim().length > 0;\n let body = (\n <EntityIndexList\n entities={entities}\n hasSearch={hasSearch}\n getEntityHref={getEntityHref}\n LinkComponent={LinkComponent}\n />\n );\n if (entitiesQuery.isPending) {\n body = (\n <div role=\"status\" aria-label=\"Loading Trace Intelligence entities\">\n <DataListSkeleton columns={listColumns} />\n </div>\n );\n } else if (entitiesQuery.data.entities.length === 0 && !hasSearch) {\n body = (\n <EmptyState\n iconSlot={<Radar aria-hidden=\"true\" />}\n titleSlot=\"No Trace Intelligence entities yet\"\n descriptionSlot=\"Entities appear after Trace Intelligence begins collecting generated signal data.\"\n />\n );\n } else if (view === 'compact') {\n body = (\n <EntityIndexCompactGrid\n entities={entities}\n hasSearch={hasSearch}\n getEntityHref={getEntityHref}\n LinkComponent={LinkComponent}\n />\n );\n }\n\n return (\n <PageLayout width=\"narrow\" height=\"full\" className=\"max-w-7xl grid-rows-[auto_minmax(0,1fr)] content-normal\">\n <PageLayout.TopArea>\n <EntityIndexControls\n search={search}\n sort={sort}\n view={view}\n onSearchChange={onSearchChange}\n onSortChange={onSortChange}\n onViewChange={onViewChange}\n signalCatalog={signalCatalog}\n headerAction={\n headerAction || signalManagement ? (\n <>\n {headerAction}\n {signalManagement ? (\n <TraceSignalSettingsButton open={settingsOpen} onClick={() => setSettingsOpen(open => !open)} />\n ) : null}\n </>\n ) : undefined\n }\n />\n </PageLayout.TopArea>\n <div\n className={\n settingsOpen\n ? 'grid max-h-full min-h-0 grid-cols-1 items-start gap-4 lg:grid-cols-[1fr_1fr]'\n : 'grid min-h-0 grid-cols-1'\n }\n >\n <div className=\"min-h-0 min-w-0\">{body}</div>\n {settingsOpen ? <TraceSignalSettingsPanel onClose={() => setSettingsOpen(false)} /> : null}\n </div>\n </PageLayout>\n );\n}\n"],"names":["is401UnauthorizedError","jsx","NoDataPageLayout","SessionExpired","is403ForbiddenError","PermissionDenied","ErrorState","jsxs","ListSearch","TraceIntelligenceExplainer","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","ButtonsGroup","Button","List","Columns2","useThemeEntities","useTraceIntelligence","useState","filterAndSortEntities","EntityIndexList","DataListSkeleton","EmptyState","Radar","EntityIndexCompactGrid","PageLayout","Fragment","TraceSignalSettingsButton","TraceSignalSettingsPanel"],"mappings":"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"}
@@ -5,6 +5,7 @@ import '@tanstack/react-query';
5
5
  import { useTraceIntelligence } from '../use-trace-intelligence.es.js';
6
6
  import { useThemeEntities } from '../hooks/use-theme-entities.es.js';
7
7
  import { TraceSignalSettingsButton, TraceSignalSettingsPanel } from '../settings/trace-signal-settings.es.js';
8
+ import { TraceIntelligenceExplainer } from '../trace-intelligence-explainer.es.js';
8
9
  import { EntityIndexCompactGrid } from './entity-index-compact-grid.es.js';
9
10
  import { EntityIndexList } from './entity-index-list.es.js';
10
11
  import { filterAndSortEntities } from './entity-index-model.es.js';
@@ -37,7 +38,8 @@ function EntityIndexControls({
37
38
  onSearchChange,
38
39
  onSortChange,
39
40
  onViewChange,
40
- headerAction
41
+ headerAction,
42
+ signalCatalog
41
43
  }) {
42
44
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3 sm:flex-row sm:items-center", children: [
43
45
  /* @__PURE__ */ jsx("div", { className: "max-w-120 flex-1", children: /* @__PURE__ */ jsx(
@@ -50,6 +52,7 @@ function EntityIndexControls({
50
52
  }
51
53
  ) }),
52
54
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2 sm:ml-auto sm:justify-end", children: [
55
+ /* @__PURE__ */ jsx(TraceIntelligenceExplainer, { signalCatalog }),
53
56
  /* @__PURE__ */ jsxs(Select, { value: sort, onValueChange: onSortChange, children: [
54
57
  /* @__PURE__ */ jsx(SelectTrigger, { "aria-label": "Sort entities", size: "md", variant: "ghost", className: "w-auto min-w-36", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
55
58
  /* @__PURE__ */ jsxs(SelectContent, { align: "end", children: [
@@ -64,7 +67,7 @@ function EntityIndexControls({
64
67
  Button,
65
68
  {
66
69
  type: "button",
67
- variant: view === "list" ? "default" : "ghost",
70
+ variant: view === "list" ? "primary" : "outline",
68
71
  size: "icon-md",
69
72
  tooltip: "List view",
70
73
  "aria-pressed": view === "list",
@@ -76,7 +79,7 @@ function EntityIndexControls({
76
79
  Button,
77
80
  {
78
81
  type: "button",
79
- variant: view === "compact" ? "default" : "ghost",
82
+ variant: view === "compact" ? "primary" : "outline",
80
83
  size: "icon-md",
81
84
  tooltip: "Compact view",
82
85
  "aria-pressed": view === "compact",
@@ -100,10 +103,12 @@ function TraceIntelligenceEntityIndex({
100
103
  headerAction
101
104
  }) {
102
105
  const entitiesQuery = useThemeEntities(entityType);
103
- const { LinkComponent, signalManagement } = useTraceIntelligence();
106
+ const { LinkComponent, signalCatalog: contextSignalCatalog, signalManagement } = useTraceIntelligence();
104
107
  const [settingsOpen, setSettingsOpen] = useState(false);
105
108
  if (entitiesQuery.error) return /* @__PURE__ */ jsx(EntityIndexError, { error: entitiesQuery.error });
106
- const entities = filterAndSortEntities(entitiesQuery.data?.entities ?? [], search, sort);
109
+ const sourceEntities = entitiesQuery.data?.entities ?? [];
110
+ const signalCatalog = sourceEntities.find((entity) => entity.signalCatalog?.length)?.signalCatalog ?? contextSignalCatalog;
111
+ const entities = filterAndSortEntities(sourceEntities, search, sort);
107
112
  const hasSearch = search.trim().length > 0;
108
113
  let body = /* @__PURE__ */ jsx(
109
114
  EntityIndexList,
@@ -146,6 +151,7 @@ function TraceIntelligenceEntityIndex({
146
151
  onSearchChange,
147
152
  onSortChange,
148
153
  onViewChange,
154
+ signalCatalog,
149
155
  headerAction: headerAction || signalManagement ? /* @__PURE__ */ jsxs(Fragment, { children: [
150
156
  headerAction,
151
157
  signalManagement ? /* @__PURE__ */ jsx(TraceSignalSettingsButton, { open: settingsOpen, onClick: () => setSettingsOpen((open) => !open) }) : null
@@ -1 +1 @@
1
- {"version":3,"file":"trace-intelligence-entity-index.es.js","sources":["../../../../src/ee/signals/components/trace-intelligence-entity-index.tsx"],"sourcesContent":["import type { ThemeLearningEntity } from '@mastra/client-js';\nimport { Columns2, List, Radar } from 'lucide-react';\nimport { useState, type ReactNode } from 'react';\n\nimport { useThemeEntities } from '../hooks';\nimport { TraceSignalSettingsButton, TraceSignalSettingsPanel } from '../settings/trace-signal-settings';\nimport { useTraceIntelligence } from '../use-trace-intelligence';\nimport { EntityIndexCompactGrid } from './entity-index-compact-grid';\nimport { EntityIndexList } from './entity-index-list';\nimport { filterAndSortEntities } from './entity-index-model';\nimport type { TraceIntelligenceEntitySort, TraceIntelligenceEntityView } from './entity-index-model';\nimport { Button } from '@/ds/components/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup';\nimport { DataListSkeleton } from '@/ds/components/DataList';\nimport { EmptyState } from '@/ds/components/EmptyState';\nimport { ErrorState } from '@/ds/components/ErrorState';\nimport { ListSearch } from '@/ds/components/ListSearch';\nimport { NoDataPageLayout, PageLayout } from '@/ds/components/PageLayout';\nimport { PermissionDenied } from '@/ds/components/PermissionDenied';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { SessionExpired } from '@/ds/components/SessionExpired';\nimport { is401UnauthorizedError, is403ForbiddenError } from '@/utils/errors';\n\nexport type { TraceIntelligenceEntitySort, TraceIntelligenceEntityView } from './entity-index-model';\n\nconst listColumns = 'minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)';\n\nexport interface TraceIntelligenceEntityIndexProps {\n entityType: string;\n search: string;\n sort: TraceIntelligenceEntitySort;\n view: TraceIntelligenceEntityView;\n onSearchChange: (search: string) => void;\n onSortChange: (sort: TraceIntelligenceEntitySort) => void;\n onViewChange: (view: TraceIntelligenceEntityView) => void;\n getEntityHref: (entity: ThemeLearningEntity) => string;\n headerAction?: ReactNode;\n}\n\nfunction EntityIndexError({ error }: { error: Error }) {\n if (is401UnauthorizedError(error)) {\n return (\n <NoDataPageLayout>\n <SessionExpired />\n </NoDataPageLayout>\n );\n }\n if (is403ForbiddenError(error)) {\n return (\n <NoDataPageLayout>\n <PermissionDenied resource=\"Trace Intelligence\" />\n </NoDataPageLayout>\n );\n }\n return (\n <NoDataPageLayout>\n <ErrorState title=\"Failed to load Trace Intelligence\" message={error.message} />\n </NoDataPageLayout>\n );\n}\n\nfunction EntityIndexControls({\n search,\n sort,\n view,\n onSearchChange,\n onSortChange,\n onViewChange,\n headerAction,\n}: Pick<\n TraceIntelligenceEntityIndexProps,\n 'search' | 'sort' | 'view' | 'onSearchChange' | 'onSortChange' | 'onViewChange' | 'headerAction'\n>) {\n return (\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center\">\n <div className=\"max-w-120 flex-1\">\n <ListSearch\n value={search}\n onSearch={onSearchChange}\n label=\"Filter entities\"\n placeholder=\"Filter by entity identifier\"\n />\n </div>\n <div className=\"flex items-center justify-between gap-2 sm:ml-auto sm:justify-end\">\n <Select<TraceIntelligenceEntitySort> value={sort} onValueChange={onSortChange}>\n <SelectTrigger aria-label=\"Sort entities\" size=\"md\" variant=\"ghost\" className=\"w-auto min-w-36\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent align=\"end\">\n <SelectItem value=\"default\">Default order</SelectItem>\n <SelectItem value=\"entity-asc\">Entity: A–Z</SelectItem>\n <SelectItem value=\"entity-desc\">Entity: Z–A</SelectItem>\n </SelectContent>\n </Select>\n {headerAction}\n <ButtonsGroup spacing=\"close\" aria-label=\"Entities view\">\n <Button\n type=\"button\"\n variant={view === 'list' ? 'default' : 'ghost'}\n size=\"icon-md\"\n tooltip=\"List view\"\n aria-pressed={view === 'list'}\n onClick={() => onViewChange('list')}\n >\n <List />\n </Button>\n <Button\n type=\"button\"\n variant={view === 'compact' ? 'default' : 'ghost'}\n size=\"icon-md\"\n tooltip=\"Compact view\"\n aria-pressed={view === 'compact'}\n onClick={() => onViewChange('compact')}\n >\n <Columns2 />\n </Button>\n </ButtonsGroup>\n </div>\n </div>\n );\n}\n\nexport function TraceIntelligenceEntityIndex({\n entityType,\n search,\n sort,\n view,\n onSearchChange,\n onSortChange,\n onViewChange,\n getEntityHref,\n headerAction,\n}: TraceIntelligenceEntityIndexProps) {\n const entitiesQuery = useThemeEntities(entityType);\n const { LinkComponent, signalManagement } = useTraceIntelligence();\n const [settingsOpen, setSettingsOpen] = useState(false);\n\n if (entitiesQuery.error) return <EntityIndexError error={entitiesQuery.error} />;\n\n const entities = filterAndSortEntities(entitiesQuery.data?.entities ?? [], search, sort);\n const hasSearch = search.trim().length > 0;\n let body = (\n <EntityIndexList\n entities={entities}\n hasSearch={hasSearch}\n getEntityHref={getEntityHref}\n LinkComponent={LinkComponent}\n />\n );\n if (entitiesQuery.isPending) {\n body = (\n <div role=\"status\" aria-label=\"Loading Trace Intelligence entities\">\n <DataListSkeleton columns={listColumns} />\n </div>\n );\n } else if (entitiesQuery.data.entities.length === 0 && !hasSearch) {\n body = (\n <EmptyState\n iconSlot={<Radar aria-hidden=\"true\" />}\n titleSlot=\"No Trace Intelligence entities yet\"\n descriptionSlot=\"Entities appear after Trace Intelligence begins collecting generated signal data.\"\n />\n );\n } else if (view === 'compact') {\n body = (\n <EntityIndexCompactGrid\n entities={entities}\n hasSearch={hasSearch}\n getEntityHref={getEntityHref}\n LinkComponent={LinkComponent}\n />\n );\n }\n\n return (\n <PageLayout width=\"narrow\" height=\"full\" className=\"max-w-7xl grid-rows-[auto_minmax(0,1fr)] content-normal\">\n <PageLayout.TopArea>\n <EntityIndexControls\n search={search}\n sort={sort}\n view={view}\n onSearchChange={onSearchChange}\n onSortChange={onSortChange}\n onViewChange={onViewChange}\n headerAction={\n headerAction || signalManagement ? (\n <>\n {headerAction}\n {signalManagement ? (\n <TraceSignalSettingsButton open={settingsOpen} onClick={() => setSettingsOpen(open => !open)} />\n ) : null}\n </>\n ) : undefined\n }\n />\n </PageLayout.TopArea>\n <div\n className={\n settingsOpen\n ? 'grid max-h-full min-h-0 grid-cols-1 items-start gap-4 lg:grid-cols-[1fr_1fr]'\n : 'grid min-h-0 grid-cols-1'\n }\n >\n <div className=\"min-h-0 min-w-0\">{body}</div>\n {settingsOpen ? <TraceSignalSettingsPanel onClose={() => setSettingsOpen(false)} /> : null}\n </div>\n </PageLayout>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trace-intelligence-entity-index.es.js","sources":["../../../../src/ee/signals/components/trace-intelligence-entity-index.tsx"],"sourcesContent":["import type { SignalCatalogEntry, ThemeLearningEntity } from '@mastra/client-js';\nimport { Columns2, List, Radar } from 'lucide-react';\nimport { useState, type ReactNode } from 'react';\n\nimport { useThemeEntities } from '../hooks';\nimport { TraceSignalSettingsButton, TraceSignalSettingsPanel } from '../settings/trace-signal-settings';\nimport { TraceIntelligenceExplainer } from '../trace-intelligence-explainer';\nimport { useTraceIntelligence } from '../use-trace-intelligence';\nimport { EntityIndexCompactGrid } from './entity-index-compact-grid';\nimport { EntityIndexList } from './entity-index-list';\nimport { filterAndSortEntities } from './entity-index-model';\nimport type { TraceIntelligenceEntitySort, TraceIntelligenceEntityView } from './entity-index-model';\nimport { Button } from '@/ds/components/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup';\nimport { DataListSkeleton } from '@/ds/components/DataList';\nimport { EmptyState } from '@/ds/components/EmptyState';\nimport { ErrorState } from '@/ds/components/ErrorState';\nimport { ListSearch } from '@/ds/components/ListSearch';\nimport { NoDataPageLayout, PageLayout } from '@/ds/components/PageLayout';\nimport { PermissionDenied } from '@/ds/components/PermissionDenied';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { SessionExpired } from '@/ds/components/SessionExpired';\nimport { is401UnauthorizedError, is403ForbiddenError } from '@/utils/errors';\n\nexport type { TraceIntelligenceEntitySort, TraceIntelligenceEntityView } from './entity-index-model';\n\nconst listColumns = 'minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)';\n\nexport interface TraceIntelligenceEntityIndexProps {\n entityType: string;\n search: string;\n sort: TraceIntelligenceEntitySort;\n view: TraceIntelligenceEntityView;\n onSearchChange: (search: string) => void;\n onSortChange: (sort: TraceIntelligenceEntitySort) => void;\n onViewChange: (view: TraceIntelligenceEntityView) => void;\n getEntityHref: (entity: ThemeLearningEntity) => string;\n headerAction?: ReactNode;\n}\n\nfunction EntityIndexError({ error }: { error: Error }) {\n if (is401UnauthorizedError(error)) {\n return (\n <NoDataPageLayout>\n <SessionExpired />\n </NoDataPageLayout>\n );\n }\n if (is403ForbiddenError(error)) {\n return (\n <NoDataPageLayout>\n <PermissionDenied resource=\"Trace Intelligence\" />\n </NoDataPageLayout>\n );\n }\n return (\n <NoDataPageLayout>\n <ErrorState title=\"Failed to load Trace Intelligence\" message={error.message} />\n </NoDataPageLayout>\n );\n}\n\nfunction EntityIndexControls({\n search,\n sort,\n view,\n onSearchChange,\n onSortChange,\n onViewChange,\n headerAction,\n signalCatalog,\n}: Pick<\n TraceIntelligenceEntityIndexProps,\n 'search' | 'sort' | 'view' | 'onSearchChange' | 'onSortChange' | 'onViewChange' | 'headerAction'\n> & { signalCatalog: readonly SignalCatalogEntry[] }) {\n return (\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center\">\n <div className=\"max-w-120 flex-1\">\n <ListSearch\n value={search}\n onSearch={onSearchChange}\n label=\"Filter entities\"\n placeholder=\"Filter by entity identifier\"\n />\n </div>\n <div className=\"flex items-center justify-between gap-2 sm:ml-auto sm:justify-end\">\n <TraceIntelligenceExplainer signalCatalog={signalCatalog} />\n <Select<TraceIntelligenceEntitySort> value={sort} onValueChange={onSortChange}>\n <SelectTrigger aria-label=\"Sort entities\" size=\"md\" variant=\"ghost\" className=\"w-auto min-w-36\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent align=\"end\">\n <SelectItem value=\"default\">Default order</SelectItem>\n <SelectItem value=\"entity-asc\">Entity: A–Z</SelectItem>\n <SelectItem value=\"entity-desc\">Entity: Z–A</SelectItem>\n </SelectContent>\n </Select>\n {headerAction}\n <ButtonsGroup spacing=\"close\" aria-label=\"Entities view\">\n <Button\n type=\"button\"\n variant={view === 'list' ? 'primary' : 'outline'}\n size=\"icon-md\"\n tooltip=\"List view\"\n aria-pressed={view === 'list'}\n onClick={() => onViewChange('list')}\n >\n <List />\n </Button>\n <Button\n type=\"button\"\n variant={view === 'compact' ? 'primary' : 'outline'}\n size=\"icon-md\"\n tooltip=\"Compact view\"\n aria-pressed={view === 'compact'}\n onClick={() => onViewChange('compact')}\n >\n <Columns2 />\n </Button>\n </ButtonsGroup>\n </div>\n </div>\n );\n}\n\nexport function TraceIntelligenceEntityIndex({\n entityType,\n search,\n sort,\n view,\n onSearchChange,\n onSortChange,\n onViewChange,\n getEntityHref,\n headerAction,\n}: TraceIntelligenceEntityIndexProps) {\n const entitiesQuery = useThemeEntities(entityType);\n const { LinkComponent, signalCatalog: contextSignalCatalog, signalManagement } = useTraceIntelligence();\n const [settingsOpen, setSettingsOpen] = useState(false);\n\n if (entitiesQuery.error) return <EntityIndexError error={entitiesQuery.error} />;\n\n const sourceEntities = entitiesQuery.data?.entities ?? [];\n const signalCatalog =\n sourceEntities.find(entity => entity.signalCatalog?.length)?.signalCatalog ?? contextSignalCatalog;\n const entities = filterAndSortEntities(sourceEntities, search, sort);\n const hasSearch = search.trim().length > 0;\n let body = (\n <EntityIndexList\n entities={entities}\n hasSearch={hasSearch}\n getEntityHref={getEntityHref}\n LinkComponent={LinkComponent}\n />\n );\n if (entitiesQuery.isPending) {\n body = (\n <div role=\"status\" aria-label=\"Loading Trace Intelligence entities\">\n <DataListSkeleton columns={listColumns} />\n </div>\n );\n } else if (entitiesQuery.data.entities.length === 0 && !hasSearch) {\n body = (\n <EmptyState\n iconSlot={<Radar aria-hidden=\"true\" />}\n titleSlot=\"No Trace Intelligence entities yet\"\n descriptionSlot=\"Entities appear after Trace Intelligence begins collecting generated signal data.\"\n />\n );\n } else if (view === 'compact') {\n body = (\n <EntityIndexCompactGrid\n entities={entities}\n hasSearch={hasSearch}\n getEntityHref={getEntityHref}\n LinkComponent={LinkComponent}\n />\n );\n }\n\n return (\n <PageLayout width=\"narrow\" height=\"full\" className=\"max-w-7xl grid-rows-[auto_minmax(0,1fr)] content-normal\">\n <PageLayout.TopArea>\n <EntityIndexControls\n search={search}\n sort={sort}\n view={view}\n onSearchChange={onSearchChange}\n onSortChange={onSortChange}\n onViewChange={onViewChange}\n signalCatalog={signalCatalog}\n headerAction={\n headerAction || signalManagement ? (\n <>\n {headerAction}\n {signalManagement ? (\n <TraceSignalSettingsButton open={settingsOpen} onClick={() => setSettingsOpen(open => !open)} />\n ) : null}\n </>\n ) : undefined\n }\n />\n </PageLayout.TopArea>\n <div\n className={\n settingsOpen\n ? 'grid max-h-full min-h-0 grid-cols-1 items-start gap-4 lg:grid-cols-[1fr_1fr]'\n : 'grid min-h-0 grid-cols-1'\n }\n >\n <div className=\"min-h-0 min-w-0\">{body}</div>\n {settingsOpen ? <TraceSignalSettingsPanel onClose={() => setSettingsOpen(false)} /> : null}\n </div>\n </PageLayout>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -46,7 +46,7 @@ function TraceSignalSettingsPanel({ onClose }) {
46
46
  ] }) });
47
47
  }
48
48
  function TraceSignalSettingsContent() {
49
- const { signalCatalog, signalManagement } = ee_signals_useTraceIntelligence.useTraceIntelligence();
49
+ const { signalManagement } = ee_signals_useTraceIntelligence.useTraceIntelligence();
50
50
  const query = ee_signals_settings_useSignalManagement.useSignalManagementList();
51
51
  const mutations = ee_signals_settings_useSignalManagement.useSignalManagementMutations();
52
52
  const [creating, setCreating] = React.useState(false);
@@ -94,30 +94,8 @@ function TraceSignalSettingsContent() {
94
94
  }
95
95
  };
96
96
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
97
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
98
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-border1 grid gap-2 rounded-md border p-3 sm:grid-cols-2", children: [
99
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
100
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-ui-sm text-neutral4 font-medium", children: "Organization signal library" }),
101
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-ui-xs text-neutral3", children: "Definitions, prompts, and versions are shared by every project." })
102
- ] }),
103
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
104
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-ui-sm text-neutral4 font-medium", children: "Current project" }),
105
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-ui-xs text-neutral3", children: "Enable switches apply only to this project." })
106
- ] })
107
- ] }),
108
- !canManage ? /* @__PURE__ */ jsxRuntime.jsx(Notice.Notice, { variant: "info", children: /* @__PURE__ */ jsxRuntime.jsx(Notice.Notice.Message, { children: "You have read-only access. An organization admin can change these settings." }) }) : null,
109
- actionError ? /* @__PURE__ */ jsxRuntime.jsx(Notice.Notice, { variant: "destructive", children: /* @__PURE__ */ jsxRuntime.jsx(Notice.Notice.Message, { children: actionError }) }) : null
110
- ] }),
111
- /* @__PURE__ */ jsxRuntime.jsxs("section", { "aria-labelledby": "built-in-signals-heading", children: [
112
- /* @__PURE__ */ jsxRuntime.jsx("h3", { id: "built-in-signals-heading", className: "text-ui-md text-neutral4 mb-2 font-medium", children: "Built-in signals" }),
113
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "divide-border1 border-border1 divide-y rounded-md border px-3", children: signalCatalog.filter((signal) => signal.builtIn).map((signal) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-12 items-center justify-between gap-3 py-2", children: [
114
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
115
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-ui-sm text-neutral4", children: signal.label }),
116
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-ui-xs text-neutral3 truncate", children: signal.description })
117
- ] }),
118
- /* @__PURE__ */ jsxRuntime.jsx(Badge.Badge, { variant: "neutral", size: "sm", children: "Read only" })
119
- ] }, signal.name)) })
120
- ] }),
97
+ !canManage ? /* @__PURE__ */ jsxRuntime.jsx(Notice.Notice, { variant: "info", children: /* @__PURE__ */ jsxRuntime.jsx(Notice.Notice.Message, { children: "You have read-only access. An organization admin can change these settings." }) }) : null,
98
+ actionError ? /* @__PURE__ */ jsxRuntime.jsx(Notice.Notice, { variant: "destructive", children: /* @__PURE__ */ jsxRuntime.jsx(Notice.Notice.Message, { children: actionError }) }) : null,
121
99
  /* @__PURE__ */ jsxRuntime.jsxs("section", { "aria-labelledby": "custom-signals-heading", children: [
122
100
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex flex-wrap items-center justify-between gap-3", children: [
123
101
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [