@mastra/playground-ui 58.0.0 → 59.0.0-alpha.1
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 +62 -0
- package/dist/{Badge-TD55_qZJ.js → Badge-Bzn8Z-_I.js} +2 -2
- package/dist/Badge-Bzn8Z-_I.js.map +1 -0
- package/dist/{Badge-BEeYtjmv.cjs → Badge-DFNxcz-r.cjs} +2 -2
- package/dist/Badge-DFNxcz-r.cjs.map +1 -0
- package/dist/{Header-BVnFQlzE.js → Header-hTHhO02b.js} +2 -2
- package/dist/{Header-BVnFQlzE.js.map → Header-hTHhO02b.js.map} +1 -1
- package/dist/{Header-CGjhJ0nQ.cjs → Header-y51Sfo3G.cjs} +2 -2
- package/dist/{Header-CGjhJ0nQ.cjs.map → Header-y51Sfo3G.cjs.map} +1 -1
- package/dist/{Txt-DTh3Pa_a.js → Txt-BP1SRHmL.js} +4 -10
- package/dist/Txt-BP1SRHmL.js.map +1 -0
- package/dist/{Txt-B4-2nLaI.cjs → Txt-DPmEpNbp.cjs} +4 -10
- package/dist/Txt-DPmEpNbp.cjs.map +1 -0
- package/dist/{ask-user-BPpgiE7k.cjs → ask-user-4pnmHbuC.cjs} +3 -3
- package/dist/{ask-user-BPpgiE7k.cjs.map → ask-user-4pnmHbuC.cjs.map} +1 -1
- package/dist/{ask-user-jDUt7hgT.js → ask-user-CFcQN_7m.js} +3 -3
- package/dist/{ask-user-jDUt7hgT.js.map → ask-user-CFcQN_7m.js.map} +1 -1
- package/dist/{chat-notification-CmdRGO_D.js → chat-notification-BI_WRUvG.js} +3 -3
- package/dist/{chat-notification-CmdRGO_D.js.map → chat-notification-BI_WRUvG.js.map} +1 -1
- package/dist/{chat-notification-DJykWtoj.cjs → chat-notification-Dc7jwULm.cjs} +3 -3
- package/dist/{chat-notification-DJykWtoj.cjs.map → chat-notification-Dc7jwULm.cjs.map} +1 -1
- package/dist/{chat-signal-xs3FkPts.cjs → chat-signal-BodewV33.cjs} +3 -3
- package/dist/{chat-signal-xs3FkPts.cjs.map → chat-signal-BodewV33.cjs.map} +1 -1
- package/dist/{chat-signal-Vg8pGXwH.js → chat-signal-D0zw80bU.js} +3 -3
- package/dist/{chat-signal-Vg8pGXwH.js.map → chat-signal-D0zw80bU.js.map} +1 -1
- package/dist/{combobox-BoSB-muq.cjs → combobox-B19HJqE-.cjs} +2 -2
- package/dist/{combobox-BoSB-muq.cjs.map → combobox-B19HJqE-.cjs.map} +1 -1
- package/dist/{combobox-Cd0JPUQW.js → combobox-D_kmwSKS.js} +2 -2
- package/dist/{combobox-Cd0JPUQW.js.map → combobox-D_kmwSKS.js.map} +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/ClampedText.cjs.js +1 -1
- package/dist/components/ClampedText.es.js +1 -1
- package/dist/components/Combobox.cjs.js +1 -1
- package/dist/components/Combobox.es.js +1 -1
- package/dist/components/Comment.cjs.js +2 -2
- package/dist/components/Comment.es.js +2 -2
- package/dist/components/CompactNumber.cjs.js +24 -0
- package/dist/components/CompactNumber.cjs.js.map +1 -0
- package/dist/components/CompactNumber.d.ts +2 -0
- package/dist/components/CompactNumber.es.js +20 -0
- package/dist/components/CompactNumber.es.js.map +1 -0
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataList.cjs.js +8 -14
- package/dist/components/DataList.cjs.js.map +1 -1
- package/dist/components/DataList.es.js +8 -14
- package/dist/components/DataList.es.js.map +1 -1
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.es.js +1 -1
- package/dist/components/DateRangeTimeline.cjs.js +1 -1
- package/dist/components/DateRangeTimeline.es.js +1 -1
- package/dist/components/DateTimePicker.cjs.js +1 -1
- package/dist/components/DateTimePicker.es.js +1 -1
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/Entity.cjs.js +1 -1
- package/dist/components/Entity.es.js +1 -1
- package/dist/components/EntityHeader.cjs.js +1 -1
- package/dist/components/EntityHeader.es.js +1 -1
- package/dist/components/Entry.cjs.js +1 -1
- package/dist/components/Entry.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +3 -3
- package/dist/components/EnvironmentVariablesEditor.es.js +3 -3
- package/dist/components/FilterBar.cjs.js +1 -1
- package/dist/components/FilterBar.es.js +1 -1
- package/dist/components/FormFieldBlocks.cjs.js +4 -4
- package/dist/components/FormFieldBlocks.es.js +4 -4
- package/dist/components/Header.cjs.js +1 -1
- package/dist/components/Header.es.js +1 -1
- package/dist/components/InlineCode.cjs.js +10 -0
- package/dist/components/InlineCode.cjs.js.map +1 -0
- package/dist/components/InlineCode.d.ts +2 -0
- package/dist/components/InlineCode.es.js +2 -0
- package/dist/components/InlineCode.es.js.map +1 -0
- package/dist/components/ItemList.cjs.js +5 -17
- package/dist/components/ItemList.cjs.js.map +1 -1
- package/dist/components/ItemList.es.js +5 -17
- package/dist/components/ItemList.es.js.map +1 -1
- package/dist/components/JSONSchemaForm.cjs.js +2 -2
- package/dist/components/JSONSchemaForm.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/Message.cjs.js +4 -5
- package/dist/components/Message.cjs.js.map +1 -1
- package/dist/components/Message.es.js +4 -5
- package/dist/components/Message.es.js.map +1 -1
- package/dist/components/MetricsCard.cjs.js +1 -1
- package/dist/components/MetricsCard.es.js +1 -1
- package/dist/components/MetricsCardGroup.cjs.js +2 -11
- package/dist/components/MetricsCardGroup.cjs.js.map +1 -1
- package/dist/components/MetricsCardGroup.es.js +2 -11
- package/dist/components/MetricsCardGroup.es.js.map +1 -1
- package/dist/components/MetricsKpiCard.cjs.js +1 -1
- package/dist/components/MetricsKpiCard.es.js +1 -1
- package/dist/components/MetricsLineChart.cjs.js +2 -1
- package/dist/components/MetricsLineChart.cjs.js.map +1 -1
- package/dist/components/MetricsLineChart.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/PropertyFilter.cjs.js +1 -1
- package/dist/components/PropertyFilter.es.js +1 -1
- package/dist/components/RelativeTimestamp.cjs.js +119 -0
- package/dist/components/RelativeTimestamp.cjs.js.map +1 -0
- package/dist/components/RelativeTimestamp.d.ts +2 -0
- package/dist/components/RelativeTimestamp.es.js +115 -0
- package/dist/components/RelativeTimestamp.es.js.map +1 -0
- package/dist/components/Section.cjs.js +1 -1
- package/dist/components/Section.es.js +1 -1
- package/dist/components/SettingsRow.cjs.js +1 -1
- package/dist/components/SettingsRow.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +1 -1
- package/dist/components/SideDialog.es.js +1 -1
- package/dist/components/StatusIndicators.cjs.js +21 -14
- package/dist/components/StatusIndicators.cjs.js.map +1 -1
- package/dist/components/StatusIndicators.es.js +21 -15
- package/dist/components/StatusIndicators.es.js.map +1 -1
- package/dist/components/Table.cjs.js +3 -21
- package/dist/components/Table.cjs.js.map +1 -1
- package/dist/components/Table.es.js +3 -21
- package/dist/components/Table.es.js.map +1 -1
- package/dist/components/ThreadList.cjs.js +1 -1
- package/dist/components/ThreadList.es.js +1 -1
- package/dist/components/Truncate.cjs.js +1 -1
- package/dist/components/Truncate.es.js +1 -1
- package/dist/components/Txt.cjs.js +1 -1
- package/dist/components/Txt.es.js +1 -1
- package/dist/components/Workflow.cjs.js +9 -13
- package/dist/components/Workflow.cjs.js.map +1 -1
- package/dist/components/Workflow.es.js +9 -13
- package/dist/components/Workflow.es.js.map +1 -1
- package/dist/components/ai/ask-user.cjs.js +1 -1
- package/dist/components/ai/ask-user.es.js +1 -1
- package/dist/components/ai/chat-event.cjs.js +3 -3
- package/dist/components/ai/chat-event.es.js +4 -4
- package/dist/components/ai/plan.cjs.js +3 -3
- package/dist/components/ai/plan.cjs.js.map +1 -1
- package/dist/components/ai/plan.es.js +3 -3
- package/dist/components/ai/plan.es.js.map +1 -1
- package/dist/components/ai/task-list.cjs.js +370 -55
- package/dist/components/ai/task-list.cjs.js.map +1 -1
- package/dist/components/ai/task-list.es.js +374 -58
- package/dist/components/ai/task-list.es.js.map +1 -1
- package/dist/components/ai/tool-call.cjs.js +7 -9
- package/dist/components/ai/tool-call.cjs.js.map +1 -1
- package/dist/components/ai/tool-call.es.js +8 -10
- package/dist/components/ai/tool-call.es.js.map +1 -1
- package/dist/{data-code-section-Cth9zVkj.js → data-code-section-BKrCkj90.js} +2 -2
- package/dist/{data-code-section-Cth9zVkj.js.map → data-code-section-BKrCkj90.js.map} +1 -1
- package/dist/{data-code-section-DE4AgaTU.cjs → data-code-section-C9z94ytx.cjs} +2 -2
- package/dist/{data-code-section-DE4AgaTU.cjs.map → data-code-section-C9z94ytx.cjs.map} +1 -1
- package/dist/{data-list-DisTjDHP.js → data-list-5-nRJbEO.js} +3 -3
- package/dist/{data-list-DisTjDHP.js.map → data-list-5-nRJbEO.js.map} +1 -1
- package/dist/{data-list-PwFpP_mo.cjs → data-list-RI8c32dk.cjs} +3 -3
- package/dist/{data-list-PwFpP_mo.cjs.map → data-list-RI8c32dk.cjs.map} +1 -1
- package/dist/{data-list-skeleton-DAfM8AjW.js → data-list-skeleton-BrSh9Y_3.js} +2 -2
- package/dist/{data-list-skeleton-DAfM8AjW.js.map → data-list-skeleton-BrSh9Y_3.js.map} +1 -1
- package/dist/{data-list-skeleton-CjwR0o3w.cjs → data-list-skeleton-CgbWqYky.cjs} +2 -2
- package/dist/{data-list-skeleton-CjwR0o3w.cjs.map → data-list-skeleton-CgbWqYky.cjs.map} +1 -1
- package/dist/{data-list-spacer-DEcgVGFM.cjs → data-list-spacer-1OqlC7WX.cjs} +2 -2
- package/dist/{data-list-spacer-DEcgVGFM.cjs.map → data-list-spacer-1OqlC7WX.cjs.map} +1 -1
- package/dist/{data-list-spacer-BmorAN0V.js → data-list-spacer-D3Rn1evn.js} +2 -2
- package/dist/{data-list-spacer-BmorAN0V.js.map → data-list-spacer-D3Rn1evn.js.map} +1 -1
- package/dist/{data-list-top-DpbOA3uw.js → data-list-top-B-AopfvE.js} +13 -21
- package/dist/data-list-top-B-AopfvE.js.map +1 -0
- package/dist/{data-list-top-WGUY167p.cjs → data-list-top-DFnudSA_.cjs} +13 -21
- package/dist/data-list-top-DFnudSA_.cjs.map +1 -0
- package/dist/{data-panel-BQVTKo86.js → data-panel-BWgExbHs.js} +2 -2
- package/dist/{data-panel-BQVTKo86.js.map → data-panel-BWgExbHs.js.map} +1 -1
- package/dist/{data-panel-XPXrhYJI.cjs → data-panel-C_BqhzeL.cjs} +2 -2
- package/dist/{data-panel-XPXrhYJI.cjs.map → data-panel-C_BqhzeL.cjs.map} +1 -1
- package/dist/{date-time-range-picker-C-t3Kdpk.js → date-time-range-picker-Bnviv7s-.js} +2 -2
- package/dist/{date-time-range-picker-C-t3Kdpk.js.map → date-time-range-picker-Bnviv7s-.js.map} +1 -1
- package/dist/{date-time-range-picker-BCzvSYx3.cjs → date-time-range-picker-sT5qAW-_.cjs} +2 -2
- package/dist/{date-time-range-picker-BCzvSYx3.cjs.map → date-time-range-picker-sT5qAW-_.cjs.map} +1 -1
- package/dist/domains/capabilities/hooks/use-feedback-available.cjs.js +16 -0
- package/dist/domains/capabilities/hooks/use-feedback-available.cjs.js.map +1 -0
- package/dist/domains/capabilities/hooks/use-feedback-available.d.ts +2 -0
- package/dist/domains/capabilities/hooks/use-feedback-available.es.js +12 -0
- package/dist/domains/capabilities/hooks/use-feedback-available.es.js.map +1 -0
- package/dist/domains/capabilities/hooks/use-observability-capabilities.cjs.js +20 -0
- package/dist/domains/capabilities/hooks/use-observability-capabilities.cjs.js.map +1 -0
- package/dist/domains/capabilities/hooks/use-observability-capabilities.d.ts +2 -0
- package/dist/domains/capabilities/hooks/use-observability-capabilities.es.js +16 -0
- package/dist/domains/capabilities/hooks/use-observability-capabilities.es.js.map +1 -0
- package/dist/domains/capabilities/hooks/use-trace-query-available.cjs.js +16 -0
- package/dist/domains/capabilities/hooks/use-trace-query-available.cjs.js.map +1 -0
- package/dist/domains/capabilities/hooks/use-trace-query-available.d.ts +2 -0
- package/dist/domains/capabilities/hooks/use-trace-query-available.es.js +12 -0
- package/dist/domains/capabilities/hooks/use-trace-query-available.es.js.map +1 -0
- package/dist/domains/capabilities/hooks.cjs.js +14 -0
- package/dist/domains/capabilities/hooks.cjs.js.map +1 -0
- package/dist/domains/capabilities/hooks.d.ts +2 -0
- package/dist/domains/capabilities/hooks.es.js +4 -0
- package/dist/domains/capabilities/hooks.es.js.map +1 -0
- package/dist/domains/capabilities.cjs.js +14 -0
- package/dist/domains/capabilities.cjs.js.map +1 -0
- package/dist/domains/capabilities.d.ts +2 -0
- package/dist/domains/capabilities.es.js +4 -0
- package/dist/domains/capabilities.es.js.map +1 -0
- package/dist/domains/chat/attachments/attachment-kind.es.js +1 -1
- package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
- package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +1 -1
- package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +1 -1
- 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/messages/notification-signal-notice.cjs.js +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
- package/dist/domains/chat/messages/reasoning-streaming-line.cjs.js +1 -1
- package/dist/domains/chat/messages/reasoning-streaming-line.es.js +1 -1
- package/dist/domains/chat/messages/reasoning.cjs.js +4 -3
- package/dist/domains/chat/messages/reasoning.cjs.js.map +1 -1
- package/dist/domains/chat/messages/reasoning.es.js +4 -3
- package/dist/domains/chat/messages/reasoning.es.js.map +1 -1
- package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +2 -2
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js.map +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +2 -2
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js.map +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 +1 -1
- package/dist/domains/chat/messages/signal-badge.es.js +1 -1
- package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
- package/dist/domains/chat/messages/system-reminder-badge.cjs.js.map +1 -1
- package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
- package/dist/domains/chat/messages/system-reminder-badge.es.js.map +1 -1
- package/dist/domains/chat/messages/tripwire-notice.cjs.js +2 -2
- package/dist/domains/chat/messages/tripwire-notice.cjs.js.map +1 -1
- package/dist/domains/chat/messages/tripwire-notice.es.js +2 -2
- package/dist/domains/chat/messages/tripwire-notice.es.js.map +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/code-mode-badge.cjs.js +3 -3
- 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 +3 -3
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +6 -4
- package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +6 -4
- package/dist/domains/chat/tools/badges/observation-marker-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +11 -8
- package/dist/domains/chat/tools/badges/observation-renderer.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.es.js +11 -8
- package/dist/domains/chat/tools/badges/observation-renderer.es.js.map +1 -1
- package/dist/domains/logs/components/log-data-panel.cjs.js +3 -6
- package/dist/domains/logs/components/log-data-panel.cjs.js.map +1 -1
- package/dist/domains/logs/components/log-data-panel.es.js +3 -6
- package/dist/domains/logs/components/log-data-panel.es.js.map +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/no-logs-info.cjs.js +3 -4
- package/dist/domains/logs/components/no-logs-info.cjs.js.map +1 -1
- package/dist/domains/logs/components/no-logs-info.es.js +3 -4
- package/dist/domains/logs/components/no-logs-info.es.js.map +1 -1
- package/dist/domains/memory/components/flame-graph.cjs.js +7 -5
- package/dist/domains/memory/components/flame-graph.cjs.js.map +1 -1
- package/dist/domains/memory/components/flame-graph.es.js +8 -6
- package/dist/domains/memory/components/flame-graph.es.js.map +1 -1
- package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
- package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
- package/dist/domains/memory/components/observation-detail-view.cjs.js +4 -5
- package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
- package/dist/domains/memory/components/observation-detail-view.es.js +4 -5
- package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
- package/dist/domains/memory/components/thread-context-progress.cjs.js +1 -1
- package/dist/domains/memory/components/thread-context-progress.cjs.js.map +1 -1
- package/dist/domains/memory/components/thread-context-progress.es.js +1 -1
- package/dist/domains/memory/components/thread-context-progress.es.js.map +1 -1
- package/dist/domains/memory/lib/timeline.cjs.js +0 -9
- package/dist/domains/memory/lib/timeline.cjs.js.map +1 -1
- package/dist/domains/memory/lib/timeline.es.js +1 -9
- package/dist/domains/memory/lib/timeline.es.js.map +1 -1
- package/dist/domains/metrics/components/bar-list.cjs.js +4 -4
- package/dist/domains/metrics/components/bar-list.cjs.js.map +1 -1
- package/dist/domains/metrics/components/bar-list.es.js +4 -4
- package/dist/domains/metrics/components/bar-list.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/kpi-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/kpi-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/kpi-card-view.es.js +1 -1
- package/dist/domains/metrics/components/kpi-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/latency-card-view.cjs.js +33 -24
- package/dist/domains/metrics/components/latency-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/latency-card-view.es.js +34 -25
- package/dist/domains/metrics/components/latency-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/memory-card-view.cjs.js +9 -8
- package/dist/domains/metrics/components/memory-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/memory-card-view.es.js +8 -7
- package/dist/domains/metrics/components/memory-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/metrics-utils.cjs.js +0 -15
- package/dist/domains/metrics/components/metrics-utils.cjs.js.map +1 -1
- package/dist/domains/metrics/components/metrics-utils.es.js +1 -14
- package/dist/domains/metrics/components/metrics-utils.es.js.map +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +6 -5
- package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +4 -3
- package/dist/domains/metrics/components/model-usage-cost-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/scores-card-view.cjs.js +5 -5
- package/dist/domains/metrics/components/scores-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/scores-card-view.es.js +5 -5
- package/dist/domains/metrics/components/scores-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +7 -6
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +7 -6
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +13 -11
- package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +13 -11
- package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +7 -6
- package/dist/domains/metrics/components/traces-volume-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.es.js +8 -7
- package/dist/domains/metrics/components/traces-volume-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components.cjs.js +0 -2
- package/dist/domains/metrics/components.cjs.js.map +1 -1
- package/dist/domains/metrics/components.es.js +1 -1
- package/dist/domains/metrics/hooks/use-latency-metrics.cjs.js +11 -11
- package/dist/domains/metrics/hooks/use-latency-metrics.cjs.js.map +1 -1
- package/dist/domains/metrics/hooks/use-latency-metrics.es.js +12 -11
- package/dist/domains/metrics/hooks/use-latency-metrics.es.js.map +1 -1
- package/dist/domains/metrics/hooks/use-metrics.cjs.js +3 -3
- package/dist/domains/metrics/hooks/use-metrics.cjs.js.map +1 -1
- package/dist/domains/metrics/hooks/use-metrics.es.js +3 -3
- package/dist/domains/metrics/hooks/use-metrics.es.js.map +1 -1
- package/dist/domains/metrics/hooks/use-model-usage-cost-metrics.cjs.js +5 -5
- package/dist/domains/metrics/hooks/use-model-usage-cost-metrics.cjs.js.map +1 -1
- package/dist/domains/metrics/hooks/use-model-usage-cost-metrics.es.js +5 -5
- package/dist/domains/metrics/hooks/use-model-usage-cost-metrics.es.js.map +1 -1
- package/dist/domains/metrics/hooks/use-scores-metrics.cjs.js +6 -7
- package/dist/domains/metrics/hooks/use-scores-metrics.cjs.js.map +1 -1
- package/dist/domains/metrics/hooks/use-scores-metrics.es.js +6 -7
- package/dist/domains/metrics/hooks/use-scores-metrics.es.js.map +1 -1
- package/dist/domains/metrics/hooks/use-token-usage-timeseries.cjs.js +4 -12
- package/dist/domains/metrics/hooks/use-token-usage-timeseries.cjs.js.map +1 -1
- package/dist/domains/metrics/hooks/use-token-usage-timeseries.es.js +4 -12
- package/dist/domains/metrics/hooks/use-token-usage-timeseries.es.js.map +1 -1
- package/dist/domains/metrics/hooks.cjs.js +3 -0
- package/dist/domains/metrics/hooks.cjs.js.map +1 -1
- package/dist/domains/metrics/hooks.es.js +1 -0
- package/dist/domains/metrics/hooks.es.js.map +1 -1
- package/dist/domains/metrics/metrics-interval.cjs.js +20 -0
- package/dist/domains/metrics/metrics-interval.cjs.js.map +1 -0
- package/dist/domains/metrics/metrics-interval.d.ts +2 -0
- package/dist/domains/metrics/metrics-interval.es.js +15 -0
- package/dist/domains/metrics/metrics-interval.es.js.map +1 -0
- package/dist/domains/metrics.cjs.js +3 -2
- package/dist/domains/metrics.cjs.js.map +1 -1
- package/dist/domains/metrics.es.js +2 -1
- package/dist/domains/metrics.es.js.map +1 -1
- package/dist/domains/traces/components/no-traces-info.cjs.js +3 -4
- package/dist/domains/traces/components/no-traces-info.cjs.js.map +1 -1
- package/dist/domains/traces/components/no-traces-info.es.js +3 -4
- package/dist/domains/traces/components/no-traces-info.es.js.map +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +3 -2
- package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +3 -2
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-json.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-json.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +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 +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +3 -2
- package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +3 -2
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js.map +1 -1
- package/dist/domains/traces/components/span-summary-description.cjs.js +6 -4
- package/dist/domains/traces/components/span-summary-description.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-summary-description.es.js +7 -5
- package/dist/domains/traces/components/span-summary-description.es.js.map +1 -1
- package/dist/domains/traces/components/span-timeline-row.cjs.js +3 -4
- package/dist/domains/traces/components/span-timeline-row.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-timeline-row.es.js +3 -4
- package/dist/domains/traces/components/span-timeline-row.es.js.map +1 -1
- package/dist/domains/traces/components/span-timing-hover-card.cjs.js +6 -11
- package/dist/domains/traces/components/span-timing-hover-card.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-timing-hover-card.es.js +6 -11
- package/dist/domains/traces/components/span-timing-hover-card.es.js.map +1 -1
- package/dist/domains/traces/components/span-type-legend.cjs.js +1 -1
- package/dist/domains/traces/components/span-type-legend.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +1 -1
- package/dist/domains/traces/components/timeline-timing-col.cjs.js +3 -4
- package/dist/domains/traces/components/timeline-timing-col.cjs.js.map +1 -1
- package/dist/domains/traces/components/timeline-timing-col.es.js +3 -4
- package/dist/domains/traces/components/timeline-timing-col.es.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +21 -18
- package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +21 -18
- package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
- package/dist/domains/traces/components/trace-data-panel-view.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-span-timeline.cjs.js +10 -4
- package/dist/domains/traces/components/trace-span-timeline.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-span-timeline.es.js +10 -4
- package/dist/domains/traces/components/trace-span-timeline.es.js.map +1 -1
- package/dist/domains/traces/components/trace-span-tree.cjs.js +3 -4
- package/dist/domains/traces/components/trace-span-tree.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-span-tree.es.js +3 -4
- package/dist/domains/traces/components/trace-span-tree.es.js.map +1 -1
- package/dist/domains/traces/components/trace-summary-description.cjs.js +13 -10
- package/dist/domains/traces/components/trace-summary-description.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-summary-description.es.js +13 -10
- package/dist/domains/traces/components/trace-summary-description.es.js.map +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.es.js +1 -1
- package/dist/domains/traces/components/traces-list-view.cjs.js +12 -10
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +12 -10
- package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js +1 -1
- package/dist/domains/traces/hooks/use-branch.cjs.js +0 -1
- package/dist/domains/traces/hooks/use-branch.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-branch.es.js +0 -1
- package/dist/domains/traces/hooks/use-branch.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-light-spans.cjs.js +0 -1
- package/dist/domains/traces/hooks/use-trace-light-spans.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-light-spans.es.js +0 -1
- package/dist/domains/traces/hooks/use-trace-light-spans.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-query.cjs.js +63 -3
- package/dist/domains/traces/hooks/use-trace-query.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-query.es.js +61 -4
- package/dist/domains/traces/hooks/use-trace-query.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-search.cjs.js +0 -1
- package/dist/domains/traces/hooks/use-trace-search.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-search.es.js +0 -1
- package/dist/domains/traces/hooks/use-trace-search.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-spans.cjs.js +0 -1
- package/dist/domains/traces/hooks/use-trace-spans.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-spans.es.js +0 -1
- package/dist/domains/traces/hooks/use-trace-spans.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-traces-list-source.cjs.js +42 -0
- package/dist/domains/traces/hooks/use-traces-list-source.cjs.js.map +1 -0
- package/dist/domains/traces/hooks/use-traces-list-source.d.ts +2 -0
- package/dist/domains/traces/hooks/use-traces-list-source.es.js +38 -0
- package/dist/domains/traces/hooks/use-traces-list-source.es.js.map +1 -0
- package/dist/domains/traces/hooks.cjs.js +2 -0
- package/dist/domains/traces/hooks.cjs.js.map +1 -1
- package/dist/domains/traces/hooks.es.js +1 -0
- package/dist/domains/traces/hooks.es.js.map +1 -1
- package/dist/domains/traces/trace-filters.cjs.js +10 -1
- package/dist/domains/traces/trace-filters.cjs.js.map +1 -1
- package/dist/domains/traces/trace-filters.es.js +10 -1
- package/dist/domains/traces/trace-filters.es.js.map +1 -1
- package/dist/domains/traces/utils/span-utils.cjs.js +4 -36
- package/dist/domains/traces/utils/span-utils.cjs.js.map +1 -1
- package/dist/domains/traces/utils/span-utils.es.js +4 -32
- package/dist/domains/traces/utils/span-utils.es.js.map +1 -1
- package/dist/domains/traces/utils.cjs.js +1 -1
- package/dist/domains/traces/utils.es.js +1 -1
- package/dist/domains/traces.cjs.js +3 -1
- package/dist/domains/traces.cjs.js.map +1 -1
- package/dist/domains/traces.es.js +2 -1
- package/dist/domains/traces.es.js.map +1 -1
- package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +1 -1
- package/dist/ee/signals/components/entity-index-compact-grid.es.js +1 -1
- package/dist/ee/signals/components/entity-index-list.cjs.js +2 -2
- package/dist/ee/signals/components/entity-index-list.es.js +2 -2
- package/dist/ee/signals/components/entity-index-model.cjs.js +3 -2
- package/dist/ee/signals/components/entity-index-model.cjs.js.map +1 -1
- package/dist/ee/signals/components/entity-index-model.es.js +3 -2
- package/dist/ee/signals/components/entity-index-model.es.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +2 -2
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +2 -2
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +2 -2
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +2 -2
- package/dist/ee/signals/settings/trace-signal-settings.cjs.js +1 -1
- package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
- package/dist/ee/signals/signal-formatting.cjs.js +6 -34
- package/dist/ee/signals/signal-formatting.cjs.js.map +1 -1
- package/dist/ee/signals/signal-formatting.es.js +6 -34
- package/dist/ee/signals/signal-formatting.es.js.map +1 -1
- package/dist/ee/signals/snapshot-timeline-data.cjs.js +1 -1
- package/dist/ee/signals/snapshot-timeline-data.cjs.js.map +1 -1
- package/dist/ee/signals/snapshot-timeline-data.es.js +1 -1
- package/dist/ee/signals/snapshot-timeline-data.es.js.map +1 -1
- package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
- package/dist/ee/signals/view-mode-tab.es.js +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +1 -1
- package/dist/field-block-error-msg-Y0fi0HUC.js +22 -0
- package/dist/field-block-error-msg-Y0fi0HUC.js.map +1 -0
- package/dist/field-block-error-msg-oudJz2Hx.cjs +24 -0
- package/dist/field-block-error-msg-oudJz2Hx.cjs.map +1 -0
- package/dist/{field-error-id-DyWx33Fu.js → field-error-id-DD7OARLU.js} +2 -13
- package/dist/field-error-id-DD7OARLU.js.map +1 -0
- package/dist/{field-error-id-6EfqmQ4C.cjs → field-error-id-V_WejsRL.cjs} +4 -15
- package/dist/field-error-id-V_WejsRL.cjs.map +1 -0
- package/dist/hooks/use-elapsed-time.cjs.js +25 -0
- package/dist/hooks/use-elapsed-time.cjs.js.map +1 -0
- package/dist/hooks/use-elapsed-time.d.ts +2 -0
- package/dist/hooks/use-elapsed-time.es.js +21 -0
- package/dist/hooks/use-elapsed-time.es.js.map +1 -0
- package/dist/inline-code-BW6W121s.js +13 -0
- package/dist/inline-code-BW6W121s.js.map +1 -0
- package/dist/inline-code-CSwG-x8D.cjs +15 -0
- package/dist/inline-code-CSwG-x8D.cjs.map +1 -0
- package/dist/layout/tabbed-container.cjs.js +3 -3
- package/dist/layout/tabbed-container.es.js +3 -3
- package/dist/{list-search-S1mco9Bl.cjs → list-search-CsYQX8qR.cjs} +2 -2
- package/dist/{list-search-S1mco9Bl.cjs.map → list-search-CsYQX8qR.cjs.map} +1 -1
- package/dist/{list-search-FJ1O5F3S.js → list-search-D1FD8FCL.js} +2 -2
- package/dist/{list-search-FJ1O5F3S.js.map → list-search-D1FD8FCL.js.map} +1 -1
- package/dist/{logs-data-list-5BAeLU57.js → logs-data-list-BKE5vYZR.js} +4 -4
- package/dist/{logs-data-list-5BAeLU57.js.map → logs-data-list-BKE5vYZR.js.map} +1 -1
- package/dist/{logs-data-list-YL9yLKF3.cjs → logs-data-list-lJK0yGYj.cjs} +4 -4
- package/dist/{logs-data-list-YL9yLKF3.cjs.map → logs-data-list-lJK0yGYj.cjs.map} +1 -1
- package/dist/{metrics-card-Bzm6m1dy.js → metrics-card-C2RTi5Ew.js} +7 -7
- package/dist/metrics-card-C2RTi5Ew.js.map +1 -0
- package/dist/{metrics-card-DCCHIG-z.cjs → metrics-card-DzcVJTAN.cjs} +7 -7
- package/dist/metrics-card-DzcVJTAN.cjs.map +1 -0
- package/dist/{metrics-kpi-card-BrnFhFQm.js → metrics-kpi-card-BVCuXeDa.js} +21 -10
- package/dist/metrics-kpi-card-BVCuXeDa.js.map +1 -0
- package/dist/{metrics-kpi-card-Bhb4R4z0.cjs → metrics-kpi-card-DoIeHfv6.cjs} +21 -10
- package/dist/metrics-kpi-card-DoIeHfv6.cjs.map +1 -0
- package/dist/{metrics-line-chart-0FR3SYSt.cjs → metrics-line-chart-BNNRRxM8.cjs} +61 -25
- package/dist/metrics-line-chart-BNNRRxM8.cjs.map +1 -0
- package/dist/{metrics-line-chart-knlgw8bV.js → metrics-line-chart-CT_pqJtC.js} +62 -27
- package/dist/metrics-line-chart-CT_pqJtC.js.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 +2 -2
- package/dist/new/settings.es.js +2 -2
- package/dist/{page-header-CyXAezlZ.js → page-header-BGyZw13s.js} +2 -2
- package/dist/page-header-BGyZw13s.js.map +1 -0
- package/dist/{page-header-Dk3s3XtC.cjs → page-header-CqvBk1wE.cjs} +2 -2
- package/dist/page-header-CqvBk1wE.cjs.map +1 -0
- package/dist/{schemes-C9EhSOkB.js → schemes-CGK3gQJ6.js} +2 -2
- package/dist/{schemes-C9EhSOkB.js.map → schemes-CGK3gQJ6.js.map} +1 -1
- package/dist/{search-field-block-fU3tStmB.js → search-field-block-Dj2KJyjQ.js} +2 -2
- package/dist/{search-field-block-fU3tStmB.js.map → search-field-block-Dj2KJyjQ.js.map} +1 -1
- package/dist/{search-field-block-7-ufp4uG.cjs → search-field-block-K_e_S9WY.cjs} +2 -2
- package/dist/{search-field-block-7-ufp4uG.cjs.map → search-field-block-K_e_S9WY.cjs.map} +1 -1
- package/dist/{section-B9OLuEq3.js → section-Bi0g7cn6.js} +2 -2
- package/dist/{section-B9OLuEq3.js.map → section-Bi0g7cn6.js.map} +1 -1
- package/dist/{section-CTihfzmc.cjs → section-p9vCSmPq.cjs} +2 -2
- package/dist/{section-CTihfzmc.cjs.map → section-p9vCSmPq.cjs.map} +1 -1
- package/dist/{select-field-block-BfiHq9t6.js → select-field-block-BF8v698d.js} +2 -2
- package/dist/{select-field-block-BfiHq9t6.js.map → select-field-block-BF8v698d.js.map} +1 -1
- package/dist/{select-field-block-DJo2cX9Y.cjs → select-field-block-CaGjpIKM.cjs} +2 -2
- package/dist/{select-field-block-DJo2cX9Y.cjs.map → select-field-block-CaGjpIKM.cjs.map} +1 -1
- package/dist/{settings-row-BoAuUUuH.cjs → settings-row-Cr8gaO5a.cjs} +14 -4
- package/dist/settings-row-Cr8gaO5a.cjs.map +1 -0
- package/dist/{settings-row-B2IekRyH.js → settings-row-Cr9DsBSX.js} +14 -4
- package/dist/settings-row-Cr9DsBSX.js.map +1 -0
- package/dist/{span-payload-primitives-Buq9V8nK.js → span-payload-primitives-Dmzm3mb2.js} +2 -2
- package/dist/{span-payload-primitives-Buq9V8nK.js.map → span-payload-primitives-Dmzm3mb2.js.map} +1 -1
- package/dist/{span-payload-primitives-CjlNH9C-.cjs → span-payload-primitives-Dq8WqqNm.cjs} +2 -2
- package/dist/{span-payload-primitives-CjlNH9C-.cjs.map → span-payload-primitives-Dq8WqqNm.cjs.map} +1 -1
- package/dist/src/domains/capabilities/hooks/index.d.ts +3 -0
- package/dist/src/domains/capabilities/hooks/use-feedback-available.d.ts +8 -0
- package/dist/src/domains/capabilities/hooks/use-observability-capabilities.d.ts +22 -0
- package/dist/src/domains/capabilities/hooks/use-trace-query-available.d.ts +8 -0
- package/dist/src/domains/capabilities/index.d.ts +1 -0
- package/dist/src/domains/chat/messages/reasoning.d.ts +3 -1
- package/dist/src/domains/chat/messages/renderers/reasoning-part-renderer.d.ts +3 -1
- package/dist/src/domains/chat/stories/reasoning.stories.d.ts +1 -1
- package/dist/src/domains/memory/lib/timeline.d.ts +0 -1
- package/dist/src/domains/metrics/components/index.d.ts +1 -1
- package/dist/src/domains/metrics/components/kpi-card-view.d.ts +2 -1
- package/dist/src/domains/metrics/components/latency-card-view.d.ts +4 -1
- package/dist/src/domains/metrics/components/metrics-utils.d.ts +0 -2
- package/dist/src/domains/metrics/hooks/index.d.ts +1 -0
- package/dist/src/domains/metrics/hooks/use-latency-metrics.d.ts +2 -2
- package/dist/src/domains/metrics/hooks/use-token-usage-timeseries.d.ts +2 -1
- package/dist/src/domains/metrics/metrics-interval.d.ts +7 -0
- package/dist/src/domains/traces/components/trace-columns-menu.d.ts +3 -1
- package/dist/src/domains/traces/components/trace-data-panel-view.stories.d.ts +1 -1
- package/dist/src/domains/traces/hooks/index.d.ts +1 -0
- package/dist/src/domains/traces/hooks/use-trace-query.d.ts +19 -2
- package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +46 -0
- package/dist/src/domains/traces/trace-filters.d.ts +6 -1
- package/dist/src/domains/traces/utils/index.d.ts +1 -1
- package/dist/src/domains/traces/utils/span-utils.d.ts +1 -6
- package/dist/src/ds/components/Card/Card.d.ts +2 -2
- package/dist/src/ds/components/CompactNumber/compact-number.d.ts +6 -0
- package/dist/src/ds/components/CompactNumber/compact-number.stories.d.ts +7 -0
- package/dist/src/ds/components/CompactNumber/index.d.ts +1 -0
- package/dist/src/ds/components/DataList/data-list-cells.d.ts +4 -3
- package/dist/src/ds/components/InlineCode/index.d.ts +1 -0
- package/dist/src/ds/components/InlineCode/inline-code.d.ts +3 -0
- package/dist/src/ds/components/InlineCode/inline-code.stories.d.ts +13 -0
- package/dist/src/ds/components/ItemList/item-list-date-cell.d.ts +3 -2
- package/dist/src/ds/components/MetricsCardGroup/metrics-card-group.d.ts +3 -8
- package/dist/src/ds/components/MetricsLineChart/index.d.ts +1 -0
- package/dist/src/ds/components/MetricsLineChart/metrics-line-chart-legend.d.ts +6 -0
- package/dist/src/ds/components/MetricsLineChart/metrics-line-chart.d.ts +6 -4
- package/dist/src/ds/components/MetricsLineChart/metrics-line-chart.stories.d.ts +1 -0
- package/dist/src/ds/components/RelativeTimestamp/index.d.ts +1 -0
- package/dist/src/ds/components/RelativeTimestamp/relative-timestamp.d.ts +6 -0
- package/dist/src/ds/components/RelativeTimestamp/relative-timestamp.stories.d.ts +7 -0
- package/dist/src/ds/components/StatusIndicators/status-dot-styles.d.ts +31 -2
- package/dist/src/ds/components/StatusIndicators/status-dot.stories.d.ts +3 -4
- package/dist/src/ds/components/StatusIndicators/status.d.ts +2 -3
- package/dist/src/ds/components/StatusIndicators/status.stories.d.ts +2 -1
- package/dist/src/ds/components/Txt/Txt.d.ts +5 -1
- package/dist/src/ds/components/ai/task-list/task-graph-node.d.ts +8 -0
- package/dist/src/ds/components/ai/task-list/task-graph.d.ts +8 -0
- package/dist/src/ds/components/ai/task-list/task-list.d.ts +4 -8
- package/dist/src/ds/components/ai/task-list/task-list.stories.d.ts +1 -1
- package/dist/src/ds/components/ai/task-list/use-focused-row-scroll.d.ts +12 -0
- package/dist/src/ds/new/layout/page-header/page-header.stories.d.ts +1 -0
- package/dist/src/ds/new/settings/settings-row.d.ts +3 -1
- package/dist/src/ds/new/settings/settings.stories.d.ts +1 -0
- package/dist/src/hooks/stories/state/use-elapsed-time.stories.d.ts +17 -0
- package/dist/src/hooks/use-elapsed-time.d.ts +2 -0
- package/dist/src/lib/cost.d.ts +6 -0
- package/dist/src/utils/cost.d.ts +1 -0
- package/dist/src/utils/date-format.d.ts +28 -0
- package/dist/src/utils/duration.d.ts +7 -1
- package/dist/src/utils/relative-time.d.ts +7 -0
- package/dist/style.css +329 -18
- package/dist/{text-field-block-DGIM1i3Z.js → text-field-block-BYPiO9h4.js} +2 -2
- package/dist/{text-field-block-DGIM1i3Z.js.map → text-field-block-BYPiO9h4.js.map} +1 -1
- package/dist/{text-field-block-DePCgDOh.cjs → text-field-block-CRh8sRXP.cjs} +2 -2
- package/dist/{text-field-block-DePCgDOh.cjs.map → text-field-block-CRh8sRXP.cjs.map} +1 -1
- package/dist/{tool-call-Bs-9Cah5.js → tool-call-CIeNEYpK.js} +2 -2
- package/dist/{tool-call-Bs-9Cah5.js.map → tool-call-CIeNEYpK.js.map} +1 -1
- package/dist/{tool-call-C0JeHe8Z.cjs → tool-call-CnEm3eE0.cjs} +2 -2
- package/dist/{tool-call-C0JeHe8Z.cjs.map → tool-call-CnEm3eE0.cjs.map} +1 -1
- package/dist/{traces-data-list-Dam8-XW-.cjs → traces-data-list-C5KZesk6.cjs} +5 -5
- package/dist/{traces-data-list-Dam8-XW-.cjs.map → traces-data-list-C5KZesk6.cjs.map} +1 -1
- package/dist/{traces-data-list-Dvi0s56v.js → traces-data-list-CdWW9J6z.js} +5 -5
- package/dist/{traces-data-list-Dvi0s56v.js.map → traces-data-list-CdWW9J6z.js.map} +1 -1
- package/dist/utils/cost.cjs.js +40 -0
- package/dist/utils/cost.cjs.js.map +1 -0
- package/dist/utils/cost.d.ts +2 -0
- package/dist/utils/cost.es.js +34 -0
- package/dist/utils/cost.es.js.map +1 -0
- package/dist/utils/date-format.cjs.js +99 -0
- package/dist/utils/date-format.cjs.js.map +1 -0
- package/dist/utils/date-format.d.ts +2 -0
- package/dist/utils/date-format.es.js +91 -0
- package/dist/utils/date-format.es.js.map +1 -0
- package/dist/utils/duration.cjs.js +19 -2
- package/dist/utils/duration.cjs.js.map +1 -1
- package/dist/utils/duration.es.js +18 -3
- package/dist/utils/duration.es.js.map +1 -1
- package/dist/utils/file.es.js +2 -2
- package/dist/utils/relative-time.cjs.js +12 -0
- package/dist/utils/relative-time.cjs.js.map +1 -0
- package/dist/utils/relative-time.d.ts +2 -0
- package/dist/utils/relative-time.es.js +8 -0
- package/dist/utils/relative-time.es.js.map +1 -0
- package/package.json +7 -7
- package/dist/Badge-BEeYtjmv.cjs.map +0 -1
- package/dist/Badge-TD55_qZJ.js.map +0 -1
- package/dist/Txt-B4-2nLaI.cjs.map +0 -1
- package/dist/Txt-DTh3Pa_a.js.map +0 -1
- package/dist/data-list-top-DpbOA3uw.js.map +0 -1
- package/dist/data-list-top-WGUY167p.cjs.map +0 -1
- package/dist/field-error-id-6EfqmQ4C.cjs.map +0 -1
- package/dist/field-error-id-DyWx33Fu.js.map +0 -1
- package/dist/metrics-card-Bzm6m1dy.js.map +0 -1
- package/dist/metrics-card-DCCHIG-z.cjs.map +0 -1
- package/dist/metrics-kpi-card-Bhb4R4z0.cjs.map +0 -1
- package/dist/metrics-kpi-card-BrnFhFQm.js.map +0 -1
- package/dist/metrics-line-chart-0FR3SYSt.cjs.map +0 -1
- package/dist/metrics-line-chart-knlgw8bV.js.map +0 -1
- package/dist/page-header-CyXAezlZ.js.map +0 -1
- package/dist/page-header-Dk3s3XtC.cjs.map +0 -1
- package/dist/settings-row-B2IekRyH.js.map +0 -1
- package/dist/settings-row-BoAuUUuH.cjs.map +0 -1
- package/dist/src/ds/components/Table/utils.d.ts +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-reminder-badge.cjs.js","sources":["../../../../src/domains/chat/messages/system-reminder-badge.tsx"],"sourcesContent":["import { ChevronDown, ChevronRight, FileText } from 'lucide-react';\nimport { useMemo, useState } from 'react';\nimport { parseSystemReminder } from './system-reminder-utils';\n\nexport interface SystemReminderBadgeProps {\n text: string;\n}\n\nexport const SystemReminderBadge = ({ text }: SystemReminderBadgeProps) => {\n const reminder = useMemo(() => parseSystemReminder(text), [text]);\n const [isExpanded, setIsExpanded] = useState(false);\n\n if (!reminder) {\n return text;\n }\n\n const title = reminder.path || reminder.type || 'System reminder';\n\n return (\n <div className=\"overflow-hidden rounded-lg border border-border bg-background\">\n <button\n type=\"button\"\n onClick={() => setIsExpanded(value => !value)}\n className=\"flex w-full items-start gap-3 px-4 py-3 text-left hover:bg-fill-subtle\"\n >\n <FileText className=\"mt-0.5 size-4 shrink-0 text-muted-foreground\" />\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-column text-foreground\">System reminder</p>\n <p className=\"mt-1 text-meta break-all text-muted-foreground\">{title}</p>\n </div>\n {isExpanded ? (\n <ChevronDown className=\"size-4 shrink-0 text-muted-foreground\" />\n ) : (\n <ChevronRight className=\"size-4 shrink-0 text-muted-foreground\" />\n )}\n </button>\n\n {isExpanded && reminder.body && (\n <div className=\"border-t border-border bg-sidebar px-4 py-3\">\n <pre className=\"
|
|
1
|
+
{"version":3,"file":"system-reminder-badge.cjs.js","sources":["../../../../src/domains/chat/messages/system-reminder-badge.tsx"],"sourcesContent":["import { ChevronDown, ChevronRight, FileText } from 'lucide-react';\nimport { useMemo, useState } from 'react';\nimport { parseSystemReminder } from './system-reminder-utils';\n\nexport interface SystemReminderBadgeProps {\n text: string;\n}\n\nexport const SystemReminderBadge = ({ text }: SystemReminderBadgeProps) => {\n const reminder = useMemo(() => parseSystemReminder(text), [text]);\n const [isExpanded, setIsExpanded] = useState(false);\n\n if (!reminder) {\n return text;\n }\n\n const title = reminder.path || reminder.type || 'System reminder';\n\n return (\n <div className=\"overflow-hidden rounded-lg border border-border bg-background\">\n <button\n type=\"button\"\n onClick={() => setIsExpanded(value => !value)}\n className=\"flex w-full items-start gap-3 px-4 py-3 text-left hover:bg-fill-subtle\"\n >\n <FileText className=\"mt-0.5 size-4 shrink-0 text-muted-foreground\" />\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-column text-foreground\">System reminder</p>\n <p className=\"mt-1 text-meta break-all text-muted-foreground\">{title}</p>\n </div>\n {isExpanded ? (\n <ChevronDown className=\"size-4 shrink-0 text-muted-foreground\" />\n ) : (\n <ChevronRight className=\"size-4 shrink-0 text-muted-foreground\" />\n )}\n </button>\n\n {isExpanded && reminder.body && (\n <div className=\"border-t border-border bg-sidebar px-4 py-3\">\n <pre className=\"text-meta break-words whitespace-pre-wrap text-foreground\">{reminder.body}</pre>\n </div>\n )}\n </div>\n );\n};\n"],"names":["useMemo","parseSystemReminder","useState","jsxs","jsx","FileText","ChevronDown","ChevronRight"],"mappings":";;;;;;;;;AAQO,MAAM,mBAAA,GAAsB,CAAC,EAAE,IAAA,EAAK,KAAgC;AACzE,EAAA,MAAM,QAAA,GAAWA,cAAQ,MAAMC,6DAAA,CAAoB,IAAI,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAChE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIC,eAAS,KAAK,CAAA;AAElD,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,IAAA,IAAQ,QAAA,CAAS,IAAA,IAAQ,iBAAA;AAEhD,EAAA,uBACEC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+DAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,eAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,OAAA,EAAS,MAAM,aAAA,CAAc,CAAA,KAAA,KAAS,CAAC,KAAK,CAAA;AAAA,QAC5C,SAAA,EAAU,wEAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAAC,cAAA,CAACC,oBAAA,EAAA,EAAS,WAAU,8CAAA,EAA+C,CAAA;AAAA,0BACnEF,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,4BAAAC,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,6BAAA,EAA8B,QAAA,EAAA,iBAAA,EAAe,CAAA;AAAA,4BAC1DA,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,gDAAA,EAAkD,QAAA,EAAA,KAAA,EAAM;AAAA,WAAA,EACvE,CAAA;AAAA,UACC,UAAA,kCACEE,uBAAA,EAAA,EAAY,SAAA,EAAU,yCAAwC,CAAA,mBAE/DF,cAAA,CAACG,wBAAA,EAAA,EAAa,SAAA,EAAU,uCAAA,EAAwC;AAAA;AAAA;AAAA,KAEpE;AAAA,IAEC,UAAA,IAAc,QAAA,CAAS,IAAA,oBACtBH,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6CAAA,EACb,QAAA,kBAAAA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2DAAA,EAA6D,QAAA,EAAA,QAAA,CAAS,MAAK,CAAA,EAC5F;AAAA,GAAA,EAEJ,CAAA;AAEJ;;;;"}
|
|
@@ -27,7 +27,7 @@ const SystemReminderBadge = ({ text }) => {
|
|
|
27
27
|
]
|
|
28
28
|
}
|
|
29
29
|
),
|
|
30
|
-
isExpanded && reminder.body && /* @__PURE__ */ jsx("div", { className: "border-t border-border bg-sidebar px-4 py-3", children: /* @__PURE__ */ jsx("pre", { className: "
|
|
30
|
+
isExpanded && reminder.body && /* @__PURE__ */ jsx("div", { className: "border-t border-border bg-sidebar px-4 py-3", children: /* @__PURE__ */ jsx("pre", { className: "text-meta break-words whitespace-pre-wrap text-foreground", children: reminder.body }) })
|
|
31
31
|
] });
|
|
32
32
|
};
|
|
33
33
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-reminder-badge.es.js","sources":["../../../../src/domains/chat/messages/system-reminder-badge.tsx"],"sourcesContent":["import { ChevronDown, ChevronRight, FileText } from 'lucide-react';\nimport { useMemo, useState } from 'react';\nimport { parseSystemReminder } from './system-reminder-utils';\n\nexport interface SystemReminderBadgeProps {\n text: string;\n}\n\nexport const SystemReminderBadge = ({ text }: SystemReminderBadgeProps) => {\n const reminder = useMemo(() => parseSystemReminder(text), [text]);\n const [isExpanded, setIsExpanded] = useState(false);\n\n if (!reminder) {\n return text;\n }\n\n const title = reminder.path || reminder.type || 'System reminder';\n\n return (\n <div className=\"overflow-hidden rounded-lg border border-border bg-background\">\n <button\n type=\"button\"\n onClick={() => setIsExpanded(value => !value)}\n className=\"flex w-full items-start gap-3 px-4 py-3 text-left hover:bg-fill-subtle\"\n >\n <FileText className=\"mt-0.5 size-4 shrink-0 text-muted-foreground\" />\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-column text-foreground\">System reminder</p>\n <p className=\"mt-1 text-meta break-all text-muted-foreground\">{title}</p>\n </div>\n {isExpanded ? (\n <ChevronDown className=\"size-4 shrink-0 text-muted-foreground\" />\n ) : (\n <ChevronRight className=\"size-4 shrink-0 text-muted-foreground\" />\n )}\n </button>\n\n {isExpanded && reminder.body && (\n <div className=\"border-t border-border bg-sidebar px-4 py-3\">\n <pre className=\"
|
|
1
|
+
{"version":3,"file":"system-reminder-badge.es.js","sources":["../../../../src/domains/chat/messages/system-reminder-badge.tsx"],"sourcesContent":["import { ChevronDown, ChevronRight, FileText } from 'lucide-react';\nimport { useMemo, useState } from 'react';\nimport { parseSystemReminder } from './system-reminder-utils';\n\nexport interface SystemReminderBadgeProps {\n text: string;\n}\n\nexport const SystemReminderBadge = ({ text }: SystemReminderBadgeProps) => {\n const reminder = useMemo(() => parseSystemReminder(text), [text]);\n const [isExpanded, setIsExpanded] = useState(false);\n\n if (!reminder) {\n return text;\n }\n\n const title = reminder.path || reminder.type || 'System reminder';\n\n return (\n <div className=\"overflow-hidden rounded-lg border border-border bg-background\">\n <button\n type=\"button\"\n onClick={() => setIsExpanded(value => !value)}\n className=\"flex w-full items-start gap-3 px-4 py-3 text-left hover:bg-fill-subtle\"\n >\n <FileText className=\"mt-0.5 size-4 shrink-0 text-muted-foreground\" />\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-column text-foreground\">System reminder</p>\n <p className=\"mt-1 text-meta break-all text-muted-foreground\">{title}</p>\n </div>\n {isExpanded ? (\n <ChevronDown className=\"size-4 shrink-0 text-muted-foreground\" />\n ) : (\n <ChevronRight className=\"size-4 shrink-0 text-muted-foreground\" />\n )}\n </button>\n\n {isExpanded && reminder.body && (\n <div className=\"border-t border-border bg-sidebar px-4 py-3\">\n <pre className=\"text-meta break-words whitespace-pre-wrap text-foreground\">{reminder.body}</pre>\n </div>\n )}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;AAQO,MAAM,mBAAA,GAAsB,CAAC,EAAE,IAAA,EAAK,KAAgC;AACzE,EAAA,MAAM,QAAA,GAAW,QAAQ,MAAM,mBAAA,CAAoB,IAAI,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAChE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA;AAElD,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,IAAA,IAAQ,QAAA,CAAS,IAAA,IAAQ,iBAAA;AAEhD,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+DAAA,EACb,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,OAAA,EAAS,MAAM,aAAA,CAAc,CAAA,KAAA,KAAS,CAAC,KAAK,CAAA;AAAA,QAC5C,SAAA,EAAU,wEAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAA,EAAA,EAAS,WAAU,8CAAA,EAA+C,CAAA;AAAA,0BACnE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,6BAAA,EAA8B,QAAA,EAAA,iBAAA,EAAe,CAAA;AAAA,4BAC1D,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,gDAAA,EAAkD,QAAA,EAAA,KAAA,EAAM;AAAA,WAAA,EACvE,CAAA;AAAA,UACC,UAAA,uBACE,WAAA,EAAA,EAAY,SAAA,EAAU,yCAAwC,CAAA,mBAE/D,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,uCAAA,EAAwC;AAAA;AAAA;AAAA,KAEpE;AAAA,IAEC,UAAA,IAAc,QAAA,CAAS,IAAA,oBACtB,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6CAAA,EACb,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2DAAA,EAA6D,QAAA,EAAA,QAAA,CAAS,MAAK,CAAA,EAC5F;AAAA,GAAA,EAEJ,CAAA;AAEJ;;;;"}
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
const lucideReact = require('lucide-react');
|
|
7
7
|
const React = require('react');
|
|
8
|
-
const Badge = require('../../../Badge-
|
|
8
|
+
const Badge = require('../../../Badge-DFNxcz-r.cjs');
|
|
9
9
|
const Notice = require('../../../Notice-AUNd8fqT.cjs');
|
|
10
10
|
|
|
11
11
|
const TripwireNotice = ({ reason, tripwire }) => {
|
|
@@ -41,7 +41,7 @@ const TripwireNotice = ({ reason, tripwire }) => {
|
|
|
41
41
|
] }),
|
|
42
42
|
tripwire.metadata !== void 0 && tripwire.metadata !== null && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1.5", children: [
|
|
43
43
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "opacity-70", children: "Metadata" }),
|
|
44
|
-
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "overflow-x-auto rounded-lg bg-current/10 p-2
|
|
44
|
+
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "overflow-x-auto rounded-lg bg-current/10 p-2", children: JSON.stringify(tripwire.metadata, null, 2) })
|
|
45
45
|
] })
|
|
46
46
|
] })
|
|
47
47
|
] })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tripwire-notice.cjs.js","sources":["../../../../src/domains/chat/messages/tripwire-notice.tsx"],"sourcesContent":["import type { TripwireMetadata } from '@mastra/react';\nimport { ChevronDown, ChevronRight, RefreshCw, ShieldAlert, Tag } from 'lucide-react';\nimport { useState } from 'react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Notice } from '@/ds/components/Notice';\n\nexport interface TripwireNoticeProps {\n reason: string;\n tripwire?: Partial<TripwireMetadata>;\n}\n\nexport const TripwireNotice = ({ reason, tripwire }: TripwireNoticeProps) => {\n const [isExpanded, setIsExpanded] = useState(false);\n\n const hasMetadata = Boolean(\n tripwire && (tripwire.retry !== undefined || tripwire.metadata !== undefined || tripwire.processorId !== undefined),\n );\n\n return (\n <Notice variant=\"warning\" title=\"Content Blocked\" icon={<ShieldAlert />}>\n <div className=\"flex flex-col gap-3\">\n <Notice.Message className=\"break-words whitespace-pre-wrap\">{reason}</Notice.Message>\n\n {hasMetadata && tripwire && (\n <div className=\"flex flex-col gap-3\">\n <button\n type=\"button\"\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"flex w-fit items-center gap-1.5 text-caption opacity-70 transition-opacity hover:opacity-100\"\n >\n {isExpanded ? <ChevronDown className=\"size-3.5\" /> : <ChevronRight className=\"size-3.5\" />}\n <span>Details</span>\n </button>\n\n {isExpanded && (\n <div className=\"flex flex-col gap-2 text-caption\">\n {tripwire.retry !== undefined && (\n <div className=\"flex items-center gap-2\">\n <RefreshCw className=\"size-3.5 shrink-0 opacity-70\" />\n <span>Retry</span>\n <Badge size=\"xs\" variant={tripwire.retry ? 'green' : 'red'}>\n {tripwire.retry ? 'Allowed' : 'Not allowed'}\n </Badge>\n </div>\n )}\n\n {tripwire.processorId && (\n <div className=\"flex items-center gap-2\">\n <Tag className=\"size-3.5 shrink-0 opacity-70\" />\n <span>Processor</span>\n <Badge size=\"xs\" variant=\"yellow\">\n {tripwire.processorId}\n </Badge>\n </div>\n )}\n\n {tripwire.metadata !== undefined && tripwire.metadata !== null && (\n <div className=\"flex flex-col gap-1.5\">\n <span className=\"opacity-70\">Metadata</span>\n <pre className=\"overflow-x-auto rounded-lg bg-current/10 p-2
|
|
1
|
+
{"version":3,"file":"tripwire-notice.cjs.js","sources":["../../../../src/domains/chat/messages/tripwire-notice.tsx"],"sourcesContent":["import type { TripwireMetadata } from '@mastra/react';\nimport { ChevronDown, ChevronRight, RefreshCw, ShieldAlert, Tag } from 'lucide-react';\nimport { useState } from 'react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Notice } from '@/ds/components/Notice';\n\nexport interface TripwireNoticeProps {\n reason: string;\n tripwire?: Partial<TripwireMetadata>;\n}\n\nexport const TripwireNotice = ({ reason, tripwire }: TripwireNoticeProps) => {\n const [isExpanded, setIsExpanded] = useState(false);\n\n const hasMetadata = Boolean(\n tripwire && (tripwire.retry !== undefined || tripwire.metadata !== undefined || tripwire.processorId !== undefined),\n );\n\n return (\n <Notice variant=\"warning\" title=\"Content Blocked\" icon={<ShieldAlert />}>\n <div className=\"flex flex-col gap-3\">\n <Notice.Message className=\"break-words whitespace-pre-wrap\">{reason}</Notice.Message>\n\n {hasMetadata && tripwire && (\n <div className=\"flex flex-col gap-3\">\n <button\n type=\"button\"\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"flex w-fit items-center gap-1.5 text-caption opacity-70 transition-opacity hover:opacity-100\"\n >\n {isExpanded ? <ChevronDown className=\"size-3.5\" /> : <ChevronRight className=\"size-3.5\" />}\n <span>Details</span>\n </button>\n\n {isExpanded && (\n <div className=\"flex flex-col gap-2 text-caption\">\n {tripwire.retry !== undefined && (\n <div className=\"flex items-center gap-2\">\n <RefreshCw className=\"size-3.5 shrink-0 opacity-70\" />\n <span>Retry</span>\n <Badge size=\"xs\" variant={tripwire.retry ? 'green' : 'red'}>\n {tripwire.retry ? 'Allowed' : 'Not allowed'}\n </Badge>\n </div>\n )}\n\n {tripwire.processorId && (\n <div className=\"flex items-center gap-2\">\n <Tag className=\"size-3.5 shrink-0 opacity-70\" />\n <span>Processor</span>\n <Badge size=\"xs\" variant=\"yellow\">\n {tripwire.processorId}\n </Badge>\n </div>\n )}\n\n {tripwire.metadata !== undefined && tripwire.metadata !== null && (\n <div className=\"flex flex-col gap-1.5\">\n <span className=\"opacity-70\">Metadata</span>\n <pre className=\"overflow-x-auto rounded-lg bg-current/10 p-2\">\n {JSON.stringify(tripwire.metadata, null, 2)}\n </pre>\n </div>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </Notice>\n );\n};\n"],"names":["useState","jsx","Notice","ShieldAlert","jsxs","ChevronDown","ChevronRight","RefreshCw","Badge","Tag"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { ChevronDown, ChevronRight, RefreshCw, Tag, ShieldAlert } from 'lucide-react';
|
|
3
3
|
import { useState } from 'react';
|
|
4
|
-
import { B as Badge } from '../../../Badge-
|
|
4
|
+
import { B as Badge } from '../../../Badge-Bzn8Z-_I.js';
|
|
5
5
|
import { N as Notice } from '../../../Notice-WT8G4OA6.js';
|
|
6
6
|
|
|
7
7
|
const TripwireNotice = ({ reason, tripwire }) => {
|
|
@@ -37,7 +37,7 @@ const TripwireNotice = ({ reason, tripwire }) => {
|
|
|
37
37
|
] }),
|
|
38
38
|
tripwire.metadata !== void 0 && tripwire.metadata !== null && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
|
|
39
39
|
/* @__PURE__ */ jsx("span", { className: "opacity-70", children: "Metadata" }),
|
|
40
|
-
/* @__PURE__ */ jsx("pre", { className: "overflow-x-auto rounded-lg bg-current/10 p-2
|
|
40
|
+
/* @__PURE__ */ jsx("pre", { className: "overflow-x-auto rounded-lg bg-current/10 p-2", children: JSON.stringify(tripwire.metadata, null, 2) })
|
|
41
41
|
] })
|
|
42
42
|
] })
|
|
43
43
|
] })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tripwire-notice.es.js","sources":["../../../../src/domains/chat/messages/tripwire-notice.tsx"],"sourcesContent":["import type { TripwireMetadata } from '@mastra/react';\nimport { ChevronDown, ChevronRight, RefreshCw, ShieldAlert, Tag } from 'lucide-react';\nimport { useState } from 'react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Notice } from '@/ds/components/Notice';\n\nexport interface TripwireNoticeProps {\n reason: string;\n tripwire?: Partial<TripwireMetadata>;\n}\n\nexport const TripwireNotice = ({ reason, tripwire }: TripwireNoticeProps) => {\n const [isExpanded, setIsExpanded] = useState(false);\n\n const hasMetadata = Boolean(\n tripwire && (tripwire.retry !== undefined || tripwire.metadata !== undefined || tripwire.processorId !== undefined),\n );\n\n return (\n <Notice variant=\"warning\" title=\"Content Blocked\" icon={<ShieldAlert />}>\n <div className=\"flex flex-col gap-3\">\n <Notice.Message className=\"break-words whitespace-pre-wrap\">{reason}</Notice.Message>\n\n {hasMetadata && tripwire && (\n <div className=\"flex flex-col gap-3\">\n <button\n type=\"button\"\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"flex w-fit items-center gap-1.5 text-caption opacity-70 transition-opacity hover:opacity-100\"\n >\n {isExpanded ? <ChevronDown className=\"size-3.5\" /> : <ChevronRight className=\"size-3.5\" />}\n <span>Details</span>\n </button>\n\n {isExpanded && (\n <div className=\"flex flex-col gap-2 text-caption\">\n {tripwire.retry !== undefined && (\n <div className=\"flex items-center gap-2\">\n <RefreshCw className=\"size-3.5 shrink-0 opacity-70\" />\n <span>Retry</span>\n <Badge size=\"xs\" variant={tripwire.retry ? 'green' : 'red'}>\n {tripwire.retry ? 'Allowed' : 'Not allowed'}\n </Badge>\n </div>\n )}\n\n {tripwire.processorId && (\n <div className=\"flex items-center gap-2\">\n <Tag className=\"size-3.5 shrink-0 opacity-70\" />\n <span>Processor</span>\n <Badge size=\"xs\" variant=\"yellow\">\n {tripwire.processorId}\n </Badge>\n </div>\n )}\n\n {tripwire.metadata !== undefined && tripwire.metadata !== null && (\n <div className=\"flex flex-col gap-1.5\">\n <span className=\"opacity-70\">Metadata</span>\n <pre className=\"overflow-x-auto rounded-lg bg-current/10 p-2
|
|
1
|
+
{"version":3,"file":"tripwire-notice.es.js","sources":["../../../../src/domains/chat/messages/tripwire-notice.tsx"],"sourcesContent":["import type { TripwireMetadata } from '@mastra/react';\nimport { ChevronDown, ChevronRight, RefreshCw, ShieldAlert, Tag } from 'lucide-react';\nimport { useState } from 'react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Notice } from '@/ds/components/Notice';\n\nexport interface TripwireNoticeProps {\n reason: string;\n tripwire?: Partial<TripwireMetadata>;\n}\n\nexport const TripwireNotice = ({ reason, tripwire }: TripwireNoticeProps) => {\n const [isExpanded, setIsExpanded] = useState(false);\n\n const hasMetadata = Boolean(\n tripwire && (tripwire.retry !== undefined || tripwire.metadata !== undefined || tripwire.processorId !== undefined),\n );\n\n return (\n <Notice variant=\"warning\" title=\"Content Blocked\" icon={<ShieldAlert />}>\n <div className=\"flex flex-col gap-3\">\n <Notice.Message className=\"break-words whitespace-pre-wrap\">{reason}</Notice.Message>\n\n {hasMetadata && tripwire && (\n <div className=\"flex flex-col gap-3\">\n <button\n type=\"button\"\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"flex w-fit items-center gap-1.5 text-caption opacity-70 transition-opacity hover:opacity-100\"\n >\n {isExpanded ? <ChevronDown className=\"size-3.5\" /> : <ChevronRight className=\"size-3.5\" />}\n <span>Details</span>\n </button>\n\n {isExpanded && (\n <div className=\"flex flex-col gap-2 text-caption\">\n {tripwire.retry !== undefined && (\n <div className=\"flex items-center gap-2\">\n <RefreshCw className=\"size-3.5 shrink-0 opacity-70\" />\n <span>Retry</span>\n <Badge size=\"xs\" variant={tripwire.retry ? 'green' : 'red'}>\n {tripwire.retry ? 'Allowed' : 'Not allowed'}\n </Badge>\n </div>\n )}\n\n {tripwire.processorId && (\n <div className=\"flex items-center gap-2\">\n <Tag className=\"size-3.5 shrink-0 opacity-70\" />\n <span>Processor</span>\n <Badge size=\"xs\" variant=\"yellow\">\n {tripwire.processorId}\n </Badge>\n </div>\n )}\n\n {tripwire.metadata !== undefined && tripwire.metadata !== null && (\n <div className=\"flex flex-col gap-1.5\">\n <span className=\"opacity-70\">Metadata</span>\n <pre className=\"overflow-x-auto rounded-lg bg-current/10 p-2\">\n {JSON.stringify(tripwire.metadata, null, 2)}\n </pre>\n </div>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </Notice>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
4
4
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
const domains_chat_context_toolCallContext = require('../../context/tool-call-context.cjs.js');
|
|
7
|
-
const askUser = require('../../../../ask-user-
|
|
7
|
+
const askUser = require('../../../../ask-user-4pnmHbuC.cjs');
|
|
8
8
|
|
|
9
9
|
const AskUserBadge = ({ toolCallId, suspendPayload, result }) => {
|
|
10
10
|
const { approveToolcall, isRunning, toolCallApprovals } = domains_chat_context_toolCallContext.useToolCall();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useToolCall } from '../../context/tool-call-context.es.js';
|
|
3
|
-
import { A as AskUser } from '../../../../ask-user-
|
|
3
|
+
import { A as AskUser } from '../../../../ask-user-CFcQN_7m.js';
|
|
4
4
|
|
|
5
5
|
const AskUserBadge = ({ toolCallId, suspendPayload, result }) => {
|
|
6
6
|
const { approveToolcall, isRunning, toolCallApprovals } = useToolCall();
|
|
@@ -57,7 +57,7 @@ const CodeModeBadge = ({
|
|
|
57
57
|
"pre",
|
|
58
58
|
{
|
|
59
59
|
"data-testid": "code-mode-error",
|
|
60
|
-
className: "rounded-md bg-muted px-3 py-2
|
|
60
|
+
className: "rounded-md bg-muted px-3 py-2 text-caption break-words whitespace-pre-wrap text-error",
|
|
61
61
|
children: [
|
|
62
62
|
error.name ? `${error.name}: ` : "",
|
|
63
63
|
error.message,
|
|
@@ -71,7 +71,7 @@ const CodeModeBadge = ({
|
|
|
71
71
|
typeof resultValue === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
72
72
|
"pre",
|
|
73
73
|
{
|
|
74
|
-
className: "max-h-60 overflow-auto rounded-md bg-muted px-3 py-2
|
|
74
|
+
className: "max-h-60 overflow-auto rounded-md bg-muted px-3 py-2 text-caption break-words whitespace-pre-wrap",
|
|
75
75
|
"data-testid": "code-mode-result",
|
|
76
76
|
children: resultValue
|
|
77
77
|
}
|
|
@@ -83,7 +83,7 @@ const CodeModeBadge = ({
|
|
|
83
83
|
"pre",
|
|
84
84
|
{
|
|
85
85
|
"data-testid": "code-mode-logs",
|
|
86
|
-
className: "max-h-60 overflow-auto rounded-md bg-black px-3 py-2
|
|
86
|
+
className: "max-h-60 overflow-auto rounded-md bg-black px-3 py-2 text-caption break-words whitespace-pre-wrap text-neutral-300",
|
|
87
87
|
children: logs.join("\n")
|
|
88
88
|
}
|
|
89
89
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-mode-badge.cjs.js","sources":["../../../../../src/domains/chat/tools/badges/code-mode-badge.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { BadgeWrapper } from '../../components/badge-wrapper';\nimport { SectionLabel } from '../../components/section-label';\nimport type { MessageMetadata } from '../../messages/message-metadata';\nimport type { CodeModeResult } from '../code-mode';\nimport type { ToolApprovalButtonsProps } from './tool-approval-buttons';\nimport { ToolApprovalButtons } from './tool-approval-buttons';\nimport { CodeBlock } from '@/ds/components/CodeBlock';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { ToolCoinIcon } from '@/ds/icons/ToolCoinIcon';\nimport { formatTypeScript } from '@/utils/formatting';\n\nexport interface CodeModeBadgeProps extends Omit<ToolApprovalButtonsProps, 'toolCalled'> {\n toolName: string;\n code: string;\n result?: CodeModeResult;\n metadata?: MessageMetadata;\n toolCalled?: boolean;\n}\n\nexport const CodeModeBadge = ({\n toolName,\n code,\n result,\n metadata,\n toolCallId,\n toolApprovalMetadata,\n isNetwork,\n toolCalled: toolCalledProp,\n}: CodeModeBadgeProps) => {\n const logs = result?.logs ?? [];\n const error = result?.error;\n const resultValue = result?.result;\n const hasResultValue = resultValue !== undefined;\n\n const toolCalled = toolCalledProp ?? result !== undefined;\n\n // The model usually emits the program as a single line; pretty-print it so the\n // highlighted block is readable. Falls back to the raw code if formatting fails\n // (e.g. the program is still streaming and not yet syntactically valid).\n const [formattedCode, setFormattedCode] = useState(code);\n useEffect(() => {\n let cancelled = false;\n formatTypeScript(code)\n .then(pretty => {\n if (!cancelled) setFormattedCode(pretty);\n })\n .catch(() => {\n if (!cancelled) setFormattedCode(code);\n });\n return () => {\n cancelled = true;\n };\n }, [code]);\n\n return (\n <BadgeWrapper\n data-testid=\"code-mode-badge\"\n icon={<ToolCoinIcon className=\"text-accent6\" />}\n title={toolName}\n initialCollapsed={!toolApprovalMetadata}\n >\n <div className=\"space-y-4\">\n <div>\n <SectionLabel>Program</SectionLabel>\n <div data-testid=\"code-mode-program\">\n <CodeBlock code={formattedCode} lang=\"typescript\" />\n </div>\n </div>\n\n {error && (\n <div>\n <SectionLabel>Error</SectionLabel>\n <pre\n data-testid=\"code-mode-error\"\n className=\"rounded-md bg-muted px-3 py-2
|
|
1
|
+
{"version":3,"file":"code-mode-badge.cjs.js","sources":["../../../../../src/domains/chat/tools/badges/code-mode-badge.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { BadgeWrapper } from '../../components/badge-wrapper';\nimport { SectionLabel } from '../../components/section-label';\nimport type { MessageMetadata } from '../../messages/message-metadata';\nimport type { CodeModeResult } from '../code-mode';\nimport type { ToolApprovalButtonsProps } from './tool-approval-buttons';\nimport { ToolApprovalButtons } from './tool-approval-buttons';\nimport { CodeBlock } from '@/ds/components/CodeBlock';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { ToolCoinIcon } from '@/ds/icons/ToolCoinIcon';\nimport { formatTypeScript } from '@/utils/formatting';\n\nexport interface CodeModeBadgeProps extends Omit<ToolApprovalButtonsProps, 'toolCalled'> {\n toolName: string;\n code: string;\n result?: CodeModeResult;\n metadata?: MessageMetadata;\n toolCalled?: boolean;\n}\n\nexport const CodeModeBadge = ({\n toolName,\n code,\n result,\n metadata,\n toolCallId,\n toolApprovalMetadata,\n isNetwork,\n toolCalled: toolCalledProp,\n}: CodeModeBadgeProps) => {\n const logs = result?.logs ?? [];\n const error = result?.error;\n const resultValue = result?.result;\n const hasResultValue = resultValue !== undefined;\n\n const toolCalled = toolCalledProp ?? result !== undefined;\n\n // The model usually emits the program as a single line; pretty-print it so the\n // highlighted block is readable. Falls back to the raw code if formatting fails\n // (e.g. the program is still streaming and not yet syntactically valid).\n const [formattedCode, setFormattedCode] = useState(code);\n useEffect(() => {\n let cancelled = false;\n formatTypeScript(code)\n .then(pretty => {\n if (!cancelled) setFormattedCode(pretty);\n })\n .catch(() => {\n if (!cancelled) setFormattedCode(code);\n });\n return () => {\n cancelled = true;\n };\n }, [code]);\n\n return (\n <BadgeWrapper\n data-testid=\"code-mode-badge\"\n icon={<ToolCoinIcon className=\"text-accent6\" />}\n title={toolName}\n initialCollapsed={!toolApprovalMetadata}\n >\n <div className=\"space-y-4\">\n <div>\n <SectionLabel>Program</SectionLabel>\n <div data-testid=\"code-mode-program\">\n <CodeBlock code={formattedCode} lang=\"typescript\" />\n </div>\n </div>\n\n {error && (\n <div>\n <SectionLabel>Error</SectionLabel>\n <pre\n data-testid=\"code-mode-error\"\n className=\"rounded-md bg-muted px-3 py-2 text-caption break-words whitespace-pre-wrap text-error\"\n >\n {error.name ? `${error.name}: ` : ''}\n {error.message}\n {typeof error.line === 'number' ? ` (line ${error.line})` : ''}\n </pre>\n </div>\n )}\n\n {hasResultValue && (\n <div>\n <SectionLabel>Result</SectionLabel>\n {typeof resultValue === 'string' ? (\n <pre\n className=\"max-h-60 overflow-auto rounded-md bg-muted px-3 py-2 text-caption break-words whitespace-pre-wrap\"\n data-testid=\"code-mode-result\"\n >\n {resultValue}\n </pre>\n ) : (\n <CodeEditor data={resultValue as Record<string, unknown>} data-testid=\"code-mode-result\" />\n )}\n </div>\n )}\n\n {logs.length > 0 && (\n <div>\n <SectionLabel>Logs</SectionLabel>\n <pre\n data-testid=\"code-mode-logs\"\n className=\"max-h-60 overflow-auto rounded-md bg-black px-3 py-2 text-caption break-words whitespace-pre-wrap text-neutral-300\"\n >\n {logs.join('\\n')}\n </pre>\n </div>\n )}\n\n <ToolApprovalButtons\n toolCalled={toolCalled}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n toolName={toolName}\n isNetwork={isNetwork}\n isGenerateMode={metadata?.mode === 'generate'}\n />\n </div>\n </BadgeWrapper>\n );\n};\n"],"names":["useState","useEffect","formatTypeScript","jsx","BadgeWrapper","ToolCoinIcon","jsxs","SectionLabel","CodeBlock","CodeEditor","ToolApprovalButtons"],"mappings":"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"}
|
|
@@ -53,7 +53,7 @@ const CodeModeBadge = ({
|
|
|
53
53
|
"pre",
|
|
54
54
|
{
|
|
55
55
|
"data-testid": "code-mode-error",
|
|
56
|
-
className: "rounded-md bg-muted px-3 py-2
|
|
56
|
+
className: "rounded-md bg-muted px-3 py-2 text-caption break-words whitespace-pre-wrap text-error",
|
|
57
57
|
children: [
|
|
58
58
|
error.name ? `${error.name}: ` : "",
|
|
59
59
|
error.message,
|
|
@@ -67,7 +67,7 @@ const CodeModeBadge = ({
|
|
|
67
67
|
typeof resultValue === "string" ? /* @__PURE__ */ jsx(
|
|
68
68
|
"pre",
|
|
69
69
|
{
|
|
70
|
-
className: "max-h-60 overflow-auto rounded-md bg-muted px-3 py-2
|
|
70
|
+
className: "max-h-60 overflow-auto rounded-md bg-muted px-3 py-2 text-caption break-words whitespace-pre-wrap",
|
|
71
71
|
"data-testid": "code-mode-result",
|
|
72
72
|
children: resultValue
|
|
73
73
|
}
|
|
@@ -79,7 +79,7 @@ const CodeModeBadge = ({
|
|
|
79
79
|
"pre",
|
|
80
80
|
{
|
|
81
81
|
"data-testid": "code-mode-logs",
|
|
82
|
-
className: "max-h-60 overflow-auto rounded-md bg-black px-3 py-2
|
|
82
|
+
className: "max-h-60 overflow-auto rounded-md bg-black px-3 py-2 text-caption break-words whitespace-pre-wrap text-neutral-300",
|
|
83
83
|
children: logs.join("\n")
|
|
84
84
|
}
|
|
85
85
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-mode-badge.es.js","sources":["../../../../../src/domains/chat/tools/badges/code-mode-badge.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { BadgeWrapper } from '../../components/badge-wrapper';\nimport { SectionLabel } from '../../components/section-label';\nimport type { MessageMetadata } from '../../messages/message-metadata';\nimport type { CodeModeResult } from '../code-mode';\nimport type { ToolApprovalButtonsProps } from './tool-approval-buttons';\nimport { ToolApprovalButtons } from './tool-approval-buttons';\nimport { CodeBlock } from '@/ds/components/CodeBlock';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { ToolCoinIcon } from '@/ds/icons/ToolCoinIcon';\nimport { formatTypeScript } from '@/utils/formatting';\n\nexport interface CodeModeBadgeProps extends Omit<ToolApprovalButtonsProps, 'toolCalled'> {\n toolName: string;\n code: string;\n result?: CodeModeResult;\n metadata?: MessageMetadata;\n toolCalled?: boolean;\n}\n\nexport const CodeModeBadge = ({\n toolName,\n code,\n result,\n metadata,\n toolCallId,\n toolApprovalMetadata,\n isNetwork,\n toolCalled: toolCalledProp,\n}: CodeModeBadgeProps) => {\n const logs = result?.logs ?? [];\n const error = result?.error;\n const resultValue = result?.result;\n const hasResultValue = resultValue !== undefined;\n\n const toolCalled = toolCalledProp ?? result !== undefined;\n\n // The model usually emits the program as a single line; pretty-print it so the\n // highlighted block is readable. Falls back to the raw code if formatting fails\n // (e.g. the program is still streaming and not yet syntactically valid).\n const [formattedCode, setFormattedCode] = useState(code);\n useEffect(() => {\n let cancelled = false;\n formatTypeScript(code)\n .then(pretty => {\n if (!cancelled) setFormattedCode(pretty);\n })\n .catch(() => {\n if (!cancelled) setFormattedCode(code);\n });\n return () => {\n cancelled = true;\n };\n }, [code]);\n\n return (\n <BadgeWrapper\n data-testid=\"code-mode-badge\"\n icon={<ToolCoinIcon className=\"text-accent6\" />}\n title={toolName}\n initialCollapsed={!toolApprovalMetadata}\n >\n <div className=\"space-y-4\">\n <div>\n <SectionLabel>Program</SectionLabel>\n <div data-testid=\"code-mode-program\">\n <CodeBlock code={formattedCode} lang=\"typescript\" />\n </div>\n </div>\n\n {error && (\n <div>\n <SectionLabel>Error</SectionLabel>\n <pre\n data-testid=\"code-mode-error\"\n className=\"rounded-md bg-muted px-3 py-2
|
|
1
|
+
{"version":3,"file":"code-mode-badge.es.js","sources":["../../../../../src/domains/chat/tools/badges/code-mode-badge.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { BadgeWrapper } from '../../components/badge-wrapper';\nimport { SectionLabel } from '../../components/section-label';\nimport type { MessageMetadata } from '../../messages/message-metadata';\nimport type { CodeModeResult } from '../code-mode';\nimport type { ToolApprovalButtonsProps } from './tool-approval-buttons';\nimport { ToolApprovalButtons } from './tool-approval-buttons';\nimport { CodeBlock } from '@/ds/components/CodeBlock';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { ToolCoinIcon } from '@/ds/icons/ToolCoinIcon';\nimport { formatTypeScript } from '@/utils/formatting';\n\nexport interface CodeModeBadgeProps extends Omit<ToolApprovalButtonsProps, 'toolCalled'> {\n toolName: string;\n code: string;\n result?: CodeModeResult;\n metadata?: MessageMetadata;\n toolCalled?: boolean;\n}\n\nexport const CodeModeBadge = ({\n toolName,\n code,\n result,\n metadata,\n toolCallId,\n toolApprovalMetadata,\n isNetwork,\n toolCalled: toolCalledProp,\n}: CodeModeBadgeProps) => {\n const logs = result?.logs ?? [];\n const error = result?.error;\n const resultValue = result?.result;\n const hasResultValue = resultValue !== undefined;\n\n const toolCalled = toolCalledProp ?? result !== undefined;\n\n // The model usually emits the program as a single line; pretty-print it so the\n // highlighted block is readable. Falls back to the raw code if formatting fails\n // (e.g. the program is still streaming and not yet syntactically valid).\n const [formattedCode, setFormattedCode] = useState(code);\n useEffect(() => {\n let cancelled = false;\n formatTypeScript(code)\n .then(pretty => {\n if (!cancelled) setFormattedCode(pretty);\n })\n .catch(() => {\n if (!cancelled) setFormattedCode(code);\n });\n return () => {\n cancelled = true;\n };\n }, [code]);\n\n return (\n <BadgeWrapper\n data-testid=\"code-mode-badge\"\n icon={<ToolCoinIcon className=\"text-accent6\" />}\n title={toolName}\n initialCollapsed={!toolApprovalMetadata}\n >\n <div className=\"space-y-4\">\n <div>\n <SectionLabel>Program</SectionLabel>\n <div data-testid=\"code-mode-program\">\n <CodeBlock code={formattedCode} lang=\"typescript\" />\n </div>\n </div>\n\n {error && (\n <div>\n <SectionLabel>Error</SectionLabel>\n <pre\n data-testid=\"code-mode-error\"\n className=\"rounded-md bg-muted px-3 py-2 text-caption break-words whitespace-pre-wrap text-error\"\n >\n {error.name ? `${error.name}: ` : ''}\n {error.message}\n {typeof error.line === 'number' ? ` (line ${error.line})` : ''}\n </pre>\n </div>\n )}\n\n {hasResultValue && (\n <div>\n <SectionLabel>Result</SectionLabel>\n {typeof resultValue === 'string' ? (\n <pre\n className=\"max-h-60 overflow-auto rounded-md bg-muted px-3 py-2 text-caption break-words whitespace-pre-wrap\"\n data-testid=\"code-mode-result\"\n >\n {resultValue}\n </pre>\n ) : (\n <CodeEditor data={resultValue as Record<string, unknown>} data-testid=\"code-mode-result\" />\n )}\n </div>\n )}\n\n {logs.length > 0 && (\n <div>\n <SectionLabel>Logs</SectionLabel>\n <pre\n data-testid=\"code-mode-logs\"\n className=\"max-h-60 overflow-auto rounded-md bg-black px-3 py-2 text-caption break-words whitespace-pre-wrap text-neutral-300\"\n >\n {logs.join('\\n')}\n </pre>\n </div>\n )}\n\n <ToolApprovalButtons\n toolCalled={toolCalled}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n toolName={toolName}\n isNetwork={isNetwork}\n isGenerateMode={metadata?.mode === 'generate'}\n />\n </div>\n </BadgeWrapper>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -6,10 +6,12 @@ const jsxRuntime = require('react/jsx-runtime');
|
|
|
6
6
|
const lucideReact = require('lucide-react');
|
|
7
7
|
const React = require('react');
|
|
8
8
|
const domains_chat_tools_badges_observationRenderer = require('./observation-renderer.cjs.js');
|
|
9
|
-
const Badge = require('../../../../Badge-
|
|
9
|
+
const Badge = require('../../../../Badge-DFNxcz-r.cjs');
|
|
10
10
|
const markdownRenderer = require('../../../../markdown-renderer-DtH58325.cjs');
|
|
11
|
+
const Txt = require('../../../../Txt-DPmEpNbp.cjs');
|
|
11
12
|
const icons_Icon = require('../../../../icons/Icon.cjs.js');
|
|
12
13
|
const utils_cn = require('../../../../cn-DG0X1KEP.cjs');
|
|
14
|
+
const utils_duration = require('../../../../utils/duration.cjs.js');
|
|
13
15
|
|
|
14
16
|
const formatTokens = (tokens) => {
|
|
15
17
|
if (tokens >= 1e3) {
|
|
@@ -213,9 +215,9 @@ const ObservationMarkerBadge = ({ toolName, args, metadata }) => {
|
|
|
213
215
|
"x"
|
|
214
216
|
] }),
|
|
215
217
|
durationMs && /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
216
|
-
"Duration:
|
|
217
|
-
|
|
218
|
-
"
|
|
218
|
+
"Duration:",
|
|
219
|
+
" ",
|
|
220
|
+
/* @__PURE__ */ jsxRuntime.jsx(Txt.Txt, { as: "span", variant: "caption", font: "mono", children: utils_duration.formatDuration(durationMs) })
|
|
219
221
|
] })
|
|
220
222
|
] }),
|
|
221
223
|
observations && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 border-t border-border pt-1", children: !currentTask && !suggestedResponse ? /* @__PURE__ */ jsxRuntime.jsx(domains_chat_tools_badges_observationRenderer.ObservationRenderer, { observations, maxHeight: "500px" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observation-marker-badge.cjs.js","sources":["../../../../../src/domains/chat/tools/badges/observation-marker-badge.tsx"],"sourcesContent":["import { Brain, XCircle, Loader2, ChevronDown, ChevronRight, Unplug, Eye } from 'lucide-react';\nimport { useState, useEffect } from 'react';\nimport { ObservationRenderer } from './observation-renderer';\nimport { Badge } from '@/ds/components/Badge';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { Icon } from '@/ds/icons/Icon';\nimport { cn } from '@/utils/cn';\n\nexport interface OmMarkerData {\n observedAt?: string;\n completedAt?: string;\n failedAt?: string;\n startedAt?: string;\n tokensObserved?: number;\n tokensToObserve?: number;\n observationTokens?: number;\n observations?: string;\n currentTask?: string;\n suggestedResponse?: string;\n extractedValues?: Record<string, unknown>;\n extractionFailures?: Array<{ slug: string; error: string }>;\n durationMs?: number;\n error?: string;\n recordId?: string;\n cycleId?: string;\n threadId?: string;\n threadIds?: string[];\n operationType?: 'observation' | 'reflection';\n _state?: 'loading' | 'complete' | 'failed' | 'buffering' | 'buffering-complete' | 'buffering-failed' | 'activated';\n // Activation-specific fields\n chunksActivated?: number;\n tokensActivated?: number;\n messagesActivated?: number;\n config?: {\n scope?: string;\n messageTokens?: number;\n observationTokens?: number;\n };\n // Buffering-specific fields\n tokensToBuffer?: number;\n tokensBuffered?: number;\n bufferedTokens?: number;\n}\n\nexport interface ObservationMarkerBadgeProps {\n toolName: string;\n args: Record<string, unknown>;\n metadata?: {\n mode?: string;\n omData?: OmMarkerData;\n };\n}\n\n/**\n * Format token count for display (e.g., 7234 -> \"7.2k\", 234 -> \"234\")\n */\nconst formatTokens = (tokens: number): string => {\n if (tokens >= 1000) {\n return `${(tokens / 1000).toFixed(1)}k`;\n }\n return String(Math.round(tokens));\n};\n\nconst hasExtractedValue = (value: unknown) => value !== undefined && value !== null && value !== '';\n\nconst getExtractedValueEntries = (values?: Record<string, unknown>) => {\n return Object.entries(values ?? {}).filter(([, value]) => hasExtractedValue(value));\n};\n\nconst formatExtractedValue = (value: unknown): string => {\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean') return String(value);\n\n try {\n return JSON.stringify(value, null, 2) ?? String(value);\n } catch {\n return String(value);\n }\n};\n\nconst isStructuredExtractedValue = (value: unknown) => typeof value === 'object' && value !== null;\n\nconst ObservationIcon = ({ className }: { className?: string }) => <Eye className={className} />;\n\nconst MarkerPill = ({\n children,\n icon,\n expanded,\n onClick,\n className,\n}: {\n children: React.ReactNode;\n icon: React.ReactNode;\n expanded?: boolean;\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n className?: string;\n}) => {\n const content = (\n <>\n {onClick && (\n <Icon>\n <ChevronDown className={cn('transition-all', expanded ? 'rotate-0' : '-rotate-90')} />\n </Icon>\n )}\n <Badge icon={icon}>{children}</Badge>\n </>\n );\n\n if (!onClick) {\n return <div className={cn('inline-flex items-center gap-2', className)}>{content}</div>;\n }\n\n return (\n <button onClick={onClick} className={cn('inline-flex items-center gap-2', className)} type=\"button\">\n {content}\n </button>\n );\n};\n\nconst ExtractedValuesPanel = ({\n extractedValues,\n extractionFailures,\n isExpanded,\n onToggle,\n}: {\n extractedValues?: Record<string, unknown>;\n extractionFailures?: Array<{ slug: string; error: string }>;\n isExpanded: boolean;\n onToggle: () => void;\n}) => {\n const entries = getExtractedValueEntries(extractedValues);\n const failures = extractionFailures ?? [];\n\n if (entries.length === 0 && failures.length === 0) return null;\n\n return (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n onClick={onToggle}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isExpanded ? <ChevronDown className=\"size-2.5\" /> : <ChevronRight className=\"size-2.5\" />}\n Extractions ({entries.length}){failures.length > 0 ? ` · ${failures.length} failed` : ''}\n </button>\n {isExpanded && (\n <div className=\"mt-1 space-y-2\">\n {entries.map(([slug, value]) => (\n <div key={slug} className=\"rounded border border-border bg-fill-subtle p-2\">\n <div className=\"text-meta tracking-wide text-foreground/70 uppercase\">{slug}</div>\n {isStructuredExtractedValue(value) ? (\n <pre className=\"mt-1 max-h-40 overflow-auto text-caption break-words whitespace-pre-wrap text-foreground/80\">\n {formatExtractedValue(value)}\n </pre>\n ) : (\n <div className=\"mt-1 [&_code]:rounded [&_code]:bg-fill [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta\">\n <MarkdownRenderer className=\"text-caption text-foreground/80\">\n {formatExtractedValue(value)}\n </MarkdownRenderer>\n </div>\n )}\n </div>\n ))}\n {failures.map(failure => (\n <div key={failure.slug} className=\"rounded border border-red-500/20 bg-red-500/5 p-2 text-red-700\">\n <div className=\"text-meta tracking-wide uppercase\">{failure.slug}</div>\n <div className=\"mt-1 text-caption\">{failure.error}</div>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n\n/**\n * Renders an inline badge for OM observation markers.\n * These are converted from data-om-* parts to tool-call format for assistant-ui compatibility.\n *\n * The badge includes a `data-om-badge` attribute with the cycleId so that\n * the BracketOverlay can find it via DOM queries for positioning bracket lines.\n */\nexport const ObservationMarkerBadge = ({ toolName, args, metadata }: ObservationMarkerBadgeProps) => {\n const omData = (metadata?.omData || args) as OmMarkerData;\n const cycleId = omData.cycleId || '';\n\n // Use the _state field set during part merging, or fallback to detecting from data\n const state =\n omData._state ||\n (omData.failedAt\n ? 'failed'\n : omData.completedAt\n ? 'complete'\n : (omData as any).disconnectedAt\n ? 'disconnected'\n : 'loading');\n\n const isStart = state === 'loading';\n const isEnd = state === 'complete';\n const isFailed = state === 'failed';\n const isDisconnected = state === 'disconnected';\n const isBuffering = state === 'buffering';\n const isBufferingComplete = state === 'buffering-complete';\n const isBufferingFailed = state === 'buffering-failed';\n const isActivated = state === 'activated';\n const isReflection = omData.operationType === 'reflection';\n const hasExtractionContent =\n getExtractedValueEntries(omData.extractedValues).length > 0 || (omData.extractionFailures?.length ?? 0) > 0;\n const shouldAutoExpand = (isFailed && isReflection) || hasExtractionContent;\n\n // Failed reflections and extraction-bearing markers should expand by default to draw attention to new details.\n const [isExpanded, setIsExpanded] = useState(shouldAutoExpand);\n\n // Auto-expand when completion details arrive after the marker was mounted during loading.\n useEffect(() => {\n if (shouldAutoExpand) {\n setIsExpanded(true);\n }\n }, [shouldAutoExpand]);\n const [isObservationsExpanded, setIsObservationsExpanded] = useState(true);\n const [isTaskExpanded, setIsTaskExpanded] = useState(false);\n const [isResponseExpanded, setIsResponseExpanded] = useState(false);\n const [isExtractedExpanded, setIsExtractedExpanded] = useState(false);\n\n // Colors - same scheme for both observation and reflection\n const bgColor = 'bg-blue-500/10';\n const textColor = 'text-blue-600';\n const completeBgColor = 'bg-green-500/10';\n const completeTextColor = 'text-green-600';\n const completeHoverBgColor = 'hover:bg-green-500/20';\n // Same colors for expanded state\n const expandedBgColor = 'bg-green-500/5';\n const expandedBorderColor = 'border-green-500/10';\n const labelColor = 'text-green-600';\n const bufferExpandedBgColor = 'bg-background';\n const bufferExpandedBorderColor = 'border-border-1';\n const actionLabel = isReflection ? 'Reflecting' : 'Observing';\n const completedLabel = isReflection ? 'Reflected' : 'Observed';\n\n // Render based on marker type\n if (isStart) {\n const tokensToObserve = omData.tokensToObserve;\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div\n className={`inline-flex items-center gap-1.5 rounded-md px-2 py-1 ${bgColor} ${textColor} my-1 text-column`}\n >\n <Loader2 className=\"size-3 animate-spin\" />\n {isReflection ? <Brain className=\"size-3\" /> : <ObservationIcon className=\"size-3\" />}\n <span>\n {actionLabel}\n {tokensToObserve ? ` ~${formatTokens(tokensToObserve)} tokens` : '...'}\n </span>\n </div>\n </div>\n );\n }\n\n if (isEnd) {\n const tokensObserved = omData.tokensObserved;\n const observationTokens = omData.observationTokens;\n const observations = omData.observations;\n const currentTask = omData.currentTask;\n const suggestedResponse = omData.suggestedResponse;\n const extractedValues = omData.extractedValues;\n const extractionFailures = omData.extractionFailures;\n const durationMs = omData.durationMs;\n const compressionRatio =\n tokensObserved && observationTokens && observationTokens > 0\n ? Math.round(tokensObserved / observationTokens)\n : null;\n\n const handleToggle = (e: React.MouseEvent) => {\n // Prevent scroll jump by preserving scroll position\n const scrollContainer = e.currentTarget.closest('[data-radix-scroll-area-viewport]') || document.documentElement;\n const scrollTop = scrollContainer.scrollTop;\n setIsExpanded(!isExpanded);\n // Restore scroll position after React updates\n requestAnimationFrame(() => {\n scrollContainer.scrollTop = scrollTop;\n });\n };\n\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1\">\n <button\n onClick={handleToggle}\n className={`inline-flex items-center gap-1.5 rounded-md px-2 py-1 ${completeBgColor} ${completeTextColor} text-column ${completeHoverBgColor} cursor-pointer`}\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n {isReflection ? <Brain className=\"size-3\" /> : <ObservationIcon className=\"size-3\" />}\n <span>\n {completedLabel} {tokensObserved ? formatTokens(tokensObserved) : '?'}→\n {observationTokens ? formatTokens(observationTokens) : '?'} tokens\n {compressionRatio ? ` (-${compressionRatio}x)` : ''}\n </span>\n </button>\n {isExpanded && (\n <div\n className={`mt-1 ml-6 rounded-md p-2 ${expandedBgColor} space-y-1.5 border text-caption ${expandedBorderColor}`}\n >\n {/* Stats row - all green */}\n <div className={`flex gap-4 text-caption ${labelColor}`}>\n {tokensObserved && <span>Input: {formatTokens(tokensObserved)}</span>}\n {observationTokens && <span>Output: {formatTokens(observationTokens)}</span>}\n {compressionRatio && compressionRatio > 1 && <span>Compression: {compressionRatio}x</span>}\n {durationMs && <span>Duration: {(durationMs / 1000).toFixed(2)}s</span>}\n </div>\n {observations && (\n <div className=\"mt-1 border-t border-border pt-1\">\n {/* If there's no currentTask or suggestedResponse, show observations directly without collapsible wrapper */}\n {!currentTask && !suggestedResponse ? (\n <ObservationRenderer observations={observations} maxHeight=\"500px\" />\n ) : (\n <>\n <button\n onClick={() => setIsObservationsExpanded(!isObservationsExpanded)}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isObservationsExpanded ? (\n <ChevronDown className=\"size-2.5\" />\n ) : (\n <ChevronRight className=\"size-2.5\" />\n )}\n {isReflection ? 'Reflections' : 'Observations'}\n </button>\n {isObservationsExpanded && (\n <div className=\"mt-1\">\n <ObservationRenderer observations={observations} maxHeight=\"500px\" />\n </div>\n )}\n </>\n )}\n </div>\n )}\n {currentTask && (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n onClick={() => setIsTaskExpanded(!isTaskExpanded)}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isTaskExpanded ? <ChevronDown className=\"size-2.5\" /> : <ChevronRight className=\"size-2.5\" />}\n Current Task\n </button>\n {isTaskExpanded && (\n <div className=\"mt-1 [&_code]:rounded [&_code]:bg-fill [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta\">\n <MarkdownRenderer className=\"text-caption text-foreground\">{currentTask}</MarkdownRenderer>\n </div>\n )}\n </div>\n )}\n {suggestedResponse && (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n onClick={() => setIsResponseExpanded(!isResponseExpanded)}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isResponseExpanded ? <ChevronDown className=\"size-2.5\" /> : <ChevronRight className=\"size-2.5\" />}\n Suggested Response\n </button>\n {isResponseExpanded && (\n <div className=\"mt-1 italic [&_code]:rounded [&_code]:bg-fill [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta\">\n <MarkdownRenderer className=\"text-caption text-foreground/80\">\n {suggestedResponse}\n </MarkdownRenderer>\n </div>\n )}\n </div>\n )}\n <ExtractedValuesPanel\n extractedValues={extractedValues}\n extractionFailures={extractionFailures}\n isExpanded={isExtractedExpanded}\n onToggle={() => setIsExtractedExpanded(!isExtractedExpanded)}\n />\n </div>\n )}\n </div>\n </div>\n );\n }\n\n if (isDisconnected) {\n const disconnectedLabel = isReflection ? 'Reflection interrupted' : 'Observation interrupted';\n const tokensToObserve = omData.tokensToObserve;\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1 inline-flex items-center gap-1.5 rounded-md bg-yellow-500/10 px-2 py-1 text-column text-yellow-600\">\n <Unplug className=\"size-3\" />\n <span>\n {disconnectedLabel}\n {tokensToObserve ? ` (~${formatTokens(tokensToObserve)} tokens)` : ''}\n </span>\n </div>\n </div>\n );\n }\n\n if (isFailed) {\n const error = omData.error;\n const failedLabel = isReflection ? 'Reflection failed' : 'Observation failed';\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1\">\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"inline-flex cursor-pointer items-center gap-1.5 rounded-md bg-red-500/10 px-2 py-1 text-column text-red-600 hover:bg-red-500/20\"\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n <XCircle className=\"size-3\" />\n <span>{failedLabel}</span>\n </button>\n\n {isExpanded && error && (\n <div className=\"mt-1 ml-4 rounded-md border border-red-500/10 bg-red-500/5 p-2 text-caption text-red-700\">\n <span className=\"text-column\">Error:</span> {error}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Async buffering states - non-blocking background observation/reflection\n if (isBuffering) {\n const tokensToBuffer = omData.tokensToBuffer;\n const bufferingLabel = isReflection ? 'Buffering reflection' : 'Buffering observations';\n return (\n <div\n className=\"mt-2 mb-8\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <MarkerPill icon={<Loader2 className=\"animate-spin text-accent6\" />}>\n {bufferingLabel}\n {tokensToBuffer ? ` ~${formatTokens(tokensToBuffer)} tokens` : '...'}\n </MarkerPill>\n </div>\n );\n }\n\n if (isBufferingComplete) {\n const tokensBuffered = omData.tokensBuffered;\n const bufferedTokens = omData.bufferedTokens;\n const { observations, extractedValues, extractionFailures } = omData;\n const bufferedLabel = isReflection ? 'Buffered reflection' : 'Buffered observations';\n const compressionRatio =\n tokensBuffered && bufferedTokens && bufferedTokens > 0 ? Math.round(tokensBuffered / bufferedTokens) : null;\n\n const handleToggle = (e: React.MouseEvent) => {\n const scrollContainer = e.currentTarget.closest('[data-radix-scroll-area-viewport]') || document.documentElement;\n const scrollTop = scrollContainer.scrollTop;\n setIsExpanded(!isExpanded);\n requestAnimationFrame(() => {\n scrollContainer.scrollTop = scrollTop;\n });\n };\n\n return (\n <div\n className=\"mt-2 mb-8\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div>\n <MarkerPill expanded={isExpanded} onClick={handleToggle} icon={<ObservationIcon className=\"text-accent6\" />}>\n {bufferedLabel} {tokensBuffered ? formatTokens(tokensBuffered) : '?'}→\n {bufferedTokens ? formatTokens(bufferedTokens) : '?'} tokens\n {compressionRatio ? ` (-${compressionRatio}x)` : ''}\n </MarkerPill>\n\n {isExpanded && (\n <div\n className={`mt-2 ml-6 rounded-lg ${bufferExpandedBgColor} space-y-2 border p-4 text-caption ${bufferExpandedBorderColor}`}\n >\n {observations && <ObservationRenderer observations={observations} maxHeight=\"240px\" />}\n <ExtractedValuesPanel\n extractedValues={extractedValues}\n extractionFailures={extractionFailures}\n isExpanded={isExtractedExpanded}\n onToggle={() => setIsExtractedExpanded(!isExtractedExpanded)}\n />\n </div>\n )}\n </div>\n </div>\n );\n }\n\n if (isBufferingFailed) {\n const error = omData.error;\n const failedLabel = isReflection ? 'Buffered reflection failed' : 'Buffered observation failed';\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1\">\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"inline-flex cursor-pointer items-center gap-1.5 rounded-md border border-dashed border-red-400/40 bg-red-500/10 px-2 py-1 text-column text-red-600 hover:bg-red-500/20\"\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n <XCircle className=\"size-3\" />\n <span>{failedLabel}</span>\n </button>\n\n {isExpanded && error && (\n <div className=\"mt-1 ml-4 rounded-md border border-red-500/10 bg-red-500/5 p-2 text-caption text-red-700\">\n <span className=\"text-column\">Error:</span> {error}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Activation state - buffered observations have been activated into active observations\n // Styled to match sync observation/reflection markers (green scheme with Brain icon)\n if (isActivated) {\n const tokensActivated = omData.tokensActivated ?? 0;\n const observationTokens = omData.observationTokens ?? 0;\n const { observations } = omData;\n const activatedLabel = isReflection ? 'Reflected' : 'Observed';\n const compressionRatio =\n tokensActivated && observationTokens && observationTokens > 0\n ? Math.round(tokensActivated / observationTokens)\n : null;\n\n const handleToggle = (e: React.MouseEvent) => {\n const scrollContainer = e.currentTarget.closest('[data-radix-scroll-area-viewport]') || document.documentElement;\n const scrollTop = scrollContainer.scrollTop;\n setIsExpanded(!isExpanded);\n requestAnimationFrame(() => {\n scrollContainer.scrollTop = scrollTop;\n });\n };\n\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n data-om-no-highlight=\"true\"\n >\n <div className=\"my-1\">\n <button\n onClick={handleToggle}\n className={`inline-flex items-center gap-1.5 rounded-md px-2 py-1 ${completeBgColor} ${completeTextColor} text-column ${completeHoverBgColor} cursor-pointer`}\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n {isReflection ? <Brain className=\"size-3\" /> : <ObservationIcon className=\"size-3\" />}\n <span>\n {activatedLabel} {tokensActivated ? formatTokens(tokensActivated) : '?'}→\n {observationTokens ? formatTokens(observationTokens) : '?'} tokens\n {compressionRatio ? ` (-${compressionRatio}x)` : ''}\n </span>\n </button>\n {isExpanded && (\n <div\n className={`mt-1 ml-6 rounded-md p-2 ${expandedBgColor} space-y-1.5 border text-caption ${expandedBorderColor}`}\n >\n {/* Stats row */}\n <div className={`flex gap-4 text-caption ${labelColor}`}>\n {tokensActivated > 0 && <span>Input: {formatTokens(tokensActivated)}</span>}\n {observationTokens > 0 && <span>Output: {formatTokens(observationTokens)}</span>}\n {compressionRatio && compressionRatio > 1 && <span>Compression: {compressionRatio}x</span>}\n </div>\n {observations && (\n <div className=\"mt-1 border-t border-border pt-1\">\n <ObservationRenderer observations={observations} maxHeight=\"500px\" />\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Unknown marker type - render generic\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1 inline-flex items-center gap-1.5 rounded-md bg-fill px-2 py-1 text-column text-muted-foreground\">\n <Brain className=\"size-3\" />\n <span>{toolName}</span>\n </div>\n </div>\n );\n};\n"],"names":["jsx","Eye","jsxs","Fragment","Icon","ChevronDown","cn","Badge","ChevronRight","MarkdownRenderer","useState","useEffect","Loader2","Brain","ObservationRenderer","Unplug","XCircle"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"observation-marker-badge.cjs.js","sources":["../../../../../src/domains/chat/tools/badges/observation-marker-badge.tsx"],"sourcesContent":["import { Brain, XCircle, Loader2, ChevronDown, ChevronRight, Unplug, Eye } from 'lucide-react';\nimport { useState, useEffect } from 'react';\nimport { ObservationRenderer } from './observation-renderer';\nimport { Badge } from '@/ds/components/Badge';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { cn } from '@/utils/cn';\nimport { formatDuration } from '@/utils/duration';\n\nexport interface OmMarkerData {\n observedAt?: string;\n completedAt?: string;\n failedAt?: string;\n startedAt?: string;\n tokensObserved?: number;\n tokensToObserve?: number;\n observationTokens?: number;\n observations?: string;\n currentTask?: string;\n suggestedResponse?: string;\n extractedValues?: Record<string, unknown>;\n extractionFailures?: Array<{ slug: string; error: string }>;\n durationMs?: number;\n error?: string;\n recordId?: string;\n cycleId?: string;\n threadId?: string;\n threadIds?: string[];\n operationType?: 'observation' | 'reflection';\n _state?: 'loading' | 'complete' | 'failed' | 'buffering' | 'buffering-complete' | 'buffering-failed' | 'activated';\n // Activation-specific fields\n chunksActivated?: number;\n tokensActivated?: number;\n messagesActivated?: number;\n config?: {\n scope?: string;\n messageTokens?: number;\n observationTokens?: number;\n };\n // Buffering-specific fields\n tokensToBuffer?: number;\n tokensBuffered?: number;\n bufferedTokens?: number;\n}\n\nexport interface ObservationMarkerBadgeProps {\n toolName: string;\n args: Record<string, unknown>;\n metadata?: {\n mode?: string;\n omData?: OmMarkerData;\n };\n}\n\n/**\n * Format token count for display (e.g., 7234 -> \"7.2k\", 234 -> \"234\")\n */\nconst formatTokens = (tokens: number): string => {\n if (tokens >= 1000) {\n return `${(tokens / 1000).toFixed(1)}k`;\n }\n return String(Math.round(tokens));\n};\n\nconst hasExtractedValue = (value: unknown) => value !== undefined && value !== null && value !== '';\n\nconst getExtractedValueEntries = (values?: Record<string, unknown>) => {\n return Object.entries(values ?? {}).filter(([, value]) => hasExtractedValue(value));\n};\n\nconst formatExtractedValue = (value: unknown): string => {\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean') return String(value);\n\n try {\n return JSON.stringify(value, null, 2) ?? String(value);\n } catch {\n return String(value);\n }\n};\n\nconst isStructuredExtractedValue = (value: unknown) => typeof value === 'object' && value !== null;\n\nconst ObservationIcon = ({ className }: { className?: string }) => <Eye className={className} />;\n\nconst MarkerPill = ({\n children,\n icon,\n expanded,\n onClick,\n className,\n}: {\n children: React.ReactNode;\n icon: React.ReactNode;\n expanded?: boolean;\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n className?: string;\n}) => {\n const content = (\n <>\n {onClick && (\n <Icon>\n <ChevronDown className={cn('transition-all', expanded ? 'rotate-0' : '-rotate-90')} />\n </Icon>\n )}\n <Badge icon={icon}>{children}</Badge>\n </>\n );\n\n if (!onClick) {\n return <div className={cn('inline-flex items-center gap-2', className)}>{content}</div>;\n }\n\n return (\n <button onClick={onClick} className={cn('inline-flex items-center gap-2', className)} type=\"button\">\n {content}\n </button>\n );\n};\n\nconst ExtractedValuesPanel = ({\n extractedValues,\n extractionFailures,\n isExpanded,\n onToggle,\n}: {\n extractedValues?: Record<string, unknown>;\n extractionFailures?: Array<{ slug: string; error: string }>;\n isExpanded: boolean;\n onToggle: () => void;\n}) => {\n const entries = getExtractedValueEntries(extractedValues);\n const failures = extractionFailures ?? [];\n\n if (entries.length === 0 && failures.length === 0) return null;\n\n return (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n onClick={onToggle}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isExpanded ? <ChevronDown className=\"size-2.5\" /> : <ChevronRight className=\"size-2.5\" />}\n Extractions ({entries.length}){failures.length > 0 ? ` · ${failures.length} failed` : ''}\n </button>\n {isExpanded && (\n <div className=\"mt-1 space-y-2\">\n {entries.map(([slug, value]) => (\n <div key={slug} className=\"rounded border border-border bg-fill-subtle p-2\">\n <div className=\"text-meta tracking-wide text-foreground/70 uppercase\">{slug}</div>\n {isStructuredExtractedValue(value) ? (\n <pre className=\"mt-1 max-h-40 overflow-auto text-caption break-words whitespace-pre-wrap text-foreground/80\">\n {formatExtractedValue(value)}\n </pre>\n ) : (\n <div className=\"mt-1 [&_code]:rounded [&_code]:bg-fill [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta\">\n <MarkdownRenderer className=\"text-caption text-foreground/80\">\n {formatExtractedValue(value)}\n </MarkdownRenderer>\n </div>\n )}\n </div>\n ))}\n {failures.map(failure => (\n <div key={failure.slug} className=\"rounded border border-red-500/20 bg-red-500/5 p-2 text-red-700\">\n <div className=\"text-meta tracking-wide uppercase\">{failure.slug}</div>\n <div className=\"mt-1 text-caption\">{failure.error}</div>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n\n/**\n * Renders an inline badge for OM observation markers.\n * These are converted from data-om-* parts to tool-call format for assistant-ui compatibility.\n *\n * The badge includes a `data-om-badge` attribute with the cycleId so that\n * the BracketOverlay can find it via DOM queries for positioning bracket lines.\n */\nexport const ObservationMarkerBadge = ({ toolName, args, metadata }: ObservationMarkerBadgeProps) => {\n const omData = (metadata?.omData || args) as OmMarkerData;\n const cycleId = omData.cycleId || '';\n\n // Use the _state field set during part merging, or fallback to detecting from data\n const state =\n omData._state ||\n (omData.failedAt\n ? 'failed'\n : omData.completedAt\n ? 'complete'\n : (omData as any).disconnectedAt\n ? 'disconnected'\n : 'loading');\n\n const isStart = state === 'loading';\n const isEnd = state === 'complete';\n const isFailed = state === 'failed';\n const isDisconnected = state === 'disconnected';\n const isBuffering = state === 'buffering';\n const isBufferingComplete = state === 'buffering-complete';\n const isBufferingFailed = state === 'buffering-failed';\n const isActivated = state === 'activated';\n const isReflection = omData.operationType === 'reflection';\n const hasExtractionContent =\n getExtractedValueEntries(omData.extractedValues).length > 0 || (omData.extractionFailures?.length ?? 0) > 0;\n const shouldAutoExpand = (isFailed && isReflection) || hasExtractionContent;\n\n // Failed reflections and extraction-bearing markers should expand by default to draw attention to new details.\n const [isExpanded, setIsExpanded] = useState(shouldAutoExpand);\n\n // Auto-expand when completion details arrive after the marker was mounted during loading.\n useEffect(() => {\n if (shouldAutoExpand) {\n setIsExpanded(true);\n }\n }, [shouldAutoExpand]);\n const [isObservationsExpanded, setIsObservationsExpanded] = useState(true);\n const [isTaskExpanded, setIsTaskExpanded] = useState(false);\n const [isResponseExpanded, setIsResponseExpanded] = useState(false);\n const [isExtractedExpanded, setIsExtractedExpanded] = useState(false);\n\n // Colors - same scheme for both observation and reflection\n const bgColor = 'bg-blue-500/10';\n const textColor = 'text-blue-600';\n const completeBgColor = 'bg-green-500/10';\n const completeTextColor = 'text-green-600';\n const completeHoverBgColor = 'hover:bg-green-500/20';\n // Same colors for expanded state\n const expandedBgColor = 'bg-green-500/5';\n const expandedBorderColor = 'border-green-500/10';\n const labelColor = 'text-green-600';\n const bufferExpandedBgColor = 'bg-background';\n const bufferExpandedBorderColor = 'border-border-1';\n const actionLabel = isReflection ? 'Reflecting' : 'Observing';\n const completedLabel = isReflection ? 'Reflected' : 'Observed';\n\n // Render based on marker type\n if (isStart) {\n const tokensToObserve = omData.tokensToObserve;\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div\n className={`inline-flex items-center gap-1.5 rounded-md px-2 py-1 ${bgColor} ${textColor} my-1 text-column`}\n >\n <Loader2 className=\"size-3 animate-spin\" />\n {isReflection ? <Brain className=\"size-3\" /> : <ObservationIcon className=\"size-3\" />}\n <span>\n {actionLabel}\n {tokensToObserve ? ` ~${formatTokens(tokensToObserve)} tokens` : '...'}\n </span>\n </div>\n </div>\n );\n }\n\n if (isEnd) {\n const tokensObserved = omData.tokensObserved;\n const observationTokens = omData.observationTokens;\n const observations = omData.observations;\n const currentTask = omData.currentTask;\n const suggestedResponse = omData.suggestedResponse;\n const extractedValues = omData.extractedValues;\n const extractionFailures = omData.extractionFailures;\n const durationMs = omData.durationMs;\n const compressionRatio =\n tokensObserved && observationTokens && observationTokens > 0\n ? Math.round(tokensObserved / observationTokens)\n : null;\n\n const handleToggle = (e: React.MouseEvent) => {\n // Prevent scroll jump by preserving scroll position\n const scrollContainer = e.currentTarget.closest('[data-radix-scroll-area-viewport]') || document.documentElement;\n const scrollTop = scrollContainer.scrollTop;\n setIsExpanded(!isExpanded);\n // Restore scroll position after React updates\n requestAnimationFrame(() => {\n scrollContainer.scrollTop = scrollTop;\n });\n };\n\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1\">\n <button\n onClick={handleToggle}\n className={`inline-flex items-center gap-1.5 rounded-md px-2 py-1 ${completeBgColor} ${completeTextColor} text-column ${completeHoverBgColor} cursor-pointer`}\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n {isReflection ? <Brain className=\"size-3\" /> : <ObservationIcon className=\"size-3\" />}\n <span>\n {completedLabel} {tokensObserved ? formatTokens(tokensObserved) : '?'}→\n {observationTokens ? formatTokens(observationTokens) : '?'} tokens\n {compressionRatio ? ` (-${compressionRatio}x)` : ''}\n </span>\n </button>\n {isExpanded && (\n <div\n className={`mt-1 ml-6 rounded-md p-2 ${expandedBgColor} space-y-1.5 border text-caption ${expandedBorderColor}`}\n >\n {/* Stats row - all green */}\n <div className={`flex gap-4 text-caption ${labelColor}`}>\n {tokensObserved && <span>Input: {formatTokens(tokensObserved)}</span>}\n {observationTokens && <span>Output: {formatTokens(observationTokens)}</span>}\n {compressionRatio && compressionRatio > 1 && <span>Compression: {compressionRatio}x</span>}\n {durationMs && (\n <span>\n Duration:{' '}\n <Txt as=\"span\" variant=\"caption\" font=\"mono\">\n {formatDuration(durationMs)}\n </Txt>\n </span>\n )}\n </div>\n {observations && (\n <div className=\"mt-1 border-t border-border pt-1\">\n {/* If there's no currentTask or suggestedResponse, show observations directly without collapsible wrapper */}\n {!currentTask && !suggestedResponse ? (\n <ObservationRenderer observations={observations} maxHeight=\"500px\" />\n ) : (\n <>\n <button\n onClick={() => setIsObservationsExpanded(!isObservationsExpanded)}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isObservationsExpanded ? (\n <ChevronDown className=\"size-2.5\" />\n ) : (\n <ChevronRight className=\"size-2.5\" />\n )}\n {isReflection ? 'Reflections' : 'Observations'}\n </button>\n {isObservationsExpanded && (\n <div className=\"mt-1\">\n <ObservationRenderer observations={observations} maxHeight=\"500px\" />\n </div>\n )}\n </>\n )}\n </div>\n )}\n {currentTask && (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n onClick={() => setIsTaskExpanded(!isTaskExpanded)}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isTaskExpanded ? <ChevronDown className=\"size-2.5\" /> : <ChevronRight className=\"size-2.5\" />}\n Current Task\n </button>\n {isTaskExpanded && (\n <div className=\"mt-1 [&_code]:rounded [&_code]:bg-fill [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta\">\n <MarkdownRenderer className=\"text-caption text-foreground\">{currentTask}</MarkdownRenderer>\n </div>\n )}\n </div>\n )}\n {suggestedResponse && (\n <div className=\"mt-2 border-t border-border pt-2\">\n <button\n onClick={() => setIsResponseExpanded(!isResponseExpanded)}\n className=\"flex items-center gap-1 text-meta tracking-wide text-foreground uppercase transition-opacity hover:opacity-80\"\n >\n {isResponseExpanded ? <ChevronDown className=\"size-2.5\" /> : <ChevronRight className=\"size-2.5\" />}\n Suggested Response\n </button>\n {isResponseExpanded && (\n <div className=\"mt-1 italic [&_code]:rounded [&_code]:bg-fill [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-meta\">\n <MarkdownRenderer className=\"text-caption text-foreground/80\">\n {suggestedResponse}\n </MarkdownRenderer>\n </div>\n )}\n </div>\n )}\n <ExtractedValuesPanel\n extractedValues={extractedValues}\n extractionFailures={extractionFailures}\n isExpanded={isExtractedExpanded}\n onToggle={() => setIsExtractedExpanded(!isExtractedExpanded)}\n />\n </div>\n )}\n </div>\n </div>\n );\n }\n\n if (isDisconnected) {\n const disconnectedLabel = isReflection ? 'Reflection interrupted' : 'Observation interrupted';\n const tokensToObserve = omData.tokensToObserve;\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1 inline-flex items-center gap-1.5 rounded-md bg-yellow-500/10 px-2 py-1 text-column text-yellow-600\">\n <Unplug className=\"size-3\" />\n <span>\n {disconnectedLabel}\n {tokensToObserve ? ` (~${formatTokens(tokensToObserve)} tokens)` : ''}\n </span>\n </div>\n </div>\n );\n }\n\n if (isFailed) {\n const error = omData.error;\n const failedLabel = isReflection ? 'Reflection failed' : 'Observation failed';\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1\">\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"inline-flex cursor-pointer items-center gap-1.5 rounded-md bg-red-500/10 px-2 py-1 text-column text-red-600 hover:bg-red-500/20\"\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n <XCircle className=\"size-3\" />\n <span>{failedLabel}</span>\n </button>\n\n {isExpanded && error && (\n <div className=\"mt-1 ml-4 rounded-md border border-red-500/10 bg-red-500/5 p-2 text-caption text-red-700\">\n <span className=\"text-column\">Error:</span> {error}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Async buffering states - non-blocking background observation/reflection\n if (isBuffering) {\n const tokensToBuffer = omData.tokensToBuffer;\n const bufferingLabel = isReflection ? 'Buffering reflection' : 'Buffering observations';\n return (\n <div\n className=\"mt-2 mb-8\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <MarkerPill icon={<Loader2 className=\"animate-spin text-accent6\" />}>\n {bufferingLabel}\n {tokensToBuffer ? ` ~${formatTokens(tokensToBuffer)} tokens` : '...'}\n </MarkerPill>\n </div>\n );\n }\n\n if (isBufferingComplete) {\n const tokensBuffered = omData.tokensBuffered;\n const bufferedTokens = omData.bufferedTokens;\n const { observations, extractedValues, extractionFailures } = omData;\n const bufferedLabel = isReflection ? 'Buffered reflection' : 'Buffered observations';\n const compressionRatio =\n tokensBuffered && bufferedTokens && bufferedTokens > 0 ? Math.round(tokensBuffered / bufferedTokens) : null;\n\n const handleToggle = (e: React.MouseEvent) => {\n const scrollContainer = e.currentTarget.closest('[data-radix-scroll-area-viewport]') || document.documentElement;\n const scrollTop = scrollContainer.scrollTop;\n setIsExpanded(!isExpanded);\n requestAnimationFrame(() => {\n scrollContainer.scrollTop = scrollTop;\n });\n };\n\n return (\n <div\n className=\"mt-2 mb-8\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div>\n <MarkerPill expanded={isExpanded} onClick={handleToggle} icon={<ObservationIcon className=\"text-accent6\" />}>\n {bufferedLabel} {tokensBuffered ? formatTokens(tokensBuffered) : '?'}→\n {bufferedTokens ? formatTokens(bufferedTokens) : '?'} tokens\n {compressionRatio ? ` (-${compressionRatio}x)` : ''}\n </MarkerPill>\n\n {isExpanded && (\n <div\n className={`mt-2 ml-6 rounded-lg ${bufferExpandedBgColor} space-y-2 border p-4 text-caption ${bufferExpandedBorderColor}`}\n >\n {observations && <ObservationRenderer observations={observations} maxHeight=\"240px\" />}\n <ExtractedValuesPanel\n extractedValues={extractedValues}\n extractionFailures={extractionFailures}\n isExpanded={isExtractedExpanded}\n onToggle={() => setIsExtractedExpanded(!isExtractedExpanded)}\n />\n </div>\n )}\n </div>\n </div>\n );\n }\n\n if (isBufferingFailed) {\n const error = omData.error;\n const failedLabel = isReflection ? 'Buffered reflection failed' : 'Buffered observation failed';\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1\">\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"inline-flex cursor-pointer items-center gap-1.5 rounded-md border border-dashed border-red-400/40 bg-red-500/10 px-2 py-1 text-column text-red-600 hover:bg-red-500/20\"\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n <XCircle className=\"size-3\" />\n <span>{failedLabel}</span>\n </button>\n\n {isExpanded && error && (\n <div className=\"mt-1 ml-4 rounded-md border border-red-500/10 bg-red-500/5 p-2 text-caption text-red-700\">\n <span className=\"text-column\">Error:</span> {error}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Activation state - buffered observations have been activated into active observations\n // Styled to match sync observation/reflection markers (green scheme with Brain icon)\n if (isActivated) {\n const tokensActivated = omData.tokensActivated ?? 0;\n const observationTokens = omData.observationTokens ?? 0;\n const { observations } = omData;\n const activatedLabel = isReflection ? 'Reflected' : 'Observed';\n const compressionRatio =\n tokensActivated && observationTokens && observationTokens > 0\n ? Math.round(tokensActivated / observationTokens)\n : null;\n\n const handleToggle = (e: React.MouseEvent) => {\n const scrollContainer = e.currentTarget.closest('[data-radix-scroll-area-viewport]') || document.documentElement;\n const scrollTop = scrollContainer.scrollTop;\n setIsExpanded(!isExpanded);\n requestAnimationFrame(() => {\n scrollContainer.scrollTop = scrollTop;\n });\n };\n\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n data-om-no-highlight=\"true\"\n >\n <div className=\"my-1\">\n <button\n onClick={handleToggle}\n className={`inline-flex items-center gap-1.5 rounded-md px-2 py-1 ${completeBgColor} ${completeTextColor} text-column ${completeHoverBgColor} cursor-pointer`}\n >\n {isExpanded ? <ChevronDown className=\"size-3\" /> : <ChevronRight className=\"size-3\" />}\n {isReflection ? <Brain className=\"size-3\" /> : <ObservationIcon className=\"size-3\" />}\n <span>\n {activatedLabel} {tokensActivated ? formatTokens(tokensActivated) : '?'}→\n {observationTokens ? formatTokens(observationTokens) : '?'} tokens\n {compressionRatio ? ` (-${compressionRatio}x)` : ''}\n </span>\n </button>\n {isExpanded && (\n <div\n className={`mt-1 ml-6 rounded-md p-2 ${expandedBgColor} space-y-1.5 border text-caption ${expandedBorderColor}`}\n >\n {/* Stats row */}\n <div className={`flex gap-4 text-caption ${labelColor}`}>\n {tokensActivated > 0 && <span>Input: {formatTokens(tokensActivated)}</span>}\n {observationTokens > 0 && <span>Output: {formatTokens(observationTokens)}</span>}\n {compressionRatio && compressionRatio > 1 && <span>Compression: {compressionRatio}x</span>}\n </div>\n {observations && (\n <div className=\"mt-1 border-t border-border pt-1\">\n <ObservationRenderer observations={observations} maxHeight=\"500px\" />\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Unknown marker type - render generic\n return (\n <div\n className=\"mb-3\"\n data-om-badge={cycleId}\n data-om-state={state}\n data-om-type={isReflection ? 'reflection' : 'observation'}\n >\n <div className=\"my-1 inline-flex items-center gap-1.5 rounded-md bg-fill px-2 py-1 text-column text-muted-foreground\">\n <Brain className=\"size-3\" />\n <span>{toolName}</span>\n </div>\n </div>\n );\n};\n"],"names":["jsx","Eye","jsxs","Fragment","Icon","ChevronDown","cn","Badge","ChevronRight","MarkdownRenderer","useState","useEffect","Loader2","Brain","Txt","formatDuration","ObservationRenderer","Unplug","XCircle"],"mappings":"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"}
|
|
@@ -2,10 +2,12 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
2
2
|
import { Loader2, Brain, ChevronDown, ChevronRight, Unplug, XCircle, Eye } from 'lucide-react';
|
|
3
3
|
import { useState, useEffect } from 'react';
|
|
4
4
|
import { ObservationRenderer } from './observation-renderer.es.js';
|
|
5
|
-
import { B as Badge } from '../../../../Badge-
|
|
5
|
+
import { B as Badge } from '../../../../Badge-Bzn8Z-_I.js';
|
|
6
6
|
import { M as MarkdownRenderer } from '../../../../markdown-renderer-Ces7VyRK.js';
|
|
7
|
+
import { T as Txt } from '../../../../Txt-BP1SRHmL.js';
|
|
7
8
|
import { Icon } from '../../../../icons/Icon.es.js';
|
|
8
9
|
import { c as cn } from '../../../../cn-65Adrsfj.js';
|
|
10
|
+
import { formatDuration } from '../../../../utils/duration.es.js';
|
|
9
11
|
|
|
10
12
|
const formatTokens = (tokens) => {
|
|
11
13
|
if (tokens >= 1e3) {
|
|
@@ -209,9 +211,9 @@ const ObservationMarkerBadge = ({ toolName, args, metadata }) => {
|
|
|
209
211
|
"x"
|
|
210
212
|
] }),
|
|
211
213
|
durationMs && /* @__PURE__ */ jsxs("span", { children: [
|
|
212
|
-
"Duration:
|
|
213
|
-
|
|
214
|
-
"
|
|
214
|
+
"Duration:",
|
|
215
|
+
" ",
|
|
216
|
+
/* @__PURE__ */ jsx(Txt, { as: "span", variant: "caption", font: "mono", children: formatDuration(durationMs) })
|
|
215
217
|
] })
|
|
216
218
|
] }),
|
|
217
219
|
observations && /* @__PURE__ */ jsx("div", { className: "mt-1 border-t border-border pt-1", children: !currentTask && !suggestedResponse ? /* @__PURE__ */ jsx(ObservationRenderer, { observations, maxHeight: "500px" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|