@mastra/playground-ui 68.0.0 → 69.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +80 -8
- package/dist/AgentIndicator-Dnv_1hvF.js +1995 -0
- package/dist/AgentIndicator-Dnv_1hvF.js.map +1 -0
- package/dist/AgentIndicator-zCokR2zb.cjs +2012 -0
- package/dist/AgentIndicator-zCokR2zb.cjs.map +1 -0
- package/dist/{AttachmentCard-DbGp7TYl.js → AttachmentCard-Bt3-QAxJ.js} +3 -3
- package/dist/{AttachmentCard-DbGp7TYl.js.map → AttachmentCard-Bt3-QAxJ.js.map} +1 -1
- package/dist/{AttachmentCard-CciBqu7E.cjs → AttachmentCard-BycDEelL.cjs} +3 -3
- package/dist/{AttachmentCard-CciBqu7E.cjs.map → AttachmentCard-BycDEelL.cjs.map} +1 -1
- package/dist/{Avatar-Dj8aP7OI.js → Avatar-DOoEXudh.js} +3 -3
- package/dist/{Avatar-Dj8aP7OI.js.map → Avatar-DOoEXudh.js.map} +1 -1
- package/dist/{Avatar-Iiqjad9K.cjs → Avatar-Dxpc0YUx.cjs} +3 -3
- package/dist/{Avatar-Iiqjad9K.cjs.map → Avatar-Dxpc0YUx.cjs.map} +1 -1
- package/dist/{Badge-aVu5iGAF.js → Badge-C7NnqmMx.js} +3 -3
- package/dist/{Badge-aVu5iGAF.js.map → Badge-C7NnqmMx.js.map} +1 -1
- package/dist/{Badge-DZ6r6bcw.cjs → Badge-DqaMg7Gy.cjs} +3 -3
- package/dist/{Badge-DZ6r6bcw.cjs.map → Badge-DqaMg7Gy.cjs.map} +1 -1
- package/dist/{Button-DLcMcuUL.cjs → Button-BfICfyxD.cjs} +5 -5
- package/dist/Button-BfICfyxD.cjs.map +1 -0
- package/dist/{Button-CLXTbAY8.js → Button-Bi7aXd_G.js} +5 -5
- package/dist/Button-Bi7aXd_G.js.map +1 -0
- package/dist/{Card-C6iEBgVq.cjs → Card-C9oCXvxU.cjs} +3 -3
- package/dist/{Card-C6iEBgVq.cjs.map → Card-C9oCXvxU.cjs.map} +1 -1
- package/dist/{Card-LU1aWO7U.js → Card-ClDoUQNb.js} +3 -3
- package/dist/{Card-LU1aWO7U.js.map → Card-ClDoUQNb.js.map} +1 -1
- package/dist/{CodeEditor-CLzs0yVc.cjs → CodeEditor-DHIDfP5g.cjs} +8 -8
- package/dist/{CodeEditor-CLzs0yVc.cjs.map → CodeEditor-DHIDfP5g.cjs.map} +1 -1
- package/dist/{CodeEditor-COnz9c6B.js → CodeEditor-ZoBu3Gjw.js} +8 -8
- package/dist/{CodeEditor-COnz9c6B.js.map → CodeEditor-ZoBu3Gjw.js.map} +1 -1
- package/dist/{Comment-0n98b_f_.js → Comment-2q9SomE2.js} +5 -5
- package/dist/{Comment-0n98b_f_.js.map → Comment-2q9SomE2.js.map} +1 -1
- package/dist/{Comment-Cg0f7eLa.cjs → Comment-rQxuMDQv.cjs} +6 -6
- package/dist/{Comment-Cg0f7eLa.cjs.map → Comment-rQxuMDQv.cjs.map} +1 -1
- package/dist/{Composer-D1gF-0jZ.js → Composer-bVE8qK52.js} +19 -14
- package/dist/Composer-bVE8qK52.js.map +1 -0
- package/dist/{Composer-BcueJvdX.cjs → Composer-u1K6edoZ.cjs} +18 -13
- package/dist/Composer-u1K6edoZ.cjs.map +1 -0
- package/dist/{DataCodeSection-CFxXsQWH.cjs → DataCodeSection-7SvRJj6f.cjs} +8 -8
- package/dist/{DataCodeSection-CFxXsQWH.cjs.map → DataCodeSection-7SvRJj6f.cjs.map} +1 -1
- package/dist/{DataCodeSection-PY9XEg2C.js → DataCodeSection-CTodi9wg.js} +8 -8
- package/dist/{DataCodeSection-PY9XEg2C.js.map → DataCodeSection-CTodi9wg.js.map} +1 -1
- package/dist/{DataDetailsPanel-DiyjEXqK.cjs → DataDetailsPanel-BDoD6pxx.cjs} +7 -7
- package/dist/{DataDetailsPanel-DiyjEXqK.cjs.map → DataDetailsPanel-BDoD6pxx.cjs.map} +1 -1
- package/dist/{DataDetailsPanel-CohEKPm4.js → DataDetailsPanel-BU05psHL.js} +7 -7
- package/dist/{DataDetailsPanel-CohEKPm4.js.map → DataDetailsPanel-BU05psHL.js.map} +1 -1
- package/dist/{DataKeysAndValues-PwOmGxyp.js → DataKeysAndValues-B56je3sK.js} +2 -2
- package/dist/{DataKeysAndValues-PwOmGxyp.js.map → DataKeysAndValues-B56je3sK.js.map} +1 -1
- package/dist/{DataKeysAndValues-DsH6AbAo.cjs → DataKeysAndValues-BbKeVxrQ.cjs} +2 -2
- package/dist/{DataKeysAndValues-DsH6AbAo.cjs.map → DataKeysAndValues-BbKeVxrQ.cjs.map} +1 -1
- package/dist/{DataList-CUhRQAv6.js → DataList-B7ho6PrJ.js} +8 -8
- package/dist/{DataList-CUhRQAv6.js.map → DataList-B7ho6PrJ.js.map} +1 -1
- package/dist/{DataList-Cj0mfk19.cjs → DataList-DTIdllb-.cjs} +8 -8
- package/dist/{DataList-Cj0mfk19.cjs.map → DataList-DTIdllb-.cjs.map} +1 -1
- package/dist/{DataPanel-Coc9h35I.cjs → DataPanel-BRRAvWYQ.cjs} +10 -10
- package/dist/{DataPanel-Coc9h35I.cjs.map → DataPanel-BRRAvWYQ.cjs.map} +1 -1
- package/dist/{DataPanel-IgB9D5PO.js → DataPanel-pVr5LVaK.js} +10 -10
- package/dist/{DataPanel-IgB9D5PO.js.map → DataPanel-pVr5LVaK.js.map} +1 -1
- package/dist/{Dialog-BvWF9HE-.cjs → Dialog-Duy3M1ny.cjs} +3 -3
- package/dist/{Dialog-BvWF9HE-.cjs.map → Dialog-Duy3M1ny.cjs.map} +1 -1
- package/dist/{Dialog-DaWtxwd9.js → Dialog-OBPu3rl2.js} +3 -3
- package/dist/{Dialog-DaWtxwd9.js.map → Dialog-OBPu3rl2.js.map} +1 -1
- package/dist/{EmptyState-DxDHlYqD.cjs → EmptyState-Dc-sP95H.cjs} +2 -2
- package/dist/{EmptyState-DxDHlYqD.cjs.map → EmptyState-Dc-sP95H.cjs.map} +1 -1
- package/dist/{EmptyState-P-Gy898T.js → EmptyState-i88y1x75.js} +2 -2
- package/dist/{EmptyState-P-Gy898T.js.map → EmptyState-i88y1x75.js.map} +1 -1
- package/dist/{ErrorBoundary-B5GjmA6V.cjs → ErrorBoundary-Bwoum0sT.cjs} +3 -3
- package/dist/{ErrorBoundary-B5GjmA6V.cjs.map → ErrorBoundary-Bwoum0sT.cjs.map} +1 -1
- package/dist/{ErrorBoundary-Cat3KU86.js → ErrorBoundary-BzmaWe2y.js} +3 -3
- package/dist/{ErrorBoundary-Cat3KU86.js.map → ErrorBoundary-BzmaWe2y.js.map} +1 -1
- package/dist/{FilterBar-PSQ1OwqH.js → FilterBar-Kmn6gMgO.js} +14 -15
- package/dist/FilterBar-Kmn6gMgO.js.map +1 -0
- package/dist/{FilterBar-BSP2UTjc.cjs → FilterBar-jBz6yaNu.cjs} +13 -14
- package/dist/FilterBar-jBz6yaNu.cjs.map +1 -0
- package/dist/{LogsDataList-BI2C5OJz.js → LogsDataList-Cdo_U0Ei.js} +5 -5
- package/dist/{LogsDataList-BI2C5OJz.js.map → LogsDataList-Cdo_U0Ei.js.map} +1 -1
- package/dist/{LogsDataList-CCIfUPGo.cjs → LogsDataList-z0Y2X8P5.cjs} +5 -5
- package/dist/{LogsDataList-CCIfUPGo.cjs.map → LogsDataList-z0Y2X8P5.cjs.map} +1 -1
- package/dist/{MarkdownRenderer-y65WGBhC.cjs → MarkdownRenderer-CUYpmuPh.cjs} +6 -6
- package/dist/{MarkdownRenderer-y65WGBhC.cjs.map → MarkdownRenderer-CUYpmuPh.cjs.map} +1 -1
- package/dist/{MarkdownRenderer-CI30RqdB.js → MarkdownRenderer-CY8LGt-l.js} +6 -6
- package/dist/{MarkdownRenderer-CI30RqdB.js.map → MarkdownRenderer-CY8LGt-l.js.map} +1 -1
- package/dist/MarkdownRenderer.css +77 -6
- package/dist/{Message-jj56lxNL.cjs → Message-CgO_SxI4.cjs} +20 -9
- package/dist/Message-CgO_SxI4.cjs.map +1 -0
- package/dist/{Message-CWzi5F_Q.js → Message-DnnCoSef.js} +20 -9
- package/dist/{Message-CWzi5F_Q.js.map → Message-DnnCoSef.js.map} +1 -1
- package/dist/{MessageScroller-CGsfTd1Z.cjs → MessageScroller-D-mK1uuu.cjs} +50 -26
- package/dist/MessageScroller-D-mK1uuu.cjs.map +1 -0
- package/dist/{MessageScroller-DvaKlm4O.js → MessageScroller-nV_zBF3H.js} +50 -26
- package/dist/MessageScroller-nV_zBF3H.js.map +1 -0
- package/dist/Metadata-5GJlO4GU.cjs +32 -0
- package/dist/Metadata-5GJlO4GU.cjs.map +1 -0
- package/dist/Metadata-DlVgmRTA.js +27 -0
- package/dist/Metadata-DlVgmRTA.js.map +1 -0
- package/dist/{MetricsCard-BEwiS7Pe.cjs → MetricsCard-DojbLiEx.cjs} +19 -6
- package/dist/MetricsCard-DojbLiEx.cjs.map +1 -0
- package/dist/{MetricsCard-ua6C6b8a.js → MetricsCard-kAqSCPPe.js} +20 -7
- package/dist/MetricsCard-kAqSCPPe.js.map +1 -0
- package/dist/{MetricsKpiCard-OHbAElTl.js → MetricsKpiCard-1blTbzUs.js} +6 -6
- package/dist/{MetricsKpiCard-OHbAElTl.js.map → MetricsKpiCard-1blTbzUs.js.map} +1 -1
- package/dist/{MetricsKpiCard-By_-sagx.cjs → MetricsKpiCard-C_9GvRAp.cjs} +6 -6
- package/dist/{MetricsKpiCard-By_-sagx.cjs.map → MetricsKpiCard-C_9GvRAp.cjs.map} +1 -1
- package/dist/{MetricsLineChart-4SwxBbQx.js → MetricsLineChart-4w5lpH63.js} +3 -3
- package/dist/{MetricsLineChart-4SwxBbQx.js.map → MetricsLineChart-4w5lpH63.js.map} +1 -1
- package/dist/{MetricsLineChart-tZxsauau.cjs → MetricsLineChart-BnY9JKzc.cjs} +3 -3
- package/dist/{MetricsLineChart-tZxsauau.cjs.map → MetricsLineChart-BnY9JKzc.cjs.map} +1 -1
- package/dist/{MetricsStackedBarChart-D2QyS4-z.js → MetricsStackedBarChart-Bmk0OjYp.js} +7 -7
- package/dist/{MetricsStackedBarChart-D2QyS4-z.js.map → MetricsStackedBarChart-Bmk0OjYp.js.map} +1 -1
- package/dist/{MetricsStackedBarChart-CDLE76IB.cjs → MetricsStackedBarChart-CJQF99sc.cjs} +7 -7
- package/dist/{MetricsStackedBarChart-CDLE76IB.cjs.map → MetricsStackedBarChart-CJQF99sc.cjs.map} +1 -1
- package/dist/{MetricsTable-BSl81oNe.cjs → MetricsTable-CvMoo2vg.cjs} +3 -3
- package/dist/{MetricsTable-BSl81oNe.cjs.map → MetricsTable-CvMoo2vg.cjs.map} +1 -1
- package/dist/{MetricsTable-DID6LRoP.js → MetricsTable-DIjbD5Xk.js} +3 -3
- package/dist/{MetricsTable-DID6LRoP.js.map → MetricsTable-DIjbD5Xk.js.map} +1 -1
- package/dist/{Notice-JZ7SW7q6.cjs → Notice-B_KjMmA6.cjs} +3 -3
- package/dist/{Notice-JZ7SW7q6.cjs.map → Notice-B_KjMmA6.cjs.map} +1 -1
- package/dist/{Notice-C-8oOZZF.js → Notice-OSlG42lD.js} +2 -2
- package/dist/{Notice-C-8oOZZF.js.map → Notice-OSlG42lD.js.map} +1 -1
- package/dist/{PageLayout-DFRzcnkf.cjs → PageLayout-C0Fo3ZQC.cjs} +3 -3
- package/dist/{PageLayout-DFRzcnkf.cjs.map → PageLayout-C0Fo3ZQC.cjs.map} +1 -1
- package/dist/{PageLayout-CyM_Op3c.js → PageLayout-DLll7ZwB.js} +3 -3
- package/dist/{PageLayout-CyM_Op3c.js.map → PageLayout-DLll7ZwB.js.map} +1 -1
- package/dist/{SankeyChart-E68mYEs2.js → SankeyChart-lkM5cpOC.js} +3 -3
- package/dist/{SankeyChart-E68mYEs2.js.map → SankeyChart-lkM5cpOC.js.map} +1 -1
- package/dist/{SankeyChart-DHeJ45KN.cjs → SankeyChart-m50vrsBS.cjs} +3 -3
- package/dist/{SankeyChart-DHeJ45KN.cjs.map → SankeyChart-m50vrsBS.cjs.map} +1 -1
- package/dist/{Section-CyGQZR7U.cjs → Section-B8MIbDDs.cjs} +3 -3
- package/dist/{Section-CyGQZR7U.cjs.map → Section-B8MIbDDs.cjs.map} +1 -1
- package/dist/{Section-CWFQ8jNS.js → Section-C9Fgv-IF.js} +3 -3
- package/dist/{Section-CWFQ8jNS.js.map → Section-C9Fgv-IF.js.map} +1 -1
- package/dist/{ShareBar-3Z5np-NY.cjs → ShareBar-DERy_egz.cjs} +2 -2
- package/dist/{ShareBar-3Z5np-NY.cjs.map → ShareBar-DERy_egz.cjs.map} +1 -1
- package/dist/{ShareBar-D6dWWl4C.js → ShareBar-KrzzdcyI.js} +2 -2
- package/dist/{ShareBar-D6dWWl4C.js.map → ShareBar-KrzzdcyI.js.map} +1 -1
- package/dist/{Tree-BplQcY8u.cjs → Tree-Caz4FTCU.cjs} +3 -3
- package/dist/{Tree-BplQcY8u.cjs.map → Tree-Caz4FTCU.cjs.map} +1 -1
- package/dist/{Tree-CoLkeBCL.js → Tree-od43gLMO.js} +3 -3
- package/dist/{Tree-CoLkeBCL.js.map → Tree-od43gLMO.js.map} +1 -1
- package/dist/{Txt-BM6TVV_c.js → Txt-5efBsb2p.js} +2 -2
- package/dist/{Txt-BM6TVV_c.js.map → Txt-5efBsb2p.js.map} +1 -1
- package/dist/{Txt-BnoSqxKE.cjs → Txt-_00wWxTd.cjs} +2 -2
- package/dist/{Txt-BnoSqxKE.cjs.map → Txt-_00wWxTd.cjs.map} +1 -1
- package/dist/{Workflow-DSWQ-ROz.cjs → Workflow-XR5L-3cJ.cjs} +15 -14
- package/dist/Workflow-XR5L-3cJ.cjs.map +1 -0
- package/dist/{Workflow-C3SlEdP-.js → Workflow-mIbUYdv0.js} +15 -14
- package/dist/Workflow-mIbUYdv0.js.map +1 -0
- package/dist/{activity-CcQZeDYi.cjs → activity-BprmG6yH.cjs} +10 -10
- package/dist/activity-BprmG6yH.cjs.map +1 -0
- package/dist/{activity-C8Ql81WM.js → activity-ClFChYfl.js} +10 -10
- package/dist/activity-ClFChYfl.js.map +1 -0
- package/dist/annotations.css +8 -0
- package/dist/{ask-user-DPznrqGO.js → ask-user-D4ezQ6pt.js} +5 -5
- package/dist/{ask-user-DPznrqGO.js.map → ask-user-D4ezQ6pt.js.map} +1 -1
- package/dist/{ask-user-C1p2PEYe.cjs → ask-user-DcnUNMM5.cjs} +5 -5
- package/dist/{ask-user-C1p2PEYe.cjs.map → ask-user-DcnUNMM5.cjs.map} +1 -1
- package/dist/{buttons-group-DkFlnMiL.js → buttons-group-DA_wORqQ.js} +2 -2
- package/dist/{buttons-group-DkFlnMiL.js.map → buttons-group-DA_wORqQ.js.map} +1 -1
- package/dist/{buttons-group-Dc6R7YSs.cjs → buttons-group-DM6_Kohs.cjs} +2 -2
- package/dist/{buttons-group-Dc6R7YSs.cjs.map → buttons-group-DM6_Kohs.cjs.map} +1 -1
- package/dist/chat-shell-context-0m1GVhS7.js +16 -0
- package/dist/chat-shell-context-0m1GVhS7.js.map +1 -0
- package/dist/chat-shell-context-ONCslAGn.cjs +39 -0
- package/dist/chat-shell-context-ONCslAGn.cjs.map +1 -0
- package/dist/{clear-filters-button-CNrRuHOY.js → clear-filters-button-C79dzuzA.js} +2 -2
- package/dist/{clear-filters-button-CNrRuHOY.js.map → clear-filters-button-C79dzuzA.js.map} +1 -1
- package/dist/{clear-filters-button-Buc973vw.cjs → clear-filters-button-CCO-y7kt.cjs} +2 -2
- package/dist/{clear-filters-button-Buc973vw.cjs.map → clear-filters-button-CCO-y7kt.cjs.map} +1 -1
- package/dist/{combobox-DIT_6xiG.cjs → combobox-i723LxeC.cjs} +33 -29
- package/dist/combobox-i723LxeC.cjs.map +1 -0
- package/dist/{combobox-D21no8t5.js → combobox-lbSxWRMl.js} +33 -29
- package/dist/combobox-lbSxWRMl.js.map +1 -0
- package/dist/{combobox-parts-C4phOq4t.cjs → combobox-parts-BeNqgCbj.cjs} +27 -12
- package/dist/combobox-parts-BeNqgCbj.cjs.map +1 -0
- package/dist/{combobox-parts-D90ir0Py.js → combobox-parts-C9o4UfH_.js} +22 -13
- package/dist/combobox-parts-C9o4UfH_.js.map +1 -0
- package/dist/components/AgentIndicator.cjs.js +1 -1
- package/dist/components/AgentIndicator.es.js +1 -1
- package/dist/components/AlertDialog.cjs.js +2 -2
- package/dist/components/AlertDialog.es.js +2 -2
- package/dist/components/AttachmentCard.cjs.js +1 -1
- package/dist/components/AttachmentCard.es.js +1 -1
- package/dist/components/Avatar.cjs.js +1 -1
- package/dist/components/Avatar.es.js +1 -1
- package/dist/components/Badge.cjs.js +1 -1
- package/dist/components/Badge.es.js +1 -1
- package/dist/components/Breadcrumb.cjs.js +6 -5
- package/dist/components/Breadcrumb.cjs.js.map +1 -1
- package/dist/components/Breadcrumb.es.js +6 -5
- package/dist/components/Breadcrumb.es.js.map +1 -1
- package/dist/components/Button.cjs.js +2 -2
- package/dist/components/Button.es.js +2 -2
- package/dist/components/ButtonsGroup.cjs.js +1 -1
- package/dist/components/ButtonsGroup.es.js +1 -1
- package/dist/components/Card.cjs.js +1 -1
- package/dist/components/Card.es.js +1 -1
- package/dist/components/ChartSkeleton.cjs.js +2 -2
- package/dist/components/ChartSkeleton.es.js +2 -2
- package/dist/components/ChartTooltip.cjs.js +1 -1
- package/dist/components/ChartTooltip.es.js +1 -1
- package/dist/components/ChatShell.cjs.js +33 -9
- package/dist/components/ChatShell.cjs.js.map +1 -1
- package/dist/components/ChatShell.es.js +33 -9
- package/dist/components/ChatShell.es.js.map +1 -1
- package/dist/components/Checkbox.cjs.js +1 -1
- package/dist/components/Checkbox.es.js +1 -1
- package/dist/components/ClampedText.cjs.js +3 -3
- package/dist/components/ClampedText.es.js +3 -3
- package/dist/components/ClearFiltersButton.cjs.js +1 -1
- package/dist/components/ClearFiltersButton.es.js +1 -1
- package/dist/components/CodeBlock.cjs.js +5 -5
- package/dist/components/CodeBlock.es.js +5 -5
- package/dist/components/CodeDiff.cjs.js +3 -3
- package/dist/components/CodeDiff.es.js +2 -2
- package/dist/components/CodeEditor.cjs.js +1 -1
- package/dist/components/CodeEditor.es.js +1 -1
- package/dist/components/Collapsible.cjs.js +1 -1
- package/dist/components/Collapsible.es.js +1 -1
- package/dist/components/CollapsibleBox.cjs.js +1 -1
- package/dist/components/CollapsibleBox.es.js +1 -1
- package/dist/components/Combobox.cjs.js +2 -2
- package/dist/components/Combobox.es.js +2 -2
- package/dist/components/Command.cjs.js +5 -5
- package/dist/components/Command.es.js +5 -5
- package/dist/components/CommandPalette.cjs.js +7 -7
- package/dist/components/CommandPalette.cjs.js.map +1 -1
- package/dist/components/CommandPalette.es.js +7 -7
- package/dist/components/CommandPalette.es.js.map +1 -1
- package/dist/components/Comment.cjs.js +1 -1
- package/dist/components/Comment.es.js +1 -1
- package/dist/components/CompactNumber.cjs.js +2 -2
- package/dist/components/CompactNumber.es.js +2 -2
- package/dist/components/Composer.cjs.js +1 -1
- package/dist/components/Composer.es.js +1 -1
- package/dist/components/ContextMenu.cjs.js +1 -1
- package/dist/components/ContextMenu.es.js +1 -1
- package/dist/components/CopyButton.cjs.js +1 -1
- package/dist/components/CopyButton.es.js +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataDetailsPanel.cjs.js +1 -1
- package/dist/components/DataDetailsPanel.es.js +1 -1
- package/dist/components/DataKeysAndValues.cjs.js +1 -1
- package/dist/components/DataKeysAndValues.es.js +1 -1
- package/dist/components/DataList.cjs.js +3 -3
- package/dist/components/DataList.es.js +3 -3
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.es.js +1 -1
- package/dist/components/DateRangeTimeline.cjs.js +9 -9
- package/dist/components/DateRangeTimeline.cjs.js.map +1 -1
- package/dist/components/DateRangeTimeline.es.js +9 -9
- package/dist/components/DateRangeTimeline.es.js.map +1 -1
- package/dist/components/DateTimePicker.cjs.js +75 -142
- package/dist/components/DateTimePicker.cjs.js.map +1 -1
- package/dist/components/DateTimePicker.es.js +79 -146
- package/dist/components/DateTimePicker.es.js.map +1 -1
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/Dialog.cjs.js +1 -1
- package/dist/components/Dialog.es.js +1 -1
- package/dist/components/DiffStat.cjs.js +1 -1
- package/dist/components/DiffStat.es.js +1 -1
- package/dist/components/DisabledFeatureButton.cjs.js +3 -3
- package/dist/components/DisabledFeatureButton.es.js +3 -3
- package/dist/components/DisclosureChevron.cjs.js +1 -1
- package/dist/components/DisclosureChevron.es.js +1 -1
- package/dist/components/Drawer.cjs.js +2 -2
- package/dist/components/Drawer.es.js +2 -2
- package/dist/components/DropdownMenu.cjs.js +1 -1
- package/dist/components/DropdownMenu.es.js +1 -1
- package/dist/components/EmptyState.cjs.js +1 -1
- package/dist/components/EmptyState.es.js +1 -1
- package/dist/components/Entity.cjs.js +3 -3
- package/dist/components/Entity.es.js +3 -3
- package/dist/components/EntityHeader.cjs.js +2 -2
- package/dist/components/EntityHeader.es.js +2 -2
- package/dist/components/Entry.cjs.js +1 -1
- package/dist/components/Entry.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +6 -6
- package/dist/components/EnvironmentVariablesEditor.es.js +6 -6
- package/dist/components/ErrorBoundary.cjs.js +1 -1
- package/dist/components/ErrorBoundary.es.js +1 -1
- package/dist/components/Field.cjs.js +2 -2
- package/dist/components/Field.es.js +2 -2
- package/dist/components/FileDropBackdrop.cjs.js +1 -1
- package/dist/components/FileDropBackdrop.es.js +1 -1
- package/dist/components/FilterBar.cjs.js +3 -3
- package/dist/components/FilterBar.es.js +3 -3
- package/dist/components/FormFieldBlocks.cjs.js +5 -5
- package/dist/components/FormFieldBlocks.es.js +6 -6
- package/dist/components/Header.cjs.js +1 -1
- package/dist/components/Header.es.js +1 -1
- package/dist/components/HoverCard.cjs.js +1 -1
- package/dist/components/HoverCard.es.js +1 -1
- package/dist/components/Input.cjs.js +1 -1
- package/dist/components/Input.es.js +1 -1
- package/dist/components/InputGroup.cjs.js +1 -1
- package/dist/components/InputGroup.es.js +1 -1
- package/dist/components/InputNumber.cjs.js +3 -3
- package/dist/components/InputNumber.es.js +3 -3
- package/dist/components/JSONSchemaForm.cjs.js +4 -4
- package/dist/components/JSONSchemaForm.es.js +4 -4
- package/dist/components/Kbd.cjs.js +1 -1
- package/dist/components/Kbd.es.js +1 -1
- package/dist/components/KeyValueList.cjs.js +2 -2
- package/dist/components/KeyValueList.es.js +2 -2
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +2 -2
- package/dist/components/LogsDataList.es.js +2 -2
- package/dist/components/MainHeader.cjs.js +1 -1
- package/dist/components/MainHeader.es.js +1 -1
- package/dist/components/MarkdownRenderer.cjs.js +1 -1
- package/dist/components/MarkdownRenderer.es.js +1 -1
- package/dist/components/Message.cjs.js +1 -1
- package/dist/components/Message.es.js +1 -1
- package/dist/components/MessageScroller.cjs.js +1 -1
- package/dist/components/MessageScroller.es.js +1 -1
- package/dist/components/Metadata.cjs.js +3 -0
- package/dist/components/Metadata.d.ts +1 -0
- package/dist/components/Metadata.es.js +1 -0
- package/dist/components/Meter.cjs.js +3 -3
- package/dist/components/Meter.es.js +3 -3
- package/dist/components/MetricsCard.cjs.js +1 -1
- package/dist/components/MetricsCard.es.js +1 -1
- package/dist/components/MetricsKpiCard.cjs.js +1 -1
- package/dist/components/MetricsKpiCard.es.js +1 -1
- package/dist/components/MetricsLineChart.cjs.js +1 -1
- package/dist/components/MetricsLineChart.es.js +1 -1
- package/dist/components/MetricsStackedBarChart.cjs.js +1 -1
- package/dist/components/MetricsStackedBarChart.es.js +1 -1
- package/dist/components/MetricsTable.cjs.js +1 -1
- package/dist/components/MetricsTable.es.js +1 -1
- package/dist/components/Notice.cjs.js +1 -1
- package/dist/components/Notice.es.js +1 -1
- package/dist/components/PageHeader.cjs.js +1 -1
- package/dist/components/PageHeader.es.js +1 -1
- package/dist/components/PageLayout.cjs.js +1 -1
- package/dist/components/PageLayout.es.js +1 -1
- package/dist/components/Popover.cjs.js +1 -1
- package/dist/components/Popover.es.js +1 -1
- package/dist/components/PrevNextNav.cjs.js +1 -1
- package/dist/components/PrevNextNav.es.js +1 -1
- package/dist/components/ProductAvatar.cjs.js +2 -2
- package/dist/components/ProductAvatar.es.js +2 -2
- package/dist/components/ProductBadge.cjs.js +2 -2
- package/dist/components/ProductBadge.es.js +2 -2
- package/dist/components/PropertyFilter.cjs.js +9 -9
- package/dist/components/PropertyFilter.cjs.js.map +1 -1
- package/dist/components/PropertyFilter.es.js +9 -9
- package/dist/components/PropertyFilter.es.js.map +1 -1
- package/dist/components/RadioGroup.cjs.js +1 -1
- package/dist/components/RadioGroup.es.js +1 -1
- package/dist/components/RelativeTimestamp.cjs.js +6 -30
- package/dist/components/RelativeTimestamp.cjs.js.map +1 -1
- package/dist/components/RelativeTimestamp.es.js +7 -31
- package/dist/components/RelativeTimestamp.es.js.map +1 -1
- package/dist/components/RuleBuilder.cjs.js +22 -22
- package/dist/components/RuleBuilder.cjs.js.map +1 -1
- package/dist/components/RuleBuilder.es.js +5 -5
- package/dist/components/SankeyChart.cjs.js +1 -1
- package/dist/components/SankeyChart.es.js +1 -1
- package/dist/components/SavedViews.cjs.js +9 -9
- package/dist/components/SavedViews.es.js +9 -9
- package/dist/components/ScatterPlotChart.cjs.js +2 -2
- package/dist/components/ScatterPlotChart.es.js +2 -2
- package/dist/components/ScrollArea.cjs.js +1 -1
- package/dist/components/ScrollArea.es.js +1 -1
- package/dist/components/SearchInput.cjs.js +2 -2
- package/dist/components/SearchInput.es.js +2 -2
- package/dist/components/Section.cjs.js +1 -1
- package/dist/components/Section.es.js +1 -1
- package/dist/components/SectionCard.cjs.js +1 -1
- package/dist/components/SectionCard.es.js +1 -1
- package/dist/components/SegmentedControl.cjs.js +3 -3
- package/dist/components/SegmentedControl.es.js +3 -3
- package/dist/components/Select.cjs.js +1 -1
- package/dist/components/Select.es.js +1 -1
- package/dist/components/ShareBar.cjs.js +1 -1
- package/dist/components/ShareBar.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +8 -8
- package/dist/components/SideDialog.es.js +8 -8
- package/dist/components/Sidebar.cjs.js +14 -14
- package/dist/components/Sidebar.cjs.js.map +1 -1
- package/dist/components/Sidebar.es.js +15 -15
- package/dist/components/Sidebar.es.js.map +1 -1
- package/dist/components/Skeleton.cjs.js +1 -1
- package/dist/components/Skeleton.es.js +1 -1
- package/dist/components/Spinner.cjs.js +1 -1
- package/dist/components/Spinner.es.js +1 -1
- package/dist/components/StatusIndicators.cjs.js +3 -3
- package/dist/components/StatusIndicators.es.js +3 -3
- package/dist/components/Steps.cjs.js +73 -3
- package/dist/components/Steps.cjs.js.map +1 -1
- package/dist/components/Steps.es.js +73 -4
- package/dist/components/Steps.es.js.map +1 -1
- package/dist/components/Switch.cjs.js +2 -2
- package/dist/components/Switch.es.js +2 -2
- package/dist/components/Table.cjs.js +4 -4
- package/dist/components/Table.es.js +4 -4
- package/dist/components/Tabs.cjs.js +2 -2
- package/dist/components/Tabs.es.js +2 -2
- package/dist/components/Text.cjs.js +1 -1
- package/dist/components/Text.es.js +1 -1
- package/dist/components/Textarea.cjs.js +2 -2
- package/dist/components/Textarea.es.js +2 -2
- package/dist/components/ThinkingLevel.cjs.js +5 -5
- package/dist/components/ThinkingLevel.cjs.js.map +1 -1
- package/dist/components/ThinkingLevel.es.js +5 -5
- package/dist/components/ThinkingLevel.es.js.map +1 -1
- package/dist/components/ThreadList.cjs.js +2 -2
- package/dist/components/ThreadList.es.js +2 -2
- package/dist/components/ThreadRail.cjs.js +8 -8
- package/dist/components/ThreadRail.cjs.js.map +1 -1
- package/dist/components/ThreadRail.es.js +8 -8
- package/dist/components/ThreadRail.es.js.map +1 -1
- package/dist/components/Toaster.cjs.js +4 -4
- package/dist/components/Toaster.es.js +3 -3
- package/dist/components/TokenBudget.cjs.js +3 -3
- package/dist/components/TokenBudget.es.js +2 -2
- package/dist/components/Tooltip.cjs.js +2 -2
- package/dist/components/Tooltip.es.js +2 -2
- package/dist/components/Tree.cjs.js +1 -1
- package/dist/components/Tree.es.js +1 -1
- package/dist/components/Truncate.cjs.js +3 -3
- package/dist/components/Truncate.es.js +3 -3
- package/dist/components/Txt.cjs.js +1 -1
- package/dist/components/Txt.es.js +1 -1
- package/dist/components/Workflow.cjs.js +1 -1
- package/dist/components/Workflow.es.js +1 -1
- package/dist/components/ai/activity.cjs.js +1 -1
- package/dist/components/ai/activity.es.js +1 -1
- package/dist/components/ai/annotations.cjs.js +836 -0
- package/dist/components/ai/annotations.cjs.js.map +1 -0
- package/dist/components/ai/annotations.d.ts +1 -0
- package/dist/components/ai/annotations.es.js +831 -0
- package/dist/components/ai/annotations.es.js.map +1 -0
- package/dist/components/ai/ask-user.cjs.js +1 -1
- package/dist/components/ai/ask-user.es.js +1 -1
- package/dist/components/ai/plan.cjs.js +6 -6
- package/dist/components/ai/plan.es.js +6 -6
- package/dist/components/ai/task-list.cjs.js +4 -4
- package/dist/components/ai/task-list.cjs.js.map +1 -1
- package/dist/components/ai/task-list.es.js +4 -4
- package/dist/components/ai/task-list.es.js.map +1 -1
- package/dist/components/ai/tool-approval.cjs.js +1 -1
- package/dist/components/ai/tool-approval.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +7 -2
- package/dist/components/ai/tool-call.es.js +3 -3
- package/dist/components/ai/transcript-divider.cjs.js +1 -1
- package/dist/components/ai/transcript-divider.es.js +1 -1
- package/dist/{context-menu-Dv0NU0oM.js → context-menu-6_Kcs8kj.js} +3 -3
- package/dist/{context-menu-Dv0NU0oM.js.map → context-menu-6_Kcs8kj.js.map} +1 -1
- package/dist/{context-menu-DTFPCyae.cjs → context-menu-DwB7u7fB.cjs} +3 -3
- package/dist/{context-menu-DTFPCyae.cjs.map → context-menu-DwB7u7fB.cjs.map} +1 -1
- package/dist/{copy-button-BXrbevLn.js → copy-button-B-_Z6N6y.js} +2 -2
- package/dist/{copy-button-BXrbevLn.js.map → copy-button-B-_Z6N6y.js.map} +1 -1
- package/dist/{copy-button-DJAQ6_3o.cjs → copy-button-DuEUYvS2.cjs} +2 -2
- package/dist/{copy-button-DJAQ6_3o.cjs.map → copy-button-DuEUYvS2.cjs.map} +1 -1
- package/dist/{data-list-C4Vmq5HA.cjs → data-list-072hHK9L.cjs} +7 -7
- package/dist/{data-list-C4Vmq5HA.cjs.map → data-list-072hHK9L.cjs.map} +1 -1
- package/dist/{data-list-DHCOoLmj.js → data-list-GzbzPmYR.js} +7 -7
- package/dist/{data-list-DHCOoLmj.js.map → data-list-GzbzPmYR.js.map} +1 -1
- package/dist/{date-time-range-picker-CWGjoR3j.cjs → date-time-range-picker-Bq-8IPtS.cjs} +141 -112
- package/dist/date-time-range-picker-Bq-8IPtS.cjs.map +1 -0
- package/dist/{date-time-range-picker-CdSiXwB4.js → date-time-range-picker-DdNgKD87.js} +144 -115
- package/dist/date-time-range-picker-DdNgKD87.js.map +1 -0
- package/dist/domains/auth/components/permission-denied.cjs.js +1 -1
- package/dist/domains/auth/components/permission-denied.es.js +1 -1
- package/dist/domains/auth/components/session-expired.cjs.js +3 -3
- package/dist/domains/auth/components/session-expired.es.js +3 -3
- package/dist/domains/chat/activity/activity-stretch-line.cjs.js +2 -2
- package/dist/domains/chat/activity/activity-stretch-line.es.js +2 -2
- package/dist/domains/chat/activity/components/activity-fold.cjs.js +54 -58
- package/dist/domains/chat/activity/components/activity-fold.cjs.js.map +1 -1
- package/dist/domains/chat/activity/components/activity-fold.es.js +54 -58
- package/dist/domains/chat/activity/components/activity-fold.es.js.map +1 -1
- package/dist/domains/chat/activity/components/calls-panel.cjs.js +2 -2
- package/dist/domains/chat/activity/components/calls-panel.es.js +2 -2
- package/dist/domains/chat/activity/components/stretch-content.cjs.js +2 -2
- package/dist/domains/chat/activity/components/stretch-content.es.js +2 -2
- package/dist/domains/chat/activity/components/stretch-thought.cjs.js +1 -1
- package/dist/domains/chat/activity/components/stretch-thought.es.js +1 -1
- package/dist/domains/chat/activity/model/activity-segments.cjs.js +1 -1
- package/dist/domains/chat/activity/model/activity-segments.es.js +1 -1
- package/dist/domains/chat/activity/model/activity-words.cjs.js +7 -11
- package/dist/domains/chat/activity/model/activity-words.cjs.js.map +1 -1
- package/dist/domains/chat/activity/model/activity-words.es.js +8 -11
- package/dist/domains/chat/activity/model/activity-words.es.js.map +1 -1
- package/dist/domains/chat/activity.cjs.js +2 -5
- package/dist/domains/chat/activity.es.js +4 -5
- package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +3 -3
- package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +3 -3
- package/dist/domains/chat/attachments/composer-attachment-entry.cjs.js +2 -2
- package/dist/domains/chat/attachments/composer-attachment-entry.es.js +2 -2
- package/dist/domains/chat/attachments/composer-attachment-list.cjs.js +2 -2
- package/dist/domains/chat/attachments/composer-attachment-list.es.js +2 -2
- package/dist/domains/chat/attachments/composer-attachment.cjs.js +4 -4
- package/dist/domains/chat/attachments/composer-attachment.es.js +4 -4
- package/dist/domains/chat/attachments/message-attachment.cjs.js +2 -2
- package/dist/domains/chat/attachments/message-attachment.es.js +2 -2
- package/dist/domains/chat/attachments/message-image-attachment.cjs.js +2 -2
- package/dist/domains/chat/attachments/message-image-attachment.cjs.js.map +1 -1
- package/dist/domains/chat/attachments/message-image-attachment.es.js +2 -2
- package/dist/domains/chat/attachments/message-image-attachment.es.js.map +1 -1
- package/dist/domains/chat/components/badge-wrapper.cjs.js +2 -2
- package/dist/domains/chat/components/badge-wrapper.es.js +2 -2
- package/dist/domains/chat/components/loading-badge.cjs.js +2 -2
- package/dist/domains/chat/components/loading-badge.es.js +2 -2
- package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +4 -4
- package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +4 -4
- package/dist/domains/chat/components/section-label.cjs.js +1 -1
- package/dist/domains/chat/components/section-label.es.js +1 -1
- package/dist/domains/chat/context/chat-context.cjs.js +2 -0
- package/dist/domains/chat/context/chat-context.cjs.js.map +1 -1
- package/dist/domains/chat/context/chat-context.es.js +2 -1
- package/dist/domains/chat/context/chat-context.es.js.map +1 -1
- package/dist/domains/chat/knowledge/knowledge-links.cjs.js +1 -1
- package/dist/domains/chat/knowledge/knowledge-links.es.js +1 -1
- package/dist/domains/chat/knowledge/pinned-knowledge.cjs.js +3 -3
- package/dist/domains/chat/knowledge/pinned-knowledge.es.js +3 -3
- package/dist/domains/chat/knowledge.cjs.js +1 -1
- package/dist/domains/chat/knowledge.es.js +1 -1
- package/dist/domains/chat/messages/assistant-message-actions.cjs.js +2 -2
- package/dist/domains/chat/messages/assistant-message-actions.es.js +2 -2
- package/dist/domains/chat/messages/dataset-save-action.cjs.js +10 -10
- package/dist/domains/chat/messages/dataset-save-action.es.js +11 -11
- package/dist/domains/chat/messages/message-row.cjs.js +20 -20
- package/dist/domains/chat/messages/message-row.cjs.js.map +1 -1
- package/dist/domains/chat/messages/message-row.es.js +20 -20
- package/dist/domains/chat/messages/message-row.es.js.map +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.cjs.js +5 -5
- package/dist/domains/chat/messages/notification-signal-notice.cjs.js.map +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.es.js +5 -5
- package/dist/domains/chat/messages/notification-signal-notice.es.js.map +1 -1
- package/dist/domains/chat/messages/reasoning-content.cjs.js +1 -1
- package/dist/domains/chat/messages/reasoning-content.es.js +1 -1
- package/dist/domains/chat/messages/renderers/data-part-renderer.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/data-part-renderer.es.js +1 -1
- package/dist/domains/chat/messages/renderers/message-text.cjs.js +5 -5
- package/dist/domains/chat/messages/renderers/message-text.es.js +5 -5
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
- package/dist/domains/chat/messages/renderers/status-renderers.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/status-renderers.es.js +1 -1
- package/dist/domains/chat/messages/renderers/user-file-part-renderer.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/user-file-part-renderer.es.js +1 -1
- package/dist/domains/chat/messages/signal-badge.cjs.js +5 -5
- package/dist/domains/chat/messages/signal-badge.es.js +5 -5
- package/dist/domains/chat/messages/skill-message.cjs.js +4 -4
- package/dist/domains/chat/messages/skill-message.es.js +4 -4
- package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
- package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
- package/dist/domains/chat/messages/tripwire-notice.cjs.js +4 -4
- package/dist/domains/chat/messages/tripwire-notice.es.js +4 -4
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +5 -5
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +5 -5
- package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +7 -6
- package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js +7 -6
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +5 -5
- package/dist/domains/chat/tools/badges/file-tree-badge.es.js +5 -5
- package/dist/domains/chat/tools/badges/knowledge-body-range.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/knowledge-body-range.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/knowledge-body-range.es.js +2 -2
- package/dist/domains/chat/tools/badges/knowledge-body-range.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js +34 -28
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js +34 -28
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js +28 -24
- package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/mcp-task-chip.es.js +28 -24
- package/dist/domains/chat/tools/badges/mcp-task-chip.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +4 -4
- package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +4 -4
- package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +8 -7
- package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js +8 -7
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +3 -3
- package/dist/domains/chat/tools/badges/observation-renderer.es.js +3 -3
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +25 -34
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +27 -36
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.cjs.js +19 -26
- package/dist/domains/chat/tools/badges/tool-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.es.js +19 -26
- package/dist/domains/chat/tools/badges/tool-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +12 -10
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +12 -10
- package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/workspace-data-parts.cjs.js +13 -0
- package/dist/domains/chat/tools/badges/workspace-data-parts.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/workspace-data-parts.es.js +13 -1
- package/dist/domains/chat/tools/badges/workspace-data-parts.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/workspace-link.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/workspace-link.es.js +1 -1
- package/dist/domains/chat/tools/connect-prompt-tool.cjs.js +8 -8
- package/dist/domains/chat/tools/connect-prompt-tool.es.js +8 -8
- package/dist/domains/chat/tools/mcp-input-request-tool.cjs.js +5 -5
- package/dist/domains/chat/tools/mcp-input-request-tool.es.js +5 -5
- package/dist/domains/chat/tools/submit-plan-tool.cjs.js +4 -4
- package/dist/domains/chat/tools/submit-plan-tool.es.js +4 -4
- package/dist/domains/chat/tools/tool-card-kind.cjs.js +10 -5
- package/dist/domains/chat/tools/tool-card-kind.cjs.js.map +1 -1
- package/dist/domains/chat/tools/tool-card-kind.es.js +10 -5
- package/dist/domains/chat/tools/tool-card-kind.es.js.map +1 -1
- package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
- package/dist/domains/chat/tools/tool-card.es.js +1 -1
- package/dist/domains/chat/tools/tool-groups.cjs.js +2 -2
- package/dist/domains/chat/tools/tool-groups.es.js +2 -2
- package/dist/domains/chat.cjs.js +6 -5
- package/dist/domains/chat.es.js +6 -6
- package/dist/domains/connect.cjs.js +1 -1
- package/dist/domains/connect.es.js +1 -1
- package/dist/domains/dashboards/components/dashboard-grid.cjs.js +11 -8
- package/dist/domains/dashboards/components/dashboard-grid.cjs.js.map +1 -1
- package/dist/domains/dashboards/components/dashboard-grid.es.js +11 -8
- package/dist/domains/dashboards/components/dashboard-grid.es.js.map +1 -1
- package/dist/domains/dashboards/components/dashboard-renderer.cjs.js +18 -7
- package/dist/domains/dashboards/components/dashboard-renderer.cjs.js.map +1 -1
- package/dist/domains/dashboards/components/dashboard-renderer.es.js +18 -7
- package/dist/domains/dashboards/components/dashboard-renderer.es.js.map +1 -1
- package/dist/domains/dashboards/components/widget-chrome.cjs.js +1 -1
- package/dist/domains/dashboards/components/widget-chrome.es.js +1 -1
- package/dist/domains/dashboards/components/widget-controls.cjs.js +16 -1
- package/dist/domains/dashboards/components/widget-controls.cjs.js.map +1 -1
- package/dist/domains/dashboards/components/widget-controls.es.js +16 -2
- package/dist/domains/dashboards/components/widget-controls.es.js.map +1 -1
- package/dist/domains/dashboards/components/widget-error.cjs.js +6 -3
- package/dist/domains/dashboards/components/widget-error.cjs.js.map +1 -1
- package/dist/domains/dashboards/components/widget-error.es.js +6 -3
- package/dist/domains/dashboards/components/widget-error.es.js.map +1 -1
- package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js +18 -4
- package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js.map +1 -1
- package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js +19 -5
- package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js.map +1 -1
- package/dist/domains/dashboards/kinds/kpis.cjs.js +1 -1
- package/dist/domains/dashboards/kinds/kpis.es.js +1 -1
- package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js +18 -9
- package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js.map +1 -1
- package/dist/domains/dashboards/kinds/scores/scores-widget.es.js +18 -9
- package/dist/domains/dashboards/kinds/scores/scores-widget.es.js.map +1 -1
- package/dist/domains/dashboards/kinds/table/table-cells.cjs.js +1 -1
- package/dist/domains/dashboards/kinds/table/table-cells.es.js +1 -1
- package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js +12 -5
- package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js.map +1 -1
- package/dist/domains/dashboards/kinds/table/table-tabs.es.js +12 -5
- package/dist/domains/dashboards/kinds/table/table-tabs.es.js.map +1 -1
- package/dist/domains/dashboards/kinds/table/table-view.cjs.js +7 -7
- package/dist/domains/dashboards/kinds/table/table-view.es.js +7 -7
- package/dist/domains/dashboards/kinds/table/table-widget.cjs.js +5 -2
- package/dist/domains/dashboards/kinds/table/table-widget.cjs.js.map +1 -1
- package/dist/domains/dashboards/kinds/table/table-widget.es.js +5 -2
- package/dist/domains/dashboards/kinds/table/table-widget.es.js.map +1 -1
- package/dist/domains/dashboards/kinds/table.cjs.js +1 -1
- package/dist/domains/dashboards/kinds/table.es.js +1 -1
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js +21 -14
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js.map +1 -1
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js +22 -15
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js.map +1 -1
- package/dist/domains/dashboards/kinds/timeseries.cjs.js +1 -1
- package/dist/domains/dashboards/kinds/timeseries.es.js +1 -1
- package/dist/domains/dashboards/lib/chrome.cjs.js.map +1 -1
- package/dist/domains/dashboards/lib/chrome.es.js.map +1 -1
- package/dist/domains/dashboards/lib/format.cjs.js +1 -1
- package/dist/domains/dashboards/lib/format.es.js +1 -1
- package/dist/domains/dashboards/lib/pin-actions.cjs.js +16 -0
- package/dist/domains/dashboards/lib/pin-actions.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/pin-actions.d.ts +1 -0
- package/dist/domains/dashboards/lib/pin-actions.es.js +15 -0
- package/dist/domains/dashboards/lib/pin-actions.es.js.map +1 -0
- package/dist/domains/dashboards/lib/requests.cjs.js +2 -2
- package/dist/domains/dashboards/lib/requests.es.js +2 -2
- package/dist/domains/dashboards/widget-kind.cjs.js.map +1 -1
- package/dist/domains/dashboards/widget-kind.es.js.map +1 -1
- package/dist/domains/dashboards.cjs.js +11 -10
- package/dist/domains/dashboards.es.js +11 -11
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js +11 -11
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js +11 -11
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.cjs.js +3 -3
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.es.js +3 -3
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.cjs.js +6 -6
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.es.js +6 -6
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +7 -7
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +7 -7
- package/dist/domains/knowledge/components/KnowledgePageCard.cjs.js +3 -2
- package/dist/domains/knowledge/components/KnowledgePageCard.cjs.js.map +1 -1
- package/dist/domains/knowledge/components/KnowledgePageCard.es.js +3 -2
- package/dist/domains/knowledge/components/KnowledgePageCard.es.js.map +1 -1
- package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js +11 -16
- package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js.map +1 -1
- package/dist/domains/knowledge/components/KnowledgePageDetail.es.js +11 -16
- package/dist/domains/knowledge/components/KnowledgePageDetail.es.js.map +1 -1
- package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js +5 -5
- package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js +5 -5
- package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js +11 -10
- package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js.map +1 -1
- package/dist/domains/knowledge/components/KnowledgePageGraph.es.js +10 -9
- package/dist/domains/knowledge/components/KnowledgePageGraph.es.js.map +1 -1
- package/dist/domains/knowledge/components/KnowledgePageTree.cjs.js +1 -1
- package/dist/domains/knowledge/components/KnowledgePageTree.es.js +1 -1
- package/dist/domains/llm/models-dev-logo-slugs.cjs.js +230 -0
- package/dist/domains/llm/models-dev-logo-slugs.cjs.js.map +1 -0
- package/dist/domains/llm/models-dev-logo-slugs.d.ts +1 -0
- package/dist/domains/llm/models-dev-logo-slugs.es.js +229 -0
- package/dist/domains/llm/models-dev-logo-slugs.es.js.map +1 -0
- package/dist/domains/llm/provider-logo-monogram.cjs.js +37 -0
- package/dist/domains/llm/provider-logo-monogram.cjs.js.map +1 -0
- package/dist/domains/llm/provider-logo-monogram.d.ts +1 -0
- package/dist/domains/llm/provider-logo-monogram.es.js +36 -0
- package/dist/domains/llm/provider-logo-monogram.es.js.map +1 -0
- package/dist/domains/llm/provider-logo.cjs.js +46 -17
- package/dist/domains/llm/provider-logo.cjs.js.map +1 -1
- package/dist/domains/llm/provider-logo.es.js +46 -17
- package/dist/domains/llm/provider-logo.es.js.map +1 -1
- package/dist/domains/llm/provider-map-icon.cjs.js +1 -1
- package/dist/domains/llm/provider-map-icon.es.js +1 -1
- package/dist/domains/llm.cjs.js +1 -1
- package/dist/domains/llm.es.js +1 -1
- package/dist/domains/logs/components/log-data-panel.cjs.js +11 -7
- package/dist/domains/logs/components/log-data-panel.cjs.js.map +1 -1
- package/dist/domains/logs/components/log-data-panel.es.js +11 -7
- package/dist/domains/logs/components/log-data-panel.es.js.map +1 -1
- package/dist/domains/logs/components/logs-error-content.cjs.js +1 -1
- package/dist/domains/logs/components/logs-error-content.es.js +1 -1
- package/dist/domains/logs/components/logs-list-view.cjs.js +2 -2
- package/dist/domains/logs/components/logs-list-view.es.js +2 -2
- package/dist/domains/logs/components/logs-saved-views.cjs.js +1 -1
- package/dist/domains/logs/components/logs-saved-views.es.js +1 -1
- package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
- package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
- package/dist/domains/logs/components/no-logs-info.cjs.js +3 -3
- package/dist/domains/logs/components/no-logs-info.cjs.js.map +1 -1
- package/dist/domains/logs/components/no-logs-info.es.js +3 -3
- package/dist/domains/logs/components/no-logs-info.es.js.map +1 -1
- package/dist/domains/logs/hooks/use-logs-filter-persistence.cjs.js +1 -1
- package/dist/domains/logs/hooks/use-logs-filter-persistence.es.js +1 -1
- package/dist/domains/logs.cjs.js +2 -2
- package/dist/domains/logs.es.js +2 -2
- package/dist/domains/mcps/components/mcp-app-tool-result.cjs.js +7 -8
- package/dist/domains/mcps/components/mcp-app-tool-result.cjs.js.map +1 -1
- package/dist/domains/mcps/components/mcp-app-tool-result.es.js +6 -7
- package/dist/domains/mcps/components/mcp-app-tool-result.es.js.map +1 -1
- package/dist/domains/mcps/components/mcp-app-viewer.cjs.js +2 -108
- package/dist/domains/mcps/components/mcp-app-viewer.es.js +1 -108
- package/dist/domains/mcps/hooks/use-mcp-app-tool-call.cjs.js +36 -0
- package/dist/domains/mcps/hooks/use-mcp-app-tool-call.cjs.js.map +1 -0
- package/dist/domains/mcps/hooks/use-mcp-app-tool-call.d.ts +1 -0
- package/dist/domains/mcps/hooks/use-mcp-app-tool-call.es.js +35 -0
- package/dist/domains/mcps/hooks/use-mcp-app-tool-call.es.js.map +1 -0
- package/dist/domains/memory/components/flame-graph.cjs.js +4 -4
- package/dist/domains/memory/components/flame-graph.es.js +4 -4
- package/dist/domains/memory/components/memory-studio-panel.cjs.js +6 -6
- package/dist/domains/memory/components/memory-studio-panel.es.js +6 -6
- package/dist/domains/memory/components/observation-detail-view.cjs.js +6 -6
- package/dist/domains/memory/components/observation-detail-view.es.js +6 -6
- package/dist/domains/memory/components/thread-context-progress.cjs.js +2 -2
- package/dist/domains/memory/components/thread-context-progress.es.js +2 -2
- package/dist/domains/memory/components.cjs.js +1 -1
- package/dist/domains/memory/components.es.js +1 -1
- package/dist/domains/metrics/components/agent-runs-card.cjs.js +7 -7
- package/dist/domains/metrics/components/agent-runs-card.es.js +7 -7
- package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.cjs.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.es.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-figure.cjs.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-figure.es.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-models-tab.cjs.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-models-tab.es.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-row-mark.cjs.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-row-mark.es.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-row-name.cjs.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-row-name.es.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-tab-body.cjs.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-tab-body.es.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-table.cjs.js +8 -8
- package/dist/domains/metrics/components/breakdown/breakdown-table.es.js +8 -8
- package/dist/domains/metrics/components/breakdown/breakdown-text.cjs.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-text.es.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.cjs.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.es.js +2 -2
- package/dist/domains/metrics/components/breakdown-card.cjs.js +4 -4
- package/dist/domains/metrics/components/breakdown-card.es.js +4 -4
- package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
- package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
- package/dist/domains/metrics/components/chart-area.cjs.js +1 -1
- package/dist/domains/metrics/components/chart-area.es.js +1 -1
- package/dist/domains/metrics/components/chart-card-error.cjs.js +2 -2
- package/dist/domains/metrics/components/chart-card-error.es.js +2 -2
- package/dist/domains/metrics/components/chart-card.cjs.js +21 -5
- package/dist/domains/metrics/components/chart-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/chart-card.es.js +21 -5
- package/dist/domains/metrics/components/chart-card.es.js.map +1 -1
- package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
- package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.cjs.js +5 -5
- package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js +5 -5
- package/dist/domains/metrics/components/failure-rate-card.cjs.js +7 -7
- package/dist/domains/metrics/components/failure-rate-card.es.js +7 -7
- package/dist/domains/metrics/components/kpi-card.cjs.js +1 -1
- package/dist/domains/metrics/components/kpi-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/kpi-card.es.js +1 -1
- package/dist/domains/metrics/components/kpi-card.es.js.map +1 -1
- package/dist/domains/metrics/components/latency-card.cjs.js +7 -7
- package/dist/domains/metrics/components/latency-card.es.js +7 -7
- package/dist/domains/metrics/components/metrics-time-range-chip.cjs.js +2 -2
- package/dist/domains/metrics/components/metrics-time-range-chip.es.js +2 -2
- package/dist/domains/metrics/components/scores-card.cjs.js +4 -4
- package/dist/domains/metrics/components/scores-card.es.js +4 -4
- package/dist/domains/metrics/components/token-usage-card.cjs.js +8 -8
- package/dist/domains/metrics/components/token-usage-card.es.js +8 -8
- package/dist/domains/metrics/components/trace-aggregate-card.cjs.js +1 -1
- package/dist/domains/metrics/components/trace-aggregate-card.es.js +1 -1
- package/dist/domains/metrics/components/trace-volume-card.cjs.js +4 -4
- package/dist/domains/metrics/components/trace-volume-card.es.js +4 -4
- package/dist/domains/metrics/components/usage-card.cjs.js +5 -5
- package/dist/domains/metrics/components/usage-card.es.js +5 -5
- package/dist/domains/metrics/components.cjs.js +9 -9
- package/dist/domains/metrics/components.es.js +9 -9
- package/dist/domains/metrics/drilldown.cjs.js +1 -1
- package/dist/domains/metrics/drilldown.es.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-activity.cjs.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-activity.es.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-latency.cjs.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-latency.es.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-scores.cjs.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-scores.es.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-span-aggregate.cjs.js +2 -2
- package/dist/domains/metrics/hooks/use-metrics-span-aggregate.es.js +2 -2
- package/dist/domains/metrics/hooks/use-metrics-trace-aggregate.cjs.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-trace-aggregate.es.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics.cjs.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics.es.js +1 -1
- package/dist/domains/metrics/hooks.cjs.js +5 -5
- package/dist/domains/metrics/hooks.es.js +5 -5
- package/dist/domains/metrics/lib/breakdown-table.cjs.js +2 -2
- package/dist/domains/metrics/lib/breakdown-table.es.js +2 -2
- package/dist/domains/metrics/lib/series-colors.cjs.js +279 -0
- package/dist/domains/metrics/lib/series-colors.cjs.js.map +1 -0
- package/dist/domains/metrics/lib/series-colors.d.ts +1 -0
- package/dist/domains/metrics/lib/series-colors.es.js +272 -0
- package/dist/domains/metrics/lib/series-colors.es.js.map +1 -0
- package/dist/domains/metrics/lib.cjs.js +9 -3
- package/dist/domains/metrics/lib.es.js +5 -4
- package/dist/domains/metrics.cjs.js +7 -1
- package/dist/domains/metrics.es.js +3 -2
- package/dist/domains/observability/components/observability-capability-gate.cjs.js +3 -3
- package/dist/domains/observability/components/observability-capability-gate.es.js +3 -3
- package/dist/domains/observability/components/observability-histogram.cjs.js +5 -5
- package/dist/domains/observability/components/observability-histogram.cjs.js.map +1 -1
- package/dist/domains/observability/components/observability-histogram.es.js +5 -5
- package/dist/domains/observability/components/observability-histogram.es.js.map +1 -1
- package/dist/domains/observability/components/observability-page-layout.cjs.js +2 -2
- package/dist/domains/observability/components/observability-page-layout.es.js +2 -2
- package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js +3 -3
- package/dist/domains/observability/hooks/use-observability-list-filters.es.js +3 -3
- package/dist/domains/observability/observability-list-url-state.cjs.js +1 -1
- package/dist/domains/observability/observability-list-url-state.es.js +1 -1
- package/dist/domains/observability/saved-view-state.cjs.js +3 -3
- package/dist/domains/observability/saved-view-state.es.js +3 -3
- package/dist/domains/observability/saved-views/observability-saved-views.cjs.js +1 -1
- package/dist/domains/observability/saved-views/observability-saved-views.es.js +1 -1
- package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js +1 -1
- package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js +1 -1
- package/dist/domains/observability/saved-views.cjs.js +2 -2
- package/dist/domains/observability/saved-views.es.js +2 -2
- package/dist/domains/observability.cjs.js +6 -6
- package/dist/domains/observability.es.js +6 -6
- package/dist/domains/review/components/review-status-badge.cjs.js +1 -1
- package/dist/domains/review/components/review-status-badge.es.js +1 -1
- package/dist/domains/scores/components/score-as-item-dialog.cjs.js +1 -1
- package/dist/domains/scores/components/score-as-item-dialog.es.js +1 -1
- package/dist/domains/scores/components/score-data-panel.cjs.js +7 -7
- package/dist/domains/scores/components/score-data-panel.cjs.js.map +1 -1
- package/dist/domains/scores/components/score-data-panel.es.js +7 -7
- package/dist/domains/scores/components/score-data-panel.es.js.map +1 -1
- package/dist/domains/scores/components/span-scoring.cjs.js +4 -4
- package/dist/domains/scores/components/span-scoring.es.js +4 -4
- package/dist/domains/scores/components/trace-scores-list.cjs.js +5 -5
- package/dist/domains/scores/components/trace-scores-list.es.js +5 -5
- package/dist/domains/scores/components/trace-scores-tab.cjs.js +15 -19
- package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js +15 -19
- package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
- package/dist/domains/scores/components.cjs.js +1 -1
- package/dist/domains/scores/components.es.js +1 -1
- package/dist/domains/skills/skill-simple-form.cjs.js +4 -4
- package/dist/domains/skills/skill-simple-form.es.js +4 -4
- package/dist/domains/spans/components/spans-explorer-body.cjs.js +6 -6
- package/dist/domains/spans/components/spans-explorer-body.es.js +7 -7
- package/dist/domains/spans/components/spans-filter-bar.cjs.js +3 -3
- package/dist/domains/spans/components/spans-filter-bar.es.js +3 -3
- package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js +2 -2
- package/dist/domains/spans/hooks/use-spans-filter-bar.es.js +2 -2
- package/dist/domains/spans/hooks/use-spans-list-source.cjs.js +1 -1
- package/dist/domains/spans/hooks/use-spans-list-source.es.js +1 -1
- package/dist/domains/spans/hooks.cjs.js +1 -1
- package/dist/domains/spans/hooks.es.js +1 -1
- package/dist/domains/threads/components/threads-explorer-body.cjs.js +6 -6
- package/dist/domains/threads/components/threads-explorer-body.es.js +7 -7
- package/dist/domains/threads/components/threads-filter-bar.cjs.js +3 -3
- package/dist/domains/threads/components/threads-filter-bar.es.js +3 -3
- package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js +2 -2
- package/dist/domains/threads/hooks/use-threads-filter-bar.es.js +2 -2
- package/dist/domains/threads/hooks/use-threads-list-source.cjs.js +1 -1
- package/dist/domains/threads/hooks/use-threads-list-source.es.js +1 -1
- package/dist/domains/threads/hooks.cjs.js +1 -1
- package/dist/domains/threads/hooks.es.js +1 -1
- package/dist/domains/traces/components/columns-menu/columns-menu.cjs.js +1 -1
- package/dist/domains/traces/components/columns-menu/columns-menu.es.js +2 -2
- package/dist/domains/traces/components/feedback-thread.cjs.js +9 -9
- package/dist/domains/traces/components/feedback-thread.es.js +9 -9
- package/dist/domains/traces/components/format-trace-thread-messages.cjs.js +1 -1
- package/dist/domains/traces/components/format-trace-thread-messages.es.js +1 -1
- package/dist/domains/traces/components/no-traces-info.cjs.js +2 -2
- package/dist/domains/traces/components/no-traces-info.cjs.js.map +1 -1
- package/dist/domains/traces/components/no-traces-info.es.js +2 -2
- package/dist/domains/traces/components/no-traces-info.es.js.map +1 -1
- package/dist/domains/traces/components/shared.cjs.js +3 -3
- package/dist/domains/traces/components/shared.es.js +3 -3
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +23 -23
- package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js +23 -23
- package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/span-details-view.cjs.js +3 -3
- package/dist/domains/traces/components/span-details-view.es.js +3 -3
- package/dist/domains/traces/components/span-outcome.cjs.js +1 -1
- package/dist/domains/traces/components/span-outcome.es.js +1 -1
- package/dist/domains/traces/components/span-outcome.utils.cjs.js +3 -3
- package/dist/domains/traces/components/span-outcome.utils.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-outcome.utils.es.js +3 -3
- package/dist/domains/traces/components/span-outcome.utils.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +5 -5
- package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +5 -5
- package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +4 -4
- package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +4 -4
- package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +7 -7
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +7 -7
- package/dist/domains/traces/components/span-payload/span-payload-attachment.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-attachment.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-json.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +14 -9
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +14 -9
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-registry.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-registry.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +7 -7
- package/dist/domains/traces/components/span-payload/span-payload-section.es.js +7 -7
- package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-processor-mutations.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-processor-mutations.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-signal-details.cjs.js +4 -4
- package/dist/domains/traces/components/span-payload/span-signal-details.es.js +4 -4
- package/dist/domains/traces/components/span-payload/span-tools-section.cjs.js +6 -6
- package/dist/domains/traces/components/span-payload/span-tools-section.es.js +6 -6
- package/dist/domains/traces/components/span-payload.cjs.js +4 -4
- package/dist/domains/traces/components/span-payload.es.js +4 -4
- package/dist/domains/traces/components/span-prompt-changes.cjs.js +17 -10
- package/dist/domains/traces/components/span-prompt-changes.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-prompt-changes.es.js +17 -10
- package/dist/domains/traces/components/span-prompt-changes.es.js.map +1 -1
- package/dist/domains/traces/components/span-rows.cjs.js +1 -1
- package/dist/domains/traces/components/span-rows.es.js +1 -1
- package/dist/domains/traces/components/span-summary-description.cjs.js +3 -3
- package/dist/domains/traces/components/span-summary-description.es.js +3 -3
- package/dist/domains/traces/components/span-timeline-row.cjs.js +10 -10
- package/dist/domains/traces/components/span-timeline-row.es.js +10 -10
- package/dist/domains/traces/components/span-timing-hover-card.cjs.js +3 -3
- package/dist/domains/traces/components/span-timing-hover-card.es.js +3 -3
- package/dist/domains/traces/components/span-token-usage.cjs.js +2 -2
- package/dist/domains/traces/components/span-token-usage.es.js +2 -2
- package/dist/domains/traces/components/span-token-usage.utils.cjs.js +2 -2
- package/dist/domains/traces/components/span-token-usage.utils.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-token-usage.utils.es.js +2 -2
- package/dist/domains/traces/components/span-token-usage.utils.es.js.map +1 -1
- package/dist/domains/traces/components/span-type-badge.cjs.js +1 -1
- package/dist/domains/traces/components/span-type-badge.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +3 -3
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +3 -3
- package/dist/domains/traces/components/thread-trace/thread-trace-list.cjs.js +2 -2
- package/dist/domains/traces/components/thread-trace/thread-trace-list.es.js +2 -2
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +4 -4
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +4 -4
- package/dist/domains/traces/components/thread-trace/thread-trace-root.cjs.js +3 -3
- package/dist/domains/traces/components/thread-trace/thread-trace-root.es.js +3 -3
- package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js +5 -5
- package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js +5 -5
- package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +6 -6
- package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +6 -6
- package/dist/domains/traces/components/thread-trace.cjs.js +3 -3
- package/dist/domains/traces/components/thread-trace.es.js +3 -3
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js +7 -7
- package/dist/domains/traces/components/thread-view-by-trace.es.js +7 -7
- package/dist/domains/traces/components/thread-view-skeleton.cjs.js +5 -5
- package/dist/domains/traces/components/thread-view-skeleton.es.js +5 -5
- package/dist/domains/traces/components/timeline-name-col.cjs.js +6 -6
- package/dist/domains/traces/components/timeline-name-col.es.js +6 -6
- package/dist/domains/traces/components/timeline-timing-col.cjs.js +4 -4
- package/dist/domains/traces/components/timeline-timing-col.es.js +4 -4
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +5 -5
- package/dist/domains/traces/components/trace-columns-menu.es.js +5 -5
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +13 -13
- package/dist/domains/traces/components/trace-data-panel-view.es.js +13 -13
- package/dist/domains/traces/components/trace-data-panel.cjs.js +2 -2
- package/dist/domains/traces/components/trace-data-panel.es.js +2 -2
- package/dist/domains/traces/components/trace-details-view.cjs.js +3 -3
- package/dist/domains/traces/components/trace-details-view.es.js +3 -3
- package/dist/domains/traces/components/trace-error-cell.cjs.js +2 -2
- package/dist/domains/traces/components/trace-error-cell.es.js +2 -2
- package/dist/domains/traces/components/trace-error-summary.cjs.js +2 -2
- package/dist/domains/traces/components/trace-error-summary.es.js +2 -2
- package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
- package/dist/domains/traces/components/trace-id-button.es.js +1 -1
- package/dist/domains/traces/components/trace-messages-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-messages-panel.es.js +1 -1
- package/dist/domains/traces/components/trace-messages-skeleton.cjs.js +1 -1
- package/dist/domains/traces/components/trace-messages-skeleton.es.js +1 -1
- package/dist/domains/traces/components/trace-span-panel.cjs.js +3 -3
- package/dist/domains/traces/components/trace-span-panel.es.js +3 -3
- package/dist/domains/traces/components/trace-span-timeline-markers.cjs.js +6 -6
- package/dist/domains/traces/components/trace-span-timeline-markers.es.js +6 -6
- package/dist/domains/traces/components/trace-span-timeline.cjs.js +5 -5
- package/dist/domains/traces/components/trace-span-timeline.es.js +5 -5
- package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js +2 -2
- package/dist/domains/traces/components/trace-span-tree-skeleton.es.js +2 -2
- package/dist/domains/traces/components/trace-span-tree.cjs.js +2 -2
- package/dist/domains/traces/components/trace-span-tree.es.js +2 -2
- package/dist/domains/traces/components/trace-status-value.cjs.js +1 -1
- package/dist/domains/traces/components/trace-status-value.es.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.cjs.js +5 -5
- package/dist/domains/traces/components/trace-summary-description.es.js +5 -5
- package/dist/domains/traces/components/trace-thread-item-view.cjs.js +5 -5
- package/dist/domains/traces/components/trace-thread-item-view.es.js +5 -5
- package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
- package/dist/domains/traces/components/trace-timeline.cjs.js +1 -1
- package/dist/domains/traces/components/trace-timeline.es.js +1 -1
- package/dist/domains/traces/components/traces-error-content.cjs.js +2 -2
- package/dist/domains/traces/components/traces-error-content.es.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-body.cjs.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-body.es.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.es.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.es.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.es.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.cjs.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.es.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js +6 -6
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js +6 -6
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +3 -3
- package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js +1 -1
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +2 -2
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +2 -2
- package/dist/domains/traces/components/traces-explorer.cjs.js +4 -4
- package/dist/domains/traces/components/traces-explorer.es.js +4 -4
- package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +2 -2
- package/dist/domains/traces/components/traces-list-mode-toggle.es.js +2 -2
- package/dist/domains/traces/components/traces-list-view.cjs.js +10 -10
- package/dist/domains/traces/components/traces-list-view.es.js +10 -10
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -2
- package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -2
- package/dist/domains/traces/components/traces-spans-switch.cjs.js +3 -3
- package/dist/domains/traces/components/traces-spans-switch.es.js +3 -3
- package/dist/domains/traces/components.cjs.js +15 -15
- package/dist/domains/traces/components.es.js +15 -15
- package/dist/domains/traces/hooks/use-download-trace-json.cjs.js +1 -1
- package/dist/domains/traces/hooks/use-download-trace-json.es.js +1 -1
- package/dist/domains/traces/hooks/use-traces-list-source.cjs.js +1 -1
- package/dist/domains/traces/hooks/use-traces-list-source.es.js +1 -1
- package/dist/domains/traces/hooks.cjs.js +4 -4
- package/dist/domains/traces/hooks.es.js +4 -4
- package/dist/domains/traces/utils/span-utils.cjs.js +2 -2
- package/dist/domains/traces/utils/span-utils.cjs.js.map +1 -1
- package/dist/domains/traces/utils/span-utils.es.js +2 -2
- package/dist/domains/traces/utils/span-utils.es.js.map +1 -1
- package/dist/domains/traces/utils.cjs.js +2 -2
- package/dist/domains/traces/utils.es.js +2 -2
- package/dist/domains/traces.cjs.js +2 -2
- package/dist/domains/traces.es.js +2 -2
- package/dist/domains/workflows/components/workflow-combobox.cjs.js +4 -3
- package/dist/domains/workflows/components/workflow-combobox.cjs.js.map +1 -1
- package/dist/domains/workflows/components/workflow-combobox.es.js +4 -3
- package/dist/domains/workflows/components/workflow-combobox.es.js.map +1 -1
- package/dist/domains/workflows/components/workflow-entity-header.cjs.js +6 -6
- package/dist/domains/workflows/components/workflow-entity-header.cjs.js.map +1 -1
- package/dist/domains/workflows/components/workflow-entity-header.es.js +6 -6
- package/dist/domains/workflows/components/workflow-entity-header.es.js.map +1 -1
- package/dist/domains/workflows/components/workflow-information.cjs.js +10 -10
- package/dist/domains/workflows/components/workflow-information.es.js +10 -10
- package/dist/domains/workflows/components/workflow-layout.cjs.js +3 -3
- package/dist/domains/workflows/components/workflow-layout.es.js +2 -2
- package/dist/domains/workflows/components/workflow-run-status-icon.cjs.js +3 -3
- package/dist/domains/workflows/components/workflow-run-status-icon.es.js +3 -3
- package/dist/domains/workflows/components/workflow-step-detail.cjs.js +4 -4
- package/dist/domains/workflows/components/workflow-step-detail.es.js +4 -4
- package/dist/domains/workflows/components/workflows-list/no-workflows-info.cjs.js +2 -2
- package/dist/domains/workflows/components/workflows-list/no-workflows-info.es.js +2 -2
- package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +11 -11
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +11 -11
- package/dist/domains/workflows/context/playground-workflow-run-provider.cjs.js +1 -1
- package/dist/domains/workflows/context/playground-workflow-run-provider.es.js +1 -1
- package/dist/domains/workflows/context/use-stream-for-run.cjs.js +1 -1
- package/dist/domains/workflows/context/use-stream-for-run.es.js +1 -1
- package/dist/domains/workflows/context/workflow-run-provider.cjs.js +1 -1
- package/dist/domains/workflows/context/workflow-run-provider.es.js +1 -1
- package/dist/domains/workflows/runs/workflow-run-details.cjs.js +2 -2
- package/dist/domains/workflows/runs/workflow-run-details.es.js +2 -2
- package/dist/domains/workflows/runs/workflow-run-list.cjs.js +26 -21
- package/dist/domains/workflows/runs/workflow-run-list.cjs.js.map +1 -1
- package/dist/domains/workflows/runs/workflow-run-list.es.js +26 -21
- package/dist/domains/workflows/runs/workflow-run-list.es.js.map +1 -1
- package/dist/domains/workflows/workflow/data/use-workflow-data.cjs.js +1 -1
- package/dist/domains/workflows/workflow/data/use-workflow-data.es.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +5 -5
- package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +5 -5
- package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
- package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
- package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +8 -8
- package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +8 -8
- package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js.map +1 -1
- package/dist/domains/workflows/workflow/use-workflow-graph-nodes.cjs.js +1 -1
- package/dist/domains/workflows/workflow/use-workflow-graph-nodes.es.js +1 -1
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +1 -1
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +1 -1
- package/dist/domains/workflows/workflow/use-workflow-trigger.cjs.js +3 -3
- package/dist/domains/workflows/workflow/use-workflow-trigger.es.js +3 -3
- package/dist/domains/workflows/workflow/utils.cjs.js +2 -2
- package/dist/domains/workflows/workflow/utils.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-cancel-button.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-cancel-button.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-card.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-card.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-step-controls.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-step-controls.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js +6 -6
- package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +6 -6
- package/dist/domains/workflows/workflow/workflow-graph-groups.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-groups.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-groups.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-groups.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +4 -4
- package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +4 -4
- package/dist/domains/workflows/workflow/workflow-graph-layout.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-layout.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-graph.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +6 -6
- package/dist/domains/workflows/workflow/workflow-input-data.es.js +6 -6
- package/dist/domains/workflows/workflow/workflow-input-type-toggle.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-input-type-toggle.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +3 -3
- package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +3 -3
- package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +4 -4
- package/dist/domains/workflows/workflow/workflow-run-data.es.js +4 -4
- package/dist/domains/workflows/workflow/workflow-run-error.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-run-error.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-run-header.cjs.js +6 -6
- package/dist/domains/workflows/workflow/workflow-run-header.es.js +6 -6
- package/dist/domains/workflows/workflow/workflow-status.cjs.js +7 -7
- package/dist/domains/workflows/workflow/workflow-status.es.js +7 -7
- package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-step-node-utils.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-step-node-utils.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-steps-status.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-steps-status.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +10 -10
- package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +10 -10
- package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +12 -12
- package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +12 -12
- package/dist/domains/workflows/workflow/workflow-timeline-row.cjs.js +4 -4
- package/dist/domains/workflows/workflow/workflow-timeline-row.es.js +4 -4
- package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +9 -9
- package/dist/domains/workflows/workflow/workflow-timeline.es.js +9 -9
- package/dist/domains/workflows/workflow/workflow-trigger-form.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-trigger-form.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-trigger-header.cjs.js +3 -3
- package/dist/domains/workflows/workflow/workflow-trigger-header.es.js +3 -3
- package/dist/domains/workflows/workflow/workflow-trigger.cjs.js +5 -5
- package/dist/domains/workflows/workflow/workflow-trigger.es.js +5 -5
- package/dist/domains/workflows.cjs.js +4 -4
- package/dist/domains/workflows.es.js +4 -4
- package/dist/domains/workspace/components/mount-icon.cjs.js +1 -1
- package/dist/domains/workspace/components/mount-icon.es.js +1 -1
- package/dist/domains/workspace/components/workspace-active-file.cjs.js +4 -4
- package/dist/domains/workspace/components/workspace-active-file.es.js +4 -4
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +10 -10
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +10 -10
- package/dist/domains/workspace/components/workspace-add-skill.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill.es.js +1 -1
- package/dist/domains/workspace/components/workspace-context.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-context.es.js +1 -1
- package/dist/domains/workspace/components/workspace-create-directory.cjs.js +4 -4
- package/dist/domains/workspace/components/workspace-create-directory.es.js +4 -4
- package/dist/domains/workspace/components/workspace-error.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-error.es.js +1 -1
- package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +2 -2
- package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
- package/dist/domains/workspace/components/workspace-parts.cjs.js +5 -5
- package/dist/domains/workspace/components/workspace-parts.es.js +5 -5
- package/dist/domains/workspace/components/workspace-search.cjs.js +17 -20
- package/dist/domains/workspace/components/workspace-search.cjs.js.map +1 -1
- package/dist/domains/workspace/components/workspace-search.es.js +18 -21
- package/dist/domains/workspace/components/workspace-search.es.js.map +1 -1
- package/dist/domains/workspace/components/workspace-tree-view.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-tree-view.es.js +1 -1
- package/dist/domains/workspace/components/workspace-tree.cjs.js +11 -11
- package/dist/domains/workspace/components/workspace-tree.cjs.js.map +1 -1
- package/dist/domains/workspace/components/workspace-tree.es.js +11 -11
- package/dist/domains/workspace/components/workspace-tree.es.js.map +1 -1
- package/dist/domains/workspace/components/workspace.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace.es.js +1 -1
- package/dist/domains/workspace.cjs.js +3 -3
- package/dist/domains/workspace.es.js +3 -3
- package/dist/{dropdown-menu-B4jY3J9e.js → dropdown-menu-DKoWI8kD.js} +2 -2
- package/dist/{dropdown-menu-B4jY3J9e.js.map → dropdown-menu-DKoWI8kD.js.map} +1 -1
- package/dist/{dropdown-menu-BETTTPBB.cjs → dropdown-menu-Dx-jCOIv.cjs} +2 -2
- package/dist/{dropdown-menu-BETTTPBB.cjs.map → dropdown-menu-Dx-jCOIv.cjs.map} +1 -1
- package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +4 -4
- package/dist/ee/signals/components/entity-index-compact-grid.es.js +4 -4
- package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +1 -1
- package/dist/ee/signals/components/entity-index-status.cjs.js +2 -2
- package/dist/ee/signals/components/entity-index-status.es.js +2 -2
- package/dist/ee/signals/components/signals-empty-state.cjs.js +12 -21
- package/dist/ee/signals/components/signals-empty-state.cjs.js.map +1 -1
- package/dist/ee/signals/components/signals-empty-state.es.js +12 -21
- package/dist/ee/signals/components/signals-empty-state.es.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +5 -5
- package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +5 -5
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +13 -13
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +14 -14
- package/dist/ee/signals/examples-pager.cjs.js +2 -2
- package/dist/ee/signals/examples-pager.es.js +2 -2
- package/dist/ee/signals/flow-card.cjs.js +4 -4
- package/dist/ee/signals/flow-card.es.js +4 -4
- package/dist/ee/signals/lifeline-point.cjs.js +2 -2
- package/dist/ee/signals/lifeline-point.es.js +2 -2
- package/dist/ee/signals/lifeline-row.cjs.js +6 -6
- package/dist/ee/signals/lifeline-row.cjs.js.map +1 -1
- package/dist/ee/signals/lifeline-row.es.js +6 -6
- package/dist/ee/signals/lifeline-row.es.js.map +1 -1
- package/dist/ee/signals/noise-detail-panel.cjs.js +6 -6
- package/dist/ee/signals/noise-detail-panel.es.js +6 -6
- package/dist/ee/signals/sankey-signals-data.cjs.js +9 -5
- package/dist/ee/signals/sankey-signals-data.cjs.js.map +1 -1
- package/dist/ee/signals/sankey-signals-data.es.js +9 -5
- package/dist/ee/signals/sankey-signals-data.es.js.map +1 -1
- package/dist/ee/signals/sankey-signals.cjs.js +21 -12
- package/dist/ee/signals/sankey-signals.cjs.js.map +1 -1
- package/dist/ee/signals/sankey-signals.es.js +21 -12
- package/dist/ee/signals/sankey-signals.es.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +4 -4
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +4 -4
- package/dist/ee/signals/settings/trace-signal-settings.cjs.js +7 -7
- package/dist/ee/signals/settings/trace-signal-settings.es.js +7 -7
- package/dist/ee/signals/signal-delta-column.cjs.js +3 -3
- package/dist/ee/signals/signal-delta-column.es.js +3 -3
- package/dist/ee/signals/signal-lifelines.cjs.js +5 -5
- package/dist/ee/signals/signal-lifelines.es.js +5 -5
- package/dist/ee/signals/signals-error-state.cjs.js +2 -2
- package/dist/ee/signals/signals-error-state.es.js +2 -2
- package/dist/ee/signals/snapshot-summary.cjs.js +15 -0
- package/dist/ee/signals/snapshot-summary.cjs.js.map +1 -0
- package/dist/ee/signals/snapshot-summary.d.ts +1 -0
- package/dist/ee/signals/snapshot-summary.es.js +14 -0
- package/dist/ee/signals/snapshot-summary.es.js.map +1 -0
- package/dist/ee/signals/snapshot-timeline.cjs.js +4 -4
- package/dist/ee/signals/snapshot-timeline.cjs.js.map +1 -1
- package/dist/ee/signals/snapshot-timeline.es.js +4 -4
- package/dist/ee/signals/snapshot-timeline.es.js.map +1 -1
- package/dist/ee/signals/sortable-signal-headers.cjs.js +6 -6
- package/dist/ee/signals/sortable-signal-headers.es.js +6 -6
- package/dist/ee/signals/theme-compare.cjs.js +15 -7
- package/dist/ee/signals/theme-compare.cjs.js.map +1 -1
- package/dist/ee/signals/theme-compare.es.js +15 -7
- package/dist/ee/signals/theme-compare.es.js.map +1 -1
- package/dist/ee/signals/theme-detail-panel.cjs.js +13 -17
- package/dist/ee/signals/theme-detail-panel.cjs.js.map +1 -1
- package/dist/ee/signals/theme-detail-panel.es.js +13 -17
- package/dist/ee/signals/theme-detail-panel.es.js.map +1 -1
- package/dist/ee/signals/theme-filter-banner.cjs.js +7 -7
- package/dist/ee/signals/theme-filter-banner.cjs.js.map +1 -1
- package/dist/ee/signals/theme-filter-banner.es.js +7 -7
- package/dist/ee/signals/theme-filter-banner.es.js.map +1 -1
- package/dist/ee/signals/theme-lifelines.cjs.js +8 -5
- package/dist/ee/signals/theme-lifelines.cjs.js.map +1 -1
- package/dist/ee/signals/theme-lifelines.es.js +8 -5
- package/dist/ee/signals/theme-lifelines.es.js.map +1 -1
- package/dist/ee/signals/theme-trend-chart.cjs.js +3 -3
- package/dist/ee/signals/theme-trend-chart.cjs.js.map +1 -1
- package/dist/ee/signals/theme-trend-chart.es.js +3 -3
- package/dist/ee/signals/theme-trend-chart.es.js.map +1 -1
- package/dist/ee/signals/trace-insight-view.cjs.js +11 -13
- package/dist/ee/signals/trace-insight-view.cjs.js.map +1 -1
- package/dist/ee/signals/trace-insight-view.es.js +11 -13
- package/dist/ee/signals/trace-insight-view.es.js.map +1 -1
- package/dist/ee/signals/trace-intelligence-explainer.cjs.js +10 -15
- package/dist/ee/signals/trace-intelligence-explainer.cjs.js.map +1 -1
- package/dist/ee/signals/trace-intelligence-explainer.es.js +10 -15
- package/dist/ee/signals/trace-intelligence-explainer.es.js.map +1 -1
- package/dist/ee/signals/view-mode-tab.cjs.js +2 -2
- package/dist/ee/signals/view-mode-tab.es.js +2 -2
- package/dist/ee/signals.cjs.js +5 -5
- package/dist/ee/signals.es.js +5 -5
- package/dist/ee/topics/components/topic-trace-details-panel.cjs.js +1 -1
- package/dist/ee/topics/components/topic-trace-details-panel.es.js +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +4 -4
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +4 -4
- package/dist/ee/topics/components/topics-layout.cjs.js +1 -1
- package/dist/ee/topics/components/topics-layout.es.js +1 -1
- package/dist/{field-error-id-DBSuJ3HM.js → field-error-id-6ZynvsRO.js} +2 -2
- package/dist/{field-error-id-DBSuJ3HM.js.map → field-error-id-6ZynvsRO.js.map} +1 -1
- package/dist/{field-error-id-nGAF0330.cjs → field-error-id-VimPQI_b.cjs} +2 -2
- package/dist/{field-error-id-nGAF0330.cjs.map → field-error-id-VimPQI_b.cjs.map} +1 -1
- package/dist/{filter-bar-chip-Cg-UbIwP.cjs → filter-bar-chip-DFsbUZ-V.cjs} +10 -10
- package/dist/{filter-bar-chip-Cg-UbIwP.cjs.map → filter-bar-chip-DFsbUZ-V.cjs.map} +1 -1
- package/dist/{filter-bar-chip-CABeKrtf.js → filter-bar-chip-NBtfDca9.js} +11 -11
- package/dist/{filter-bar-chip-CABeKrtf.js.map → filter-bar-chip-NBtfDca9.js.map} +1 -1
- package/dist/{filter-bar-time-range-qlV8p7hp.js → filter-bar-time-range-D9SnzR2J.js} +3 -3
- package/dist/{filter-bar-time-range-qlV8p7hp.js.map → filter-bar-time-range-D9SnzR2J.js.map} +1 -1
- package/dist/{filter-bar-time-range-zdM024JD.cjs → filter-bar-time-range-DlVNjw43.cjs} +3 -3
- package/dist/{filter-bar-time-range-zdM024JD.cjs.map → filter-bar-time-range-DlVNjw43.cjs.map} +1 -1
- package/dist/hooks/use-clock.cjs.js +34 -0
- package/dist/hooks/use-clock.cjs.js.map +1 -0
- package/dist/hooks/use-clock.d.ts +1 -0
- package/dist/hooks/use-clock.es.js +33 -0
- package/dist/hooks/use-clock.es.js.map +1 -0
- package/dist/hooks/use-copy-to-clipboard.cjs.js +1 -1
- package/dist/hooks/use-copy-to-clipboard.es.js +1 -1
- package/dist/hooks/use-text-highlight.cjs.js +3 -5
- package/dist/hooks/use-text-highlight.cjs.js.map +1 -1
- package/dist/hooks/use-text-highlight.es.js +1 -3
- package/dist/hooks/use-text-highlight.es.js.map +1 -1
- package/dist/icons/ByteDanceIcon.cjs.js +37 -0
- package/dist/icons/ByteDanceIcon.cjs.js.map +1 -0
- package/dist/icons/ByteDanceIcon.d.ts +1 -0
- package/dist/icons/ByteDanceIcon.es.js +34 -0
- package/dist/icons/ByteDanceIcon.es.js.map +1 -0
- package/dist/icons/CohereBrandIcon.cjs.js +34 -0
- package/dist/icons/CohereBrandIcon.cjs.js.map +1 -0
- package/dist/icons/CohereBrandIcon.d.ts +1 -0
- package/dist/icons/CohereBrandIcon.es.js +31 -0
- package/dist/icons/CohereBrandIcon.es.js.map +1 -0
- package/dist/icons/FireworksIcon.cjs.js +22 -0
- package/dist/icons/FireworksIcon.cjs.js.map +1 -0
- package/dist/icons/FireworksIcon.d.ts +1 -0
- package/dist/icons/FireworksIcon.es.js +19 -0
- package/dist/icons/FireworksIcon.es.js.map +1 -0
- package/dist/icons/Icon.cjs.js +1 -1
- package/dist/icons/Icon.es.js +1 -1
- package/dist/icons/LongCatIcon.cjs.js +22 -0
- package/dist/icons/LongCatIcon.cjs.js.map +1 -0
- package/dist/icons/LongCatIcon.d.ts +1 -0
- package/dist/icons/LongCatIcon.es.js +19 -0
- package/dist/icons/LongCatIcon.es.js.map +1 -0
- package/dist/icons/MicrosoftIcon.cjs.js +34 -0
- package/dist/icons/MicrosoftIcon.cjs.js.map +1 -0
- package/dist/icons/MicrosoftIcon.d.ts +1 -0
- package/dist/icons/MicrosoftIcon.es.js +31 -0
- package/dist/icons/MicrosoftIcon.es.js.map +1 -0
- package/dist/icons/MorphIcon.cjs.js +20 -0
- package/dist/icons/MorphIcon.cjs.js.map +1 -0
- package/dist/icons/MorphIcon.d.ts +1 -0
- package/dist/icons/MorphIcon.es.js +17 -0
- package/dist/icons/MorphIcon.es.js.map +1 -0
- package/dist/icons/NousResearchIcon.cjs.js +19 -0
- package/dist/icons/NousResearchIcon.cjs.js.map +1 -0
- package/dist/icons/NousResearchIcon.d.ts +1 -0
- package/dist/icons/NousResearchIcon.es.js +16 -0
- package/dist/icons/NousResearchIcon.es.js.map +1 -0
- package/dist/icons/NovaIcon.cjs.js +41 -0
- package/dist/icons/NovaIcon.cjs.js.map +1 -0
- package/dist/icons/NovaIcon.d.ts +1 -0
- package/dist/icons/NovaIcon.es.js +38 -0
- package/dist/icons/NovaIcon.es.js.map +1 -0
- package/dist/icons/PerplexityIcon.cjs.js +21 -0
- package/dist/icons/PerplexityIcon.cjs.js.map +1 -0
- package/dist/icons/PerplexityIcon.d.ts +1 -0
- package/dist/icons/PerplexityIcon.es.js +18 -0
- package/dist/icons/PerplexityIcon.es.js.map +1 -0
- package/dist/icons/SakanaIcon.cjs.js +20 -0
- package/dist/icons/SakanaIcon.cjs.js.map +1 -0
- package/dist/icons/SakanaIcon.d.ts +1 -0
- package/dist/icons/SakanaIcon.es.js +17 -0
- package/dist/icons/SakanaIcon.es.js.map +1 -0
- package/dist/icons/StepFunIcon.cjs.js +35 -0
- package/dist/icons/StepFunIcon.cjs.js.map +1 -0
- package/dist/icons/StepFunIcon.d.ts +1 -0
- package/dist/icons/StepFunIcon.es.js +32 -0
- package/dist/icons/StepFunIcon.es.js.map +1 -0
- package/dist/icons/TencentIcon.cjs.js +21 -0
- package/dist/icons/TencentIcon.cjs.js.map +1 -0
- package/dist/icons/TencentIcon.d.ts +1 -0
- package/dist/icons/TencentIcon.es.js +18 -0
- package/dist/icons/TencentIcon.es.js.map +1 -0
- package/dist/icons/UpstageIcon.cjs.js +36 -0
- package/dist/icons/UpstageIcon.cjs.js.map +1 -0
- package/dist/icons/UpstageIcon.d.ts +1 -0
- package/dist/icons/UpstageIcon.es.js +33 -0
- package/dist/icons/UpstageIcon.es.js.map +1 -0
- package/dist/{input-2hRXcZIu.cjs → input-BpnUsQSt.cjs} +4 -4
- package/dist/{input-2hRXcZIu.cjs.map → input-BpnUsQSt.cjs.map} +1 -1
- package/dist/{input-0l1uzOBZ.js → input-Cyit5ZSc.js} +4 -4
- package/dist/{input-0l1uzOBZ.js.map → input-Cyit5ZSc.js.map} +1 -1
- package/dist/{input-group-DVJLZDBL.cjs → input-group-DBCilXjT.cjs} +4 -4
- package/dist/{input-group-DVJLZDBL.cjs.map → input-group-DBCilXjT.cjs.map} +1 -1
- package/dist/{input-group-QKKV_ouF.js → input-group-NV4ZzKOk.js} +4 -4
- package/dist/{input-group-QKKV_ouF.js.map → input-group-NV4ZzKOk.js.map} +1 -1
- package/dist/layout/tabbed-container.cjs.js +1 -1
- package/dist/layout/tabbed-container.es.js +1 -1
- package/dist/lib/form/auto-form.cjs.js +1 -1
- package/dist/lib/form/auto-form.es.js +1 -1
- package/dist/lib/form/components/array-element-wrapper.cjs.js +4 -4
- package/dist/lib/form/components/array-element-wrapper.es.js +4 -4
- package/dist/lib/form/components/array-wrapper.cjs.js +2 -2
- package/dist/lib/form/components/array-wrapper.es.js +2 -2
- package/dist/lib/form/components/boolean-field.cjs.js +1 -1
- package/dist/lib/form/components/boolean-field.es.js +1 -1
- package/dist/lib/form/components/date-field.cjs.js +5 -5
- package/dist/lib/form/components/date-field.es.js +5 -5
- package/dist/lib/form/components/error-message.cjs.js +1 -1
- package/dist/lib/form/components/error-message.es.js +1 -1
- package/dist/lib/form/components/form-submit-row.cjs.js +2 -2
- package/dist/lib/form/components/form-submit-row.es.js +2 -2
- package/dist/lib/form/components/number-field.cjs.js +1 -1
- package/dist/lib/form/components/number-field.es.js +1 -1
- package/dist/lib/form/components/object-wrapper.cjs.js +3 -3
- package/dist/lib/form/components/object-wrapper.es.js +3 -3
- package/dist/lib/form/components/record-field.cjs.js +2 -2
- package/dist/lib/form/components/record-field.es.js +2 -2
- package/dist/lib/form/components/select-field.cjs.js +1 -1
- package/dist/lib/form/components/select-field.es.js +1 -1
- package/dist/lib/form/components/string-field.cjs.js +1 -1
- package/dist/lib/form/components/string-field.es.js +1 -1
- package/dist/lib/form/components/submit-button.cjs.js +1 -1
- package/dist/lib/form/components/submit-button.es.js +1 -1
- package/dist/lib/form/components/union-field.cjs.js +1 -1
- package/dist/lib/form/components/union-field.es.js +1 -1
- package/dist/lib/form/dynamic-form.cjs.js +2 -2
- package/dist/lib/form/dynamic-form.es.js +2 -2
- package/dist/{list-search-CkhsTFdG.js → list-search-DUcIMJTk.js} +2 -2
- package/dist/{list-search-CkhsTFdG.js.map → list-search-DUcIMJTk.js.map} +1 -1
- package/dist/{list-search-BtRno5As.cjs → list-search-yF02rvZt.cjs} +2 -2
- package/dist/{list-search-BtRno5As.cjs.map → list-search-yF02rvZt.cjs.map} +1 -1
- package/dist/mcp-app-viewer-BV7FI498.js +2051 -0
- package/dist/mcp-app-viewer-BV7FI498.js.map +1 -0
- package/dist/mcp-app-viewer-M3-pqAlo.cjs +2058 -0
- package/dist/mcp-app-viewer-M3-pqAlo.cjs.map +1 -0
- package/dist/new/layout/page-header.cjs.js +1 -1
- package/dist/new/layout/page-header.es.js +1 -1
- package/dist/new/settings.cjs.js +1 -1
- package/dist/new/settings.es.js +1 -1
- package/dist/{observability-saved-views-CjKTEp1V.js → observability-saved-views-Ch53fh5_.js} +9 -9
- package/dist/{observability-saved-views-CjKTEp1V.js.map → observability-saved-views-Ch53fh5_.js.map} +1 -1
- package/dist/{observability-saved-views-Daizz4tU.cjs → observability-saved-views-DgABvgat.cjs} +9 -9
- package/dist/{observability-saved-views-Daizz4tU.cjs.map → observability-saved-views-DgABvgat.cjs.map} +1 -1
- package/dist/{page-header-BykBsHUy.js → page-header-Maytcmgh.js} +3 -3
- package/dist/{page-header-BB6yjtce.cjs.map → page-header-Maytcmgh.js.map} +1 -1
- package/dist/{page-header-BB6yjtce.cjs → page-header-pZCts_WC.cjs} +3 -3
- package/dist/page-header-pZCts_WC.cjs.map +1 -0
- package/dist/{popover-CzHvTPk2.js → popover-BpMi52Tb.js} +3 -3
- package/dist/{popover-CzHvTPk2.js.map → popover-BpMi52Tb.js.map} +1 -1
- package/dist/{popover-BJqa6Hz6.cjs → popover-D9AfJmla.cjs} +3 -3
- package/dist/{popover-BJqa6Hz6.cjs.map → popover-D9AfJmla.cjs.map} +1 -1
- package/dist/primitives/chart-frame.cjs.js +2 -2
- package/dist/primitives/chart-frame.es.js +2 -2
- package/dist/primitives/chart-time-tick.cjs.js +2 -2
- package/dist/primitives/chart-time-tick.es.js +2 -2
- package/dist/primitives/charts/drag-selection.cjs.js +1 -1
- package/dist/primitives/charts/drag-selection.es.js +1 -1
- package/dist/primitives/menu-item.cjs.js +2 -2
- package/dist/primitives/menu-item.es.js +2 -2
- package/dist/primitives/menu-scroll-area.cjs.js +1 -1
- package/dist/primitives/menu-scroll-area.es.js +1 -1
- package/dist/primitives/resize-handle-indicator.cjs.js +1 -1
- package/dist/primitives/resize-handle-indicator.es.js +1 -1
- package/dist/primitives/trigger-button.cjs.js +2 -2
- package/dist/primitives/trigger-button.es.js +2 -2
- package/dist/{property-filter-applied--U5EZdaA.js → property-filter-applied-DoxQHG09.js} +8 -8
- package/dist/{property-filter-applied--U5EZdaA.js.map → property-filter-applied-DoxQHG09.js.map} +1 -1
- package/dist/{property-filter-applied-BkkIObRq.cjs → property-filter-applied-DuyL4S_K.cjs} +8 -8
- package/dist/{property-filter-applied-BkkIObRq.cjs.map → property-filter-applied-DuyL4S_K.cjs.map} +1 -1
- package/dist/resize/collapsible-panel.cjs.js +4 -4
- package/dist/resize/collapsible-panel.cjs.js.map +1 -1
- package/dist/resize/collapsible-panel.es.js +4 -4
- package/dist/resize/collapsible-panel.es.js.map +1 -1
- package/dist/resize/panel-drawer.cjs.js +3 -3
- package/dist/resize/panel-drawer.es.js +3 -3
- package/dist/resize/panel-icon-button.cjs.js +1 -2
- package/dist/resize/panel-icon-button.cjs.js.map +1 -1
- package/dist/resize/panel-icon-button.es.js +1 -1
- package/dist/resize/separator.cjs.js +1 -1
- package/dist/resize/separator.es.js +1 -1
- package/dist/{scroll-area-C226l0v0.js → scroll-area-9-S7wfSs.js} +2 -2
- package/dist/{scroll-area-C226l0v0.js.map → scroll-area-9-S7wfSs.js.map} +1 -1
- package/dist/{scroll-area-BP4gPZ4G.cjs → scroll-area-BU_TorPW.cjs} +2 -2
- package/dist/{scroll-area-BP4gPZ4G.cjs.map → scroll-area-BU_TorPW.cjs.map} +1 -1
- package/dist/{select-Dg8L5ROX.cjs → select-CeukeSn_.cjs} +5 -5
- package/dist/{select-Dg8L5ROX.cjs.map → select-CeukeSn_.cjs.map} +1 -1
- package/dist/{select-BdIZEdcy.js → select-dNX9If-s.js} +5 -5
- package/dist/{select-BdIZEdcy.js.map → select-dNX9If-s.js.map} +1 -1
- package/dist/{settings-BaUeaO96.js → settings-BEw_bg12.js} +2 -2
- package/dist/{settings-BaUeaO96.js.map → settings-BEw_bg12.js.map} +1 -1
- package/dist/{settings-CUVqhBbf.cjs → settings-Bminohri.cjs} +2 -2
- package/dist/{settings-CUVqhBbf.cjs.map → settings-Bminohri.cjs.map} +1 -1
- package/dist/{span-payload-primitives-CKKIAVPJ.js → span-payload-primitives-BKkRpVVO.js} +12 -12
- package/dist/{span-payload-primitives-CKKIAVPJ.js.map → span-payload-primitives-BKkRpVVO.js.map} +1 -1
- package/dist/{span-payload-primitives-D4tHWN2W.cjs → span-payload-primitives-D2NWznGy.cjs} +12 -12
- package/dist/{span-payload-primitives-D4tHWN2W.cjs.map → span-payload-primitives-D2NWznGy.cjs.map} +1 -1
- package/dist/{spinner-CnLgLj9R.js → spinner-B9ykw74u.js} +2 -2
- package/dist/{spinner-CnLgLj9R.js.map → spinner-B9ykw74u.js.map} +1 -1
- package/dist/{spinner-C8ZxiA5C.cjs → spinner-oS6q4pwx.cjs} +3 -3
- package/dist/{spinner-C8ZxiA5C.cjs.map → spinner-oS6q4pwx.cjs.map} +1 -1
- package/dist/src/domains/chat/activity/index.d.ts +1 -3
- package/dist/src/domains/chat/activity/model/activity-members.d.ts +1 -2
- package/dist/src/domains/chat/activity/model/activity-words.d.ts +1 -2
- package/dist/src/domains/chat/context/chat-context.d.ts +9 -0
- package/dist/src/domains/chat/tools/badges/knowledge-tool-badge.d.ts +2 -1
- package/dist/src/domains/chat/tools/badges/mcp-task-chip.d.ts +1 -1
- package/dist/src/domains/chat/tools/badges/workspace-data-parts.d.ts +6 -0
- package/dist/src/domains/chat/tools/tool-card-kind.d.ts +12 -2
- package/dist/src/domains/dashboards/components/dashboard-grid.d.ts +4 -1
- package/dist/src/domains/dashboards/components/dashboard-renderer.d.ts +22 -2
- package/dist/src/domains/dashboards/components/widget-controls.d.ts +3 -0
- package/dist/src/domains/dashboards/components/widget-error.d.ts +7 -2
- package/dist/src/domains/dashboards/index.d.ts +2 -2
- package/dist/src/domains/dashboards/kinds/kpis/kpis-widget.d.ts +1 -1
- package/dist/src/domains/dashboards/kinds/scores/scores-widget.d.ts +1 -1
- package/dist/src/domains/dashboards/lib/chrome.d.ts +5 -2
- package/dist/src/domains/dashboards/lib/pin-actions.d.ts +7 -0
- package/dist/src/domains/dashboards/widget-kind.d.ts +13 -0
- package/dist/src/domains/llm/models-dev-logo-slugs.d.ts +1 -0
- package/dist/src/domains/llm/provider-logo-monogram.d.ts +8 -0
- package/dist/src/domains/llm/provider-logo.d.ts +0 -4
- package/dist/src/domains/mcps/components/mcp-app-tool-result.d.ts +2 -1
- package/dist/src/domains/mcps/components/mcp-app-viewer.d.ts +7 -2
- package/dist/src/domains/mcps/hooks/use-mcp-app-tool-call.d.ts +5 -0
- package/dist/src/domains/metrics/components/chart-card.d.ts +6 -2
- package/dist/src/domains/metrics/components/kpi-card.d.ts +2 -1
- package/dist/src/domains/metrics/lib/index.d.ts +1 -0
- package/dist/src/domains/metrics/lib/series-colors.d.ts +39 -0
- package/dist/src/domains/traces/components/span-token-usage.utils.d.ts +1 -1
- package/dist/src/domains/workflows/components/workflow-combobox.d.ts +2 -1
- package/dist/src/ds/components/AgentIndicator/paint.d.ts +6 -2
- package/dist/src/ds/components/AgentIndicator/poses/coordination.d.ts +7 -0
- package/dist/src/ds/components/AgentIndicator/poses/documents.d.ts +2 -0
- package/dist/src/ds/components/AgentIndicator/poses/files.d.ts +5 -0
- package/dist/src/ds/components/AgentIndicator/poses/interface.d.ts +8 -0
- package/dist/src/ds/components/AgentIndicator/poses/knowledge-actions.d.ts +6 -0
- package/dist/src/ds/components/AgentIndicator/poses/knowledge.d.ts +2 -0
- package/dist/src/ds/components/AgentIndicator/poses/skills.d.ts +4 -0
- package/dist/src/ds/components/AgentIndicator/poses/terminal.d.ts +4 -0
- package/dist/src/ds/components/AgentIndicator/poses/thinking.d.ts +2 -0
- package/dist/src/ds/components/AgentIndicator/poses.d.ts +1 -1
- package/dist/src/ds/components/AgentIndicator/shapes.d.ts +7 -1
- package/dist/src/ds/components/Breadcrumb/crumb-switcher.d.ts +1 -0
- package/dist/src/ds/components/ChatShell/chat-shell-context.d.ts +9 -0
- package/dist/src/ds/components/ChatShell/chat-shell.d.ts +5 -0
- package/dist/src/ds/components/ChatShell/index.d.ts +2 -1
- package/dist/src/ds/components/Combobox/combobox-parts.d.ts +2 -1
- package/dist/src/ds/components/Combobox/combobox-styles.d.ts +9 -4
- package/dist/src/ds/components/Combobox/combobox.d.ts +4 -2
- package/dist/src/ds/components/CommandPalette/command-palette.d.ts +1 -1
- package/dist/src/ds/components/DateTimePicker/date-picker.d.ts +6 -1
- package/dist/src/ds/components/DateTimePicker/index.d.ts +0 -1
- package/dist/src/ds/components/DateTimeRangePicker/custom-range-editor.d.ts +3 -2
- package/dist/src/ds/components/Message/message-timestamp.d.ts +1 -0
- package/dist/src/ds/components/MessageScroller/message-scroller-context.d.ts +3 -2
- package/dist/src/ds/components/MessageScroller/message-scroller-geometry.d.ts +1 -1
- package/dist/src/ds/components/MessageScroller/message-scroller-hooks.d.ts +2 -8
- package/dist/src/ds/components/MessageScroller/message-scroller-visibility-store.d.ts +8 -0
- package/dist/src/ds/components/Metadata/index.d.ts +2 -0
- package/dist/src/ds/components/Metadata/metadata.d.ts +10 -0
- package/dist/src/ds/components/MetricsCard/index.d.ts +1 -0
- package/dist/src/ds/components/MetricsCard/metrics-card-drag-handle.d.ts +12 -0
- package/dist/src/ds/components/MetricsCard/metrics-card.d.ts +2 -0
- package/dist/src/ds/components/Steps/index.d.ts +1 -0
- package/dist/src/ds/components/Steps/step.d.ts +13 -0
- package/dist/src/ds/components/Steps/steps-context.d.ts +2 -0
- package/dist/src/ds/components/Steps/steps-root.d.ts +18 -0
- package/dist/src/ds/components/Steps/steps.d.ts +7 -0
- package/dist/src/ds/components/ai/annotations/annotatable-selection.d.ts +25 -0
- package/dist/src/ds/components/ai/annotations/annotation-comment-card.d.ts +11 -0
- package/dist/src/ds/components/ai/annotations/annotation-comment-popover.d.ts +15 -0
- package/dist/src/ds/components/ai/annotations/annotation-highlights.d.ts +1 -0
- package/dist/src/ds/components/ai/annotations/annotation-marker.d.ts +13 -0
- package/dist/src/ds/components/ai/annotations/annotation-markers.d.ts +9 -0
- package/dist/src/ds/components/ai/annotations/annotation-number.d.ts +4 -0
- package/dist/src/ds/components/ai/annotations/annotation-selection-toolbar.d.ts +7 -0
- package/dist/src/ds/components/ai/annotations/chat-annotations.d.ts +27 -0
- package/dist/src/ds/components/ai/annotations/composer-annotation-list.d.ts +6 -0
- package/dist/src/ds/components/ai/annotations/composer-annotations.d.ts +5 -0
- package/dist/src/ds/components/ai/annotations/format-annotated-message.d.ts +11 -0
- package/dist/src/ds/components/ai/annotations/index.d.ts +5 -0
- package/dist/src/ds/components/ai/annotations/transcript-annotations.d.ts +6 -0
- package/dist/src/ds/components/ai/annotations/use-annotation-placement.d.ts +11 -0
- package/dist/src/ds/components/ai/annotations/use-annotation-selection.d.ts +12 -0
- package/dist/src/ds/components/ai/tool-call/index.d.ts +3 -0
- package/dist/src/ds/components/ai/tool-call/tool-call-body.d.ts +6 -0
- package/dist/src/ds/components/ai/tool-call/tool-call-exit-status.d.ts +11 -0
- package/dist/src/ds/components/ai/tool-call/tool-call-output.d.ts +1 -2
- package/dist/src/ds/components/ai/tool-call/tool-call-view.d.ts +17 -0
- package/dist/src/ds/components/ai/tool-call/tool-phrases.d.ts +127 -138
- package/dist/src/ds/components/ai/tool-call/tool-presentation.d.ts +2 -0
- package/dist/src/ds/components/ai/tool-call/tool-styles.d.ts +10 -0
- package/dist/src/ds/components/ai/transcript-divider/transcript-divider.d.ts +2 -2
- package/dist/src/ds/icons/ByteDanceIcon.d.ts +2 -0
- package/dist/src/ds/icons/CohereBrandIcon.d.ts +2 -0
- package/dist/src/ds/icons/FireworksIcon.d.ts +2 -0
- package/dist/src/ds/icons/LongCatIcon.d.ts +2 -0
- package/dist/src/ds/icons/MicrosoftIcon.d.ts +2 -0
- package/dist/src/ds/icons/MorphIcon.d.ts +2 -0
- package/dist/src/ds/icons/NousResearchIcon.d.ts +2 -0
- package/dist/src/ds/icons/NovaIcon.d.ts +2 -0
- package/dist/src/ds/icons/PerplexityIcon.d.ts +2 -0
- package/dist/src/ds/icons/SakanaIcon.d.ts +2 -0
- package/dist/src/ds/icons/StepFunIcon.d.ts +2 -0
- package/dist/src/ds/icons/TencentIcon.d.ts +2 -0
- package/dist/src/ds/icons/UpstageIcon.d.ts +2 -0
- package/dist/src/ds/icons/index.d.ts +13 -0
- package/dist/src/ds/tokens/colors.d.ts +12 -0
- package/dist/src/ee/signals/sankey-signals-data.d.ts +2 -2
- package/dist/src/ee/signals/snapshot-summary.d.ts +7 -0
- package/dist/src/ee/signals/snapshot-timeline.d.ts +2 -1
- package/dist/src/hooks/use-clock.d.ts +5 -0
- package/dist/src/lib/resize/collapsible-panel.d.ts +5 -3
- package/dist/src/lib/string.d.ts +1 -0
- package/dist/{string-CNKDIc_4.js → string-CA5M0mj_.js} +5 -2
- package/dist/{string-CNKDIc_4.js.map → string-CA5M0mj_.js.map} +1 -1
- package/dist/{string-DdJJdCv2.cjs → string-EyTazW-F.cjs} +10 -1
- package/dist/{string-DdJJdCv2.cjs.map → string-EyTazW-F.cjs.map} +1 -1
- package/dist/style.css +321 -144
- package/dist/{tabbed-container-B4lCBgRP.cjs → tabbed-container-Bhfi-DWr.cjs} +9 -9
- package/dist/{tabbed-container-B4lCBgRP.cjs.map → tabbed-container-Bhfi-DWr.cjs.map} +1 -1
- package/dist/{tabbed-container-DI1GI1Qv.js → tabbed-container-DOkHshha.js} +8 -8
- package/dist/{tabbed-container-DI1GI1Qv.js.map → tabbed-container-DOkHshha.js.map} +1 -1
- package/dist/{tabs-content-CmXe5ML0.cjs → tabs-content-BACwMrMG.cjs} +3 -3
- package/dist/{tabs-content-CmXe5ML0.cjs.map → tabs-content-BACwMrMG.cjs.map} +1 -1
- package/dist/{tabs-content-D__B9hd-.js → tabs-content-DwU_eA-a.js} +3 -3
- package/dist/{tabs-content-D__B9hd-.js.map → tabs-content-DwU_eA-a.js.map} +1 -1
- package/dist/{tabs-tab-CYTZevdV.js → tabs-tab-BHs639jL.js} +4 -4
- package/dist/{tabs-tab-CYTZevdV.js.map → tabs-tab-BHs639jL.js.map} +1 -1
- package/dist/{tabs-tab-DGwfHVDr.cjs → tabs-tab-CANh2eAD.cjs} +4 -4
- package/dist/{tabs-tab-DGwfHVDr.cjs.map → tabs-tab-CANh2eAD.cjs.map} +1 -1
- package/dist/{toast-api-D_rrRhNG.js → toast-api-Cak5N8pT.js} +2 -2
- package/dist/{toast-api-D_rrRhNG.js.map → toast-api-Cak5N8pT.js.map} +1 -1
- package/dist/{toast-api-qtkOucy2.cjs → toast-api-DDcGCbIw.cjs} +2 -2
- package/dist/{toast-api-qtkOucy2.cjs.map → toast-api-DDcGCbIw.cjs.map} +1 -1
- package/dist/tokens.cjs.js +12 -0
- package/dist/tokens.cjs.js.map +1 -1
- package/dist/tokens.es.js +12 -0
- package/dist/tokens.es.js.map +1 -1
- package/dist/{tool-approval-CJvPDL7D.cjs → tool-approval-CguPaikn.cjs} +7 -7
- package/dist/{tool-approval-CJvPDL7D.cjs.map → tool-approval-CguPaikn.cjs.map} +1 -1
- package/dist/{tool-approval-DyN11vFA.js → tool-approval-Cjz0yAzw.js} +7 -7
- package/dist/{tool-approval-DyN11vFA.js.map → tool-approval-Cjz0yAzw.js.map} +1 -1
- package/dist/tool-call-BqDI9mrY.cjs +600 -0
- package/dist/tool-call-BqDI9mrY.cjs.map +1 -0
- package/dist/tool-call-ChJKYCfu.js +505 -0
- package/dist/tool-call-ChJKYCfu.js.map +1 -0
- package/dist/{tool-card-BOLXeKIp.cjs → tool-card-Dg4VOYV6.cjs} +24 -15
- package/dist/tool-card-Dg4VOYV6.cjs.map +1 -0
- package/dist/{tool-card-HZ5bm7ue.js → tool-card-GSiCfxMz.js} +25 -16
- package/dist/tool-card-GSiCfxMz.js.map +1 -0
- package/dist/tool-presentation-C2bYQ7gB.js +874 -0
- package/dist/tool-presentation-C2bYQ7gB.js.map +1 -0
- package/dist/tool-presentation-DPp9h-n2.cjs +915 -0
- package/dist/tool-presentation-DPp9h-n2.cjs.map +1 -0
- package/dist/{tooltip-BiRLT3Th.cjs → tooltip-BsExuMO8.cjs} +2 -2
- package/dist/{tooltip-BiRLT3Th.cjs.map → tooltip-BsExuMO8.cjs.map} +1 -1
- package/dist/{tooltip-HzcLyGtV.js → tooltip-DJcze2VZ.js} +2 -2
- package/dist/{tooltip-HzcLyGtV.js.map → tooltip-DJcze2VZ.js.map} +1 -1
- package/dist/{transcript-divider-CvdgElIC.js → transcript-divider-DM2HkdeO.js} +5 -11
- package/dist/transcript-divider-DM2HkdeO.js.map +1 -0
- package/dist/{transcript-divider-CQ6sc3nt.cjs → transcript-divider-DroC3feH.cjs} +4 -10
- package/dist/transcript-divider-DroC3feH.cjs.map +1 -0
- package/dist/{use-workflow-graph-runtime-BKNhOKsH.js → use-workflow-graph-runtime-B3VUuhUE.js} +12 -12
- package/dist/{use-workflow-graph-runtime-BKNhOKsH.js.map → use-workflow-graph-runtime-B3VUuhUE.js.map} +1 -1
- package/dist/{use-workflow-graph-runtime-DYao-08R.cjs → use-workflow-graph-runtime-BfCL6nd4.cjs} +12 -12
- package/dist/{use-workflow-graph-runtime-DYao-08R.cjs.map → use-workflow-graph-runtime-BfCL6nd4.cjs.map} +1 -1
- package/dist/utils/string.cjs.js +2 -1
- package/dist/utils/string.es.js +1 -1
- package/dist/utils/toast.cjs.js +1 -1
- package/dist/utils/toast.es.js +1 -1
- package/oxlint/copy-rules.d.ts +4 -0
- package/oxlint/copy-rules.js +29 -0
- package/oxlint/copy-sources.js +223 -0
- package/oxlint/index.d.ts +5 -0
- package/oxlint/index.js +17 -0
- package/package.json +13 -10
- package/theme/data-viz.css +33 -0
- package/dist/AgentIndicator-Bs2S8AWJ.js +0 -847
- package/dist/AgentIndicator-Bs2S8AWJ.js.map +0 -1
- package/dist/AgentIndicator-to30W73z.cjs +0 -864
- package/dist/AgentIndicator-to30W73z.cjs.map +0 -1
- package/dist/Button-CLXTbAY8.js.map +0 -1
- package/dist/Button-DLcMcuUL.cjs.map +0 -1
- package/dist/Composer-BcueJvdX.cjs.map +0 -1
- package/dist/Composer-D1gF-0jZ.js.map +0 -1
- package/dist/FilterBar-BSP2UTjc.cjs.map +0 -1
- package/dist/FilterBar-PSQ1OwqH.js.map +0 -1
- package/dist/Message-jj56lxNL.cjs.map +0 -1
- package/dist/MessageScroller-CGsfTd1Z.cjs.map +0 -1
- package/dist/MessageScroller-DvaKlm4O.js.map +0 -1
- package/dist/MetricsCard-BEwiS7Pe.cjs.map +0 -1
- package/dist/MetricsCard-ua6C6b8a.js.map +0 -1
- package/dist/Workflow-C3SlEdP-.js.map +0 -1
- package/dist/Workflow-DSWQ-ROz.cjs.map +0 -1
- package/dist/activity-C8Ql81WM.js.map +0 -1
- package/dist/activity-CcQZeDYi.cjs.map +0 -1
- package/dist/combobox-D21no8t5.js.map +0 -1
- package/dist/combobox-DIT_6xiG.cjs.map +0 -1
- package/dist/combobox-parts-C4phOq4t.cjs.map +0 -1
- package/dist/combobox-parts-D90ir0Py.js.map +0 -1
- package/dist/date-time-range-picker-CWGjoR3j.cjs.map +0 -1
- package/dist/date-time-range-picker-CdSiXwB4.js.map +0 -1
- package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js +0 -29
- package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js.map +0 -1
- package/dist/domains/chat/activity/components/activity-timed-trigger.d.ts +0 -1
- package/dist/domains/chat/activity/components/activity-timed-trigger.es.js +0 -28
- package/dist/domains/chat/activity/components/activity-timed-trigger.es.js.map +0 -1
- package/dist/domains/mcps/components/mcp-app-viewer.cjs.js.map +0 -1
- package/dist/domains/mcps/components/mcp-app-viewer.es.js.map +0 -1
- package/dist/page-header-BykBsHUy.js.map +0 -1
- package/dist/src/domains/chat/activity/components/activity-timed-trigger.d.ts +0 -9
- package/dist/src/ds/components/DateTimePicker/time-picker.d.ts +0 -7
- package/dist/tool-call-DBn14X-3.cjs +0 -497
- package/dist/tool-call-DBn14X-3.cjs.map +0 -1
- package/dist/tool-call-Dsj43lvJ.js +0 -426
- package/dist/tool-call-Dsj43lvJ.js.map +0 -1
- package/dist/tool-card-BOLXeKIp.cjs.map +0 -1
- package/dist/tool-card-HZ5bm7ue.js.map +0 -1
- package/dist/tool-presentation-CvibOP1J.js +0 -256
- package/dist/tool-presentation-CvibOP1J.js.map +0 -1
- package/dist/tool-presentation-D6nzVruN.cjs +0 -291
- package/dist/tool-presentation-D6nzVruN.cjs.map +0 -1
- package/dist/transcript-divider-CQ6sc3nt.cjs.map +0 -1
- package/dist/transcript-divider-CvdgElIC.js.map +0 -1
|
@@ -120,15 +120,19 @@ function formatSignalName(signalName) {
|
|
|
120
120
|
return `${signalName.slice(0, 1).toUpperCase()}${signalName.slice(1)}`;
|
|
121
121
|
}
|
|
122
122
|
/**
|
|
123
|
-
*
|
|
123
|
+
* Date, trace-count, and theme-count fields rendered under the timeline in every view
|
|
124
124
|
* mode. Counts come from the charted flow (cohort stage totals), so a drilled
|
|
125
125
|
* flow reports the drilled subset; date-only while the flow is loading.
|
|
126
126
|
*/
|
|
127
|
-
function
|
|
127
|
+
function snapshotSummaryParts(snapshot, flow) {
|
|
128
128
|
const date = snapshot.cutoffAt ? formatSnapshotCutoff(snapshot.cutoffAt) : formatSnapshotWindow(snapshot.startedAt, snapshot.endedAt);
|
|
129
|
-
if (!flow) return date;
|
|
129
|
+
if (!flow) return [date];
|
|
130
130
|
const { traceCount, themeCount } = flowCounts(flow);
|
|
131
|
-
return
|
|
131
|
+
return [
|
|
132
|
+
date,
|
|
133
|
+
traceLabel(traceCount),
|
|
134
|
+
themeLabel(themeCount)
|
|
135
|
+
];
|
|
132
136
|
}
|
|
133
137
|
function flowCounts(flow) {
|
|
134
138
|
return {
|
|
@@ -136,6 +140,6 @@ function flowCounts(flow) {
|
|
|
136
140
|
themeCount: flow.stages.reduce((total, stage) => total + stage.nodes.filter((node) => node.kind === "theme").length, 0)
|
|
137
141
|
};
|
|
138
142
|
}
|
|
139
|
-
export { buildSignalGraphSummary, getSignalRecordNodeId, getSignalRecordNodeLabel, getSignalRecordNodeValue, selectFlowSnapshotIds,
|
|
143
|
+
export { buildSignalGraphSummary, getSignalRecordNodeId, getSignalRecordNodeLabel, getSignalRecordNodeValue, selectFlowSnapshotIds, snapshotSummaryParts, stabilizeThemeFlow, themeFlowToSankeyData };
|
|
140
144
|
|
|
141
145
|
//# sourceMappingURL=sankey-signals-data.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sankey-signals-data.es.js","names":[],"sources":["../../../src/ee/signals/sankey-signals-data.ts"],"sourcesContent":["import { formatSnapshotCutoff, formatSnapshotWindow, themeLabel, traceLabel } from './signal-formatting';\nimport type { ThemeFlowResponse, ThemeNode, ThemeSnapshot, TraceSignalName } from './types';\nimport type { SankeyChartColumn, SankeyChartRecord } from '@/ds/components/SankeyChart';\n\nconst MINIMUM_LAYOUT_WEIGHT = 0.01;\n\ntype StableThemeFlowLink = ThemeFlowResponse['links'][number] & { layoutTraceCount: number };\ntype StableThemeFlowResponse = Omit<ThemeFlowResponse, 'links'> & { links: StableThemeFlowLink[] };\n\nexport function getSignalRecordNodeId(record: SankeyChartRecord, column: SankeyChartColumn) {\n return String(record[column.id]);\n}\n\nexport function getSignalRecordNodeLabel(record: SankeyChartRecord, column: SankeyChartColumn) {\n const label = String(record[`${column.id}Label`]);\n const description = record[`${column.id}Description`];\n return typeof description === 'string' && description.trim() ? `${label}\\n${description}` : label;\n}\n\nexport function getSignalRecordNodeValue(record: SankeyChartRecord, column: SankeyChartColumn) {\n return Number(record[`${column.id}TraceCount`]);\n}\n\nexport function themeFlowToSankeyData(flow: ThemeFlowResponse): {\n columns: SankeyChartColumn[];\n records: SankeyChartRecord[];\n} {\n const nodes = new Map<string, { signalName: TraceSignalName; node: ThemeNode }>();\n\n for (const stage of flow.stages) {\n for (const node of stage.nodes) nodes.set(node.nodeId, { signalName: stage.signalName, node });\n }\n\n // Only stages that participate in links become chart columns. A stage with\n // themes but no links (possible in real flows) would otherwise leave a\n // phantom first column: the chart lays out linked columns across the full\n // width but keeps anchoring labels as if the unlinked column still led.\n const linkedSignalNames = new Set(\n flow.links.flatMap(link => {\n const source = nodes.get(link.sourceNodeId);\n const target = nodes.get(link.targetNodeId);\n return [...(source ? [source.signalName] : []), ...(target ? [target.signalName] : [])];\n }),\n );\n const columns = flow.stages\n .filter(stage => linkedSignalNames.has(stage.signalName))\n .map(stage => ({\n id: stage.signalName,\n label: formatSignalName(stage.signalName),\n }));\n\n const records: SankeyChartRecord[] = [];\n for (const link of flow.links) {\n const source = nodes.get(link.sourceNodeId);\n const target = nodes.get(link.targetNodeId);\n if (!source || !target) continue;\n\n records.push({\n [source.signalName]: source.node.nodeId,\n [`${source.signalName}Label`]: displayNodeLabel(source.node),\n [`${source.signalName}Description`]: source.node.description,\n [`${source.signalName}TraceCount`]: source.node.traceCount,\n [target.signalName]: target.node.nodeId,\n [`${target.signalName}Label`]: displayNodeLabel(target.node),\n [`${target.signalName}Description`]: target.node.description,\n [`${target.signalName}TraceCount`]: target.node.traceCount,\n traceCount: link.traceCount,\n layoutTraceCount: 'layoutTraceCount' in link ? link.layoutTraceCount : link.traceCount,\n });\n }\n\n return { columns, records };\n}\n\nexport function buildSignalGraphSummary(flow: ThemeFlowResponse): {\n columns: SankeyChartColumn[];\n records: SankeyChartRecord[];\n} {\n return themeFlowToSankeyData(flow);\n}\n\n/**\n * Snapshot ids whose flows the timeline needs right now: the selected landmark\n * plus its previous and next playback neighbors (playback wraps around).\n */\nexport function selectFlowSnapshotIds(snapshots: Array<{ snapshotId: string }>, selectedIndex: number): string[] {\n if (snapshots.length === 0) return [];\n const neighborIndexes = new Set([\n (selectedIndex - 1 + snapshots.length) % snapshots.length,\n selectedIndex,\n (selectedIndex + 1) % snapshots.length,\n ]);\n return [...neighborIndexes]\n .sort((left, right) => left - right)\n .flatMap(index => {\n const snapshot = snapshots[index];\n return snapshot ? [snapshot.snapshotId] : [];\n });\n}\n\n/**\n * Keeps node ordering and ribbon layout widths consistent across the playback\n * window without inventing content: only nodes and links present in the\n * current snapshot render (no zero-count ghosts from neighboring flows), but\n * their order and layout weight come from the whole window so shared themes\n * hold their position while scrubbing.\n */\nexport function stabilizeThemeFlow(flow: ThemeFlowResponse, windowFlows: ThemeFlowResponse[]): StableThemeFlowResponse {\n const stages = flow.stages.map(stage => {\n const orderedNodeIds = new Map<string, number>();\n for (const windowFlow of windowFlows) {\n const windowStage = windowFlow.stages.find(candidate => candidate.signalName === stage.signalName);\n for (const node of windowStage?.nodes ?? []) {\n if (!orderedNodeIds.has(node.nodeId)) orderedNodeIds.set(node.nodeId, orderedNodeIds.size);\n }\n }\n\n const nodes = stage.nodes\n .filter(node => node.traceCount > 0)\n .sort(\n (left, right) =>\n (orderedNodeIds.get(left.nodeId) ?? Number.MAX_SAFE_INTEGER) -\n (orderedNodeIds.get(right.nodeId) ?? Number.MAX_SAFE_INTEGER),\n );\n return { ...stage, nodes };\n });\n\n const keptNodeIds = new Set(stages.flatMap(stage => stage.nodes.map(node => node.nodeId)));\n const layoutWeights = new Map<string, number>();\n const orderedLinkKeys = new Map<string, number>();\n for (const windowFlow of windowFlows) {\n for (const link of windowFlow.links) {\n const key = `${link.sourceNodeId}\\u0000${link.targetNodeId}`;\n layoutWeights.set(key, Math.max(layoutWeights.get(key) ?? 0, link.traceCount));\n if (!orderedLinkKeys.has(key)) orderedLinkKeys.set(key, orderedLinkKeys.size);\n }\n }\n\n const stableLinks = flow.links\n .filter(link => link.traceCount > 0 && keptNodeIds.has(link.sourceNodeId) && keptNodeIds.has(link.targetNodeId))\n .sort((left, right) => {\n const leftKey = `${left.sourceNodeId}\\u0000${left.targetNodeId}`;\n const rightKey = `${right.sourceNodeId}\\u0000${right.targetNodeId}`;\n return (orderedLinkKeys.get(leftKey) ?? 0) - (orderedLinkKeys.get(rightKey) ?? 0);\n })\n .map((link): StableThemeFlowLink => {\n const key = `${link.sourceNodeId}\\u0000${link.targetNodeId}`;\n return {\n ...link,\n layoutTraceCount: Math.max(MINIMUM_LAYOUT_WEIGHT, layoutWeights.get(key) ?? link.traceCount),\n };\n });\n\n return { ...flow, stages, links: stableLinks };\n}\n\nfunction displayNodeLabel(node: ThemeNode) {\n return node.kind === 'noise' ? 'Noise' : node.label;\n}\n\nfunction formatSignalName(signalName: TraceSignalName) {\n return `${signalName.slice(0, 1).toUpperCase()}${signalName.slice(1)}`;\n}\n\n/**\n * \"Date · N traces · N themes\" line rendered under the timeline in every view\n * mode. Counts come from the charted flow (cohort stage totals), so a drilled\n * flow reports the drilled subset; date-only while the flow is loading.\n */\nexport function snapshotSummaryLabel(snapshot: ThemeSnapshot, flow: ThemeFlowResponse | undefined) {\n const date = snapshot.cutoffAt\n ? formatSnapshotCutoff(snapshot.cutoffAt)\n : formatSnapshotWindow(snapshot.startedAt, snapshot.endedAt);\n if (!flow) return date;\n\n const { traceCount, themeCount } = flowCounts(flow);\n return `${date} · ${traceLabel(traceCount)} · ${themeLabel(themeCount)}`;\n}\n\nfunction flowCounts(flow: ThemeFlowResponse) {\n return {\n traceCount: flow.stages[0]?.traceCount ?? flow.snapshot.traceCount,\n themeCount: flow.stages.reduce(\n (total, stage) => total + stage.nodes.filter(node => node.kind === 'theme').length,\n 0,\n ),\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sankey-signals-data.es.js","names":[],"sources":["../../../src/ee/signals/sankey-signals-data.ts"],"sourcesContent":["import { formatSnapshotCutoff, formatSnapshotWindow, themeLabel, traceLabel } from './signal-formatting';\nimport type { ThemeFlowResponse, ThemeNode, ThemeSnapshot, TraceSignalName } from './types';\nimport type { SankeyChartColumn, SankeyChartRecord } from '@/ds/components/SankeyChart';\n\nconst MINIMUM_LAYOUT_WEIGHT = 0.01;\n\ntype StableThemeFlowLink = ThemeFlowResponse['links'][number] & { layoutTraceCount: number };\ntype StableThemeFlowResponse = Omit<ThemeFlowResponse, 'links'> & { links: StableThemeFlowLink[] };\n\nexport function getSignalRecordNodeId(record: SankeyChartRecord, column: SankeyChartColumn) {\n return String(record[column.id]);\n}\n\nexport function getSignalRecordNodeLabel(record: SankeyChartRecord, column: SankeyChartColumn) {\n const label = String(record[`${column.id}Label`]);\n const description = record[`${column.id}Description`];\n return typeof description === 'string' && description.trim() ? `${label}\\n${description}` : label;\n}\n\nexport function getSignalRecordNodeValue(record: SankeyChartRecord, column: SankeyChartColumn) {\n return Number(record[`${column.id}TraceCount`]);\n}\n\nexport function themeFlowToSankeyData(flow: ThemeFlowResponse): {\n columns: SankeyChartColumn[];\n records: SankeyChartRecord[];\n} {\n const nodes = new Map<string, { signalName: TraceSignalName; node: ThemeNode }>();\n\n for (const stage of flow.stages) {\n for (const node of stage.nodes) nodes.set(node.nodeId, { signalName: stage.signalName, node });\n }\n\n // Only stages that participate in links become chart columns. A stage with\n // themes but no links (possible in real flows) would otherwise leave a\n // phantom first column: the chart lays out linked columns across the full\n // width but keeps anchoring labels as if the unlinked column still led.\n const linkedSignalNames = new Set(\n flow.links.flatMap(link => {\n const source = nodes.get(link.sourceNodeId);\n const target = nodes.get(link.targetNodeId);\n return [...(source ? [source.signalName] : []), ...(target ? [target.signalName] : [])];\n }),\n );\n const columns = flow.stages\n .filter(stage => linkedSignalNames.has(stage.signalName))\n .map(stage => ({\n id: stage.signalName,\n label: formatSignalName(stage.signalName),\n }));\n\n const records: SankeyChartRecord[] = [];\n for (const link of flow.links) {\n const source = nodes.get(link.sourceNodeId);\n const target = nodes.get(link.targetNodeId);\n if (!source || !target) continue;\n\n records.push({\n [source.signalName]: source.node.nodeId,\n [`${source.signalName}Label`]: displayNodeLabel(source.node),\n [`${source.signalName}Description`]: source.node.description,\n [`${source.signalName}TraceCount`]: source.node.traceCount,\n [target.signalName]: target.node.nodeId,\n [`${target.signalName}Label`]: displayNodeLabel(target.node),\n [`${target.signalName}Description`]: target.node.description,\n [`${target.signalName}TraceCount`]: target.node.traceCount,\n traceCount: link.traceCount,\n layoutTraceCount: 'layoutTraceCount' in link ? link.layoutTraceCount : link.traceCount,\n });\n }\n\n return { columns, records };\n}\n\nexport function buildSignalGraphSummary(flow: ThemeFlowResponse): {\n columns: SankeyChartColumn[];\n records: SankeyChartRecord[];\n} {\n return themeFlowToSankeyData(flow);\n}\n\n/**\n * Snapshot ids whose flows the timeline needs right now: the selected landmark\n * plus its previous and next playback neighbors (playback wraps around).\n */\nexport function selectFlowSnapshotIds(snapshots: Array<{ snapshotId: string }>, selectedIndex: number): string[] {\n if (snapshots.length === 0) return [];\n const neighborIndexes = new Set([\n (selectedIndex - 1 + snapshots.length) % snapshots.length,\n selectedIndex,\n (selectedIndex + 1) % snapshots.length,\n ]);\n return [...neighborIndexes]\n .sort((left, right) => left - right)\n .flatMap(index => {\n const snapshot = snapshots[index];\n return snapshot ? [snapshot.snapshotId] : [];\n });\n}\n\n/**\n * Keeps node ordering and ribbon layout widths consistent across the playback\n * window without inventing content: only nodes and links present in the\n * current snapshot render (no zero-count ghosts from neighboring flows), but\n * their order and layout weight come from the whole window so shared themes\n * hold their position while scrubbing.\n */\nexport function stabilizeThemeFlow(flow: ThemeFlowResponse, windowFlows: ThemeFlowResponse[]): StableThemeFlowResponse {\n const stages = flow.stages.map(stage => {\n const orderedNodeIds = new Map<string, number>();\n for (const windowFlow of windowFlows) {\n const windowStage = windowFlow.stages.find(candidate => candidate.signalName === stage.signalName);\n for (const node of windowStage?.nodes ?? []) {\n if (!orderedNodeIds.has(node.nodeId)) orderedNodeIds.set(node.nodeId, orderedNodeIds.size);\n }\n }\n\n const nodes = stage.nodes\n .filter(node => node.traceCount > 0)\n .sort(\n (left, right) =>\n (orderedNodeIds.get(left.nodeId) ?? Number.MAX_SAFE_INTEGER) -\n (orderedNodeIds.get(right.nodeId) ?? Number.MAX_SAFE_INTEGER),\n );\n return { ...stage, nodes };\n });\n\n const keptNodeIds = new Set(stages.flatMap(stage => stage.nodes.map(node => node.nodeId)));\n const layoutWeights = new Map<string, number>();\n const orderedLinkKeys = new Map<string, number>();\n for (const windowFlow of windowFlows) {\n for (const link of windowFlow.links) {\n const key = `${link.sourceNodeId}\\u0000${link.targetNodeId}`;\n layoutWeights.set(key, Math.max(layoutWeights.get(key) ?? 0, link.traceCount));\n if (!orderedLinkKeys.has(key)) orderedLinkKeys.set(key, orderedLinkKeys.size);\n }\n }\n\n const stableLinks = flow.links\n .filter(link => link.traceCount > 0 && keptNodeIds.has(link.sourceNodeId) && keptNodeIds.has(link.targetNodeId))\n .sort((left, right) => {\n const leftKey = `${left.sourceNodeId}\\u0000${left.targetNodeId}`;\n const rightKey = `${right.sourceNodeId}\\u0000${right.targetNodeId}`;\n return (orderedLinkKeys.get(leftKey) ?? 0) - (orderedLinkKeys.get(rightKey) ?? 0);\n })\n .map((link): StableThemeFlowLink => {\n const key = `${link.sourceNodeId}\\u0000${link.targetNodeId}`;\n return {\n ...link,\n layoutTraceCount: Math.max(MINIMUM_LAYOUT_WEIGHT, layoutWeights.get(key) ?? link.traceCount),\n };\n });\n\n return { ...flow, stages, links: stableLinks };\n}\n\nfunction displayNodeLabel(node: ThemeNode) {\n return node.kind === 'noise' ? 'Noise' : node.label;\n}\n\nfunction formatSignalName(signalName: TraceSignalName) {\n return `${signalName.slice(0, 1).toUpperCase()}${signalName.slice(1)}`;\n}\n\n/**\n * Date, trace-count, and theme-count fields rendered under the timeline in every view\n * mode. Counts come from the charted flow (cohort stage totals), so a drilled\n * flow reports the drilled subset; date-only while the flow is loading.\n */\nexport function snapshotSummaryParts(snapshot: ThemeSnapshot, flow: ThemeFlowResponse | undefined): readonly string[] {\n const date = snapshot.cutoffAt\n ? formatSnapshotCutoff(snapshot.cutoffAt)\n : formatSnapshotWindow(snapshot.startedAt, snapshot.endedAt);\n if (!flow) return [date];\n\n const { traceCount, themeCount } = flowCounts(flow);\n return [date, traceLabel(traceCount), themeLabel(themeCount)];\n}\n\nfunction flowCounts(flow: ThemeFlowResponse) {\n return {\n traceCount: flow.stages[0]?.traceCount ?? flow.snapshot.traceCount,\n themeCount: flow.stages.reduce(\n (total, stage) => total + stage.nodes.filter(node => node.kind === 'theme').length,\n 0,\n ),\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,30 +1,31 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_Txt = require("../../Txt-BnoSqxKE.cjs");
|
|
3
|
-
const require_tabs_tab = require("../../tabs-tab-DGwfHVDr.cjs");
|
|
4
|
-
const require_ee_signals_signal_formatting = require("./signal-formatting.cjs.js");
|
|
5
2
|
const require_ee_signals_components_signals_empty_state = require("./components/signals-empty-state.cjs.js");
|
|
6
3
|
const require_ee_signals_components_signals_overview_page = require("./components/signals-overview-page.cjs.js");
|
|
7
4
|
const require_ee_signals_entity_learning_api = require("./entity-learning-api.cjs.js");
|
|
8
|
-
const require_ee_signals_trace_intelligence_context = require("./trace-intelligence-context.cjs.js");
|
|
9
|
-
const require_ee_signals_use_trace_intelligence = require("./use-trace-intelligence.cjs.js");
|
|
10
|
-
const require_ee_signals_hooks_use_entity_learning_progress = require("./hooks/use-entity-learning-progress.cjs.js");
|
|
11
|
-
const require_ee_signals_hooks_use_theme_paths = require("./hooks/use-theme-paths.cjs.js");
|
|
12
|
-
const require_ee_signals_hooks_use_theme_snapshots = require("./hooks/use-theme-snapshots.cjs.js");
|
|
13
|
-
const require_ee_signals_sankey_signals_data = require("./sankey-signals-data.cjs.js");
|
|
14
5
|
const require_ee_signals_flow_card = require("./flow-card.cjs.js");
|
|
6
|
+
const require_ee_signals_hooks_use_entity_learning_progress = require("./hooks/use-entity-learning-progress.cjs.js");
|
|
15
7
|
const require_ee_signals_hooks_use_snapshot_playback = require("./hooks/use-snapshot-playback.cjs.js");
|
|
16
8
|
const require_ee_signals_hooks_use_theme_flows = require("./hooks/use-theme-flows.cjs.js");
|
|
9
|
+
const require_ee_signals_hooks_use_theme_paths = require("./hooks/use-theme-paths.cjs.js");
|
|
10
|
+
const require_ee_signals_hooks_use_theme_snapshots = require("./hooks/use-theme-snapshots.cjs.js");
|
|
17
11
|
const require_ee_signals_noise_detail_panel = require("./noise-detail-panel.cjs.js");
|
|
12
|
+
const require_ee_signals_sankey_signals_data = require("./sankey-signals-data.cjs.js");
|
|
13
|
+
const require_ee_signals_signal_formatting = require("./signal-formatting.cjs.js");
|
|
18
14
|
const require_ee_signals_signals_error_state = require("./signals-error-state.cjs.js");
|
|
19
15
|
const require_ee_signals_signals_loading_skeleton = require("./signals-loading-skeleton.cjs.js");
|
|
16
|
+
const require_ee_signals_snapshot_summary = require("./snapshot-summary.cjs.js");
|
|
20
17
|
const require_ee_signals_snapshot_timeline = require("./snapshot-timeline.cjs.js");
|
|
21
18
|
const require_ee_signals_theme_compare = require("./theme-compare.cjs.js");
|
|
22
19
|
const require_ee_signals_theme_detail_panel = require("./theme-detail-panel.cjs.js");
|
|
23
20
|
const require_ee_signals_theme_drilldown_data = require("./theme-drilldown-data.cjs.js");
|
|
24
21
|
const require_ee_signals_theme_filter_banner = require("./theme-filter-banner.cjs.js");
|
|
25
22
|
const require_ee_signals_theme_lifelines = require("./theme-lifelines.cjs.js");
|
|
23
|
+
const require_ee_signals_trace_intelligence_context = require("./trace-intelligence-context.cjs.js");
|
|
26
24
|
const require_ee_signals_trace_intelligence_explainer = require("./trace-intelligence-explainer.cjs.js");
|
|
25
|
+
const require_ee_signals_use_trace_intelligence = require("./use-trace-intelligence.cjs.js");
|
|
27
26
|
const require_ee_signals_view_mode_tab = require("./view-mode-tab.cjs.js");
|
|
27
|
+
const require_tabs_tab = require("../../tabs-tab-CANh2eAD.cjs");
|
|
28
|
+
const require_Txt = require("../../Txt-_00wWxTd.cjs");
|
|
28
29
|
let react = require("react");
|
|
29
30
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
30
31
|
let lucide_react = require("lucide-react");
|
|
@@ -216,7 +217,10 @@ function SankeySignals({ entityId, entityType = "agent", signalNames: initialSig
|
|
|
216
217
|
snapshots,
|
|
217
218
|
selectedIndex: selectedSnapshotIndex,
|
|
218
219
|
totalSnapshots,
|
|
219
|
-
summary: snapshot ?
|
|
220
|
+
summary: snapshot ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ee_signals_snapshot_summary.SnapshotSummary, {
|
|
221
|
+
snapshot,
|
|
222
|
+
flow: void 0
|
|
223
|
+
}) : void 0,
|
|
220
224
|
isPlaying,
|
|
221
225
|
onPlayingChange: handlePlayingChange,
|
|
222
226
|
onSnapshotChange: selectSnapshot
|
|
@@ -258,6 +262,7 @@ function SankeySignals({ entityId, entityType = "agent", signalNames: initialSig
|
|
|
258
262
|
perspectiveMutation.mutate(mergedSignalNames);
|
|
259
263
|
};
|
|
260
264
|
const filtersResolved = drillStack.length > 0 && drillInAvailable && pathsQuery.data !== void 0;
|
|
265
|
+
const filterSummaryPrefix = drillInAvailable ? "Filtered" : "Filters unavailable";
|
|
261
266
|
const detailStats = filtersResolved ? require_ee_signals_theme_drilldown_data.findSelectionStats(flow, drillStack, detailSelection) : void 0;
|
|
262
267
|
const noiseStats = filtersResolved ? require_ee_signals_theme_drilldown_data.findSelectionStats(flow, drillStack, noiseSignalName ? {
|
|
263
268
|
kind: "noise",
|
|
@@ -337,7 +342,11 @@ function SankeySignals({ entityId, entityType = "agent", signalNames: initialSig
|
|
|
337
342
|
snapshots,
|
|
338
343
|
selectedIndex: selectedSnapshotIndex,
|
|
339
344
|
totalSnapshots,
|
|
340
|
-
summary:
|
|
345
|
+
summary: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ee_signals_snapshot_summary.SnapshotSummary, {
|
|
346
|
+
snapshot,
|
|
347
|
+
flow,
|
|
348
|
+
prefix: drillStack.length > 0 ? filterSummaryPrefix : void 0
|
|
349
|
+
}),
|
|
341
350
|
isPlaying,
|
|
342
351
|
onPlayingChange: handlePlayingChange,
|
|
343
352
|
onSnapshotChange: selectSnapshot
|
|
@@ -373,7 +382,7 @@ function SankeySignals({ entityId, entityType = "agent", signalNames: initialSig
|
|
|
373
382
|
as: "span",
|
|
374
383
|
variant: "body",
|
|
375
384
|
className: "block",
|
|
376
|
-
children: "No cross-signal flow for this snapshot
|
|
385
|
+
children: "No cross-signal flow for this snapshot. Its trace signals have not overlapped on shared traces yet. Pick another snapshot from the timeline below."
|
|
377
386
|
})
|
|
378
387
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ee_signals_flow_card.FlowCard, {
|
|
379
388
|
columns: labeledColumns,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sankey-signals.cjs.js","names":["useQueryClient","useTraceIntelligence","useState","useThemeSnapshots","useMemo","selectFlowSnapshotIds","useThemeFlows","stabilizeThemeFlow","useThemePaths","buildDrilledThemeFlow","buildSignalGraphSummary","findThemeSelectionById","useEntityLearningProgress","useMutation","fetchThemeSnapshots","fetchThemeFlow","fetchThemePaths","_Fragment","SignalsLoadingSkeleton","SignalsErrorState","SignalsEmptyState","SnapshotTimeline","snapshotSummaryLabel","SignalsFrameLoadingSkeleton","findNoiseSelection","findThemeSelection","mergeVisibleSignalOrder","findSelectionStats","serializeThemeFilters","orderedSignals","signalLabel","TraceIntelligenceContext","Tabs","TabList","ViewModeTab","Waypoints","ArrowLeftRight","ChartNoAxesGantt","TraceIntelligenceExplainer","Txt","PendingSignalProgress","ThemeCompare","ThemeLifelines","ThemeFilterBanner","FlowCard","ThemeDetailPanel","NoiseDetailPanel"],"sources":["../../../src/ee/signals/sankey-signals.tsx"],"sourcesContent":["import { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { ArrowLeftRight, ChartNoAxesGantt, Waypoints } from 'lucide-react';\nimport { useMemo, useState } from 'react';\n\nimport { PendingSignalProgress } from './components/signals-empty-state';\nimport { SignalsOverviewPage as SignalsEmptyState } from './components/signals-overview-page';\nimport { fetchThemeFlow, fetchThemePaths, fetchThemeSnapshots, serializeThemeFilters } from './entity-learning-api';\nimport { FlowCard } from './flow-card';\nimport { useEntityLearningProgress } from './hooks/use-entity-learning-progress';\nimport { useSnapshotPlayback } from './hooks/use-snapshot-playback';\nimport { useThemeFlows } from './hooks/use-theme-flows';\nimport { useThemePaths } from './hooks/use-theme-paths';\nimport { useThemeSnapshots } from './hooks/use-theme-snapshots';\nimport { NoiseDetailPanel } from './noise-detail-panel';\nimport {\n buildSignalGraphSummary,\n selectFlowSnapshotIds,\n snapshotSummaryLabel,\n stabilizeThemeFlow,\n} from './sankey-signals-data';\nimport { orderedSignals, signalLabel } from './signal-formatting';\nimport { SignalsErrorState } from './signals-error-state';\nimport { SignalsFrameLoadingSkeleton, SignalsLoadingSkeleton } from './signals-loading-skeleton';\nimport { SnapshotTimeline } from './snapshot-timeline';\nimport { ThemeCompare } from './theme-compare';\nimport { ThemeDetailPanel } from './theme-detail-panel';\nimport {\n buildDrilledThemeFlow,\n findNoiseSelection,\n findSelectionStats,\n findThemeSelection,\n findThemeSelectionById,\n mergeVisibleSignalOrder,\n} from './theme-drilldown-data';\nimport type { SelectedTheme, ThemeSelection } from './theme-drilldown-data';\nimport { ThemeFilterBanner } from './theme-filter-banner';\nimport { ThemeLifelines } from './theme-lifelines';\nimport { TraceIntelligenceContext } from './trace-intelligence-context';\nimport { TraceIntelligenceExplainer } from './trace-intelligence-explainer';\nimport type { TraceSignalName } from './types';\nimport { useTraceIntelligence } from './use-trace-intelligence';\nimport { ViewModeTab } from './view-mode-tab';\nimport type { SignalsViewMode } from './view-mode-tab';\nimport type { SankeyChartNodeSelection } from '@/ds/components/SankeyChart';\nimport { TabList, Tabs } from '@/ds/components/Tabs';\nimport { Txt } from '@/ds/components/Txt';\n\nexport interface SankeySignalsProps {\n entityId: string;\n entityType?: string;\n signalNames: TraceSignalName[];\n dateFrom?: Date;\n dateTo?: Date;\n height?: number;\n selectedThemeId: string | undefined;\n onSelectedThemeIdChange: (themeId: string | undefined) => void;\n /** Snapshot id of the timeline frame currently displayed. The parent owns this state. */\n selectedFrameId: string;\n onFrameIdChange: (frameId: string) => void;\n /** Date range control rendered in line with the view mode tabs. */\n dateRangePicker?: React.ReactNode;\n}\n\nconst DRILL_IN_TRACE_LIMIT = 2000;\n\n/** One-line answer to \"what am I looking at?\" for each view, shown under the tabs. */\nconst VIEW_DESCRIPTIONS: Omit<Record<SignalsViewMode, string>, 'flow'> = {\n compare: 'Which themes grew, shrank, appeared, or disappeared between two points in time.',\n lifelines: \"Each theme's share of traces across the whole selected range.\",\n};\n\nfunction formatSignalList(labels: string[]): string {\n if (labels.length < 2) return labels[0] ?? 'trace signal';\n if (labels.length === 2) return labels.join(' and ');\n return `${labels.slice(0, -1).join(', ')}, and ${labels.at(-1)}`;\n}\n\nexport function SankeySignals({\n entityId,\n entityType = 'agent',\n signalNames: initialSignalNames,\n dateFrom,\n dateTo,\n height,\n selectedThemeId,\n onSelectedThemeIdChange,\n selectedFrameId,\n onFrameIdChange,\n dateRangePicker,\n}: SankeySignalsProps) {\n const queryClient = useQueryClient();\n const traceIntelligence = useTraceIntelligence();\n const { cacheScope, request, LinkComponent, signalCatalog } = traceIntelligence;\n const [signalNames, setSignalNames] = useState(() => initialSignalNames);\n const [pendingSignalNames, setPendingSignalNames] = useState<TraceSignalName[]>();\n const snapshotsQuery = useThemeSnapshots(entityId, entityType, signalNames, dateFrom, dateTo);\n const effectiveSignalCatalog = snapshotsQuery.data?.signalCatalog ?? signalCatalog;\n const traceIntelligenceContext = useMemo(\n () => ({ ...traceIntelligence, signalCatalog: effectiveSignalCatalog }),\n [effectiveSignalCatalog, traceIntelligence],\n );\n const snapshots = [...(snapshotsQuery.data?.snapshots ?? [])].sort((left, right) => left.ordinal - right.ordinal);\n const [isPlaying, setIsPlaying] = useState(false);\n const [viewMode, setViewMode] = useState<SignalsViewMode>('flow');\n const [drillStack, setDrillStack] = useState<ThemeSelection[]>([]);\n const [noiseSignalName, setNoiseSignalName] = useState<TraceSignalName>();\n // Pure derivation: the parent owns the frame. The index-0 fallback only covers\n // the transient render where a perspective change swapped the snapshot list.\n const matchedSnapshotIndex = snapshots.findIndex(snapshot => snapshot.snapshotId === selectedFrameId);\n const selectedSnapshotIndex = matchedSnapshotIndex >= 0 ? matchedSnapshotIndex : 0;\n const snapshot = snapshots[selectedSnapshotIndex];\n const totalSnapshots = snapshotsQuery.data?.totalSnapshots ?? snapshot?.total ?? 0;\n const selectSnapshot = (index: number) => {\n const id = snapshots[index]?.snapshotId;\n if (id) onFrameIdChange(id);\n };\n const handleViewModeChange = (nextViewMode: SignalsViewMode) => {\n if (nextViewMode !== 'flow') setIsPlaying(false);\n setViewMode(nextViewMode);\n };\n const handlePlayingChange = (nextIsPlaying: boolean) => {\n // Restart from the first landmark when play is pressed at the end.\n if (nextIsPlaying && selectedSnapshotIndex === snapshots.length - 1) selectSnapshot(0);\n setIsPlaying(nextIsPlaying);\n };\n const setThemeDetails = (selection: SelectedTheme | undefined) => {\n onSelectedThemeIdChange(selection?.themeId);\n };\n // Compare cards and lifeline points open details for the theme at the\n // landmark they were clicked on, so the panel's snapshot follows the click.\n const openThemeDetailsAt = (selection: ThemeSelection, snapshotIndex: number) => {\n if (selection.kind !== 'theme') return;\n selectSnapshot(snapshotIndex);\n setNoiseSignalName(undefined);\n setThemeDetails(selection);\n };\n\n // Undefined at the last landmark so playback stops instead of looping.\n const nextSnapshotId = snapshots[selectedSnapshotIndex + 1]?.snapshotId;\n const flowSnapshotIds = selectFlowSnapshotIds(snapshots, selectedSnapshotIndex);\n const flowQueries = useThemeFlows(entityId, entityType, signalNames, flowSnapshotIds);\n const flowQuery = flowQueries[flowSnapshotIds.indexOf(snapshot?.snapshotId ?? '')];\n const currentFlow = flowQuery?.data;\n // The loading skeleton tracks only the selected snapshot's flow; prefetched\n // neighbors warm the cache in the background without blocking the chart.\n const isFlowPending = flowQuery?.isPending ?? false;\n // Errors stay window-wide: a failed preload surfaces the retry state instead\n // of letting playback advance into a broken frame.\n const hasFlowError = flowQueries.some(query => query.isError);\n const isFlowWindowBusy = flowQueries.some(query => query.isPending) || hasFlowError;\n const windowFlows = useMemo(() => flowQueries.flatMap(query => (query.data ? [query.data] : [])), [flowQueries]);\n const stableUnfilteredFlow = useMemo(\n () => (currentFlow ? stabilizeThemeFlow(currentFlow, windowFlows) : undefined),\n [currentFlow, windowFlows],\n );\n const drillInAvailable = Boolean(currentFlow && currentFlow.snapshot.traceCount <= DRILL_IN_TRACE_LIMIT);\n const pathsQuery = useThemePaths(\n entityId,\n entityType,\n signalNames,\n snapshot?.snapshotId,\n drillInAvailable && drillStack.length > 0,\n );\n const flow = useMemo(() => {\n if (!stableUnfilteredFlow || drillStack.length === 0 || !pathsQuery.data) return stableUnfilteredFlow;\n\n const drilledFlow = buildDrilledThemeFlow(stableUnfilteredFlow, pathsQuery.data, drillStack);\n return stabilizeThemeFlow(drilledFlow, [stableUnfilteredFlow, drilledFlow]);\n }, [drillStack, pathsQuery.data, stableUnfilteredFlow]);\n const graphSummary = useMemo(() => (flow ? buildSignalGraphSummary(flow) : undefined), [flow]);\n const detailSelection =\n stableUnfilteredFlow && selectedThemeId ? findThemeSelectionById(stableUnfilteredFlow, selectedThemeId) : undefined;\n const populatedStageCount = currentFlow?.stages.filter(stage => stage.nodes.length > 0).length ?? 0;\n const hasPendingEnabledSignals = effectiveSignalCatalog.some(signal => signal.enabled && signal.status !== 'ready');\n const shouldLoadProgress =\n snapshotsQuery.isSuccess &&\n !snapshotsQuery.isError &&\n (hasPendingEnabledSignals ||\n !snapshot ||\n Boolean(currentFlow && (!flow || !graphSummary || populatedStageCount < 2)));\n const progressQuery = useEntityLearningProgress(entityId, entityType, shouldLoadProgress);\n const isPlaybackBlockedByDrillIn = drillStack.length > 0 && (pathsQuery.isFetching || pathsQuery.isError);\n const hasActivePathsError = drillStack.length > 0 && pathsQuery.isError;\n\n useSnapshotPlayback({\n isPlaying,\n isPlaybackBlocked: isFlowWindowBusy || isPlaybackBlockedByDrillIn,\n nextSnapshot: nextSnapshotId,\n onAdvance: frameId => {\n if (frameId === undefined) {\n setIsPlaying(false);\n return;\n }\n onFrameIdChange(frameId);\n },\n snapshotCount: snapshots.length,\n });\n\n const perspectiveMutation = useMutation({\n mutationFn: async (nextSignalNames: TraceSignalName[]) => {\n const nextSnapshots = await queryClient.fetchQuery({\n queryKey: [\n 'entity-learning',\n cacheScope,\n entityType,\n entityId,\n 'theme-snapshots',\n nextSignalNames,\n dateFrom?.toISOString(),\n dateTo?.toISOString(),\n ],\n queryFn: () => fetchThemeSnapshots(request, entityId, entityType, nextSignalNames, dateFrom, dateTo),\n });\n const sortedNextSnapshots = [...nextSnapshots.snapshots].sort((left, right) => left.ordinal - right.ordinal);\n const matchedNextIndex = sortedNextSnapshots.findIndex(candidate => candidate.ordinal === snapshot?.ordinal);\n const nextSelectedIndex = matchedNextIndex >= 0 ? matchedNextIndex : 0;\n const nextSnapshot = sortedNextSnapshots[nextSelectedIndex];\n await Promise.all(\n selectFlowSnapshotIds(sortedNextSnapshots, nextSelectedIndex).map(snapshotId =>\n queryClient.fetchQuery({\n queryKey: ['entity-learning', cacheScope, entityType, entityId, 'theme-flow', nextSignalNames, snapshotId],\n queryFn: () => fetchThemeFlow(request, entityId, entityType, nextSignalNames, snapshotId),\n }),\n ),\n );\n if (drillStack.length > 0 && nextSnapshot && nextSnapshot.traceCount <= DRILL_IN_TRACE_LIMIT) {\n await queryClient.fetchQuery({\n queryKey: [\n 'entity-learning',\n cacheScope,\n entityType,\n entityId,\n 'theme-paths',\n nextSignalNames,\n nextSnapshot.snapshotId,\n ],\n queryFn: () => fetchThemePaths(request, entityId, entityType, nextSignalNames, nextSnapshot.snapshotId),\n });\n }\n return { nextSignalNames, nextFrameId: nextSnapshot?.snapshotId };\n },\n onSuccess: ({ nextSignalNames, nextFrameId }) => {\n setSignalNames(nextSignalNames);\n setPendingSignalNames(undefined);\n // Keep the parent-owned frame pointing at a snapshot that exists in the new perspective.\n if (nextFrameId && nextFrameId !== selectedFrameId) onFrameIdChange(nextFrameId);\n },\n onError: () => setPendingSignalNames(undefined),\n });\n\n if (snapshotsQuery.isPending) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsLoadingSkeleton />\n </>\n );\n }\n\n if (snapshotsQuery.isError || hasFlowError || hasActivePathsError) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsErrorState\n message=\"Unable to load trace signal flow.\"\n onRetry={() => {\n setIsPlaying(false);\n void snapshotsQuery.refetch();\n void Promise.all(flowQueries.map(query => query.refetch()));\n if (drillStack.length > 0 && drillInAvailable) void pathsQuery.refetch();\n }}\n onClear={hasActivePathsError ? () => setDrillStack([]) : undefined}\n />\n </>\n );\n }\n\n if (!snapshot) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsEmptyState\n LinkComponent={LinkComponent}\n progress={progressQuery.data}\n signalCatalog={effectiveSignalCatalog}\n isRangeEmpty\n />\n </>\n );\n }\n\n if (isFlowPending) {\n return (\n <div className=\"min-w-0 space-y-5 p-4 lg:p-6\">\n {dateRangePicker && <div className=\"flex justify-end\">{dateRangePicker}</div>}\n <SnapshotTimeline\n snapshots={snapshots}\n selectedIndex={selectedSnapshotIndex}\n totalSnapshots={totalSnapshots}\n summary={snapshot ? snapshotSummaryLabel(snapshot, undefined) : ''}\n isPlaying={isPlaying}\n onPlayingChange={handlePlayingChange}\n onSnapshotChange={selectSnapshot}\n />\n <SignalsFrameLoadingSkeleton />\n </div>\n );\n }\n\n if (!currentFlow || !flow || !graphSummary || populatedStageCount < 2) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsEmptyState\n LinkComponent={LinkComponent}\n progress={progressQuery.data}\n signalCatalog={effectiveSignalCatalog}\n />\n </>\n );\n }\n\n const stages = flow.stages;\n const isNodeClickable = (selection: SankeyChartNodeSelection) =>\n findNoiseSelection(flow, selection.column.id, selection.value) !== undefined ||\n findThemeSelection(flow, selection.column.id, selection.value) !== undefined;\n const handleNodeClick = (selection: SankeyChartNodeSelection) => {\n const nextSelection =\n findNoiseSelection(flow, selection.column.id, selection.value) ??\n findThemeSelection(flow, selection.column.id, selection.value);\n if (!nextSelection || drillStack.some(filter => filter.signalName === nextSelection.signalName)) return;\n if (nextSelection.kind === 'theme') {\n setNoiseSignalName(undefined);\n setThemeDetails(nextSelection);\n if (drillInAvailable) setDrillStack(current => [...current, nextSelection]);\n } else {\n setThemeDetails(undefined);\n setNoiseSignalName(nextSelection.signalName);\n }\n };\n const drillInDisabledReason = drillInAvailable\n ? undefined\n : 'Drill-in is unavailable for snapshots with more than 2,000 traces.';\n const isDrilledEmpty = drillStack.length > 0 && pathsQuery.data !== undefined && flow.snapshot.traceCount === 0;\n const handleSignalOrderChange = (nextSignalNames: TraceSignalName[]) => {\n if (perspectiveMutation.isPending) return;\n setIsPlaying(false);\n setThemeDetails(undefined);\n setNoiseSignalName(undefined);\n const mergedSignalNames = mergeVisibleSignalOrder(signalNames, nextSignalNames);\n setPendingSignalNames(mergedSignalNames);\n perspectiveMutation.mutate(mergedSignalNames);\n };\n const filtersResolved = drillStack.length > 0 && drillInAvailable && pathsQuery.data !== undefined;\n const detailStats = filtersResolved ? findSelectionStats(flow, drillStack, detailSelection) : undefined;\n const noiseStats = filtersResolved\n ? findSelectionStats(flow, drillStack, noiseSignalName ? { kind: 'noise', signalName: noiseSignalName } : undefined)\n : undefined;\n const filterKey = serializeThemeFilters(drillStack);\n const catalogSignalNames = orderedSignals(effectiveSignalCatalog, signalNames);\n const viewDescription =\n viewMode === 'flow'\n ? `How this agent's traces distribute across ${formatSignalList(catalogSignalNames.map(name => signalLabel(effectiveSignalCatalog, name).toLocaleLowerCase()))} themes at this point in time.`\n : VIEW_DESCRIPTIONS[viewMode];\n const labeledColumns = graphSummary.columns.map(column => ({\n ...column,\n label: signalLabel(effectiveSignalCatalog, column.id),\n }));\n\n return (\n <TraceIntelligenceContext.Provider value={traceIntelligenceContext}>\n <div className=\"min-w-0 space-y-5 p-4 lg:p-6\">\n <div className=\"flex min-w-0 flex-wrap items-center justify-between gap-3\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-4\">\n <Tabs<SignalsViewMode>\n value={viewMode}\n defaultTab=\"flow\"\n onValueChange={handleViewModeChange}\n className=\"w-fit\"\n >\n <TabList variant=\"pill-ghost\">\n <ViewModeTab value=\"flow\" icon={<Waypoints />} label=\"Flow\" />\n <ViewModeTab value=\"compare\" icon={<ArrowLeftRight />} label=\"Compare\" />\n <ViewModeTab value=\"lifelines\" icon={<ChartNoAxesGantt />} label=\"Lifelines\" />\n </TabList>\n </Tabs>\n <TraceIntelligenceExplainer signalCatalog={effectiveSignalCatalog} />\n </div>\n {dateRangePicker}\n </div>\n <Txt variant=\"caption\" tone=\"muted\">\n {viewDescription}\n </Txt>\n <PendingSignalProgress progress={progressQuery.data} signalCatalog={effectiveSignalCatalog} />\n {viewMode === 'compare' ? (\n <ThemeCompare\n entityId={entityId}\n entityType={entityType}\n signalNames={signalNames}\n snapshots={snapshots}\n totalSnapshots={totalSnapshots}\n onThemeSelect={openThemeDetailsAt}\n />\n ) : viewMode === 'lifelines' ? (\n <ThemeLifelines\n entityId={entityId}\n entityType={entityType}\n signalNames={signalNames}\n snapshots={snapshots}\n totalSnapshots={totalSnapshots}\n selectedIndex={selectedSnapshotIndex}\n onSnapshotSelect={selectSnapshot}\n onThemeSelect={openThemeDetailsAt}\n />\n ) : (\n <>\n <SnapshotTimeline\n snapshots={snapshots}\n selectedIndex={selectedSnapshotIndex}\n totalSnapshots={totalSnapshots}\n summary={`${drillStack.length > 0 ? (drillInAvailable ? 'Filtered · ' : 'Filters unavailable · ') : ''}${snapshotSummaryLabel(snapshot, flow)}`}\n isPlaying={isPlaying}\n onPlayingChange={handlePlayingChange}\n onSnapshotChange={selectSnapshot}\n />\n {drillStack.length > 0 ? (\n <ThemeFilterBanner\n selections={drillStack}\n filteredTraceCount={filtersResolved ? flow.snapshot.traceCount : undefined}\n totalTraceCount={currentFlow.snapshot.traceCount}\n isUnavailable={!drillInAvailable}\n onViewDetails={selection => {\n if (selection.kind === 'theme') {\n setNoiseSignalName(undefined);\n setThemeDetails(selection);\n } else {\n setThemeDetails(undefined);\n setNoiseSignalName(selection.signalName);\n }\n }}\n onRemove={signalName =>\n setDrillStack(current => current.filter(filter => filter.signalName !== signalName))\n }\n onClear={() => setDrillStack([])}\n />\n ) : null}\n {isDrilledEmpty ? (\n <section className=\"rounded-lg border border-border bg-background p-6 text-muted-foreground\">\n <Txt as=\"span\" variant=\"body\" className=\"block\">\n This theme is not present in the selected snapshot. Use the clear filter action above to return to the\n full flow.\n </Txt>\n </section>\n ) : graphSummary.records.length === 0 ? (\n <section className=\"rounded-lg border border-border bg-background p-6 text-muted-foreground\">\n <Txt as=\"span\" variant=\"body\" className=\"block\">\n No cross-signal flow for this snapshot — its trace signals have not overlapped on shared traces yet.\n Pick another snapshot from the timeline below.\n </Txt>\n </section>\n ) : (\n <FlowCard\n columns={labeledColumns}\n records={graphSummary.records}\n stages={stages}\n height={height}\n onNodeClick={handleNodeClick}\n isNodeClickable={isNodeClickable}\n drillInDisabledReason={drillInDisabledReason}\n onOrderChange={handleSignalOrderChange}\n signalOrder={pendingSignalNames ?? signalNames}\n reorderDisabled={perspectiveMutation.isPending}\n />\n )}\n {perspectiveMutation.isPending ? (\n <Txt variant=\"caption\" tone=\"muted\" role=\"status\">\n Reloading snapshots for new trace signal perspective…\n </Txt>\n ) : null}\n {perspectiveMutation.isError ? (\n <Txt variant=\"caption\" className=\"text-destructive-foreground\" role=\"alert\">\n Unable to load that trace signal perspective. Try reordering the columns again.\n </Txt>\n ) : null}\n </>\n )}\n <ThemeDetailPanel\n key={`${snapshot.snapshotId}:${detailSelection?.signalName ?? ''}:${detailSelection?.themeId ?? ''}:${filterKey}`}\n entityId={entityId}\n entityType={entityType}\n snapshotId={snapshot.snapshotId}\n snapshotTotal={snapshot.total}\n selection={detailSelection}\n filters={drillStack}\n filteredStats={detailStats}\n onClose={() => setThemeDetails(undefined)}\n />\n <NoiseDetailPanel\n key={`${snapshot.snapshotId}:${noiseSignalName ?? ''}:${filterKey}`}\n entityId={entityId}\n entityType={entityType}\n snapshotId={snapshot.snapshotId}\n signalName={noiseSignalName}\n filters={drillStack}\n filteredStats={noiseStats}\n onClose={() => setNoiseSignalName(undefined)}\n />\n </div>\n </TraceIntelligenceContext.Provider>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sankey-signals.cjs.js","names":["useQueryClient","useTraceIntelligence","useState","useThemeSnapshots","useMemo","selectFlowSnapshotIds","useThemeFlows","stabilizeThemeFlow","useThemePaths","buildDrilledThemeFlow","buildSignalGraphSummary","findThemeSelectionById","useEntityLearningProgress","useMutation","fetchThemeSnapshots","fetchThemeFlow","fetchThemePaths","_Fragment","SignalsLoadingSkeleton","SignalsErrorState","SignalsEmptyState","SnapshotTimeline","SnapshotSummary","SignalsFrameLoadingSkeleton","findNoiseSelection","findThemeSelection","mergeVisibleSignalOrder","findSelectionStats","serializeThemeFilters","orderedSignals","signalLabel","TraceIntelligenceContext","Tabs","TabList","ViewModeTab","Waypoints","ArrowLeftRight","ChartNoAxesGantt","TraceIntelligenceExplainer","Txt","PendingSignalProgress","ThemeCompare","ThemeLifelines","ThemeFilterBanner","FlowCard","ThemeDetailPanel","NoiseDetailPanel"],"sources":["../../../src/ee/signals/sankey-signals.tsx"],"sourcesContent":["import { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { ArrowLeftRight, ChartNoAxesGantt, Waypoints } from 'lucide-react';\nimport { useMemo, useState } from 'react';\n\nimport { PendingSignalProgress } from './components/signals-empty-state';\nimport { SignalsOverviewPage as SignalsEmptyState } from './components/signals-overview-page';\nimport { fetchThemeFlow, fetchThemePaths, fetchThemeSnapshots, serializeThemeFilters } from './entity-learning-api';\nimport { FlowCard } from './flow-card';\nimport { useEntityLearningProgress } from './hooks/use-entity-learning-progress';\nimport { useSnapshotPlayback } from './hooks/use-snapshot-playback';\nimport { useThemeFlows } from './hooks/use-theme-flows';\nimport { useThemePaths } from './hooks/use-theme-paths';\nimport { useThemeSnapshots } from './hooks/use-theme-snapshots';\nimport { NoiseDetailPanel } from './noise-detail-panel';\nimport { buildSignalGraphSummary, selectFlowSnapshotIds, stabilizeThemeFlow } from './sankey-signals-data';\nimport { orderedSignals, signalLabel } from './signal-formatting';\nimport { SignalsErrorState } from './signals-error-state';\nimport { SignalsFrameLoadingSkeleton, SignalsLoadingSkeleton } from './signals-loading-skeleton';\nimport { SnapshotSummary } from './snapshot-summary';\nimport { SnapshotTimeline } from './snapshot-timeline';\nimport { ThemeCompare } from './theme-compare';\nimport { ThemeDetailPanel } from './theme-detail-panel';\nimport {\n buildDrilledThemeFlow,\n findNoiseSelection,\n findSelectionStats,\n findThemeSelection,\n findThemeSelectionById,\n mergeVisibleSignalOrder,\n} from './theme-drilldown-data';\nimport type { SelectedTheme, ThemeSelection } from './theme-drilldown-data';\nimport { ThemeFilterBanner } from './theme-filter-banner';\nimport { ThemeLifelines } from './theme-lifelines';\nimport { TraceIntelligenceContext } from './trace-intelligence-context';\nimport { TraceIntelligenceExplainer } from './trace-intelligence-explainer';\nimport type { TraceSignalName } from './types';\nimport { useTraceIntelligence } from './use-trace-intelligence';\nimport { ViewModeTab } from './view-mode-tab';\nimport type { SignalsViewMode } from './view-mode-tab';\nimport type { SankeyChartNodeSelection } from '@/ds/components/SankeyChart';\nimport { TabList, Tabs } from '@/ds/components/Tabs';\nimport { Txt } from '@/ds/components/Txt';\n\nexport interface SankeySignalsProps {\n entityId: string;\n entityType?: string;\n signalNames: TraceSignalName[];\n dateFrom?: Date;\n dateTo?: Date;\n height?: number;\n selectedThemeId: string | undefined;\n onSelectedThemeIdChange: (themeId: string | undefined) => void;\n /** Snapshot id of the timeline frame currently displayed. The parent owns this state. */\n selectedFrameId: string;\n onFrameIdChange: (frameId: string) => void;\n /** Date range control rendered in line with the view mode tabs. */\n dateRangePicker?: React.ReactNode;\n}\n\nconst DRILL_IN_TRACE_LIMIT = 2000;\n\n/** One-line answer to \"what am I looking at?\" for each view, shown under the tabs. */\nconst VIEW_DESCRIPTIONS: Omit<Record<SignalsViewMode, string>, 'flow'> = {\n compare: 'Which themes grew, shrank, appeared, or disappeared between two points in time.',\n lifelines: \"Each theme's share of traces across the whole selected range.\",\n};\n\nfunction formatSignalList(labels: string[]): string {\n if (labels.length < 2) return labels[0] ?? 'trace signal';\n if (labels.length === 2) return labels.join(' and ');\n return `${labels.slice(0, -1).join(', ')}, and ${labels.at(-1)}`;\n}\n\nexport function SankeySignals({\n entityId,\n entityType = 'agent',\n signalNames: initialSignalNames,\n dateFrom,\n dateTo,\n height,\n selectedThemeId,\n onSelectedThemeIdChange,\n selectedFrameId,\n onFrameIdChange,\n dateRangePicker,\n}: SankeySignalsProps) {\n const queryClient = useQueryClient();\n const traceIntelligence = useTraceIntelligence();\n const { cacheScope, request, LinkComponent, signalCatalog } = traceIntelligence;\n const [signalNames, setSignalNames] = useState(() => initialSignalNames);\n const [pendingSignalNames, setPendingSignalNames] = useState<TraceSignalName[]>();\n const snapshotsQuery = useThemeSnapshots(entityId, entityType, signalNames, dateFrom, dateTo);\n const effectiveSignalCatalog = snapshotsQuery.data?.signalCatalog ?? signalCatalog;\n const traceIntelligenceContext = useMemo(\n () => ({ ...traceIntelligence, signalCatalog: effectiveSignalCatalog }),\n [effectiveSignalCatalog, traceIntelligence],\n );\n const snapshots = [...(snapshotsQuery.data?.snapshots ?? [])].sort((left, right) => left.ordinal - right.ordinal);\n const [isPlaying, setIsPlaying] = useState(false);\n const [viewMode, setViewMode] = useState<SignalsViewMode>('flow');\n const [drillStack, setDrillStack] = useState<ThemeSelection[]>([]);\n const [noiseSignalName, setNoiseSignalName] = useState<TraceSignalName>();\n // Pure derivation: the parent owns the frame. The index-0 fallback only covers\n // the transient render where a perspective change swapped the snapshot list.\n const matchedSnapshotIndex = snapshots.findIndex(snapshot => snapshot.snapshotId === selectedFrameId);\n const selectedSnapshotIndex = matchedSnapshotIndex >= 0 ? matchedSnapshotIndex : 0;\n const snapshot = snapshots[selectedSnapshotIndex];\n const totalSnapshots = snapshotsQuery.data?.totalSnapshots ?? snapshot?.total ?? 0;\n const selectSnapshot = (index: number) => {\n const id = snapshots[index]?.snapshotId;\n if (id) onFrameIdChange(id);\n };\n const handleViewModeChange = (nextViewMode: SignalsViewMode) => {\n if (nextViewMode !== 'flow') setIsPlaying(false);\n setViewMode(nextViewMode);\n };\n const handlePlayingChange = (nextIsPlaying: boolean) => {\n // Restart from the first landmark when play is pressed at the end.\n if (nextIsPlaying && selectedSnapshotIndex === snapshots.length - 1) selectSnapshot(0);\n setIsPlaying(nextIsPlaying);\n };\n const setThemeDetails = (selection: SelectedTheme | undefined) => {\n onSelectedThemeIdChange(selection?.themeId);\n };\n // Compare cards and lifeline points open details for the theme at the\n // landmark they were clicked on, so the panel's snapshot follows the click.\n const openThemeDetailsAt = (selection: ThemeSelection, snapshotIndex: number) => {\n if (selection.kind !== 'theme') return;\n selectSnapshot(snapshotIndex);\n setNoiseSignalName(undefined);\n setThemeDetails(selection);\n };\n\n // Undefined at the last landmark so playback stops instead of looping.\n const nextSnapshotId = snapshots[selectedSnapshotIndex + 1]?.snapshotId;\n const flowSnapshotIds = selectFlowSnapshotIds(snapshots, selectedSnapshotIndex);\n const flowQueries = useThemeFlows(entityId, entityType, signalNames, flowSnapshotIds);\n const flowQuery = flowQueries[flowSnapshotIds.indexOf(snapshot?.snapshotId ?? '')];\n const currentFlow = flowQuery?.data;\n // The loading skeleton tracks only the selected snapshot's flow; prefetched\n // neighbors warm the cache in the background without blocking the chart.\n const isFlowPending = flowQuery?.isPending ?? false;\n // Errors stay window-wide: a failed preload surfaces the retry state instead\n // of letting playback advance into a broken frame.\n const hasFlowError = flowQueries.some(query => query.isError);\n const isFlowWindowBusy = flowQueries.some(query => query.isPending) || hasFlowError;\n const windowFlows = useMemo(() => flowQueries.flatMap(query => (query.data ? [query.data] : [])), [flowQueries]);\n const stableUnfilteredFlow = useMemo(\n () => (currentFlow ? stabilizeThemeFlow(currentFlow, windowFlows) : undefined),\n [currentFlow, windowFlows],\n );\n const drillInAvailable = Boolean(currentFlow && currentFlow.snapshot.traceCount <= DRILL_IN_TRACE_LIMIT);\n const pathsQuery = useThemePaths(\n entityId,\n entityType,\n signalNames,\n snapshot?.snapshotId,\n drillInAvailable && drillStack.length > 0,\n );\n const flow = useMemo(() => {\n if (!stableUnfilteredFlow || drillStack.length === 0 || !pathsQuery.data) return stableUnfilteredFlow;\n\n const drilledFlow = buildDrilledThemeFlow(stableUnfilteredFlow, pathsQuery.data, drillStack);\n return stabilizeThemeFlow(drilledFlow, [stableUnfilteredFlow, drilledFlow]);\n }, [drillStack, pathsQuery.data, stableUnfilteredFlow]);\n const graphSummary = useMemo(() => (flow ? buildSignalGraphSummary(flow) : undefined), [flow]);\n const detailSelection =\n stableUnfilteredFlow && selectedThemeId ? findThemeSelectionById(stableUnfilteredFlow, selectedThemeId) : undefined;\n const populatedStageCount = currentFlow?.stages.filter(stage => stage.nodes.length > 0).length ?? 0;\n const hasPendingEnabledSignals = effectiveSignalCatalog.some(signal => signal.enabled && signal.status !== 'ready');\n const shouldLoadProgress =\n snapshotsQuery.isSuccess &&\n !snapshotsQuery.isError &&\n (hasPendingEnabledSignals ||\n !snapshot ||\n Boolean(currentFlow && (!flow || !graphSummary || populatedStageCount < 2)));\n const progressQuery = useEntityLearningProgress(entityId, entityType, shouldLoadProgress);\n const isPlaybackBlockedByDrillIn = drillStack.length > 0 && (pathsQuery.isFetching || pathsQuery.isError);\n const hasActivePathsError = drillStack.length > 0 && pathsQuery.isError;\n\n useSnapshotPlayback({\n isPlaying,\n isPlaybackBlocked: isFlowWindowBusy || isPlaybackBlockedByDrillIn,\n nextSnapshot: nextSnapshotId,\n onAdvance: frameId => {\n if (frameId === undefined) {\n setIsPlaying(false);\n return;\n }\n onFrameIdChange(frameId);\n },\n snapshotCount: snapshots.length,\n });\n\n const perspectiveMutation = useMutation({\n mutationFn: async (nextSignalNames: TraceSignalName[]) => {\n const nextSnapshots = await queryClient.fetchQuery({\n queryKey: [\n 'entity-learning',\n cacheScope,\n entityType,\n entityId,\n 'theme-snapshots',\n nextSignalNames,\n dateFrom?.toISOString(),\n dateTo?.toISOString(),\n ],\n queryFn: () => fetchThemeSnapshots(request, entityId, entityType, nextSignalNames, dateFrom, dateTo),\n });\n const sortedNextSnapshots = [...nextSnapshots.snapshots].sort((left, right) => left.ordinal - right.ordinal);\n const matchedNextIndex = sortedNextSnapshots.findIndex(candidate => candidate.ordinal === snapshot?.ordinal);\n const nextSelectedIndex = matchedNextIndex >= 0 ? matchedNextIndex : 0;\n const nextSnapshot = sortedNextSnapshots[nextSelectedIndex];\n await Promise.all(\n selectFlowSnapshotIds(sortedNextSnapshots, nextSelectedIndex).map(snapshotId =>\n queryClient.fetchQuery({\n queryKey: ['entity-learning', cacheScope, entityType, entityId, 'theme-flow', nextSignalNames, snapshotId],\n queryFn: () => fetchThemeFlow(request, entityId, entityType, nextSignalNames, snapshotId),\n }),\n ),\n );\n if (drillStack.length > 0 && nextSnapshot && nextSnapshot.traceCount <= DRILL_IN_TRACE_LIMIT) {\n await queryClient.fetchQuery({\n queryKey: [\n 'entity-learning',\n cacheScope,\n entityType,\n entityId,\n 'theme-paths',\n nextSignalNames,\n nextSnapshot.snapshotId,\n ],\n queryFn: () => fetchThemePaths(request, entityId, entityType, nextSignalNames, nextSnapshot.snapshotId),\n });\n }\n return { nextSignalNames, nextFrameId: nextSnapshot?.snapshotId };\n },\n onSuccess: ({ nextSignalNames, nextFrameId }) => {\n setSignalNames(nextSignalNames);\n setPendingSignalNames(undefined);\n // Keep the parent-owned frame pointing at a snapshot that exists in the new perspective.\n if (nextFrameId && nextFrameId !== selectedFrameId) onFrameIdChange(nextFrameId);\n },\n onError: () => setPendingSignalNames(undefined),\n });\n\n if (snapshotsQuery.isPending) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsLoadingSkeleton />\n </>\n );\n }\n\n if (snapshotsQuery.isError || hasFlowError || hasActivePathsError) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsErrorState\n message=\"Unable to load trace signal flow.\"\n onRetry={() => {\n setIsPlaying(false);\n void snapshotsQuery.refetch();\n void Promise.all(flowQueries.map(query => query.refetch()));\n if (drillStack.length > 0 && drillInAvailable) void pathsQuery.refetch();\n }}\n onClear={hasActivePathsError ? () => setDrillStack([]) : undefined}\n />\n </>\n );\n }\n\n if (!snapshot) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsEmptyState\n LinkComponent={LinkComponent}\n progress={progressQuery.data}\n signalCatalog={effectiveSignalCatalog}\n isRangeEmpty\n />\n </>\n );\n }\n\n if (isFlowPending) {\n return (\n <div className=\"min-w-0 space-y-5 p-4 lg:p-6\">\n {dateRangePicker && <div className=\"flex justify-end\">{dateRangePicker}</div>}\n <SnapshotTimeline\n snapshots={snapshots}\n selectedIndex={selectedSnapshotIndex}\n totalSnapshots={totalSnapshots}\n summary={snapshot ? <SnapshotSummary snapshot={snapshot} flow={undefined} /> : undefined}\n isPlaying={isPlaying}\n onPlayingChange={handlePlayingChange}\n onSnapshotChange={selectSnapshot}\n />\n <SignalsFrameLoadingSkeleton />\n </div>\n );\n }\n\n if (!currentFlow || !flow || !graphSummary || populatedStageCount < 2) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsEmptyState\n LinkComponent={LinkComponent}\n progress={progressQuery.data}\n signalCatalog={effectiveSignalCatalog}\n />\n </>\n );\n }\n\n const stages = flow.stages;\n const isNodeClickable = (selection: SankeyChartNodeSelection) =>\n findNoiseSelection(flow, selection.column.id, selection.value) !== undefined ||\n findThemeSelection(flow, selection.column.id, selection.value) !== undefined;\n const handleNodeClick = (selection: SankeyChartNodeSelection) => {\n const nextSelection =\n findNoiseSelection(flow, selection.column.id, selection.value) ??\n findThemeSelection(flow, selection.column.id, selection.value);\n if (!nextSelection || drillStack.some(filter => filter.signalName === nextSelection.signalName)) return;\n if (nextSelection.kind === 'theme') {\n setNoiseSignalName(undefined);\n setThemeDetails(nextSelection);\n if (drillInAvailable) setDrillStack(current => [...current, nextSelection]);\n } else {\n setThemeDetails(undefined);\n setNoiseSignalName(nextSelection.signalName);\n }\n };\n const drillInDisabledReason = drillInAvailable\n ? undefined\n : 'Drill-in is unavailable for snapshots with more than 2,000 traces.';\n const isDrilledEmpty = drillStack.length > 0 && pathsQuery.data !== undefined && flow.snapshot.traceCount === 0;\n const handleSignalOrderChange = (nextSignalNames: TraceSignalName[]) => {\n if (perspectiveMutation.isPending) return;\n setIsPlaying(false);\n setThemeDetails(undefined);\n setNoiseSignalName(undefined);\n const mergedSignalNames = mergeVisibleSignalOrder(signalNames, nextSignalNames);\n setPendingSignalNames(mergedSignalNames);\n perspectiveMutation.mutate(mergedSignalNames);\n };\n const filtersResolved = drillStack.length > 0 && drillInAvailable && pathsQuery.data !== undefined;\n const filterSummaryPrefix = drillInAvailable ? 'Filtered' : 'Filters unavailable';\n const detailStats = filtersResolved ? findSelectionStats(flow, drillStack, detailSelection) : undefined;\n const noiseStats = filtersResolved\n ? findSelectionStats(flow, drillStack, noiseSignalName ? { kind: 'noise', signalName: noiseSignalName } : undefined)\n : undefined;\n const filterKey = serializeThemeFilters(drillStack);\n const catalogSignalNames = orderedSignals(effectiveSignalCatalog, signalNames);\n const viewDescription =\n viewMode === 'flow'\n ? `How this agent's traces distribute across ${formatSignalList(catalogSignalNames.map(name => signalLabel(effectiveSignalCatalog, name).toLocaleLowerCase()))} themes at this point in time.`\n : VIEW_DESCRIPTIONS[viewMode];\n const labeledColumns = graphSummary.columns.map(column => ({\n ...column,\n label: signalLabel(effectiveSignalCatalog, column.id),\n }));\n\n return (\n <TraceIntelligenceContext.Provider value={traceIntelligenceContext}>\n <div className=\"min-w-0 space-y-5 p-4 lg:p-6\">\n <div className=\"flex min-w-0 flex-wrap items-center justify-between gap-3\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-4\">\n <Tabs<SignalsViewMode>\n value={viewMode}\n defaultTab=\"flow\"\n onValueChange={handleViewModeChange}\n className=\"w-fit\"\n >\n <TabList variant=\"pill-ghost\">\n <ViewModeTab value=\"flow\" icon={<Waypoints />} label=\"Flow\" />\n <ViewModeTab value=\"compare\" icon={<ArrowLeftRight />} label=\"Compare\" />\n <ViewModeTab value=\"lifelines\" icon={<ChartNoAxesGantt />} label=\"Lifelines\" />\n </TabList>\n </Tabs>\n <TraceIntelligenceExplainer signalCatalog={effectiveSignalCatalog} />\n </div>\n {dateRangePicker}\n </div>\n <Txt variant=\"caption\" tone=\"muted\">\n {viewDescription}\n </Txt>\n <PendingSignalProgress progress={progressQuery.data} signalCatalog={effectiveSignalCatalog} />\n {viewMode === 'compare' ? (\n <ThemeCompare\n entityId={entityId}\n entityType={entityType}\n signalNames={signalNames}\n snapshots={snapshots}\n totalSnapshots={totalSnapshots}\n onThemeSelect={openThemeDetailsAt}\n />\n ) : viewMode === 'lifelines' ? (\n <ThemeLifelines\n entityId={entityId}\n entityType={entityType}\n signalNames={signalNames}\n snapshots={snapshots}\n totalSnapshots={totalSnapshots}\n selectedIndex={selectedSnapshotIndex}\n onSnapshotSelect={selectSnapshot}\n onThemeSelect={openThemeDetailsAt}\n />\n ) : (\n <>\n <SnapshotTimeline\n snapshots={snapshots}\n selectedIndex={selectedSnapshotIndex}\n totalSnapshots={totalSnapshots}\n summary={\n <SnapshotSummary\n snapshot={snapshot}\n flow={flow}\n prefix={drillStack.length > 0 ? filterSummaryPrefix : undefined}\n />\n }\n isPlaying={isPlaying}\n onPlayingChange={handlePlayingChange}\n onSnapshotChange={selectSnapshot}\n />\n {drillStack.length > 0 ? (\n <ThemeFilterBanner\n selections={drillStack}\n filteredTraceCount={filtersResolved ? flow.snapshot.traceCount : undefined}\n totalTraceCount={currentFlow.snapshot.traceCount}\n isUnavailable={!drillInAvailable}\n onViewDetails={selection => {\n if (selection.kind === 'theme') {\n setNoiseSignalName(undefined);\n setThemeDetails(selection);\n } else {\n setThemeDetails(undefined);\n setNoiseSignalName(selection.signalName);\n }\n }}\n onRemove={signalName =>\n setDrillStack(current => current.filter(filter => filter.signalName !== signalName))\n }\n onClear={() => setDrillStack([])}\n />\n ) : null}\n {isDrilledEmpty ? (\n <section className=\"rounded-lg border border-border bg-background p-6 text-muted-foreground\">\n <Txt as=\"span\" variant=\"body\" className=\"block\">\n This theme is not present in the selected snapshot. Use the clear filter action above to return to the\n full flow.\n </Txt>\n </section>\n ) : graphSummary.records.length === 0 ? (\n <section className=\"rounded-lg border border-border bg-background p-6 text-muted-foreground\">\n <Txt as=\"span\" variant=\"body\" className=\"block\">\n No cross-signal flow for this snapshot. Its trace signals have not overlapped on shared traces yet.\n Pick another snapshot from the timeline below.\n </Txt>\n </section>\n ) : (\n <FlowCard\n columns={labeledColumns}\n records={graphSummary.records}\n stages={stages}\n height={height}\n onNodeClick={handleNodeClick}\n isNodeClickable={isNodeClickable}\n drillInDisabledReason={drillInDisabledReason}\n onOrderChange={handleSignalOrderChange}\n signalOrder={pendingSignalNames ?? signalNames}\n reorderDisabled={perspectiveMutation.isPending}\n />\n )}\n {perspectiveMutation.isPending ? (\n <Txt variant=\"caption\" tone=\"muted\" role=\"status\">\n Reloading snapshots for new trace signal perspective…\n </Txt>\n ) : null}\n {perspectiveMutation.isError ? (\n <Txt variant=\"caption\" className=\"text-destructive-foreground\" role=\"alert\">\n Unable to load that trace signal perspective. Try reordering the columns again.\n </Txt>\n ) : null}\n </>\n )}\n <ThemeDetailPanel\n key={`${snapshot.snapshotId}:${detailSelection?.signalName ?? ''}:${detailSelection?.themeId ?? ''}:${filterKey}`}\n entityId={entityId}\n entityType={entityType}\n snapshotId={snapshot.snapshotId}\n snapshotTotal={snapshot.total}\n selection={detailSelection}\n filters={drillStack}\n filteredStats={detailStats}\n onClose={() => setThemeDetails(undefined)}\n />\n <NoiseDetailPanel\n key={`${snapshot.snapshotId}:${noiseSignalName ?? ''}:${filterKey}`}\n entityId={entityId}\n entityType={entityType}\n snapshotId={snapshot.snapshotId}\n signalName={noiseSignalName}\n filters={drillStack}\n filteredStats={noiseStats}\n onClose={() => setNoiseSignalName(undefined)}\n />\n </div>\n </TraceIntelligenceContext.Provider>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DA,IAAM,uBAAuB;;AAG7B,IAAM,oBAAmE;CACvE,SAAS;CACT,WAAW;AACb;AAEA,SAAS,iBAAiB,QAA0B;CAClD,IAAI,OAAO,SAAS,GAAG,OAAO,OAAO,MAAM;CAC3C,IAAI,OAAO,WAAW,GAAG,OAAO,OAAO,KAAK,OAAO;CACnD,OAAO,GAAG,OAAO,MAAM,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,OAAO,GAAG,EAAE;AAC/D;AAEA,SAAgB,cAAc,EAC5B,UACA,aAAa,SACb,aAAa,oBACb,UACA,QACA,QACA,iBACA,yBACA,iBACA,iBACA,mBACqB;CACrB,MAAM,eAAA,GAAcA,sBAAAA,eAAAA,CAAe;CACnC,MAAM,oBAAoBC,0CAAAA,qBAAqB;CAC/C,MAAM,EAAE,YAAY,SAAS,eAAe,kBAAkB;CAC9D,MAAM,CAAC,aAAa,mBAAA,GAAkBC,MAAAA,SAAAA,OAAe,kBAAkB;CACvE,MAAM,CAAC,oBAAoB,0BAAA,GAAyBA,MAAAA,SAAAA,CAA4B;CAChF,MAAM,iBAAiBC,6CAAAA,kBAAkB,UAAU,YAAY,aAAa,UAAU,MAAM;CAC5F,MAAM,yBAAyB,eAAe,MAAM,iBAAiB;CACrE,MAAM,4BAAA,GAA2BC,MAAAA,QAAAA,QACxB;EAAE,GAAG;EAAmB,eAAe;CAAuB,IACrE,CAAC,wBAAwB,iBAAiB,CAC5C;CACA,MAAM,YAAY,CAAC,GAAI,eAAe,MAAM,aAAa,CAAC,CAAE,CAAC,CAAC,MAAM,MAAM,UAAU,KAAK,UAAU,MAAM,OAAO;CAChH,MAAM,CAAC,WAAW,iBAAA,GAAgBF,MAAAA,SAAAA,CAAS,KAAK;CAChD,MAAM,CAAC,UAAU,gBAAA,GAAeA,MAAAA,SAAAA,CAA0B,MAAM;CAChE,MAAM,CAAC,YAAY,kBAAA,GAAiBA,MAAAA,SAAAA,CAA2B,CAAC,CAAC;CACjE,MAAM,CAAC,iBAAiB,uBAAA,GAAsBA,MAAAA,SAAAA,CAA0B;CAGxE,MAAM,uBAAuB,UAAU,WAAU,aAAY,SAAS,eAAe,eAAe;CACpG,MAAM,wBAAwB,wBAAwB,IAAI,uBAAuB;CACjF,MAAM,WAAW,UAAU;CAC3B,MAAM,iBAAiB,eAAe,MAAM,kBAAkB,UAAU,SAAS;CACjF,MAAM,kBAAkB,UAAkB;EACxC,MAAM,KAAK,UAAU,MAAM,EAAE;EAC7B,IAAI,IAAI,gBAAgB,EAAE;CAC5B;CACA,MAAM,wBAAwB,iBAAkC;EAC9D,IAAI,iBAAiB,QAAQ,aAAa,KAAK;EAC/C,YAAY,YAAY;CAC1B;CACA,MAAM,uBAAuB,kBAA2B;EAEtD,IAAI,iBAAiB,0BAA0B,UAAU,SAAS,GAAG,eAAe,CAAC;EACrF,aAAa,aAAa;CAC5B;CACA,MAAM,mBAAmB,cAAyC;EAChE,wBAAwB,WAAW,OAAO;CAC5C;CAGA,MAAM,sBAAsB,WAA2B,kBAA0B;EAC/E,IAAI,UAAU,SAAS,SAAS;EAChC,eAAe,aAAa;EAC5B,mBAAmB,KAAA,CAAS;EAC5B,gBAAgB,SAAS;CAC3B;CAGA,MAAM,iBAAiB,UAAU,wBAAwB,EAAE,EAAE;CAC7D,MAAM,kBAAkBG,uCAAAA,sBAAsB,WAAW,qBAAqB;CAC9E,MAAM,cAAcC,yCAAAA,cAAc,UAAU,YAAY,aAAa,eAAe;CACpF,MAAM,YAAY,YAAY,gBAAgB,QAAQ,UAAU,cAAc,EAAE;CAChF,MAAM,cAAc,WAAW;CAG/B,MAAM,gBAAgB,WAAW,aAAa;CAG9C,MAAM,eAAe,YAAY,MAAK,UAAS,MAAM,OAAO;CAC5D,MAAM,mBAAmB,YAAY,MAAK,UAAS,MAAM,SAAS,KAAK;CACvE,MAAM,eAAA,GAAcF,MAAAA,QAAAA,OAAc,YAAY,SAAQ,UAAU,MAAM,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,CAAE,GAAG,CAAC,WAAW,CAAC;CAC/G,MAAM,wBAAA,GAAuBA,MAAAA,QAAAA,OACpB,cAAcG,uCAAAA,mBAAmB,aAAa,WAAW,IAAI,KAAA,GACpE,CAAC,aAAa,WAAW,CAC3B;CACA,MAAM,mBAAmB,QAAQ,eAAe,YAAY,SAAS,cAAc,oBAAoB;CACvG,MAAM,aAAaC,yCAAAA,cACjB,UACA,YACA,aACA,UAAU,YACV,oBAAoB,WAAW,SAAS,CAC1C;CACA,MAAM,QAAA,GAAOJ,MAAAA,QAAAA,OAAc;EACzB,IAAI,CAAC,wBAAwB,WAAW,WAAW,KAAK,CAAC,WAAW,MAAM,OAAO;EAEjF,MAAM,cAAcK,wCAAAA,sBAAsB,sBAAsB,WAAW,MAAM,UAAU;EAC3F,OAAOF,uCAAAA,mBAAmB,aAAa,CAAC,sBAAsB,WAAW,CAAC;CAC5E,GAAG;EAAC;EAAY,WAAW;EAAM;CAAoB,CAAC;CACtD,MAAM,gBAAA,GAAeH,MAAAA,QAAAA,OAAe,OAAOM,uCAAAA,wBAAwB,IAAI,IAAI,KAAA,GAAY,CAAC,IAAI,CAAC;CAC7F,MAAM,kBACJ,wBAAwB,kBAAkBC,wCAAAA,uBAAuB,sBAAsB,eAAe,IAAI,KAAA;CAC5G,MAAM,sBAAsB,aAAa,OAAO,QAAO,UAAS,MAAM,MAAM,SAAS,CAAC,CAAC,CAAC,UAAU;CAClG,MAAM,2BAA2B,uBAAuB,MAAK,WAAU,OAAO,WAAW,OAAO,WAAW,OAAO;CAClH,MAAM,qBACJ,eAAe,aACf,CAAC,eAAe,YACf,4BACC,CAAC,YACD,QAAQ,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,sBAAsB,EAAE;CAC9E,MAAM,gBAAgBC,sDAAAA,0BAA0B,UAAU,YAAY,kBAAkB;CACxF,MAAM,6BAA6B,WAAW,SAAS,MAAM,WAAW,cAAc,WAAW;CACjG,MAAM,sBAAsB,WAAW,SAAS,KAAK,WAAW;CAEhE,+CAAA,oBAAoB;EAClB;EACA,mBAAmB,oBAAoB;EACvC,cAAc;EACd,YAAW,YAAW;GACpB,IAAI,YAAY,KAAA,GAAW;IACzB,aAAa,KAAK;IAClB;GACF;GACA,gBAAgB,OAAO;EACzB;EACA,eAAe,UAAU;CAC3B,CAAC;CAED,MAAM,uBAAA,GAAsBC,sBAAAA,YAAAA,CAAY;EACtC,YAAY,OAAO,oBAAuC;GAcxD,MAAM,sBAAsB,CAAC,IAAG,MAbJ,YAAY,WAAW;IACjD,UAAU;KACR;KACA;KACA;KACA;KACA;KACA;KACA,UAAU,YAAY;KACtB,QAAQ,YAAY;IACtB;IACA,eAAeC,uCAAAA,oBAAoB,SAAS,UAAU,YAAY,iBAAiB,UAAU,MAAM;GACrG,CAAC,EAAA,CAC6C,SAAS,CAAC,CAAC,MAAM,MAAM,UAAU,KAAK,UAAU,MAAM,OAAO;GAC3G,MAAM,mBAAmB,oBAAoB,WAAU,cAAa,UAAU,YAAY,UAAU,OAAO;GAC3G,MAAM,oBAAoB,oBAAoB,IAAI,mBAAmB;GACrE,MAAM,eAAe,oBAAoB;GACzC,MAAM,QAAQ,IACZT,uCAAAA,sBAAsB,qBAAqB,iBAAiB,CAAC,CAAC,KAAI,eAChE,YAAY,WAAW;IACrB,UAAU;KAAC;KAAmB;KAAY;KAAY;KAAU;KAAc;KAAiB;IAAU;IACzG,eAAeU,uCAAAA,eAAe,SAAS,UAAU,YAAY,iBAAiB,UAAU;GAC1F,CAAC,CACH,CACF;GACA,IAAI,WAAW,SAAS,KAAK,gBAAgB,aAAa,cAAc,sBACtE,MAAM,YAAY,WAAW;IAC3B,UAAU;KACR;KACA;KACA;KACA;KACA;KACA;KACA,aAAa;IACf;IACA,eAAeC,uCAAAA,gBAAgB,SAAS,UAAU,YAAY,iBAAiB,aAAa,UAAU;GACxG,CAAC;GAEH,OAAO;IAAE;IAAiB,aAAa,cAAc;GAAW;EAClE;EACA,YAAY,EAAE,iBAAiB,kBAAkB;GAC/C,eAAe,eAAe;GAC9B,sBAAsB,KAAA,CAAS;GAE/B,IAAI,eAAe,gBAAgB,iBAAiB,gBAAgB,WAAW;EACjF;EACA,eAAe,sBAAsB,KAAA,CAAS;CAChD,CAAC;CAED,IAAI,eAAe,WACjB,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAAC,kBAAAA,UAAA,EAAA,UAAA,CACG,mBAAmB,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAU;EAA8C,UAAA;CAAqB,CAAA,GACtG,iBAAA,GAAA,kBAAA,IAAA,CAACC,4CAAAA,wBAAD,CAAyB,CAAA,CACzB,EAAA,CAAA;CAIN,IAAI,eAAe,WAAW,gBAAgB,qBAC5C,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAAD,kBAAAA,UAAA,EAAA,UAAA,CACG,mBAAmB,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAU;EAA8C,UAAA;CAAqB,CAAA,GACtG,iBAAA,GAAA,kBAAA,IAAA,CAACE,uCAAAA,mBAAD;EACE,SAAQ;EACR,eAAe;GACb,aAAa,KAAK;GAClB,eAAoB,QAAQ;GAC5B,QAAa,IAAI,YAAY,KAAI,UAAS,MAAM,QAAQ,CAAC,CAAC;GAC1D,IAAI,WAAW,SAAS,KAAK,kBAAkB,WAAgB,QAAQ;EACzE;EACA,SAAS,4BAA4B,cAAc,CAAC,CAAC,IAAI,KAAA;CAC1D,CAAA,CACD,EAAA,CAAA;CAIN,IAAI,CAAC,UACH,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAAF,kBAAAA,UAAA,EAAA,UAAA,CACG,mBAAmB,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAU;EAA8C,UAAA;CAAqB,CAAA,GACtG,iBAAA,GAAA,kBAAA,IAAA,CAACG,oDAAAA,qBAAD;EACiB;EACf,UAAU,cAAc;EACxB,eAAe;EACf,cAAA;CACD,CAAA,CACD,EAAA,CAAA;CAIN,IAAI,eACF,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,WAAU;EAAf,UAAA;GACG,mBAAmB,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAAK,WAAU;IAAoB,UAAA;GAAqB,CAAA;GAC5E,iBAAA,GAAA,kBAAA,IAAA,CAACC,qCAAAA,kBAAD;IACa;IACX,eAAe;IACC;IAChB,SAAS,WAAW,iBAAA,GAAA,kBAAA,IAAA,CAACC,oCAAAA,iBAAD;KAA2B;KAAU,MAAM,KAAA;IAAY,CAAA,IAAI,KAAA;IACpE;IACX,iBAAiB;IACjB,kBAAkB;GACnB,CAAA;GACD,iBAAA,GAAA,kBAAA,IAAA,CAACC,4CAAAA,6BAAD,CAA8B,CAAA;EAC3B;;CAIT,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,gBAAgB,sBAAsB,GAClE,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAAN,kBAAAA,UAAA,EAAA,UAAA,CACG,mBAAmB,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAU;EAA8C,UAAA;CAAqB,CAAA,GACtG,iBAAA,GAAA,kBAAA,IAAA,CAACG,oDAAAA,qBAAD;EACiB;EACf,UAAU,cAAc;EACxB,eAAe;CAChB,CAAA,CACD,EAAA,CAAA;CAIN,MAAM,SAAS,KAAK;CACpB,MAAM,mBAAmB,cACvBI,wCAAAA,mBAAmB,MAAM,UAAU,OAAO,IAAI,UAAU,KAAK,MAAM,KAAA,KACnEC,wCAAAA,mBAAmB,MAAM,UAAU,OAAO,IAAI,UAAU,KAAK,MAAM,KAAA;CACrE,MAAM,mBAAmB,cAAwC;EAC/D,MAAM,gBACJD,wCAAAA,mBAAmB,MAAM,UAAU,OAAO,IAAI,UAAU,KAAK,KAC7DC,wCAAAA,mBAAmB,MAAM,UAAU,OAAO,IAAI,UAAU,KAAK;EAC/D,IAAI,CAAC,iBAAiB,WAAW,MAAK,WAAU,OAAO,eAAe,cAAc,UAAU,GAAG;EACjG,IAAI,cAAc,SAAS,SAAS;GAClC,mBAAmB,KAAA,CAAS;GAC5B,gBAAgB,aAAa;GAC7B,IAAI,kBAAkB,eAAc,YAAW,CAAC,GAAG,SAAS,aAAa,CAAC;EAC5E,OAAO;GACL,gBAAgB,KAAA,CAAS;GACzB,mBAAmB,cAAc,UAAU;EAC7C;CACF;CACA,MAAM,wBAAwB,mBAC1B,KAAA,IACA;CACJ,MAAM,iBAAiB,WAAW,SAAS,KAAK,WAAW,SAAS,KAAA,KAAa,KAAK,SAAS,eAAe;CAC9G,MAAM,2BAA2B,oBAAuC;EACtE,IAAI,oBAAoB,WAAW;EACnC,aAAa,KAAK;EAClB,gBAAgB,KAAA,CAAS;EACzB,mBAAmB,KAAA,CAAS;EAC5B,MAAM,oBAAoBC,wCAAAA,wBAAwB,aAAa,eAAe;EAC9E,sBAAsB,iBAAiB;EACvC,oBAAoB,OAAO,iBAAiB;CAC9C;CACA,MAAM,kBAAkB,WAAW,SAAS,KAAK,oBAAoB,WAAW,SAAS,KAAA;CACzF,MAAM,sBAAsB,mBAAmB,aAAa;CAC5D,MAAM,cAAc,kBAAkBC,wCAAAA,mBAAmB,MAAM,YAAY,eAAe,IAAI,KAAA;CAC9F,MAAM,aAAa,kBACfA,wCAAAA,mBAAmB,MAAM,YAAY,kBAAkB;EAAE,MAAM;EAAS,YAAY;CAAgB,IAAI,KAAA,CAAS,IACjH,KAAA;CACJ,MAAM,YAAYC,uCAAAA,sBAAsB,UAAU;CAClD,MAAM,qBAAqBC,qCAAAA,eAAe,wBAAwB,WAAW;CAC7E,MAAM,kBACJ,aAAa,SACT,6CAA6C,iBAAiB,mBAAmB,KAAI,SAAQC,qCAAAA,YAAY,wBAAwB,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,kCAC7J,kBAAkB;CACxB,MAAM,iBAAiB,aAAa,QAAQ,KAAI,YAAW;EACzD,GAAG;EACH,OAAOA,qCAAAA,YAAY,wBAAwB,OAAO,EAAE;CACtD,EAAE;CAEF,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,8CAAAA,yBAAyB,UAA1B;EAAmC,OAAO;EACxC,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAAK,WAAU;GAAf,UAAA;IACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,iBAAAA,MAAD;OACE,OAAO;OACP,YAAW;OACX,eAAe;OACf,WAAU;OAEV,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAACC,iBAAAA,SAAD;QAAS,SAAQ;QAAjB,UAAA;SACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,iCAAAA,aAAD;UAAa,OAAM;UAAO,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,WAAD,CAAY,CAAA;UAAG,OAAM;SAAQ,CAAA;SAC7D,iBAAA,GAAA,kBAAA,IAAA,CAACD,iCAAAA,aAAD;UAAa,OAAM;UAAU,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAACE,aAAAA,gBAAD,CAAiB,CAAA;UAAG,OAAM;SAAW,CAAA;SACxE,iBAAA,GAAA,kBAAA,IAAA,CAACF,iCAAAA,aAAD;UAAa,OAAM;UAAY,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAACG,aAAAA,kBAAD,CAAmB,CAAA;UAAG,OAAM;SAAa,CAAA;QACvE;;MACL,CAAA,GACN,iBAAA,GAAA,kBAAA,IAAA,CAACC,gDAAAA,4BAAD,EAA4B,eAAe,uBAAyB,CAAA,CACjE;KACJ,CAAA,GAAA,eACE;;IACL,iBAAA,GAAA,kBAAA,IAAA,CAACC,YAAAA,KAAD;KAAK,SAAQ;KAAU,MAAK;KACzB,UAAA;IACE,CAAA;IACL,iBAAA,GAAA,kBAAA,IAAA,CAACC,kDAAAA,uBAAD;KAAuB,UAAU,cAAc;KAAM,eAAe;IAAyB,CAAA;IAC5F,aAAa,YACZ,iBAAA,GAAA,kBAAA,IAAA,CAACC,iCAAAA,cAAD;KACY;KACE;KACC;KACF;KACK;KAChB,eAAe;IAChB,CAAA,IACC,aAAa,cACf,iBAAA,GAAA,kBAAA,IAAA,CAACC,mCAAAA,gBAAD;KACY;KACE;KACC;KACF;KACK;KAChB,eAAe;KACf,kBAAkB;KAClB,eAAe;IAChB,CAAA,IAED,iBAAA,GAAA,kBAAA,KAAA,CAAAzB,kBAAAA,UAAA,EAAA,UAAA;KACE,iBAAA,GAAA,kBAAA,IAAA,CAACI,qCAAAA,kBAAD;MACa;MACX,eAAe;MACC;MAChB,SACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,oCAAAA,iBAAD;OACY;OACJ;OACN,QAAQ,WAAW,SAAS,IAAI,sBAAsB,KAAA;MACvD,CAAA;MAEQ;MACX,iBAAiB;MACjB,kBAAkB;KACnB,CAAA;KACA,WAAW,SAAS,IACnB,iBAAA,GAAA,kBAAA,IAAA,CAACqB,uCAAAA,mBAAD;MACE,YAAY;MACZ,oBAAoB,kBAAkB,KAAK,SAAS,aAAa,KAAA;MACjE,iBAAiB,YAAY,SAAS;MACtC,eAAe,CAAC;MAChB,gBAAe,cAAa;OAC1B,IAAI,UAAU,SAAS,SAAS;QAC9B,mBAAmB,KAAA,CAAS;QAC5B,gBAAgB,SAAS;OAC3B,OAAO;QACL,gBAAgB,KAAA,CAAS;QACzB,mBAAmB,UAAU,UAAU;OACzC;MACF;MACA,WAAU,eACR,eAAc,YAAW,QAAQ,QAAO,WAAU,OAAO,eAAe,UAAU,CAAC;MAErF,eAAe,cAAc,CAAC,CAAC;KAChC,CAAA,IACC;KACH,iBACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD;MAAS,WAAU;MACjB,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACJ,YAAAA,KAAD;OAAK,IAAG;OAAO,SAAQ;OAAO,WAAU;OAAQ,UAAA;MAG3C,CAAA;KACE,CAAA,IACP,aAAa,QAAQ,WAAW,IAClC,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD;MAAS,WAAU;MACjB,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACA,YAAAA,KAAD;OAAK,IAAG;OAAO,SAAQ;OAAO,WAAU;OAAQ,UAAA;MAG3C,CAAA;KACE,CAAA,IAET,iBAAA,GAAA,kBAAA,IAAA,CAACK,6BAAAA,UAAD;MACE,SAAS;MACT,SAAS,aAAa;MACd;MACA;MACR,aAAa;MACI;MACM;MACvB,eAAe;MACf,aAAa,sBAAsB;MACnC,iBAAiB,oBAAoB;KACtC,CAAA;KAEF,oBAAoB,YACnB,iBAAA,GAAA,kBAAA,IAAA,CAACL,YAAAA,KAAD;MAAK,SAAQ;MAAU,MAAK;MAAQ,MAAK;MAAS,UAAA;KAE7C,CAAA,IACH;KACH,oBAAoB,UACnB,iBAAA,GAAA,kBAAA,IAAA,CAACA,YAAAA,KAAD;MAAK,SAAQ;MAAU,WAAU;MAA8B,MAAK;MAAQ,UAAA;KAEvE,CAAA,IACH;IACJ,EAAA,CAAA;IAEJ,iBAAA,GAAA,kBAAA,IAAA,CAACM,sCAAAA,kBAAD;KAEY;KACE;KACZ,YAAY,SAAS;KACrB,eAAe,SAAS;KACxB,WAAW;KACX,SAAS;KACT,eAAe;KACf,eAAe,gBAAgB,KAAA,CAAS;IACzC,GATM,GAAG,SAAS,WAAW,GAAG,iBAAiB,cAAc,GAAG,GAAG,iBAAiB,WAAW,GAAG,GAAG,WASvG;IACD,iBAAA,GAAA,kBAAA,IAAA,CAACC,sCAAAA,kBAAD;KAEY;KACE;KACZ,YAAY,SAAS;KACrB,YAAY;KACZ,SAAS;KACT,eAAe;KACf,eAAe,mBAAmB,KAAA,CAAS;IAC5C,GARM,GAAG,SAAS,WAAW,GAAG,mBAAmB,GAAG,GAAG,WAQzD;GACE;;CAC4B,CAAA;AAEvC"}
|
|
@@ -1,29 +1,30 @@
|
|
|
1
|
-
import { t as Txt } from "../../Txt-BM6TVV_c.js";
|
|
2
|
-
import { n as Tabs, r as TabList } from "../../tabs-tab-CYTZevdV.js";
|
|
3
|
-
import { orderedSignals, signalLabel } from "./signal-formatting.es.js";
|
|
4
1
|
import { PendingSignalProgress } from "./components/signals-empty-state.es.js";
|
|
5
2
|
import { SignalsOverviewPage } from "./components/signals-overview-page.es.js";
|
|
6
3
|
import { fetchThemeFlow, fetchThemePaths, fetchThemeSnapshots, serializeThemeFilters } from "./entity-learning-api.es.js";
|
|
7
|
-
import { TraceIntelligenceContext } from "./trace-intelligence-context.es.js";
|
|
8
|
-
import { useTraceIntelligence } from "./use-trace-intelligence.es.js";
|
|
9
|
-
import { useEntityLearningProgress } from "./hooks/use-entity-learning-progress.es.js";
|
|
10
|
-
import { useThemePaths } from "./hooks/use-theme-paths.es.js";
|
|
11
|
-
import { useThemeSnapshots } from "./hooks/use-theme-snapshots.es.js";
|
|
12
|
-
import { buildSignalGraphSummary, selectFlowSnapshotIds, snapshotSummaryLabel, stabilizeThemeFlow } from "./sankey-signals-data.es.js";
|
|
13
4
|
import { FlowCard } from "./flow-card.es.js";
|
|
5
|
+
import { useEntityLearningProgress } from "./hooks/use-entity-learning-progress.es.js";
|
|
14
6
|
import { useSnapshotPlayback } from "./hooks/use-snapshot-playback.es.js";
|
|
15
7
|
import { useThemeFlows } from "./hooks/use-theme-flows.es.js";
|
|
8
|
+
import { useThemePaths } from "./hooks/use-theme-paths.es.js";
|
|
9
|
+
import { useThemeSnapshots } from "./hooks/use-theme-snapshots.es.js";
|
|
16
10
|
import { NoiseDetailPanel } from "./noise-detail-panel.es.js";
|
|
11
|
+
import { buildSignalGraphSummary, selectFlowSnapshotIds, stabilizeThemeFlow } from "./sankey-signals-data.es.js";
|
|
12
|
+
import { orderedSignals, signalLabel } from "./signal-formatting.es.js";
|
|
17
13
|
import { SignalsErrorState } from "./signals-error-state.es.js";
|
|
18
14
|
import { SignalsFrameLoadingSkeleton, SignalsLoadingSkeleton } from "./signals-loading-skeleton.es.js";
|
|
15
|
+
import { SnapshotSummary } from "./snapshot-summary.es.js";
|
|
19
16
|
import { SnapshotTimeline } from "./snapshot-timeline.es.js";
|
|
20
17
|
import { ThemeCompare } from "./theme-compare.es.js";
|
|
21
18
|
import { ThemeDetailPanel } from "./theme-detail-panel.es.js";
|
|
22
19
|
import { buildDrilledThemeFlow, findNoiseSelection, findSelectionStats, findThemeSelection, findThemeSelectionById, mergeVisibleSignalOrder } from "./theme-drilldown-data.es.js";
|
|
23
20
|
import { ThemeFilterBanner } from "./theme-filter-banner.es.js";
|
|
24
21
|
import { ThemeLifelines } from "./theme-lifelines.es.js";
|
|
22
|
+
import { TraceIntelligenceContext } from "./trace-intelligence-context.es.js";
|
|
25
23
|
import { TraceIntelligenceExplainer } from "./trace-intelligence-explainer.es.js";
|
|
24
|
+
import { useTraceIntelligence } from "./use-trace-intelligence.es.js";
|
|
26
25
|
import { ViewModeTab } from "./view-mode-tab.es.js";
|
|
26
|
+
import { n as Tabs, r as TabList } from "../../tabs-tab-BHs639jL.js";
|
|
27
|
+
import { t as Txt } from "../../Txt-5efBsb2p.js";
|
|
27
28
|
import { useMemo, useState } from "react";
|
|
28
29
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
29
30
|
import { ArrowLeftRight, ChartNoAxesGantt, Waypoints } from "lucide-react";
|
|
@@ -215,7 +216,10 @@ function SankeySignals({ entityId, entityType = "agent", signalNames: initialSig
|
|
|
215
216
|
snapshots,
|
|
216
217
|
selectedIndex: selectedSnapshotIndex,
|
|
217
218
|
totalSnapshots,
|
|
218
|
-
summary: snapshot ?
|
|
219
|
+
summary: snapshot ? /* @__PURE__ */ jsx(SnapshotSummary, {
|
|
220
|
+
snapshot,
|
|
221
|
+
flow: void 0
|
|
222
|
+
}) : void 0,
|
|
219
223
|
isPlaying,
|
|
220
224
|
onPlayingChange: handlePlayingChange,
|
|
221
225
|
onSnapshotChange: selectSnapshot
|
|
@@ -257,6 +261,7 @@ function SankeySignals({ entityId, entityType = "agent", signalNames: initialSig
|
|
|
257
261
|
perspectiveMutation.mutate(mergedSignalNames);
|
|
258
262
|
};
|
|
259
263
|
const filtersResolved = drillStack.length > 0 && drillInAvailable && pathsQuery.data !== void 0;
|
|
264
|
+
const filterSummaryPrefix = drillInAvailable ? "Filtered" : "Filters unavailable";
|
|
260
265
|
const detailStats = filtersResolved ? findSelectionStats(flow, drillStack, detailSelection) : void 0;
|
|
261
266
|
const noiseStats = filtersResolved ? findSelectionStats(flow, drillStack, noiseSignalName ? {
|
|
262
267
|
kind: "noise",
|
|
@@ -336,7 +341,11 @@ function SankeySignals({ entityId, entityType = "agent", signalNames: initialSig
|
|
|
336
341
|
snapshots,
|
|
337
342
|
selectedIndex: selectedSnapshotIndex,
|
|
338
343
|
totalSnapshots,
|
|
339
|
-
summary:
|
|
344
|
+
summary: /* @__PURE__ */ jsx(SnapshotSummary, {
|
|
345
|
+
snapshot,
|
|
346
|
+
flow,
|
|
347
|
+
prefix: drillStack.length > 0 ? filterSummaryPrefix : void 0
|
|
348
|
+
}),
|
|
340
349
|
isPlaying,
|
|
341
350
|
onPlayingChange: handlePlayingChange,
|
|
342
351
|
onSnapshotChange: selectSnapshot
|
|
@@ -372,7 +381,7 @@ function SankeySignals({ entityId, entityType = "agent", signalNames: initialSig
|
|
|
372
381
|
as: "span",
|
|
373
382
|
variant: "body",
|
|
374
383
|
className: "block",
|
|
375
|
-
children: "No cross-signal flow for this snapshot
|
|
384
|
+
children: "No cross-signal flow for this snapshot. Its trace signals have not overlapped on shared traces yet. Pick another snapshot from the timeline below."
|
|
376
385
|
})
|
|
377
386
|
}) : /* @__PURE__ */ jsx(FlowCard, {
|
|
378
387
|
columns: labeledColumns,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sankey-signals.es.js","names":["_Fragment","SignalsEmptyState"],"sources":["../../../src/ee/signals/sankey-signals.tsx"],"sourcesContent":["import { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { ArrowLeftRight, ChartNoAxesGantt, Waypoints } from 'lucide-react';\nimport { useMemo, useState } from 'react';\n\nimport { PendingSignalProgress } from './components/signals-empty-state';\nimport { SignalsOverviewPage as SignalsEmptyState } from './components/signals-overview-page';\nimport { fetchThemeFlow, fetchThemePaths, fetchThemeSnapshots, serializeThemeFilters } from './entity-learning-api';\nimport { FlowCard } from './flow-card';\nimport { useEntityLearningProgress } from './hooks/use-entity-learning-progress';\nimport { useSnapshotPlayback } from './hooks/use-snapshot-playback';\nimport { useThemeFlows } from './hooks/use-theme-flows';\nimport { useThemePaths } from './hooks/use-theme-paths';\nimport { useThemeSnapshots } from './hooks/use-theme-snapshots';\nimport { NoiseDetailPanel } from './noise-detail-panel';\nimport {\n buildSignalGraphSummary,\n selectFlowSnapshotIds,\n snapshotSummaryLabel,\n stabilizeThemeFlow,\n} from './sankey-signals-data';\nimport { orderedSignals, signalLabel } from './signal-formatting';\nimport { SignalsErrorState } from './signals-error-state';\nimport { SignalsFrameLoadingSkeleton, SignalsLoadingSkeleton } from './signals-loading-skeleton';\nimport { SnapshotTimeline } from './snapshot-timeline';\nimport { ThemeCompare } from './theme-compare';\nimport { ThemeDetailPanel } from './theme-detail-panel';\nimport {\n buildDrilledThemeFlow,\n findNoiseSelection,\n findSelectionStats,\n findThemeSelection,\n findThemeSelectionById,\n mergeVisibleSignalOrder,\n} from './theme-drilldown-data';\nimport type { SelectedTheme, ThemeSelection } from './theme-drilldown-data';\nimport { ThemeFilterBanner } from './theme-filter-banner';\nimport { ThemeLifelines } from './theme-lifelines';\nimport { TraceIntelligenceContext } from './trace-intelligence-context';\nimport { TraceIntelligenceExplainer } from './trace-intelligence-explainer';\nimport type { TraceSignalName } from './types';\nimport { useTraceIntelligence } from './use-trace-intelligence';\nimport { ViewModeTab } from './view-mode-tab';\nimport type { SignalsViewMode } from './view-mode-tab';\nimport type { SankeyChartNodeSelection } from '@/ds/components/SankeyChart';\nimport { TabList, Tabs } from '@/ds/components/Tabs';\nimport { Txt } from '@/ds/components/Txt';\n\nexport interface SankeySignalsProps {\n entityId: string;\n entityType?: string;\n signalNames: TraceSignalName[];\n dateFrom?: Date;\n dateTo?: Date;\n height?: number;\n selectedThemeId: string | undefined;\n onSelectedThemeIdChange: (themeId: string | undefined) => void;\n /** Snapshot id of the timeline frame currently displayed. The parent owns this state. */\n selectedFrameId: string;\n onFrameIdChange: (frameId: string) => void;\n /** Date range control rendered in line with the view mode tabs. */\n dateRangePicker?: React.ReactNode;\n}\n\nconst DRILL_IN_TRACE_LIMIT = 2000;\n\n/** One-line answer to \"what am I looking at?\" for each view, shown under the tabs. */\nconst VIEW_DESCRIPTIONS: Omit<Record<SignalsViewMode, string>, 'flow'> = {\n compare: 'Which themes grew, shrank, appeared, or disappeared between two points in time.',\n lifelines: \"Each theme's share of traces across the whole selected range.\",\n};\n\nfunction formatSignalList(labels: string[]): string {\n if (labels.length < 2) return labels[0] ?? 'trace signal';\n if (labels.length === 2) return labels.join(' and ');\n return `${labels.slice(0, -1).join(', ')}, and ${labels.at(-1)}`;\n}\n\nexport function SankeySignals({\n entityId,\n entityType = 'agent',\n signalNames: initialSignalNames,\n dateFrom,\n dateTo,\n height,\n selectedThemeId,\n onSelectedThemeIdChange,\n selectedFrameId,\n onFrameIdChange,\n dateRangePicker,\n}: SankeySignalsProps) {\n const queryClient = useQueryClient();\n const traceIntelligence = useTraceIntelligence();\n const { cacheScope, request, LinkComponent, signalCatalog } = traceIntelligence;\n const [signalNames, setSignalNames] = useState(() => initialSignalNames);\n const [pendingSignalNames, setPendingSignalNames] = useState<TraceSignalName[]>();\n const snapshotsQuery = useThemeSnapshots(entityId, entityType, signalNames, dateFrom, dateTo);\n const effectiveSignalCatalog = snapshotsQuery.data?.signalCatalog ?? signalCatalog;\n const traceIntelligenceContext = useMemo(\n () => ({ ...traceIntelligence, signalCatalog: effectiveSignalCatalog }),\n [effectiveSignalCatalog, traceIntelligence],\n );\n const snapshots = [...(snapshotsQuery.data?.snapshots ?? [])].sort((left, right) => left.ordinal - right.ordinal);\n const [isPlaying, setIsPlaying] = useState(false);\n const [viewMode, setViewMode] = useState<SignalsViewMode>('flow');\n const [drillStack, setDrillStack] = useState<ThemeSelection[]>([]);\n const [noiseSignalName, setNoiseSignalName] = useState<TraceSignalName>();\n // Pure derivation: the parent owns the frame. The index-0 fallback only covers\n // the transient render where a perspective change swapped the snapshot list.\n const matchedSnapshotIndex = snapshots.findIndex(snapshot => snapshot.snapshotId === selectedFrameId);\n const selectedSnapshotIndex = matchedSnapshotIndex >= 0 ? matchedSnapshotIndex : 0;\n const snapshot = snapshots[selectedSnapshotIndex];\n const totalSnapshots = snapshotsQuery.data?.totalSnapshots ?? snapshot?.total ?? 0;\n const selectSnapshot = (index: number) => {\n const id = snapshots[index]?.snapshotId;\n if (id) onFrameIdChange(id);\n };\n const handleViewModeChange = (nextViewMode: SignalsViewMode) => {\n if (nextViewMode !== 'flow') setIsPlaying(false);\n setViewMode(nextViewMode);\n };\n const handlePlayingChange = (nextIsPlaying: boolean) => {\n // Restart from the first landmark when play is pressed at the end.\n if (nextIsPlaying && selectedSnapshotIndex === snapshots.length - 1) selectSnapshot(0);\n setIsPlaying(nextIsPlaying);\n };\n const setThemeDetails = (selection: SelectedTheme | undefined) => {\n onSelectedThemeIdChange(selection?.themeId);\n };\n // Compare cards and lifeline points open details for the theme at the\n // landmark they were clicked on, so the panel's snapshot follows the click.\n const openThemeDetailsAt = (selection: ThemeSelection, snapshotIndex: number) => {\n if (selection.kind !== 'theme') return;\n selectSnapshot(snapshotIndex);\n setNoiseSignalName(undefined);\n setThemeDetails(selection);\n };\n\n // Undefined at the last landmark so playback stops instead of looping.\n const nextSnapshotId = snapshots[selectedSnapshotIndex + 1]?.snapshotId;\n const flowSnapshotIds = selectFlowSnapshotIds(snapshots, selectedSnapshotIndex);\n const flowQueries = useThemeFlows(entityId, entityType, signalNames, flowSnapshotIds);\n const flowQuery = flowQueries[flowSnapshotIds.indexOf(snapshot?.snapshotId ?? '')];\n const currentFlow = flowQuery?.data;\n // The loading skeleton tracks only the selected snapshot's flow; prefetched\n // neighbors warm the cache in the background without blocking the chart.\n const isFlowPending = flowQuery?.isPending ?? false;\n // Errors stay window-wide: a failed preload surfaces the retry state instead\n // of letting playback advance into a broken frame.\n const hasFlowError = flowQueries.some(query => query.isError);\n const isFlowWindowBusy = flowQueries.some(query => query.isPending) || hasFlowError;\n const windowFlows = useMemo(() => flowQueries.flatMap(query => (query.data ? [query.data] : [])), [flowQueries]);\n const stableUnfilteredFlow = useMemo(\n () => (currentFlow ? stabilizeThemeFlow(currentFlow, windowFlows) : undefined),\n [currentFlow, windowFlows],\n );\n const drillInAvailable = Boolean(currentFlow && currentFlow.snapshot.traceCount <= DRILL_IN_TRACE_LIMIT);\n const pathsQuery = useThemePaths(\n entityId,\n entityType,\n signalNames,\n snapshot?.snapshotId,\n drillInAvailable && drillStack.length > 0,\n );\n const flow = useMemo(() => {\n if (!stableUnfilteredFlow || drillStack.length === 0 || !pathsQuery.data) return stableUnfilteredFlow;\n\n const drilledFlow = buildDrilledThemeFlow(stableUnfilteredFlow, pathsQuery.data, drillStack);\n return stabilizeThemeFlow(drilledFlow, [stableUnfilteredFlow, drilledFlow]);\n }, [drillStack, pathsQuery.data, stableUnfilteredFlow]);\n const graphSummary = useMemo(() => (flow ? buildSignalGraphSummary(flow) : undefined), [flow]);\n const detailSelection =\n stableUnfilteredFlow && selectedThemeId ? findThemeSelectionById(stableUnfilteredFlow, selectedThemeId) : undefined;\n const populatedStageCount = currentFlow?.stages.filter(stage => stage.nodes.length > 0).length ?? 0;\n const hasPendingEnabledSignals = effectiveSignalCatalog.some(signal => signal.enabled && signal.status !== 'ready');\n const shouldLoadProgress =\n snapshotsQuery.isSuccess &&\n !snapshotsQuery.isError &&\n (hasPendingEnabledSignals ||\n !snapshot ||\n Boolean(currentFlow && (!flow || !graphSummary || populatedStageCount < 2)));\n const progressQuery = useEntityLearningProgress(entityId, entityType, shouldLoadProgress);\n const isPlaybackBlockedByDrillIn = drillStack.length > 0 && (pathsQuery.isFetching || pathsQuery.isError);\n const hasActivePathsError = drillStack.length > 0 && pathsQuery.isError;\n\n useSnapshotPlayback({\n isPlaying,\n isPlaybackBlocked: isFlowWindowBusy || isPlaybackBlockedByDrillIn,\n nextSnapshot: nextSnapshotId,\n onAdvance: frameId => {\n if (frameId === undefined) {\n setIsPlaying(false);\n return;\n }\n onFrameIdChange(frameId);\n },\n snapshotCount: snapshots.length,\n });\n\n const perspectiveMutation = useMutation({\n mutationFn: async (nextSignalNames: TraceSignalName[]) => {\n const nextSnapshots = await queryClient.fetchQuery({\n queryKey: [\n 'entity-learning',\n cacheScope,\n entityType,\n entityId,\n 'theme-snapshots',\n nextSignalNames,\n dateFrom?.toISOString(),\n dateTo?.toISOString(),\n ],\n queryFn: () => fetchThemeSnapshots(request, entityId, entityType, nextSignalNames, dateFrom, dateTo),\n });\n const sortedNextSnapshots = [...nextSnapshots.snapshots].sort((left, right) => left.ordinal - right.ordinal);\n const matchedNextIndex = sortedNextSnapshots.findIndex(candidate => candidate.ordinal === snapshot?.ordinal);\n const nextSelectedIndex = matchedNextIndex >= 0 ? matchedNextIndex : 0;\n const nextSnapshot = sortedNextSnapshots[nextSelectedIndex];\n await Promise.all(\n selectFlowSnapshotIds(sortedNextSnapshots, nextSelectedIndex).map(snapshotId =>\n queryClient.fetchQuery({\n queryKey: ['entity-learning', cacheScope, entityType, entityId, 'theme-flow', nextSignalNames, snapshotId],\n queryFn: () => fetchThemeFlow(request, entityId, entityType, nextSignalNames, snapshotId),\n }),\n ),\n );\n if (drillStack.length > 0 && nextSnapshot && nextSnapshot.traceCount <= DRILL_IN_TRACE_LIMIT) {\n await queryClient.fetchQuery({\n queryKey: [\n 'entity-learning',\n cacheScope,\n entityType,\n entityId,\n 'theme-paths',\n nextSignalNames,\n nextSnapshot.snapshotId,\n ],\n queryFn: () => fetchThemePaths(request, entityId, entityType, nextSignalNames, nextSnapshot.snapshotId),\n });\n }\n return { nextSignalNames, nextFrameId: nextSnapshot?.snapshotId };\n },\n onSuccess: ({ nextSignalNames, nextFrameId }) => {\n setSignalNames(nextSignalNames);\n setPendingSignalNames(undefined);\n // Keep the parent-owned frame pointing at a snapshot that exists in the new perspective.\n if (nextFrameId && nextFrameId !== selectedFrameId) onFrameIdChange(nextFrameId);\n },\n onError: () => setPendingSignalNames(undefined),\n });\n\n if (snapshotsQuery.isPending) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsLoadingSkeleton />\n </>\n );\n }\n\n if (snapshotsQuery.isError || hasFlowError || hasActivePathsError) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsErrorState\n message=\"Unable to load trace signal flow.\"\n onRetry={() => {\n setIsPlaying(false);\n void snapshotsQuery.refetch();\n void Promise.all(flowQueries.map(query => query.refetch()));\n if (drillStack.length > 0 && drillInAvailable) void pathsQuery.refetch();\n }}\n onClear={hasActivePathsError ? () => setDrillStack([]) : undefined}\n />\n </>\n );\n }\n\n if (!snapshot) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsEmptyState\n LinkComponent={LinkComponent}\n progress={progressQuery.data}\n signalCatalog={effectiveSignalCatalog}\n isRangeEmpty\n />\n </>\n );\n }\n\n if (isFlowPending) {\n return (\n <div className=\"min-w-0 space-y-5 p-4 lg:p-6\">\n {dateRangePicker && <div className=\"flex justify-end\">{dateRangePicker}</div>}\n <SnapshotTimeline\n snapshots={snapshots}\n selectedIndex={selectedSnapshotIndex}\n totalSnapshots={totalSnapshots}\n summary={snapshot ? snapshotSummaryLabel(snapshot, undefined) : ''}\n isPlaying={isPlaying}\n onPlayingChange={handlePlayingChange}\n onSnapshotChange={selectSnapshot}\n />\n <SignalsFrameLoadingSkeleton />\n </div>\n );\n }\n\n if (!currentFlow || !flow || !graphSummary || populatedStageCount < 2) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsEmptyState\n LinkComponent={LinkComponent}\n progress={progressQuery.data}\n signalCatalog={effectiveSignalCatalog}\n />\n </>\n );\n }\n\n const stages = flow.stages;\n const isNodeClickable = (selection: SankeyChartNodeSelection) =>\n findNoiseSelection(flow, selection.column.id, selection.value) !== undefined ||\n findThemeSelection(flow, selection.column.id, selection.value) !== undefined;\n const handleNodeClick = (selection: SankeyChartNodeSelection) => {\n const nextSelection =\n findNoiseSelection(flow, selection.column.id, selection.value) ??\n findThemeSelection(flow, selection.column.id, selection.value);\n if (!nextSelection || drillStack.some(filter => filter.signalName === nextSelection.signalName)) return;\n if (nextSelection.kind === 'theme') {\n setNoiseSignalName(undefined);\n setThemeDetails(nextSelection);\n if (drillInAvailable) setDrillStack(current => [...current, nextSelection]);\n } else {\n setThemeDetails(undefined);\n setNoiseSignalName(nextSelection.signalName);\n }\n };\n const drillInDisabledReason = drillInAvailable\n ? undefined\n : 'Drill-in is unavailable for snapshots with more than 2,000 traces.';\n const isDrilledEmpty = drillStack.length > 0 && pathsQuery.data !== undefined && flow.snapshot.traceCount === 0;\n const handleSignalOrderChange = (nextSignalNames: TraceSignalName[]) => {\n if (perspectiveMutation.isPending) return;\n setIsPlaying(false);\n setThemeDetails(undefined);\n setNoiseSignalName(undefined);\n const mergedSignalNames = mergeVisibleSignalOrder(signalNames, nextSignalNames);\n setPendingSignalNames(mergedSignalNames);\n perspectiveMutation.mutate(mergedSignalNames);\n };\n const filtersResolved = drillStack.length > 0 && drillInAvailable && pathsQuery.data !== undefined;\n const detailStats = filtersResolved ? findSelectionStats(flow, drillStack, detailSelection) : undefined;\n const noiseStats = filtersResolved\n ? findSelectionStats(flow, drillStack, noiseSignalName ? { kind: 'noise', signalName: noiseSignalName } : undefined)\n : undefined;\n const filterKey = serializeThemeFilters(drillStack);\n const catalogSignalNames = orderedSignals(effectiveSignalCatalog, signalNames);\n const viewDescription =\n viewMode === 'flow'\n ? `How this agent's traces distribute across ${formatSignalList(catalogSignalNames.map(name => signalLabel(effectiveSignalCatalog, name).toLocaleLowerCase()))} themes at this point in time.`\n : VIEW_DESCRIPTIONS[viewMode];\n const labeledColumns = graphSummary.columns.map(column => ({\n ...column,\n label: signalLabel(effectiveSignalCatalog, column.id),\n }));\n\n return (\n <TraceIntelligenceContext.Provider value={traceIntelligenceContext}>\n <div className=\"min-w-0 space-y-5 p-4 lg:p-6\">\n <div className=\"flex min-w-0 flex-wrap items-center justify-between gap-3\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-4\">\n <Tabs<SignalsViewMode>\n value={viewMode}\n defaultTab=\"flow\"\n onValueChange={handleViewModeChange}\n className=\"w-fit\"\n >\n <TabList variant=\"pill-ghost\">\n <ViewModeTab value=\"flow\" icon={<Waypoints />} label=\"Flow\" />\n <ViewModeTab value=\"compare\" icon={<ArrowLeftRight />} label=\"Compare\" />\n <ViewModeTab value=\"lifelines\" icon={<ChartNoAxesGantt />} label=\"Lifelines\" />\n </TabList>\n </Tabs>\n <TraceIntelligenceExplainer signalCatalog={effectiveSignalCatalog} />\n </div>\n {dateRangePicker}\n </div>\n <Txt variant=\"caption\" tone=\"muted\">\n {viewDescription}\n </Txt>\n <PendingSignalProgress progress={progressQuery.data} signalCatalog={effectiveSignalCatalog} />\n {viewMode === 'compare' ? (\n <ThemeCompare\n entityId={entityId}\n entityType={entityType}\n signalNames={signalNames}\n snapshots={snapshots}\n totalSnapshots={totalSnapshots}\n onThemeSelect={openThemeDetailsAt}\n />\n ) : viewMode === 'lifelines' ? (\n <ThemeLifelines\n entityId={entityId}\n entityType={entityType}\n signalNames={signalNames}\n snapshots={snapshots}\n totalSnapshots={totalSnapshots}\n selectedIndex={selectedSnapshotIndex}\n onSnapshotSelect={selectSnapshot}\n onThemeSelect={openThemeDetailsAt}\n />\n ) : (\n <>\n <SnapshotTimeline\n snapshots={snapshots}\n selectedIndex={selectedSnapshotIndex}\n totalSnapshots={totalSnapshots}\n summary={`${drillStack.length > 0 ? (drillInAvailable ? 'Filtered · ' : 'Filters unavailable · ') : ''}${snapshotSummaryLabel(snapshot, flow)}`}\n isPlaying={isPlaying}\n onPlayingChange={handlePlayingChange}\n onSnapshotChange={selectSnapshot}\n />\n {drillStack.length > 0 ? (\n <ThemeFilterBanner\n selections={drillStack}\n filteredTraceCount={filtersResolved ? flow.snapshot.traceCount : undefined}\n totalTraceCount={currentFlow.snapshot.traceCount}\n isUnavailable={!drillInAvailable}\n onViewDetails={selection => {\n if (selection.kind === 'theme') {\n setNoiseSignalName(undefined);\n setThemeDetails(selection);\n } else {\n setThemeDetails(undefined);\n setNoiseSignalName(selection.signalName);\n }\n }}\n onRemove={signalName =>\n setDrillStack(current => current.filter(filter => filter.signalName !== signalName))\n }\n onClear={() => setDrillStack([])}\n />\n ) : null}\n {isDrilledEmpty ? (\n <section className=\"rounded-lg border border-border bg-background p-6 text-muted-foreground\">\n <Txt as=\"span\" variant=\"body\" className=\"block\">\n This theme is not present in the selected snapshot. Use the clear filter action above to return to the\n full flow.\n </Txt>\n </section>\n ) : graphSummary.records.length === 0 ? (\n <section className=\"rounded-lg border border-border bg-background p-6 text-muted-foreground\">\n <Txt as=\"span\" variant=\"body\" className=\"block\">\n No cross-signal flow for this snapshot — its trace signals have not overlapped on shared traces yet.\n Pick another snapshot from the timeline below.\n </Txt>\n </section>\n ) : (\n <FlowCard\n columns={labeledColumns}\n records={graphSummary.records}\n stages={stages}\n height={height}\n onNodeClick={handleNodeClick}\n isNodeClickable={isNodeClickable}\n drillInDisabledReason={drillInDisabledReason}\n onOrderChange={handleSignalOrderChange}\n signalOrder={pendingSignalNames ?? signalNames}\n reorderDisabled={perspectiveMutation.isPending}\n />\n )}\n {perspectiveMutation.isPending ? (\n <Txt variant=\"caption\" tone=\"muted\" role=\"status\">\n Reloading snapshots for new trace signal perspective…\n </Txt>\n ) : null}\n {perspectiveMutation.isError ? (\n <Txt variant=\"caption\" className=\"text-destructive-foreground\" role=\"alert\">\n Unable to load that trace signal perspective. Try reordering the columns again.\n </Txt>\n ) : null}\n </>\n )}\n <ThemeDetailPanel\n key={`${snapshot.snapshotId}:${detailSelection?.signalName ?? ''}:${detailSelection?.themeId ?? ''}:${filterKey}`}\n entityId={entityId}\n entityType={entityType}\n snapshotId={snapshot.snapshotId}\n snapshotTotal={snapshot.total}\n selection={detailSelection}\n filters={drillStack}\n filteredStats={detailStats}\n onClose={() => setThemeDetails(undefined)}\n />\n <NoiseDetailPanel\n key={`${snapshot.snapshotId}:${noiseSignalName ?? ''}:${filterKey}`}\n entityId={entityId}\n entityType={entityType}\n snapshotId={snapshot.snapshotId}\n signalName={noiseSignalName}\n filters={drillStack}\n filteredStats={noiseStats}\n onClose={() => setNoiseSignalName(undefined)}\n />\n </div>\n </TraceIntelligenceContext.Provider>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sankey-signals.es.js","names":["_Fragment","SignalsEmptyState"],"sources":["../../../src/ee/signals/sankey-signals.tsx"],"sourcesContent":["import { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { ArrowLeftRight, ChartNoAxesGantt, Waypoints } from 'lucide-react';\nimport { useMemo, useState } from 'react';\n\nimport { PendingSignalProgress } from './components/signals-empty-state';\nimport { SignalsOverviewPage as SignalsEmptyState } from './components/signals-overview-page';\nimport { fetchThemeFlow, fetchThemePaths, fetchThemeSnapshots, serializeThemeFilters } from './entity-learning-api';\nimport { FlowCard } from './flow-card';\nimport { useEntityLearningProgress } from './hooks/use-entity-learning-progress';\nimport { useSnapshotPlayback } from './hooks/use-snapshot-playback';\nimport { useThemeFlows } from './hooks/use-theme-flows';\nimport { useThemePaths } from './hooks/use-theme-paths';\nimport { useThemeSnapshots } from './hooks/use-theme-snapshots';\nimport { NoiseDetailPanel } from './noise-detail-panel';\nimport { buildSignalGraphSummary, selectFlowSnapshotIds, stabilizeThemeFlow } from './sankey-signals-data';\nimport { orderedSignals, signalLabel } from './signal-formatting';\nimport { SignalsErrorState } from './signals-error-state';\nimport { SignalsFrameLoadingSkeleton, SignalsLoadingSkeleton } from './signals-loading-skeleton';\nimport { SnapshotSummary } from './snapshot-summary';\nimport { SnapshotTimeline } from './snapshot-timeline';\nimport { ThemeCompare } from './theme-compare';\nimport { ThemeDetailPanel } from './theme-detail-panel';\nimport {\n buildDrilledThemeFlow,\n findNoiseSelection,\n findSelectionStats,\n findThemeSelection,\n findThemeSelectionById,\n mergeVisibleSignalOrder,\n} from './theme-drilldown-data';\nimport type { SelectedTheme, ThemeSelection } from './theme-drilldown-data';\nimport { ThemeFilterBanner } from './theme-filter-banner';\nimport { ThemeLifelines } from './theme-lifelines';\nimport { TraceIntelligenceContext } from './trace-intelligence-context';\nimport { TraceIntelligenceExplainer } from './trace-intelligence-explainer';\nimport type { TraceSignalName } from './types';\nimport { useTraceIntelligence } from './use-trace-intelligence';\nimport { ViewModeTab } from './view-mode-tab';\nimport type { SignalsViewMode } from './view-mode-tab';\nimport type { SankeyChartNodeSelection } from '@/ds/components/SankeyChart';\nimport { TabList, Tabs } from '@/ds/components/Tabs';\nimport { Txt } from '@/ds/components/Txt';\n\nexport interface SankeySignalsProps {\n entityId: string;\n entityType?: string;\n signalNames: TraceSignalName[];\n dateFrom?: Date;\n dateTo?: Date;\n height?: number;\n selectedThemeId: string | undefined;\n onSelectedThemeIdChange: (themeId: string | undefined) => void;\n /** Snapshot id of the timeline frame currently displayed. The parent owns this state. */\n selectedFrameId: string;\n onFrameIdChange: (frameId: string) => void;\n /** Date range control rendered in line with the view mode tabs. */\n dateRangePicker?: React.ReactNode;\n}\n\nconst DRILL_IN_TRACE_LIMIT = 2000;\n\n/** One-line answer to \"what am I looking at?\" for each view, shown under the tabs. */\nconst VIEW_DESCRIPTIONS: Omit<Record<SignalsViewMode, string>, 'flow'> = {\n compare: 'Which themes grew, shrank, appeared, or disappeared between two points in time.',\n lifelines: \"Each theme's share of traces across the whole selected range.\",\n};\n\nfunction formatSignalList(labels: string[]): string {\n if (labels.length < 2) return labels[0] ?? 'trace signal';\n if (labels.length === 2) return labels.join(' and ');\n return `${labels.slice(0, -1).join(', ')}, and ${labels.at(-1)}`;\n}\n\nexport function SankeySignals({\n entityId,\n entityType = 'agent',\n signalNames: initialSignalNames,\n dateFrom,\n dateTo,\n height,\n selectedThemeId,\n onSelectedThemeIdChange,\n selectedFrameId,\n onFrameIdChange,\n dateRangePicker,\n}: SankeySignalsProps) {\n const queryClient = useQueryClient();\n const traceIntelligence = useTraceIntelligence();\n const { cacheScope, request, LinkComponent, signalCatalog } = traceIntelligence;\n const [signalNames, setSignalNames] = useState(() => initialSignalNames);\n const [pendingSignalNames, setPendingSignalNames] = useState<TraceSignalName[]>();\n const snapshotsQuery = useThemeSnapshots(entityId, entityType, signalNames, dateFrom, dateTo);\n const effectiveSignalCatalog = snapshotsQuery.data?.signalCatalog ?? signalCatalog;\n const traceIntelligenceContext = useMemo(\n () => ({ ...traceIntelligence, signalCatalog: effectiveSignalCatalog }),\n [effectiveSignalCatalog, traceIntelligence],\n );\n const snapshots = [...(snapshotsQuery.data?.snapshots ?? [])].sort((left, right) => left.ordinal - right.ordinal);\n const [isPlaying, setIsPlaying] = useState(false);\n const [viewMode, setViewMode] = useState<SignalsViewMode>('flow');\n const [drillStack, setDrillStack] = useState<ThemeSelection[]>([]);\n const [noiseSignalName, setNoiseSignalName] = useState<TraceSignalName>();\n // Pure derivation: the parent owns the frame. The index-0 fallback only covers\n // the transient render where a perspective change swapped the snapshot list.\n const matchedSnapshotIndex = snapshots.findIndex(snapshot => snapshot.snapshotId === selectedFrameId);\n const selectedSnapshotIndex = matchedSnapshotIndex >= 0 ? matchedSnapshotIndex : 0;\n const snapshot = snapshots[selectedSnapshotIndex];\n const totalSnapshots = snapshotsQuery.data?.totalSnapshots ?? snapshot?.total ?? 0;\n const selectSnapshot = (index: number) => {\n const id = snapshots[index]?.snapshotId;\n if (id) onFrameIdChange(id);\n };\n const handleViewModeChange = (nextViewMode: SignalsViewMode) => {\n if (nextViewMode !== 'flow') setIsPlaying(false);\n setViewMode(nextViewMode);\n };\n const handlePlayingChange = (nextIsPlaying: boolean) => {\n // Restart from the first landmark when play is pressed at the end.\n if (nextIsPlaying && selectedSnapshotIndex === snapshots.length - 1) selectSnapshot(0);\n setIsPlaying(nextIsPlaying);\n };\n const setThemeDetails = (selection: SelectedTheme | undefined) => {\n onSelectedThemeIdChange(selection?.themeId);\n };\n // Compare cards and lifeline points open details for the theme at the\n // landmark they were clicked on, so the panel's snapshot follows the click.\n const openThemeDetailsAt = (selection: ThemeSelection, snapshotIndex: number) => {\n if (selection.kind !== 'theme') return;\n selectSnapshot(snapshotIndex);\n setNoiseSignalName(undefined);\n setThemeDetails(selection);\n };\n\n // Undefined at the last landmark so playback stops instead of looping.\n const nextSnapshotId = snapshots[selectedSnapshotIndex + 1]?.snapshotId;\n const flowSnapshotIds = selectFlowSnapshotIds(snapshots, selectedSnapshotIndex);\n const flowQueries = useThemeFlows(entityId, entityType, signalNames, flowSnapshotIds);\n const flowQuery = flowQueries[flowSnapshotIds.indexOf(snapshot?.snapshotId ?? '')];\n const currentFlow = flowQuery?.data;\n // The loading skeleton tracks only the selected snapshot's flow; prefetched\n // neighbors warm the cache in the background without blocking the chart.\n const isFlowPending = flowQuery?.isPending ?? false;\n // Errors stay window-wide: a failed preload surfaces the retry state instead\n // of letting playback advance into a broken frame.\n const hasFlowError = flowQueries.some(query => query.isError);\n const isFlowWindowBusy = flowQueries.some(query => query.isPending) || hasFlowError;\n const windowFlows = useMemo(() => flowQueries.flatMap(query => (query.data ? [query.data] : [])), [flowQueries]);\n const stableUnfilteredFlow = useMemo(\n () => (currentFlow ? stabilizeThemeFlow(currentFlow, windowFlows) : undefined),\n [currentFlow, windowFlows],\n );\n const drillInAvailable = Boolean(currentFlow && currentFlow.snapshot.traceCount <= DRILL_IN_TRACE_LIMIT);\n const pathsQuery = useThemePaths(\n entityId,\n entityType,\n signalNames,\n snapshot?.snapshotId,\n drillInAvailable && drillStack.length > 0,\n );\n const flow = useMemo(() => {\n if (!stableUnfilteredFlow || drillStack.length === 0 || !pathsQuery.data) return stableUnfilteredFlow;\n\n const drilledFlow = buildDrilledThemeFlow(stableUnfilteredFlow, pathsQuery.data, drillStack);\n return stabilizeThemeFlow(drilledFlow, [stableUnfilteredFlow, drilledFlow]);\n }, [drillStack, pathsQuery.data, stableUnfilteredFlow]);\n const graphSummary = useMemo(() => (flow ? buildSignalGraphSummary(flow) : undefined), [flow]);\n const detailSelection =\n stableUnfilteredFlow && selectedThemeId ? findThemeSelectionById(stableUnfilteredFlow, selectedThemeId) : undefined;\n const populatedStageCount = currentFlow?.stages.filter(stage => stage.nodes.length > 0).length ?? 0;\n const hasPendingEnabledSignals = effectiveSignalCatalog.some(signal => signal.enabled && signal.status !== 'ready');\n const shouldLoadProgress =\n snapshotsQuery.isSuccess &&\n !snapshotsQuery.isError &&\n (hasPendingEnabledSignals ||\n !snapshot ||\n Boolean(currentFlow && (!flow || !graphSummary || populatedStageCount < 2)));\n const progressQuery = useEntityLearningProgress(entityId, entityType, shouldLoadProgress);\n const isPlaybackBlockedByDrillIn = drillStack.length > 0 && (pathsQuery.isFetching || pathsQuery.isError);\n const hasActivePathsError = drillStack.length > 0 && pathsQuery.isError;\n\n useSnapshotPlayback({\n isPlaying,\n isPlaybackBlocked: isFlowWindowBusy || isPlaybackBlockedByDrillIn,\n nextSnapshot: nextSnapshotId,\n onAdvance: frameId => {\n if (frameId === undefined) {\n setIsPlaying(false);\n return;\n }\n onFrameIdChange(frameId);\n },\n snapshotCount: snapshots.length,\n });\n\n const perspectiveMutation = useMutation({\n mutationFn: async (nextSignalNames: TraceSignalName[]) => {\n const nextSnapshots = await queryClient.fetchQuery({\n queryKey: [\n 'entity-learning',\n cacheScope,\n entityType,\n entityId,\n 'theme-snapshots',\n nextSignalNames,\n dateFrom?.toISOString(),\n dateTo?.toISOString(),\n ],\n queryFn: () => fetchThemeSnapshots(request, entityId, entityType, nextSignalNames, dateFrom, dateTo),\n });\n const sortedNextSnapshots = [...nextSnapshots.snapshots].sort((left, right) => left.ordinal - right.ordinal);\n const matchedNextIndex = sortedNextSnapshots.findIndex(candidate => candidate.ordinal === snapshot?.ordinal);\n const nextSelectedIndex = matchedNextIndex >= 0 ? matchedNextIndex : 0;\n const nextSnapshot = sortedNextSnapshots[nextSelectedIndex];\n await Promise.all(\n selectFlowSnapshotIds(sortedNextSnapshots, nextSelectedIndex).map(snapshotId =>\n queryClient.fetchQuery({\n queryKey: ['entity-learning', cacheScope, entityType, entityId, 'theme-flow', nextSignalNames, snapshotId],\n queryFn: () => fetchThemeFlow(request, entityId, entityType, nextSignalNames, snapshotId),\n }),\n ),\n );\n if (drillStack.length > 0 && nextSnapshot && nextSnapshot.traceCount <= DRILL_IN_TRACE_LIMIT) {\n await queryClient.fetchQuery({\n queryKey: [\n 'entity-learning',\n cacheScope,\n entityType,\n entityId,\n 'theme-paths',\n nextSignalNames,\n nextSnapshot.snapshotId,\n ],\n queryFn: () => fetchThemePaths(request, entityId, entityType, nextSignalNames, nextSnapshot.snapshotId),\n });\n }\n return { nextSignalNames, nextFrameId: nextSnapshot?.snapshotId };\n },\n onSuccess: ({ nextSignalNames, nextFrameId }) => {\n setSignalNames(nextSignalNames);\n setPendingSignalNames(undefined);\n // Keep the parent-owned frame pointing at a snapshot that exists in the new perspective.\n if (nextFrameId && nextFrameId !== selectedFrameId) onFrameIdChange(nextFrameId);\n },\n onError: () => setPendingSignalNames(undefined),\n });\n\n if (snapshotsQuery.isPending) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsLoadingSkeleton />\n </>\n );\n }\n\n if (snapshotsQuery.isError || hasFlowError || hasActivePathsError) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsErrorState\n message=\"Unable to load trace signal flow.\"\n onRetry={() => {\n setIsPlaying(false);\n void snapshotsQuery.refetch();\n void Promise.all(flowQueries.map(query => query.refetch()));\n if (drillStack.length > 0 && drillInAvailable) void pathsQuery.refetch();\n }}\n onClear={hasActivePathsError ? () => setDrillStack([]) : undefined}\n />\n </>\n );\n }\n\n if (!snapshot) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsEmptyState\n LinkComponent={LinkComponent}\n progress={progressQuery.data}\n signalCatalog={effectiveSignalCatalog}\n isRangeEmpty\n />\n </>\n );\n }\n\n if (isFlowPending) {\n return (\n <div className=\"min-w-0 space-y-5 p-4 lg:p-6\">\n {dateRangePicker && <div className=\"flex justify-end\">{dateRangePicker}</div>}\n <SnapshotTimeline\n snapshots={snapshots}\n selectedIndex={selectedSnapshotIndex}\n totalSnapshots={totalSnapshots}\n summary={snapshot ? <SnapshotSummary snapshot={snapshot} flow={undefined} /> : undefined}\n isPlaying={isPlaying}\n onPlayingChange={handlePlayingChange}\n onSnapshotChange={selectSnapshot}\n />\n <SignalsFrameLoadingSkeleton />\n </div>\n );\n }\n\n if (!currentFlow || !flow || !graphSummary || populatedStageCount < 2) {\n return (\n <>\n {dateRangePicker && <div className=\"flex justify-end px-4 pt-4 lg:px-6 lg:pt-6\">{dateRangePicker}</div>}\n <SignalsEmptyState\n LinkComponent={LinkComponent}\n progress={progressQuery.data}\n signalCatalog={effectiveSignalCatalog}\n />\n </>\n );\n }\n\n const stages = flow.stages;\n const isNodeClickable = (selection: SankeyChartNodeSelection) =>\n findNoiseSelection(flow, selection.column.id, selection.value) !== undefined ||\n findThemeSelection(flow, selection.column.id, selection.value) !== undefined;\n const handleNodeClick = (selection: SankeyChartNodeSelection) => {\n const nextSelection =\n findNoiseSelection(flow, selection.column.id, selection.value) ??\n findThemeSelection(flow, selection.column.id, selection.value);\n if (!nextSelection || drillStack.some(filter => filter.signalName === nextSelection.signalName)) return;\n if (nextSelection.kind === 'theme') {\n setNoiseSignalName(undefined);\n setThemeDetails(nextSelection);\n if (drillInAvailable) setDrillStack(current => [...current, nextSelection]);\n } else {\n setThemeDetails(undefined);\n setNoiseSignalName(nextSelection.signalName);\n }\n };\n const drillInDisabledReason = drillInAvailable\n ? undefined\n : 'Drill-in is unavailable for snapshots with more than 2,000 traces.';\n const isDrilledEmpty = drillStack.length > 0 && pathsQuery.data !== undefined && flow.snapshot.traceCount === 0;\n const handleSignalOrderChange = (nextSignalNames: TraceSignalName[]) => {\n if (perspectiveMutation.isPending) return;\n setIsPlaying(false);\n setThemeDetails(undefined);\n setNoiseSignalName(undefined);\n const mergedSignalNames = mergeVisibleSignalOrder(signalNames, nextSignalNames);\n setPendingSignalNames(mergedSignalNames);\n perspectiveMutation.mutate(mergedSignalNames);\n };\n const filtersResolved = drillStack.length > 0 && drillInAvailable && pathsQuery.data !== undefined;\n const filterSummaryPrefix = drillInAvailable ? 'Filtered' : 'Filters unavailable';\n const detailStats = filtersResolved ? findSelectionStats(flow, drillStack, detailSelection) : undefined;\n const noiseStats = filtersResolved\n ? findSelectionStats(flow, drillStack, noiseSignalName ? { kind: 'noise', signalName: noiseSignalName } : undefined)\n : undefined;\n const filterKey = serializeThemeFilters(drillStack);\n const catalogSignalNames = orderedSignals(effectiveSignalCatalog, signalNames);\n const viewDescription =\n viewMode === 'flow'\n ? `How this agent's traces distribute across ${formatSignalList(catalogSignalNames.map(name => signalLabel(effectiveSignalCatalog, name).toLocaleLowerCase()))} themes at this point in time.`\n : VIEW_DESCRIPTIONS[viewMode];\n const labeledColumns = graphSummary.columns.map(column => ({\n ...column,\n label: signalLabel(effectiveSignalCatalog, column.id),\n }));\n\n return (\n <TraceIntelligenceContext.Provider value={traceIntelligenceContext}>\n <div className=\"min-w-0 space-y-5 p-4 lg:p-6\">\n <div className=\"flex min-w-0 flex-wrap items-center justify-between gap-3\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-4\">\n <Tabs<SignalsViewMode>\n value={viewMode}\n defaultTab=\"flow\"\n onValueChange={handleViewModeChange}\n className=\"w-fit\"\n >\n <TabList variant=\"pill-ghost\">\n <ViewModeTab value=\"flow\" icon={<Waypoints />} label=\"Flow\" />\n <ViewModeTab value=\"compare\" icon={<ArrowLeftRight />} label=\"Compare\" />\n <ViewModeTab value=\"lifelines\" icon={<ChartNoAxesGantt />} label=\"Lifelines\" />\n </TabList>\n </Tabs>\n <TraceIntelligenceExplainer signalCatalog={effectiveSignalCatalog} />\n </div>\n {dateRangePicker}\n </div>\n <Txt variant=\"caption\" tone=\"muted\">\n {viewDescription}\n </Txt>\n <PendingSignalProgress progress={progressQuery.data} signalCatalog={effectiveSignalCatalog} />\n {viewMode === 'compare' ? (\n <ThemeCompare\n entityId={entityId}\n entityType={entityType}\n signalNames={signalNames}\n snapshots={snapshots}\n totalSnapshots={totalSnapshots}\n onThemeSelect={openThemeDetailsAt}\n />\n ) : viewMode === 'lifelines' ? (\n <ThemeLifelines\n entityId={entityId}\n entityType={entityType}\n signalNames={signalNames}\n snapshots={snapshots}\n totalSnapshots={totalSnapshots}\n selectedIndex={selectedSnapshotIndex}\n onSnapshotSelect={selectSnapshot}\n onThemeSelect={openThemeDetailsAt}\n />\n ) : (\n <>\n <SnapshotTimeline\n snapshots={snapshots}\n selectedIndex={selectedSnapshotIndex}\n totalSnapshots={totalSnapshots}\n summary={\n <SnapshotSummary\n snapshot={snapshot}\n flow={flow}\n prefix={drillStack.length > 0 ? filterSummaryPrefix : undefined}\n />\n }\n isPlaying={isPlaying}\n onPlayingChange={handlePlayingChange}\n onSnapshotChange={selectSnapshot}\n />\n {drillStack.length > 0 ? (\n <ThemeFilterBanner\n selections={drillStack}\n filteredTraceCount={filtersResolved ? flow.snapshot.traceCount : undefined}\n totalTraceCount={currentFlow.snapshot.traceCount}\n isUnavailable={!drillInAvailable}\n onViewDetails={selection => {\n if (selection.kind === 'theme') {\n setNoiseSignalName(undefined);\n setThemeDetails(selection);\n } else {\n setThemeDetails(undefined);\n setNoiseSignalName(selection.signalName);\n }\n }}\n onRemove={signalName =>\n setDrillStack(current => current.filter(filter => filter.signalName !== signalName))\n }\n onClear={() => setDrillStack([])}\n />\n ) : null}\n {isDrilledEmpty ? (\n <section className=\"rounded-lg border border-border bg-background p-6 text-muted-foreground\">\n <Txt as=\"span\" variant=\"body\" className=\"block\">\n This theme is not present in the selected snapshot. Use the clear filter action above to return to the\n full flow.\n </Txt>\n </section>\n ) : graphSummary.records.length === 0 ? (\n <section className=\"rounded-lg border border-border bg-background p-6 text-muted-foreground\">\n <Txt as=\"span\" variant=\"body\" className=\"block\">\n No cross-signal flow for this snapshot. Its trace signals have not overlapped on shared traces yet.\n Pick another snapshot from the timeline below.\n </Txt>\n </section>\n ) : (\n <FlowCard\n columns={labeledColumns}\n records={graphSummary.records}\n stages={stages}\n height={height}\n onNodeClick={handleNodeClick}\n isNodeClickable={isNodeClickable}\n drillInDisabledReason={drillInDisabledReason}\n onOrderChange={handleSignalOrderChange}\n signalOrder={pendingSignalNames ?? signalNames}\n reorderDisabled={perspectiveMutation.isPending}\n />\n )}\n {perspectiveMutation.isPending ? (\n <Txt variant=\"caption\" tone=\"muted\" role=\"status\">\n Reloading snapshots for new trace signal perspective…\n </Txt>\n ) : null}\n {perspectiveMutation.isError ? (\n <Txt variant=\"caption\" className=\"text-destructive-foreground\" role=\"alert\">\n Unable to load that trace signal perspective. Try reordering the columns again.\n </Txt>\n ) : null}\n </>\n )}\n <ThemeDetailPanel\n key={`${snapshot.snapshotId}:${detailSelection?.signalName ?? ''}:${detailSelection?.themeId ?? ''}:${filterKey}`}\n entityId={entityId}\n entityType={entityType}\n snapshotId={snapshot.snapshotId}\n snapshotTotal={snapshot.total}\n selection={detailSelection}\n filters={drillStack}\n filteredStats={detailStats}\n onClose={() => setThemeDetails(undefined)}\n />\n <NoiseDetailPanel\n key={`${snapshot.snapshotId}:${noiseSignalName ?? ''}:${filterKey}`}\n entityId={entityId}\n entityType={entityType}\n snapshotId={snapshot.snapshotId}\n signalName={noiseSignalName}\n filters={drillStack}\n filteredStats={noiseStats}\n onClose={() => setNoiseSignalName(undefined)}\n />\n </div>\n </TraceIntelligenceContext.Provider>\n );\n}\n"],"mappings":"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"}
|