@mastra/playground-ui 65.0.0-alpha.11 → 65.0.0-alpha.13
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/dist/{ask-user-card-DnvW7jXS.js → ask-user-card-B9q_GFTt.js} +2 -2
- package/dist/{ask-user-card-DnvW7jXS.js.map → ask-user-card-B9q_GFTt.js.map} +1 -1
- package/dist/{ask-user-card-DiFQcUzM.cjs → ask-user-card-C-N5rpYG.cjs} +2 -2
- package/dist/{ask-user-card-DiFQcUzM.cjs.map → ask-user-card-C-N5rpYG.cjs.map} +1 -1
- package/dist/components/Button.cjs.js +1 -1
- package/dist/components/Button.es.js +1 -1
- package/dist/components/CommandPalette.cjs.js +1 -1
- package/dist/components/CommandPalette.es.js +1 -1
- package/dist/components/Comment.cjs.js +1 -1
- package/dist/components/Comment.es.js +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataList.cjs.js +17 -15
- package/dist/components/DataList.cjs.js.map +1 -1
- package/dist/components/DataList.es.js +5 -4
- 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/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/EnvironmentVariablesEditor.cjs.js +2 -2
- package/dist/components/EnvironmentVariablesEditor.es.js +2 -2
- package/dist/components/Field.cjs.js +1 -1
- package/dist/components/Field.es.js +1 -1
- package/dist/components/FilterBar.cjs.js +2 -2
- package/dist/components/FilterBar.es.js +2 -2
- package/dist/components/JSONSchemaForm.cjs.js +1 -1
- package/dist/components/JSONSchemaForm.es.js +1 -1
- package/dist/components/Kbd.cjs.js +1 -1
- package/dist/components/Kbd.es.js +1 -1
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +2 -5
- package/dist/components/LogsDataList.cjs.js.map +1 -1
- package/dist/components/LogsDataList.es.js +2 -5
- package/dist/components/LogsDataList.es.js.map +1 -1
- package/dist/components/PropertyFilter.cjs.js +1 -1
- package/dist/components/PropertyFilter.es.js +1 -1
- package/dist/components/SavedViews.cjs.js +1 -1
- package/dist/components/SavedViews.es.js +1 -1
- package/dist/components/SearchInput.cjs.js +1 -1
- package/dist/components/SearchInput.es.js +1 -1
- package/dist/components/Section.cjs.js +1 -1
- package/dist/components/Section.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +1 -1
- package/dist/components/SideDialog.es.js +1 -1
- package/dist/components/Sidebar.cjs.js +63 -59
- package/dist/components/Sidebar.cjs.js.map +1 -1
- package/dist/components/Sidebar.es.js +64 -61
- package/dist/components/Sidebar.es.js.map +1 -1
- package/dist/components/ai/activity.cjs.js +1 -1
- package/dist/components/ai/activity.es.js +1 -1
- package/dist/components/ai/ask-user.cjs.js +1 -1
- package/dist/components/ai/ask-user.es.js +1 -1
- package/dist/{data-code-section-BjyHoHEB.cjs → data-code-section-BsvdKW08.cjs} +2 -2
- package/dist/{data-code-section-BjyHoHEB.cjs.map → data-code-section-BsvdKW08.cjs.map} +1 -1
- package/dist/{data-code-section-BWzfg-1n.js → data-code-section-y1BMLr3c.js} +2 -2
- package/dist/{data-code-section-BWzfg-1n.js.map → data-code-section-y1BMLr3c.js.map} +1 -1
- package/dist/data-list-CNE43dvA.js +138 -0
- package/dist/data-list-CNE43dvA.js.map +1 -0
- package/dist/data-list-GysSTouz.cjs +142 -0
- package/dist/data-list-GysSTouz.cjs.map +1 -0
- package/dist/{data-list-skeleton-DY0F40WQ.cjs → data-list-skeleton-B4fWheXy.cjs} +6 -6
- package/dist/{data-list-skeleton-DY0F40WQ.cjs.map → data-list-skeleton-B4fWheXy.cjs.map} +1 -1
- package/dist/{data-list-skeleton-Drzrws2O.js → data-list-skeleton-DEsAkWzg.js} +2 -2
- package/dist/{data-list-skeleton-Drzrws2O.js.map → data-list-skeleton-DEsAkWzg.js.map} +1 -1
- package/dist/data-list-spacer-D8nS9lSi.cjs +218 -0
- package/dist/data-list-spacer-D8nS9lSi.cjs.map +1 -0
- package/dist/data-list-spacer-DyJPUaKa.js +209 -0
- package/dist/data-list-spacer-DyJPUaKa.js.map +1 -0
- package/dist/{data-list-DlXU1PLQ.cjs → data-list-top-Bh9IIrxB.cjs} +39 -342
- package/dist/data-list-top-Bh9IIrxB.cjs.map +1 -0
- package/dist/{data-list-DATsbxcn.js → data-list-top-Bx8mU5aQ.js} +30 -334
- package/dist/data-list-top-Bx8mU5aQ.js.map +1 -0
- package/dist/{data-panel-CUqcB4Vn.js → data-panel-DSgidnnv.js} +2 -2
- package/dist/{data-panel-CUqcB4Vn.js.map → data-panel-DSgidnnv.js.map} +1 -1
- package/dist/{data-panel-CGRPVnEe.cjs → data-panel-xqrai98b.cjs} +2 -2
- package/dist/{data-panel-CGRPVnEe.cjs.map → data-panel-xqrai98b.cjs.map} +1 -1
- package/dist/{date-time-range-picker-BB6ivHR-.js → date-time-range-picker-BnYWCqei.js} +2 -2
- package/dist/{date-time-range-picker-BB6ivHR-.js.map → date-time-range-picker-BnYWCqei.js.map} +1 -1
- package/dist/{date-time-range-picker-ExPgeHV_.cjs → date-time-range-picker-_2RJBOUn.cjs} +2 -2
- package/dist/{date-time-range-picker-ExPgeHV_.cjs.map → date-time-range-picker-_2RJBOUn.cjs.map} +1 -1
- package/dist/domains/chat/messages/dataset-save-action.cjs.js +1 -1
- package/dist/domains/chat/messages/dataset-save-action.es.js +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.cjs.js +23 -3
- package/dist/domains/chat/messages/notification-signal-notice.cjs.js.map +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.es.js +24 -6
- package/dist/domains/chat/messages/notification-signal-notice.es.js.map +1 -1
- package/dist/domains/chat/messages/signal-data.cjs.js +12 -0
- package/dist/domains/chat/messages/signal-data.cjs.js.map +1 -1
- package/dist/domains/chat/messages/signal-data.es.js +12 -1
- package/dist/domains/chat/messages/signal-data.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/workflow-badge.cjs.js +1 -2
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -2
- package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
- package/dist/domains/chat.cjs.js +1 -0
- package/dist/domains/chat.cjs.js.map +1 -1
- package/dist/domains/chat.es.js +1 -1
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js +20 -12
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js.map +1 -1
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js +20 -12
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js.map +1 -1
- package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.cjs.js +7 -8
- package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.cjs.js.map +1 -1
- package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.es.js +7 -8
- package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.es.js.map +1 -1
- package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.cjs.js +1 -1
- package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.es.js +1 -1
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.cjs.js +1 -1
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.es.js +1 -1
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.cjs.js +1 -1
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.es.js +1 -1
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +2 -2
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +2 -2
- package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
- package/dist/domains/logs/components/log-data-panel.es.js +1 -1
- package/dist/domains/logs/components/logs-list-view.cjs.js +2 -3
- package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
- package/dist/domains/logs/components/logs-list-view.es.js +2 -3
- package/dist/domains/logs/components/logs-list-view.es.js.map +1 -1
- package/dist/domains/memory/components/observation-detail-view.cjs.js +1 -1
- package/dist/domains/memory/components/observation-detail-view.es.js +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/observability/components/trace-as-item-dialog.cjs.js +14 -2
- package/dist/domains/observability/components/trace-as-item-dialog.cjs.js.map +1 -1
- package/dist/domains/observability/components/trace-as-item-dialog.es.js +14 -2
- package/dist/domains/observability/components/trace-as-item-dialog.es.js.map +1 -1
- package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
- package/dist/domains/scores/components/score-data-panel.es.js +1 -1
- package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -2
- package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js +1 -2
- package/dist/domains/scores/components/trace-scores-tab.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-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/span-summary-description.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/trace-columns-menu.cjs.js +1 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +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-data-panel.cjs.js +0 -2
- package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel.es.js +0 -2
- package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
- package/dist/domains/traces/components/trace-error-cell.cjs.js +1 -3
- package/dist/domains/traces/components/trace-error-cell.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-error-cell.es.js +1 -3
- package/dist/domains/traces/components/trace-error-cell.es.js.map +1 -1
- 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-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
- package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.es.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +2 -2
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +1 -1
- package/dist/domains/traces/components/traces-list-view.cjs.js +5 -4
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +4 -3
- package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +1 -4
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js +1 -4
- package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
- package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
- package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
- package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
- package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +1 -1
- package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +2 -2
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +2 -2
- package/dist/ee/signals/components/entity-index-list.cjs.js +1 -3
- package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +1 -3
- package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +2 -4
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +2 -4
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +1 -1
- package/dist/ee/signals/trace-intelligence-explainer.cjs.js +1 -0
- package/dist/ee/signals/trace-intelligence-explainer.cjs.js.map +1 -1
- package/dist/ee/signals/trace-intelligence-explainer.es.js +1 -0
- package/dist/ee/signals/trace-intelligence-explainer.es.js.map +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +2 -2
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
- package/dist/{field-BCU5ZtWV.cjs → field-CZ5fldpM.cjs} +2 -1
- package/dist/{field-BCU5ZtWV.cjs.map → field-CZ5fldpM.cjs.map} +1 -1
- package/dist/{field-Dl1zeXTv.js → field-CfA5-ixH.js} +2 -1
- package/dist/{field-Dl1zeXTv.js.map → field-CfA5-ixH.js.map} +1 -1
- package/dist/{filter-bar-C6NdZctn.cjs → filter-bar-CjBb01b6.cjs} +3 -3
- package/dist/{filter-bar-C6NdZctn.cjs.map → filter-bar-CjBb01b6.cjs.map} +1 -1
- package/dist/{filter-bar-chip-DgvuQv6c.cjs → filter-bar-chip-C_64m7nX.cjs} +2 -2
- package/dist/{filter-bar-chip-DgvuQv6c.cjs.map → filter-bar-chip-C_64m7nX.cjs.map} +1 -1
- package/dist/{filter-bar-chip-DM73lTpx.js → filter-bar-chip-D2kKMSRA.js} +2 -2
- package/dist/{filter-bar-chip-DM73lTpx.js.map → filter-bar-chip-D2kKMSRA.js.map} +1 -1
- package/dist/{filter-bar-DW0fD4bu.js → filter-bar-pXSJt2ye.js} +3 -3
- package/dist/{filter-bar-DW0fD4bu.js.map → filter-bar-pXSJt2ye.js.map} +1 -1
- package/dist/{kbd-Xgv5HKEi.cjs → kbd-B2zbS_A6.cjs} +2 -2
- package/dist/{kbd-Xgv5HKEi.cjs.map → kbd-B2zbS_A6.cjs.map} +1 -1
- package/dist/{kbd-7Xx2pm9f.js → kbd-CYtMrOov.js} +2 -2
- package/dist/{kbd-7Xx2pm9f.js.map → kbd-CYtMrOov.js.map} +1 -1
- package/dist/layout/tabbed-container.cjs.js +2 -2
- package/dist/layout/tabbed-container.es.js +2 -2
- package/dist/lib/form/components/boolean-field.cjs.js +1 -1
- package/dist/lib/form/components/boolean-field.es.js +1 -1
- package/dist/lib/form/components/field-wrapper.cjs.js +1 -1
- package/dist/lib/form/components/field-wrapper.es.js +1 -1
- package/dist/{list-search-ByJdIxIh.js → list-search-8jVOq9LK.js} +2 -2
- package/dist/{list-search-ByJdIxIh.js.map → list-search-8jVOq9LK.js.map} +1 -1
- package/dist/{list-search-DNJVeHmK.cjs → list-search-C7ckmZHa.cjs} +2 -2
- package/dist/{list-search-DNJVeHmK.cjs.map → list-search-C7ckmZHa.cjs.map} +1 -1
- package/dist/{logs-data-list-eoGKicgL.js → logs-data-list-C0MU5rID.js} +3 -2
- package/dist/{logs-data-list-eoGKicgL.js.map → logs-data-list-C0MU5rID.js.map} +1 -1
- package/dist/{logs-data-list-DEZuSjqt.cjs → logs-data-list-D3bYEiD_.cjs} +22 -21
- package/dist/{logs-data-list-DEZuSjqt.cjs.map → logs-data-list-D3bYEiD_.cjs.map} +1 -1
- package/dist/new/settings.cjs.js +1 -1
- package/dist/new/settings.es.js +1 -1
- package/dist/{notification-activity-BWXHmlTn.js → notification-activity-BRW1Xlj1.js} +9 -5
- package/dist/notification-activity-BRW1Xlj1.js.map +1 -0
- package/dist/{notification-activity-BSNuqJDd.cjs → notification-activity-DAZOALWI.cjs} +9 -5
- package/dist/notification-activity-DAZOALWI.cjs.map +1 -0
- package/dist/resize/collapsible-panel.cjs.js +1 -1
- package/dist/resize/collapsible-panel.es.js +1 -1
- package/dist/{search-input-CMNy0JWd.cjs → search-input-CGNENJDh.cjs} +2 -2
- package/dist/{search-input-CMNy0JWd.cjs.map → search-input-CGNENJDh.cjs.map} +1 -1
- package/dist/{search-input-C9qFBzn6.js → search-input-cIYk0pl3.js} +2 -2
- package/dist/{search-input-C9qFBzn6.js.map → search-input-cIYk0pl3.js.map} +1 -1
- package/dist/{section-skBYREaR.cjs → section-BikCyHdf.cjs} +2 -2
- package/dist/{section-skBYREaR.cjs.map → section-BikCyHdf.cjs.map} +1 -1
- package/dist/{section-eRs4NnCC.js → section-C71zDLKM.js} +2 -2
- package/dist/{section-eRs4NnCC.js.map → section-C71zDLKM.js.map} +1 -1
- package/dist/{settings-row-Ds-PVocx.cjs → settings-row-C9lT2BJS.cjs} +2 -2
- package/dist/{settings-row-Ds-PVocx.cjs.map → settings-row-C9lT2BJS.cjs.map} +1 -1
- package/dist/{settings-row-BHtjEfPr.js → settings-row-CRpU1an-.js} +2 -2
- package/dist/{settings-row-BHtjEfPr.js.map → settings-row-CRpU1an-.js.map} +1 -1
- package/dist/src/domains/chat/messages/notification-signal-notice.d.ts +2 -0
- package/dist/src/domains/chat/messages/signal-data.d.ts +9 -0
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.d.ts +2 -2
- package/dist/src/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.d.ts +2 -0
- package/dist/src/ds/components/DataList/data-list-root.d.ts +2 -0
- package/dist/src/ds/components/Sidebar/header/sidebar-badge.d.ts +7 -0
- package/dist/src/ds/components/Sidebar/header/sidebar-button-hint.d.ts +7 -0
- package/dist/src/ds/components/Sidebar/header/sidebar-search-trigger.d.ts +14 -3
- package/dist/src/ds/components/Sidebar/index.d.ts +1 -0
- package/dist/src/ds/components/Sidebar/root/sidebar-trigger.d.ts +2 -2
- package/dist/src/ds/components/Sidebar/sidebar.d.ts +5 -1
- package/dist/src/ds/components/ai/activity/presets/notification-activity.d.ts +5 -1
- package/dist/style.css +25 -9
- package/dist/{traces-data-list-CcxqCHkj.js → traces-data-list-CZSWoHpd.js} +4 -2
- package/dist/{traces-data-list-CcxqCHkj.js.map → traces-data-list-CZSWoHpd.js.map} +1 -1
- package/dist/{traces-data-list-mCKFilYu.cjs → traces-data-list-CqQ5d-M1.cjs} +20 -18
- package/dist/{traces-data-list-mCKFilYu.cjs.map → traces-data-list-CqQ5d-M1.cjs.map} +1 -1
- package/package.json +6 -6
- package/dist/data-list-DATsbxcn.js.map +0 -1
- package/dist/data-list-DlXU1PLQ.cjs.map +0 -1
- package/dist/notification-activity-BSNuqJDd.cjs.map +0 -1
- package/dist/notification-activity-BWXHmlTn.js.map +0 -1
|
@@ -11,7 +11,7 @@ const datasets = require('@mastra/react/hooks/datasets');
|
|
|
11
11
|
const Button = require('../../../Button-C4I05uT4.cjs');
|
|
12
12
|
const codeEditor = require('../../../code-editor-4ukTuvqG.cjs');
|
|
13
13
|
require('../../../highlight-DfnRU-Am.cjs');
|
|
14
|
-
const field = require('../../../field-
|
|
14
|
+
const field = require('../../../field-CZ5fldpM.cjs');
|
|
15
15
|
require('../../../field-control-aria-WzMGs0A4.cjs');
|
|
16
16
|
const select = require('../../../select-BqHt-fOI.cjs');
|
|
17
17
|
const Txt = require('../../../Txt-CIS2G5Jx.cjs');
|
|
@@ -7,7 +7,7 @@ import { useDatasets, useDatasetMutations } from '@mastra/react/hooks/datasets';
|
|
|
7
7
|
import { B as Button } from '../../../Button-D8a5EWJ5.js';
|
|
8
8
|
import { C as CodeEditor } from '../../../code-editor-8qu58Npy.js';
|
|
9
9
|
import '../../../highlight-CXDme3FZ.js';
|
|
10
|
-
import { F as Field, e as FieldLabel } from '../../../field-
|
|
10
|
+
import { F as Field, e as FieldLabel } from '../../../field-CfA5-ixH.js';
|
|
11
11
|
import '../../../field-control-aria-DB6y41tQ.js';
|
|
12
12
|
import { S as Select, e as SelectTrigger, f as SelectValue, a as SelectContent, c as SelectItem } from '../../../select-CCpQUIEg.js';
|
|
13
13
|
import { T as Txt } from '../../../Txt-BtIGLRk1.js';
|
|
@@ -4,8 +4,12 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
4
4
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
const domains_chat_messages_signalData = require('./signal-data.cjs.js');
|
|
7
|
-
const notificationActivity = require('../../../notification-activity-
|
|
7
|
+
const notificationActivity = require('../../../notification-activity-DAZOALWI.cjs');
|
|
8
|
+
const Badge = require('../../../Badge-63UxysBA.cjs');
|
|
9
|
+
const tooltip = require('../../../tooltip-BppwIf6Y.cjs');
|
|
8
10
|
|
|
11
|
+
const MCP_EVENT_GAP_MESSAGE = "Gap: events may have been skipped";
|
|
12
|
+
const MCP_EVENT_UNTRUSTED_LABEL = "Untrusted event data from the MCP server";
|
|
9
13
|
const getNotificationTitle = (signal) => {
|
|
10
14
|
const notification = domains_chat_messages_signalData.getNotificationMetadata(signal);
|
|
11
15
|
if (notification?.signal === "summary" || signal.tagName === "notification-summary") return "Notification summary";
|
|
@@ -14,8 +18,20 @@ const getNotificationTitle = (signal) => {
|
|
|
14
18
|
if (source && kind) return `${source} / ${kind}`;
|
|
15
19
|
return source ?? kind ?? "Notification";
|
|
16
20
|
};
|
|
21
|
+
const getMcpEventTitle = (info) => {
|
|
22
|
+
const title = [info.server, info.event].filter(Boolean).join(" · ") || "MCP event";
|
|
23
|
+
return info.kind === "mcp-event-subscription-ended" ? `${title} · subscription ended` : title;
|
|
24
|
+
};
|
|
25
|
+
const GapBadge = () => /* @__PURE__ */ jsxRuntime.jsxs(tooltip.Tooltip, { children: [
|
|
26
|
+
/* @__PURE__ */ jsxRuntime.jsxs(tooltip.TooltipTrigger, { render: /* @__PURE__ */ jsxRuntime.jsx("span", {}), children: [
|
|
27
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge.Badge, { size: "xs", variant: "amber", children: "gap" }),
|
|
28
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: MCP_EVENT_GAP_MESSAGE })
|
|
29
|
+
] }),
|
|
30
|
+
/* @__PURE__ */ jsxRuntime.jsx(tooltip.TooltipContent, { children: MCP_EVENT_GAP_MESSAGE })
|
|
31
|
+
] });
|
|
17
32
|
const NotificationSignalNotice = ({ signal }) => {
|
|
18
33
|
const notification = domains_chat_messages_signalData.getNotificationMetadata(signal);
|
|
34
|
+
const mcpEvent = domains_chat_messages_signalData.getMcpEventSignalInfo(signal);
|
|
19
35
|
const priority = notification?.priority ?? domains_chat_messages_signalData.formatSignalValue(signal.attributes?.priority);
|
|
20
36
|
const pending = domains_chat_messages_signalData.formatSignalValue(notification?.pending) ?? domains_chat_messages_signalData.formatSignalValue(signal.attributes?.pending);
|
|
21
37
|
const status = notification?.status ?? domains_chat_messages_signalData.formatSignalValue(signal.attributes?.status);
|
|
@@ -23,14 +39,18 @@ const NotificationSignalNotice = ({ signal }) => {
|
|
|
23
39
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
24
40
|
notificationActivity.NotificationActivity,
|
|
25
41
|
{
|
|
26
|
-
label: getNotificationTitle(signal),
|
|
42
|
+
label: mcpEvent ? getMcpEventTitle(mcpEvent) : getNotificationTitle(signal),
|
|
27
43
|
message: text,
|
|
28
44
|
priority,
|
|
29
45
|
status,
|
|
30
|
-
pending
|
|
46
|
+
pending,
|
|
47
|
+
extraBadges: mcpEvent?.truncated ? /* @__PURE__ */ jsxRuntime.jsx(GapBadge, {}) : void 0,
|
|
48
|
+
messageLabel: mcpEvent?.kind === "mcp-event" ? MCP_EVENT_UNTRUSTED_LABEL : void 0
|
|
31
49
|
}
|
|
32
50
|
);
|
|
33
51
|
};
|
|
34
52
|
|
|
53
|
+
exports.MCP_EVENT_GAP_MESSAGE = MCP_EVENT_GAP_MESSAGE;
|
|
54
|
+
exports.MCP_EVENT_UNTRUSTED_LABEL = MCP_EVENT_UNTRUSTED_LABEL;
|
|
35
55
|
exports.NotificationSignalNotice = NotificationSignalNotice;
|
|
36
56
|
//# sourceMappingURL=notification-signal-notice.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-signal-notice.cjs.js","sources":["../../../../src/domains/chat/messages/notification-signal-notice.tsx"],"sourcesContent":["import { formatSignalValue, getNotificationMetadata, signalContentsToText } from './signal-data';\nimport type { SignalData } from './signal-data';\nimport { NotificationActivity } from '@/ds/components/ai/activity';\n\nexport type NotificationSignalNoticeProps = {\n signal: SignalData;\n};\n\nconst getNotificationTitle = (signal: SignalData) => {\n const notification = getNotificationMetadata(signal);\n if (notification?.signal === 'summary' || signal.tagName === 'notification-summary') return 'Notification summary';\n\n const source = notification?.source ?? formatSignalValue(signal.attributes?.source);\n const kind = notification?.kind ?? formatSignalValue(signal.attributes?.kind);\n if (source && kind) return `${source} / ${kind}`;\n return source ?? kind ?? 'Notification';\n};\n\nexport const NotificationSignalNotice = ({ signal }: NotificationSignalNoticeProps) => {\n const notification = getNotificationMetadata(signal);\n const priority = notification?.priority ?? formatSignalValue(signal.attributes?.priority);\n const pending = formatSignalValue(notification?.pending) ?? formatSignalValue(signal.attributes?.pending);\n const status = notification?.status ?? formatSignalValue(signal.attributes?.status);\n const text = signalContentsToText(signal.contents);\n return (\n <NotificationActivity\n label={getNotificationTitle(signal)}\n message={text}\n priority={priority}\n status={status}\n pending={pending}\n />\n );\n};\n"],"names":["getNotificationMetadata","formatSignalValue","
|
|
1
|
+
{"version":3,"file":"notification-signal-notice.cjs.js","sources":["../../../../src/domains/chat/messages/notification-signal-notice.tsx"],"sourcesContent":["import { formatSignalValue, getMcpEventSignalInfo, getNotificationMetadata, signalContentsToText } from './signal-data';\nimport type { McpEventSignalInfo, SignalData } from './signal-data';\nimport { NotificationActivity } from '@/ds/components/ai/activity';\nimport { Badge } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip/tooltip';\n\nexport type NotificationSignalNoticeProps = {\n signal: SignalData;\n};\n\nexport const MCP_EVENT_GAP_MESSAGE = 'Gap: events may have been skipped';\nexport const MCP_EVENT_UNTRUSTED_LABEL = 'Untrusted event data from the MCP server';\n\nconst getNotificationTitle = (signal: SignalData) => {\n const notification = getNotificationMetadata(signal);\n if (notification?.signal === 'summary' || signal.tagName === 'notification-summary') return 'Notification summary';\n\n const source = notification?.source ?? formatSignalValue(signal.attributes?.source);\n const kind = notification?.kind ?? formatSignalValue(signal.attributes?.kind);\n if (source && kind) return `${source} / ${kind}`;\n return source ?? kind ?? 'Notification';\n};\n\nconst getMcpEventTitle = (info: McpEventSignalInfo) => {\n const title = [info.server, info.event].filter(Boolean).join(' · ') || 'MCP event';\n return info.kind === 'mcp-event-subscription-ended' ? `${title} · subscription ended` : title;\n};\n\nconst GapBadge = () => (\n <Tooltip>\n <TooltipTrigger render={<span />}>\n <Badge size=\"xs\" variant=\"amber\">\n gap\n </Badge>\n <span className=\"sr-only\">{MCP_EVENT_GAP_MESSAGE}</span>\n </TooltipTrigger>\n <TooltipContent>{MCP_EVENT_GAP_MESSAGE}</TooltipContent>\n </Tooltip>\n);\n\nexport const NotificationSignalNotice = ({ signal }: NotificationSignalNoticeProps) => {\n const notification = getNotificationMetadata(signal);\n const mcpEvent = getMcpEventSignalInfo(signal);\n const priority = notification?.priority ?? formatSignalValue(signal.attributes?.priority);\n const pending = formatSignalValue(notification?.pending) ?? formatSignalValue(signal.attributes?.pending);\n const status = notification?.status ?? formatSignalValue(signal.attributes?.status);\n const text = signalContentsToText(signal.contents);\n return (\n <NotificationActivity\n label={mcpEvent ? getMcpEventTitle(mcpEvent) : getNotificationTitle(signal)}\n message={text}\n priority={priority}\n status={status}\n pending={pending}\n extraBadges={mcpEvent?.truncated ? <GapBadge /> : undefined}\n messageLabel={mcpEvent?.kind === 'mcp-event' ? MCP_EVENT_UNTRUSTED_LABEL : undefined}\n />\n );\n};\n"],"names":["getNotificationMetadata","formatSignalValue","jsxs","Tooltip","TooltipTrigger","jsx","Badge","TooltipContent","getMcpEventSignalInfo","signalContentsToText","NotificationActivity"],"mappings":";;;;;;;;;;AAUO,MAAM,qBAAA,GAAwB;AAC9B,MAAM,yBAAA,GAA4B;AAEzC,MAAM,oBAAA,GAAuB,CAAC,MAAA,KAAuB;AACnD,EAAA,MAAM,YAAA,GAAeA,yDAAwB,MAAM,CAAA;AACnD,EAAA,IAAI,cAAc,MAAA,KAAW,SAAA,IAAa,MAAA,CAAO,OAAA,KAAY,wBAAwB,OAAO,sBAAA;AAE5F,EAAA,MAAM,SAAS,YAAA,EAAc,MAAA,IAAUC,kDAAA,CAAkB,MAAA,CAAO,YAAY,MAAM,CAAA;AAClF,EAAA,MAAM,OAAO,YAAA,EAAc,IAAA,IAAQA,kDAAA,CAAkB,MAAA,CAAO,YAAY,IAAI,CAAA;AAC5E,EAAA,IAAI,UAAU,IAAA,EAAM,OAAO,CAAA,EAAG,MAAM,MAAM,IAAI,CAAA,CAAA;AAC9C,EAAA,OAAO,UAAU,IAAA,IAAQ,cAAA;AAC3B,CAAA;AAEA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAA6B;AACrD,EAAA,MAAM,KAAA,GAAQ,CAAC,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,KAAK,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,KAAK,CAAA,IAAK,WAAA;AACvE,EAAA,OAAO,IAAA,CAAK,IAAA,KAAS,8BAAA,GAAiC,CAAA,EAAG,KAAK,CAAA,qBAAA,CAAA,GAA0B,KAAA;AAC1F,CAAA;AAEA,MAAM,QAAA,GAAW,sBACfC,eAAA,CAACC,eAAA,EAAA,EACC,QAAA,EAAA;AAAA,kBAAAD,eAAA,CAACE,sBAAA,EAAA,EAAe,MAAA,kBAAQC,cAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAC5B,QAAA,EAAA;AAAA,oBAAAA,cAAA,CAACC,WAAA,EAAA,EAAM,IAAA,EAAK,IAAA,EAAK,OAAA,EAAQ,SAAQ,QAAA,EAAA,KAAA,EAEjC,CAAA;AAAA,oBACAD,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,qBAAA,EAAsB;AAAA,GAAA,EACnD,CAAA;AAAA,kBACAA,cAAA,CAACE,0BAAgB,QAAA,EAAA,qBAAA,EAAsB;AAAA,CAAA,EACzC,CAAA;AAGK,MAAM,wBAAA,GAA2B,CAAC,EAAE,MAAA,EAAO,KAAqC;AACrF,EAAA,MAAM,YAAA,GAAeP,yDAAwB,MAAM,CAAA;AACnD,EAAA,MAAM,QAAA,GAAWQ,uDAAsB,MAAM,CAAA;AAC7C,EAAA,MAAM,WAAW,YAAA,EAAc,QAAA,IAAYP,kDAAA,CAAkB,MAAA,CAAO,YAAY,QAAQ,CAAA;AACxF,EAAA,MAAM,OAAA,GAAUA,mDAAkB,YAAA,EAAc,OAAO,KAAKA,kDAAA,CAAkB,MAAA,CAAO,YAAY,OAAO,CAAA;AACxG,EAAA,MAAM,SAAS,YAAA,EAAc,MAAA,IAAUA,kDAAA,CAAkB,MAAA,CAAO,YAAY,MAAM,CAAA;AAClF,EAAA,MAAM,IAAA,GAAOQ,qDAAA,CAAqB,MAAA,CAAO,QAAQ,CAAA;AACjD,EAAA,uBACEJ,cAAA;AAAA,IAACK,yCAAA;AAAA,IAAA;AAAA,MACC,OAAO,QAAA,GAAW,gBAAA,CAAiB,QAAQ,CAAA,GAAI,qBAAqB,MAAM,CAAA;AAAA,MAC1E,OAAA,EAAS,IAAA;AAAA,MACT,QAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA,EAAa,QAAA,EAAU,SAAA,mBAAYL,cAAA,CAAC,YAAS,CAAA,GAAK,MAAA;AAAA,MAClD,YAAA,EAAc,QAAA,EAAU,IAAA,KAAS,WAAA,GAAc,yBAAA,GAA4B;AAAA;AAAA,GAC7E;AAEJ;;;;;;"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { getNotificationMetadata, formatSignalValue, signalContentsToText } from './signal-data.es.js';
|
|
3
|
-
import { N as NotificationActivity } from '../../../notification-activity-
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { getNotificationMetadata, getMcpEventSignalInfo, formatSignalValue, signalContentsToText } from './signal-data.es.js';
|
|
3
|
+
import { N as NotificationActivity } from '../../../notification-activity-BRW1Xlj1.js';
|
|
4
|
+
import { B as Badge } from '../../../Badge-CHGARUEW.js';
|
|
5
|
+
import { T as Tooltip, c as TooltipTrigger, a as TooltipContent } from '../../../tooltip-DrsXZDAj.js';
|
|
4
6
|
|
|
7
|
+
const MCP_EVENT_GAP_MESSAGE = "Gap: events may have been skipped";
|
|
8
|
+
const MCP_EVENT_UNTRUSTED_LABEL = "Untrusted event data from the MCP server";
|
|
5
9
|
const getNotificationTitle = (signal) => {
|
|
6
10
|
const notification = getNotificationMetadata(signal);
|
|
7
11
|
if (notification?.signal === "summary" || signal.tagName === "notification-summary") return "Notification summary";
|
|
@@ -10,8 +14,20 @@ const getNotificationTitle = (signal) => {
|
|
|
10
14
|
if (source && kind) return `${source} / ${kind}`;
|
|
11
15
|
return source ?? kind ?? "Notification";
|
|
12
16
|
};
|
|
17
|
+
const getMcpEventTitle = (info) => {
|
|
18
|
+
const title = [info.server, info.event].filter(Boolean).join(" · ") || "MCP event";
|
|
19
|
+
return info.kind === "mcp-event-subscription-ended" ? `${title} · subscription ended` : title;
|
|
20
|
+
};
|
|
21
|
+
const GapBadge = () => /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
22
|
+
/* @__PURE__ */ jsxs(TooltipTrigger, { render: /* @__PURE__ */ jsx("span", {}), children: [
|
|
23
|
+
/* @__PURE__ */ jsx(Badge, { size: "xs", variant: "amber", children: "gap" }),
|
|
24
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: MCP_EVENT_GAP_MESSAGE })
|
|
25
|
+
] }),
|
|
26
|
+
/* @__PURE__ */ jsx(TooltipContent, { children: MCP_EVENT_GAP_MESSAGE })
|
|
27
|
+
] });
|
|
13
28
|
const NotificationSignalNotice = ({ signal }) => {
|
|
14
29
|
const notification = getNotificationMetadata(signal);
|
|
30
|
+
const mcpEvent = getMcpEventSignalInfo(signal);
|
|
15
31
|
const priority = notification?.priority ?? formatSignalValue(signal.attributes?.priority);
|
|
16
32
|
const pending = formatSignalValue(notification?.pending) ?? formatSignalValue(signal.attributes?.pending);
|
|
17
33
|
const status = notification?.status ?? formatSignalValue(signal.attributes?.status);
|
|
@@ -19,14 +35,16 @@ const NotificationSignalNotice = ({ signal }) => {
|
|
|
19
35
|
return /* @__PURE__ */ jsx(
|
|
20
36
|
NotificationActivity,
|
|
21
37
|
{
|
|
22
|
-
label: getNotificationTitle(signal),
|
|
38
|
+
label: mcpEvent ? getMcpEventTitle(mcpEvent) : getNotificationTitle(signal),
|
|
23
39
|
message: text,
|
|
24
40
|
priority,
|
|
25
41
|
status,
|
|
26
|
-
pending
|
|
42
|
+
pending,
|
|
43
|
+
extraBadges: mcpEvent?.truncated ? /* @__PURE__ */ jsx(GapBadge, {}) : void 0,
|
|
44
|
+
messageLabel: mcpEvent?.kind === "mcp-event" ? MCP_EVENT_UNTRUSTED_LABEL : void 0
|
|
27
45
|
}
|
|
28
46
|
);
|
|
29
47
|
};
|
|
30
48
|
|
|
31
|
-
export { NotificationSignalNotice };
|
|
49
|
+
export { MCP_EVENT_GAP_MESSAGE, MCP_EVENT_UNTRUSTED_LABEL, NotificationSignalNotice };
|
|
32
50
|
//# sourceMappingURL=notification-signal-notice.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-signal-notice.es.js","sources":["../../../../src/domains/chat/messages/notification-signal-notice.tsx"],"sourcesContent":["import { formatSignalValue, getNotificationMetadata, signalContentsToText } from './signal-data';\nimport type { SignalData } from './signal-data';\nimport { NotificationActivity } from '@/ds/components/ai/activity';\n\nexport type NotificationSignalNoticeProps = {\n signal: SignalData;\n};\n\nconst getNotificationTitle = (signal: SignalData) => {\n const notification = getNotificationMetadata(signal);\n if (notification?.signal === 'summary' || signal.tagName === 'notification-summary') return 'Notification summary';\n\n const source = notification?.source ?? formatSignalValue(signal.attributes?.source);\n const kind = notification?.kind ?? formatSignalValue(signal.attributes?.kind);\n if (source && kind) return `${source} / ${kind}`;\n return source ?? kind ?? 'Notification';\n};\n\nexport const NotificationSignalNotice = ({ signal }: NotificationSignalNoticeProps) => {\n const notification = getNotificationMetadata(signal);\n const priority = notification?.priority ?? formatSignalValue(signal.attributes?.priority);\n const pending = formatSignalValue(notification?.pending) ?? formatSignalValue(signal.attributes?.pending);\n const status = notification?.status ?? formatSignalValue(signal.attributes?.status);\n const text = signalContentsToText(signal.contents);\n return (\n <NotificationActivity\n label={getNotificationTitle(signal)}\n message={text}\n priority={priority}\n status={status}\n pending={pending}\n />\n );\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"notification-signal-notice.es.js","sources":["../../../../src/domains/chat/messages/notification-signal-notice.tsx"],"sourcesContent":["import { formatSignalValue, getMcpEventSignalInfo, getNotificationMetadata, signalContentsToText } from './signal-data';\nimport type { McpEventSignalInfo, SignalData } from './signal-data';\nimport { NotificationActivity } from '@/ds/components/ai/activity';\nimport { Badge } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip/tooltip';\n\nexport type NotificationSignalNoticeProps = {\n signal: SignalData;\n};\n\nexport const MCP_EVENT_GAP_MESSAGE = 'Gap: events may have been skipped';\nexport const MCP_EVENT_UNTRUSTED_LABEL = 'Untrusted event data from the MCP server';\n\nconst getNotificationTitle = (signal: SignalData) => {\n const notification = getNotificationMetadata(signal);\n if (notification?.signal === 'summary' || signal.tagName === 'notification-summary') return 'Notification summary';\n\n const source = notification?.source ?? formatSignalValue(signal.attributes?.source);\n const kind = notification?.kind ?? formatSignalValue(signal.attributes?.kind);\n if (source && kind) return `${source} / ${kind}`;\n return source ?? kind ?? 'Notification';\n};\n\nconst getMcpEventTitle = (info: McpEventSignalInfo) => {\n const title = [info.server, info.event].filter(Boolean).join(' · ') || 'MCP event';\n return info.kind === 'mcp-event-subscription-ended' ? `${title} · subscription ended` : title;\n};\n\nconst GapBadge = () => (\n <Tooltip>\n <TooltipTrigger render={<span />}>\n <Badge size=\"xs\" variant=\"amber\">\n gap\n </Badge>\n <span className=\"sr-only\">{MCP_EVENT_GAP_MESSAGE}</span>\n </TooltipTrigger>\n <TooltipContent>{MCP_EVENT_GAP_MESSAGE}</TooltipContent>\n </Tooltip>\n);\n\nexport const NotificationSignalNotice = ({ signal }: NotificationSignalNoticeProps) => {\n const notification = getNotificationMetadata(signal);\n const mcpEvent = getMcpEventSignalInfo(signal);\n const priority = notification?.priority ?? formatSignalValue(signal.attributes?.priority);\n const pending = formatSignalValue(notification?.pending) ?? formatSignalValue(signal.attributes?.pending);\n const status = notification?.status ?? formatSignalValue(signal.attributes?.status);\n const text = signalContentsToText(signal.contents);\n return (\n <NotificationActivity\n label={mcpEvent ? getMcpEventTitle(mcpEvent) : getNotificationTitle(signal)}\n message={text}\n priority={priority}\n status={status}\n pending={pending}\n extraBadges={mcpEvent?.truncated ? <GapBadge /> : undefined}\n messageLabel={mcpEvent?.kind === 'mcp-event' ? MCP_EVENT_UNTRUSTED_LABEL : undefined}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;AAUO,MAAM,qBAAA,GAAwB;AAC9B,MAAM,yBAAA,GAA4B;AAEzC,MAAM,oBAAA,GAAuB,CAAC,MAAA,KAAuB;AACnD,EAAA,MAAM,YAAA,GAAe,wBAAwB,MAAM,CAAA;AACnD,EAAA,IAAI,cAAc,MAAA,KAAW,SAAA,IAAa,MAAA,CAAO,OAAA,KAAY,wBAAwB,OAAO,sBAAA;AAE5F,EAAA,MAAM,SAAS,YAAA,EAAc,MAAA,IAAU,iBAAA,CAAkB,MAAA,CAAO,YAAY,MAAM,CAAA;AAClF,EAAA,MAAM,OAAO,YAAA,EAAc,IAAA,IAAQ,iBAAA,CAAkB,MAAA,CAAO,YAAY,IAAI,CAAA;AAC5E,EAAA,IAAI,UAAU,IAAA,EAAM,OAAO,CAAA,EAAG,MAAM,MAAM,IAAI,CAAA,CAAA;AAC9C,EAAA,OAAO,UAAU,IAAA,IAAQ,cAAA;AAC3B,CAAA;AAEA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAA6B;AACrD,EAAA,MAAM,KAAA,GAAQ,CAAC,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,KAAK,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,KAAK,CAAA,IAAK,WAAA;AACvE,EAAA,OAAO,IAAA,CAAK,IAAA,KAAS,8BAAA,GAAiC,CAAA,EAAG,KAAK,CAAA,qBAAA,CAAA,GAA0B,KAAA;AAC1F,CAAA;AAEA,MAAM,QAAA,GAAW,sBACf,IAAA,CAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,kBAAA,IAAA,CAAC,cAAA,EAAA,EAAe,MAAA,kBAAQ,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAC5B,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAA,EAAA,EAAM,IAAA,EAAK,IAAA,EAAK,OAAA,EAAQ,SAAQ,QAAA,EAAA,KAAA,EAEjC,CAAA;AAAA,oBACA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,qBAAA,EAAsB;AAAA,GAAA,EACnD,CAAA;AAAA,kBACA,GAAA,CAAC,kBAAgB,QAAA,EAAA,qBAAA,EAAsB;AAAA,CAAA,EACzC,CAAA;AAGK,MAAM,wBAAA,GAA2B,CAAC,EAAE,MAAA,EAAO,KAAqC;AACrF,EAAA,MAAM,YAAA,GAAe,wBAAwB,MAAM,CAAA;AACnD,EAAA,MAAM,QAAA,GAAW,sBAAsB,MAAM,CAAA;AAC7C,EAAA,MAAM,WAAW,YAAA,EAAc,QAAA,IAAY,iBAAA,CAAkB,MAAA,CAAO,YAAY,QAAQ,CAAA;AACxF,EAAA,MAAM,OAAA,GAAU,kBAAkB,YAAA,EAAc,OAAO,KAAK,iBAAA,CAAkB,MAAA,CAAO,YAAY,OAAO,CAAA;AACxG,EAAA,MAAM,SAAS,YAAA,EAAc,MAAA,IAAU,iBAAA,CAAkB,MAAA,CAAO,YAAY,MAAM,CAAA;AAClF,EAAA,MAAM,IAAA,GAAO,oBAAA,CAAqB,MAAA,CAAO,QAAQ,CAAA;AACjD,EAAA,uBACE,GAAA;AAAA,IAAC,oBAAA;AAAA,IAAA;AAAA,MACC,OAAO,QAAA,GAAW,gBAAA,CAAiB,QAAQ,CAAA,GAAI,qBAAqB,MAAM,CAAA;AAAA,MAC1E,OAAA,EAAS,IAAA;AAAA,MACT,QAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA,EAAa,QAAA,EAAU,SAAA,mBAAY,GAAA,CAAC,YAAS,CAAA,GAAK,MAAA;AAAA,MAClD,YAAA,EAAc,QAAA,EAAU,IAAA,KAAS,WAAA,GAAc,yBAAA,GAA4B;AAAA;AAAA,GAC7E;AAEJ;;;;"}
|
|
@@ -55,6 +55,17 @@ const toReactiveSignalData = (message) => {
|
|
|
55
55
|
...isRecord(signal.metadata) ? { metadata: signal.metadata } : {}
|
|
56
56
|
};
|
|
57
57
|
};
|
|
58
|
+
const getMcpEventSignalInfo = (signal) => {
|
|
59
|
+
const kind = getNotificationMetadata(signal)?.kind ?? formatSignalValue(signal.attributes?.kind);
|
|
60
|
+
if (kind !== "mcp-event" && kind !== "mcp-event-subscription-ended") return void 0;
|
|
61
|
+
const attributes = signal.attributes ?? {};
|
|
62
|
+
return {
|
|
63
|
+
kind,
|
|
64
|
+
server: formatSignalValue(attributes.server) || void 0,
|
|
65
|
+
event: formatSignalValue(attributes.event) || void 0,
|
|
66
|
+
truncated: attributes.truncated === true || attributes.truncated === "true"
|
|
67
|
+
};
|
|
68
|
+
};
|
|
58
69
|
const getNotificationMetadata = (signal) => {
|
|
59
70
|
const notification = isRecord(signal.metadata?.notification) ? signal.metadata.notification : void 0;
|
|
60
71
|
if (!notification) return void 0;
|
|
@@ -70,6 +81,7 @@ const getNotificationMetadata = (signal) => {
|
|
|
70
81
|
};
|
|
71
82
|
|
|
72
83
|
exports.formatSignalValue = formatSignalValue;
|
|
84
|
+
exports.getMcpEventSignalInfo = getMcpEventSignalInfo;
|
|
73
85
|
exports.getNotificationMetadata = getNotificationMetadata;
|
|
74
86
|
exports.getSignalType = getSignalType;
|
|
75
87
|
exports.isRecord = isRecord;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signal-data.cjs.js","sources":["../../../../src/domains/chat/messages/signal-data.ts"],"sourcesContent":["import type { MastraDBMessage } from '@mastra/core/agent/message-list';\n\nexport type SignalData = {\n id?: string;\n type?: string;\n tagName?: string;\n contents?: unknown;\n attributes?: Record<string, string | number | boolean | null | undefined>;\n metadata?: Record<string, unknown>;\n};\n\nexport type NotificationSignalMetadata = {\n signal?: 'notification' | 'summary';\n recordId?: string;\n source?: string;\n kind?: string;\n priority?: string;\n status?: string;\n pending?: number;\n};\n\nexport const isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport const signalContentsToText = (contents: unknown): string => {\n if (typeof contents === 'string') return contents;\n if (!Array.isArray(contents)) return '';\n\n return contents\n .flatMap(part => {\n if (!isRecord(part)) return [];\n return part.type === 'text' && typeof part.text === 'string' && part.text.length > 0 ? [part.text] : [];\n })\n .join('\\n');\n};\n\nexport const formatSignalValue = (value: unknown): string | undefined => {\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean') return String(value);\n return undefined;\n};\n\nexport const isSignalData = (value: unknown): value is SignalData => {\n if (!isRecord(value)) return false;\n return value.type === 'notification' || value.type === 'state' || value.type === 'reactive';\n};\n\nconst getSignalMetadata = (message: MastraDBMessage): Record<string, unknown> | undefined => {\n const signal = message.content.metadata?.signal;\n return isRecord(signal) ? signal : undefined;\n};\n\n/**\n * Resolve the signal type for a persisted `role: 'signal'` message, mirroring\n * core's `getSignalType`. The type is stored under `content.metadata.signal.type`,\n * falling back to the top-level `message.type`.\n */\nexport const getSignalType = (message: MastraDBMessage): string | undefined => {\n const type = getSignalMetadata(message)?.type;\n return typeof type === 'string' ? type : message.type;\n};\n\n/**\n * User-message signals (the persisted echo of a user turn sent via `sendSignal`)\n * use `type: 'user'` or `'user-message'`. They render as a user message on\n * reload. Every other signal is a reactive/non-user signal that mirrors the\n * streaming accumulator's `data-signal` behavior: a signal badge folded onto an\n * assistant message.\n */\nexport const isUserSignalType = (type: string | undefined): boolean => type === 'user' || type === 'user-message';\n\nconst signalPartsToContents = (parts: MastraDBMessage['content']['parts']): unknown => {\n const contents: Array<{ type: 'text'; text: string } | { type: 'file'; data: string; mediaType: string }> = [];\n for (const rawPart of parts) {\n const part = rawPart as Record<string, unknown>;\n if (part.type === 'text' && typeof part.text === 'string') {\n contents.push({ type: 'text', text: part.text });\n continue;\n }\n if (part.type === 'file' && typeof part.data === 'string') {\n const mediaType =\n (typeof part.mediaType === 'string' ? part.mediaType : undefined) ??\n (typeof part.mimeType === 'string' ? part.mimeType : undefined) ??\n 'application/octet-stream';\n contents.push({ type: 'file', data: part.data, mediaType });\n }\n }\n return contents.length === 1 && contents[0]?.type === 'text' ? contents[0].text : contents;\n};\n\n/**\n * Build the `data-signal` payload for a persisted reactive signal row so the\n * existing `SignalBadge` can render it on read-back. Mirrors the 1.41.0\n * `to-assistant-ui-message` conversion that was lost when the chat renderer was\n * rewritten (PR #17774).\n */\nexport const toReactiveSignalData = (message: MastraDBMessage): SignalData => {\n const signal = getSignalMetadata(message) ?? {};\n return {\n id: typeof signal.id === 'string' ? signal.id : message.id,\n type: getSignalType(message),\n tagName: typeof signal.tagName === 'string' ? signal.tagName : message.type,\n contents: signalPartsToContents(message.content.parts),\n ...(isRecord(signal.attributes) ? { attributes: signal.attributes as SignalData['attributes'] } : {}),\n ...(isRecord(signal.metadata) ? { metadata: signal.metadata } : {}),\n };\n};\n\nexport const getNotificationMetadata = (signal: SignalData): NotificationSignalMetadata | undefined => {\n const notification = isRecord(signal.metadata?.notification) ? signal.metadata.notification : undefined;\n if (!notification) return undefined;\n\n return {\n signal:\n notification.signal === 'notification' || notification.signal === 'summary' ? notification.signal : undefined,\n recordId: typeof notification.recordId === 'string' ? notification.recordId : undefined,\n source: typeof notification.source === 'string' ? notification.source : undefined,\n kind: typeof notification.kind === 'string' ? notification.kind : undefined,\n priority: typeof notification.priority === 'string' ? notification.priority : undefined,\n status: typeof notification.status === 'string' ? notification.status : undefined,\n pending: typeof notification.pending === 'number' ? notification.pending : undefined,\n };\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"signal-data.cjs.js","sources":["../../../../src/domains/chat/messages/signal-data.ts"],"sourcesContent":["import type { MastraDBMessage } from '@mastra/core/agent/message-list';\n\nexport type SignalData = {\n id?: string;\n type?: string;\n tagName?: string;\n contents?: unknown;\n attributes?: Record<string, string | number | boolean | null | undefined>;\n metadata?: Record<string, unknown>;\n};\n\nexport type NotificationSignalMetadata = {\n signal?: 'notification' | 'summary';\n recordId?: string;\n source?: string;\n kind?: string;\n priority?: string;\n status?: string;\n pending?: number;\n};\n\nexport const isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport const signalContentsToText = (contents: unknown): string => {\n if (typeof contents === 'string') return contents;\n if (!Array.isArray(contents)) return '';\n\n return contents\n .flatMap(part => {\n if (!isRecord(part)) return [];\n return part.type === 'text' && typeof part.text === 'string' && part.text.length > 0 ? [part.text] : [];\n })\n .join('\\n');\n};\n\nexport const formatSignalValue = (value: unknown): string | undefined => {\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean') return String(value);\n return undefined;\n};\n\nexport const isSignalData = (value: unknown): value is SignalData => {\n if (!isRecord(value)) return false;\n return value.type === 'notification' || value.type === 'state' || value.type === 'reactive';\n};\n\nconst getSignalMetadata = (message: MastraDBMessage): Record<string, unknown> | undefined => {\n const signal = message.content.metadata?.signal;\n return isRecord(signal) ? signal : undefined;\n};\n\n/**\n * Resolve the signal type for a persisted `role: 'signal'` message, mirroring\n * core's `getSignalType`. The type is stored under `content.metadata.signal.type`,\n * falling back to the top-level `message.type`.\n */\nexport const getSignalType = (message: MastraDBMessage): string | undefined => {\n const type = getSignalMetadata(message)?.type;\n return typeof type === 'string' ? type : message.type;\n};\n\n/**\n * User-message signals (the persisted echo of a user turn sent via `sendSignal`)\n * use `type: 'user'` or `'user-message'`. They render as a user message on\n * reload. Every other signal is a reactive/non-user signal that mirrors the\n * streaming accumulator's `data-signal` behavior: a signal badge folded onto an\n * assistant message.\n */\nexport const isUserSignalType = (type: string | undefined): boolean => type === 'user' || type === 'user-message';\n\nconst signalPartsToContents = (parts: MastraDBMessage['content']['parts']): unknown => {\n const contents: Array<{ type: 'text'; text: string } | { type: 'file'; data: string; mediaType: string }> = [];\n for (const rawPart of parts) {\n const part = rawPart as Record<string, unknown>;\n if (part.type === 'text' && typeof part.text === 'string') {\n contents.push({ type: 'text', text: part.text });\n continue;\n }\n if (part.type === 'file' && typeof part.data === 'string') {\n const mediaType =\n (typeof part.mediaType === 'string' ? part.mediaType : undefined) ??\n (typeof part.mimeType === 'string' ? part.mimeType : undefined) ??\n 'application/octet-stream';\n contents.push({ type: 'file', data: part.data, mediaType });\n }\n }\n return contents.length === 1 && contents[0]?.type === 'text' ? contents[0].text : contents;\n};\n\n/**\n * Build the `data-signal` payload for a persisted reactive signal row so the\n * existing `SignalBadge` can render it on read-back. Mirrors the 1.41.0\n * `to-assistant-ui-message` conversion that was lost when the chat renderer was\n * rewritten (PR #17774).\n */\nexport const toReactiveSignalData = (message: MastraDBMessage): SignalData => {\n const signal = getSignalMetadata(message) ?? {};\n return {\n id: typeof signal.id === 'string' ? signal.id : message.id,\n type: getSignalType(message),\n tagName: typeof signal.tagName === 'string' ? signal.tagName : message.type,\n contents: signalPartsToContents(message.content.parts),\n ...(isRecord(signal.attributes) ? { attributes: signal.attributes as SignalData['attributes'] } : {}),\n ...(isRecord(signal.metadata) ? { metadata: signal.metadata } : {}),\n };\n};\n\nexport type McpEventSignalInfo = {\n kind: 'mcp-event' | 'mcp-event-subscription-ended';\n server?: string;\n event?: string;\n /** The occurrence followed a gap: events may have been skipped. */\n truncated: boolean;\n};\n\n/** Server, event and gap flag of an MCP event notification (`@mastra/mcp` event signals); undefined for any other signal. */\nexport const getMcpEventSignalInfo = (signal: SignalData): McpEventSignalInfo | undefined => {\n const kind = getNotificationMetadata(signal)?.kind ?? formatSignalValue(signal.attributes?.kind);\n if (kind !== 'mcp-event' && kind !== 'mcp-event-subscription-ended') return undefined;\n const attributes = signal.attributes ?? {};\n return {\n kind,\n server: formatSignalValue(attributes.server) || undefined,\n event: formatSignalValue(attributes.event) || undefined,\n truncated: attributes.truncated === true || attributes.truncated === 'true',\n };\n};\n\nexport const getNotificationMetadata = (signal: SignalData): NotificationSignalMetadata | undefined => {\n const notification = isRecord(signal.metadata?.notification) ? signal.metadata.notification : undefined;\n if (!notification) return undefined;\n\n return {\n signal:\n notification.signal === 'notification' || notification.signal === 'summary' ? notification.signal : undefined,\n recordId: typeof notification.recordId === 'string' ? notification.recordId : undefined,\n source: typeof notification.source === 'string' ? notification.source : undefined,\n kind: typeof notification.kind === 'string' ? notification.kind : undefined,\n priority: typeof notification.priority === 'string' ? notification.priority : undefined,\n status: typeof notification.status === 'string' ? notification.status : undefined,\n pending: typeof notification.pending === 'number' ? notification.pending : undefined,\n };\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -51,6 +51,17 @@ const toReactiveSignalData = (message) => {
|
|
|
51
51
|
...isRecord(signal.metadata) ? { metadata: signal.metadata } : {}
|
|
52
52
|
};
|
|
53
53
|
};
|
|
54
|
+
const getMcpEventSignalInfo = (signal) => {
|
|
55
|
+
const kind = getNotificationMetadata(signal)?.kind ?? formatSignalValue(signal.attributes?.kind);
|
|
56
|
+
if (kind !== "mcp-event" && kind !== "mcp-event-subscription-ended") return void 0;
|
|
57
|
+
const attributes = signal.attributes ?? {};
|
|
58
|
+
return {
|
|
59
|
+
kind,
|
|
60
|
+
server: formatSignalValue(attributes.server) || void 0,
|
|
61
|
+
event: formatSignalValue(attributes.event) || void 0,
|
|
62
|
+
truncated: attributes.truncated === true || attributes.truncated === "true"
|
|
63
|
+
};
|
|
64
|
+
};
|
|
54
65
|
const getNotificationMetadata = (signal) => {
|
|
55
66
|
const notification = isRecord(signal.metadata?.notification) ? signal.metadata.notification : void 0;
|
|
56
67
|
if (!notification) return void 0;
|
|
@@ -65,5 +76,5 @@ const getNotificationMetadata = (signal) => {
|
|
|
65
76
|
};
|
|
66
77
|
};
|
|
67
78
|
|
|
68
|
-
export { formatSignalValue, getNotificationMetadata, getSignalType, isRecord, isSignalData, isUserSignalType, signalContentsToText, toReactiveSignalData };
|
|
79
|
+
export { formatSignalValue, getMcpEventSignalInfo, getNotificationMetadata, getSignalType, isRecord, isSignalData, isUserSignalType, signalContentsToText, toReactiveSignalData };
|
|
69
80
|
//# sourceMappingURL=signal-data.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signal-data.es.js","sources":["../../../../src/domains/chat/messages/signal-data.ts"],"sourcesContent":["import type { MastraDBMessage } from '@mastra/core/agent/message-list';\n\nexport type SignalData = {\n id?: string;\n type?: string;\n tagName?: string;\n contents?: unknown;\n attributes?: Record<string, string | number | boolean | null | undefined>;\n metadata?: Record<string, unknown>;\n};\n\nexport type NotificationSignalMetadata = {\n signal?: 'notification' | 'summary';\n recordId?: string;\n source?: string;\n kind?: string;\n priority?: string;\n status?: string;\n pending?: number;\n};\n\nexport const isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport const signalContentsToText = (contents: unknown): string => {\n if (typeof contents === 'string') return contents;\n if (!Array.isArray(contents)) return '';\n\n return contents\n .flatMap(part => {\n if (!isRecord(part)) return [];\n return part.type === 'text' && typeof part.text === 'string' && part.text.length > 0 ? [part.text] : [];\n })\n .join('\\n');\n};\n\nexport const formatSignalValue = (value: unknown): string | undefined => {\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean') return String(value);\n return undefined;\n};\n\nexport const isSignalData = (value: unknown): value is SignalData => {\n if (!isRecord(value)) return false;\n return value.type === 'notification' || value.type === 'state' || value.type === 'reactive';\n};\n\nconst getSignalMetadata = (message: MastraDBMessage): Record<string, unknown> | undefined => {\n const signal = message.content.metadata?.signal;\n return isRecord(signal) ? signal : undefined;\n};\n\n/**\n * Resolve the signal type for a persisted `role: 'signal'` message, mirroring\n * core's `getSignalType`. The type is stored under `content.metadata.signal.type`,\n * falling back to the top-level `message.type`.\n */\nexport const getSignalType = (message: MastraDBMessage): string | undefined => {\n const type = getSignalMetadata(message)?.type;\n return typeof type === 'string' ? type : message.type;\n};\n\n/**\n * User-message signals (the persisted echo of a user turn sent via `sendSignal`)\n * use `type: 'user'` or `'user-message'`. They render as a user message on\n * reload. Every other signal is a reactive/non-user signal that mirrors the\n * streaming accumulator's `data-signal` behavior: a signal badge folded onto an\n * assistant message.\n */\nexport const isUserSignalType = (type: string | undefined): boolean => type === 'user' || type === 'user-message';\n\nconst signalPartsToContents = (parts: MastraDBMessage['content']['parts']): unknown => {\n const contents: Array<{ type: 'text'; text: string } | { type: 'file'; data: string; mediaType: string }> = [];\n for (const rawPart of parts) {\n const part = rawPart as Record<string, unknown>;\n if (part.type === 'text' && typeof part.text === 'string') {\n contents.push({ type: 'text', text: part.text });\n continue;\n }\n if (part.type === 'file' && typeof part.data === 'string') {\n const mediaType =\n (typeof part.mediaType === 'string' ? part.mediaType : undefined) ??\n (typeof part.mimeType === 'string' ? part.mimeType : undefined) ??\n 'application/octet-stream';\n contents.push({ type: 'file', data: part.data, mediaType });\n }\n }\n return contents.length === 1 && contents[0]?.type === 'text' ? contents[0].text : contents;\n};\n\n/**\n * Build the `data-signal` payload for a persisted reactive signal row so the\n * existing `SignalBadge` can render it on read-back. Mirrors the 1.41.0\n * `to-assistant-ui-message` conversion that was lost when the chat renderer was\n * rewritten (PR #17774).\n */\nexport const toReactiveSignalData = (message: MastraDBMessage): SignalData => {\n const signal = getSignalMetadata(message) ?? {};\n return {\n id: typeof signal.id === 'string' ? signal.id : message.id,\n type: getSignalType(message),\n tagName: typeof signal.tagName === 'string' ? signal.tagName : message.type,\n contents: signalPartsToContents(message.content.parts),\n ...(isRecord(signal.attributes) ? { attributes: signal.attributes as SignalData['attributes'] } : {}),\n ...(isRecord(signal.metadata) ? { metadata: signal.metadata } : {}),\n };\n};\n\nexport const getNotificationMetadata = (signal: SignalData): NotificationSignalMetadata | undefined => {\n const notification = isRecord(signal.metadata?.notification) ? signal.metadata.notification : undefined;\n if (!notification) return undefined;\n\n return {\n signal:\n notification.signal === 'notification' || notification.signal === 'summary' ? notification.signal : undefined,\n recordId: typeof notification.recordId === 'string' ? notification.recordId : undefined,\n source: typeof notification.source === 'string' ? notification.source : undefined,\n kind: typeof notification.kind === 'string' ? notification.kind : undefined,\n priority: typeof notification.priority === 'string' ? notification.priority : undefined,\n status: typeof notification.status === 'string' ? notification.status : undefined,\n pending: typeof notification.pending === 'number' ? notification.pending : undefined,\n };\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"signal-data.es.js","sources":["../../../../src/domains/chat/messages/signal-data.ts"],"sourcesContent":["import type { MastraDBMessage } from '@mastra/core/agent/message-list';\n\nexport type SignalData = {\n id?: string;\n type?: string;\n tagName?: string;\n contents?: unknown;\n attributes?: Record<string, string | number | boolean | null | undefined>;\n metadata?: Record<string, unknown>;\n};\n\nexport type NotificationSignalMetadata = {\n signal?: 'notification' | 'summary';\n recordId?: string;\n source?: string;\n kind?: string;\n priority?: string;\n status?: string;\n pending?: number;\n};\n\nexport const isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport const signalContentsToText = (contents: unknown): string => {\n if (typeof contents === 'string') return contents;\n if (!Array.isArray(contents)) return '';\n\n return contents\n .flatMap(part => {\n if (!isRecord(part)) return [];\n return part.type === 'text' && typeof part.text === 'string' && part.text.length > 0 ? [part.text] : [];\n })\n .join('\\n');\n};\n\nexport const formatSignalValue = (value: unknown): string | undefined => {\n if (typeof value === 'string') return value;\n if (typeof value === 'number' || typeof value === 'boolean') return String(value);\n return undefined;\n};\n\nexport const isSignalData = (value: unknown): value is SignalData => {\n if (!isRecord(value)) return false;\n return value.type === 'notification' || value.type === 'state' || value.type === 'reactive';\n};\n\nconst getSignalMetadata = (message: MastraDBMessage): Record<string, unknown> | undefined => {\n const signal = message.content.metadata?.signal;\n return isRecord(signal) ? signal : undefined;\n};\n\n/**\n * Resolve the signal type for a persisted `role: 'signal'` message, mirroring\n * core's `getSignalType`. The type is stored under `content.metadata.signal.type`,\n * falling back to the top-level `message.type`.\n */\nexport const getSignalType = (message: MastraDBMessage): string | undefined => {\n const type = getSignalMetadata(message)?.type;\n return typeof type === 'string' ? type : message.type;\n};\n\n/**\n * User-message signals (the persisted echo of a user turn sent via `sendSignal`)\n * use `type: 'user'` or `'user-message'`. They render as a user message on\n * reload. Every other signal is a reactive/non-user signal that mirrors the\n * streaming accumulator's `data-signal` behavior: a signal badge folded onto an\n * assistant message.\n */\nexport const isUserSignalType = (type: string | undefined): boolean => type === 'user' || type === 'user-message';\n\nconst signalPartsToContents = (parts: MastraDBMessage['content']['parts']): unknown => {\n const contents: Array<{ type: 'text'; text: string } | { type: 'file'; data: string; mediaType: string }> = [];\n for (const rawPart of parts) {\n const part = rawPart as Record<string, unknown>;\n if (part.type === 'text' && typeof part.text === 'string') {\n contents.push({ type: 'text', text: part.text });\n continue;\n }\n if (part.type === 'file' && typeof part.data === 'string') {\n const mediaType =\n (typeof part.mediaType === 'string' ? part.mediaType : undefined) ??\n (typeof part.mimeType === 'string' ? part.mimeType : undefined) ??\n 'application/octet-stream';\n contents.push({ type: 'file', data: part.data, mediaType });\n }\n }\n return contents.length === 1 && contents[0]?.type === 'text' ? contents[0].text : contents;\n};\n\n/**\n * Build the `data-signal` payload for a persisted reactive signal row so the\n * existing `SignalBadge` can render it on read-back. Mirrors the 1.41.0\n * `to-assistant-ui-message` conversion that was lost when the chat renderer was\n * rewritten (PR #17774).\n */\nexport const toReactiveSignalData = (message: MastraDBMessage): SignalData => {\n const signal = getSignalMetadata(message) ?? {};\n return {\n id: typeof signal.id === 'string' ? signal.id : message.id,\n type: getSignalType(message),\n tagName: typeof signal.tagName === 'string' ? signal.tagName : message.type,\n contents: signalPartsToContents(message.content.parts),\n ...(isRecord(signal.attributes) ? { attributes: signal.attributes as SignalData['attributes'] } : {}),\n ...(isRecord(signal.metadata) ? { metadata: signal.metadata } : {}),\n };\n};\n\nexport type McpEventSignalInfo = {\n kind: 'mcp-event' | 'mcp-event-subscription-ended';\n server?: string;\n event?: string;\n /** The occurrence followed a gap: events may have been skipped. */\n truncated: boolean;\n};\n\n/** Server, event and gap flag of an MCP event notification (`@mastra/mcp` event signals); undefined for any other signal. */\nexport const getMcpEventSignalInfo = (signal: SignalData): McpEventSignalInfo | undefined => {\n const kind = getNotificationMetadata(signal)?.kind ?? formatSignalValue(signal.attributes?.kind);\n if (kind !== 'mcp-event' && kind !== 'mcp-event-subscription-ended') return undefined;\n const attributes = signal.attributes ?? {};\n return {\n kind,\n server: formatSignalValue(attributes.server) || undefined,\n event: formatSignalValue(attributes.event) || undefined,\n truncated: attributes.truncated === true || attributes.truncated === 'true',\n };\n};\n\nexport const getNotificationMetadata = (signal: SignalData): NotificationSignalMetadata | undefined => {\n const notification = isRecord(signal.metadata?.notification) ? signal.metadata.notification : undefined;\n if (!notification) return undefined;\n\n return {\n signal:\n notification.signal === 'notification' || notification.signal === 'summary' ? notification.signal : undefined,\n recordId: typeof notification.recordId === 'string' ? notification.recordId : undefined,\n source: typeof notification.source === 'string' ? notification.source : undefined,\n kind: typeof notification.kind === 'string' ? notification.kind : undefined,\n priority: typeof notification.priority === 'string' ? notification.priority : undefined,\n status: typeof notification.status === 'string' ? notification.status : undefined,\n pending: typeof notification.pending === 'number' ? notification.pending : undefined,\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 askUserCard = require('../../../../ask-user-card-
|
|
7
|
+
const askUserCard = require('../../../../ask-user-card-C-N5rpYG.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-card-
|
|
3
|
+
import { A as AskUser } from '../../../../ask-user-card-B9q_GFTt.js';
|
|
4
4
|
|
|
5
5
|
const AskUserBadge = ({ toolCallId, suspendPayload, result }) => {
|
|
6
6
|
const { approveToolcall, isRunning, toolCallApprovals } = useToolCall();
|
|
@@ -29,6 +29,7 @@ require('@mastra/core/utils/safe-stringify');
|
|
|
29
29
|
const codeEditor = require('../../../../code-editor-4ukTuvqG.cjs');
|
|
30
30
|
require('../../../../highlight-DfnRU-Am.cjs');
|
|
31
31
|
require('@base-ui/react/use-render');
|
|
32
|
+
require('../../../../tooltip-BppwIf6Y.cjs');
|
|
32
33
|
require('../../../workflows/workflow/input/processor-input.cjs.js');
|
|
33
34
|
require('react-hook-form');
|
|
34
35
|
require('../../../../lib/form/field-context.cjs.js');
|
|
@@ -39,8 +40,6 @@ require('@autoform/react');
|
|
|
39
40
|
require('@lukeed/uuid');
|
|
40
41
|
require('../../../../lib/form/dynamic-form.cjs.js');
|
|
41
42
|
const icons_WorkflowIcon = require('../../../../icons/WorkflowIcon.cjs.js');
|
|
42
|
-
require('../../../../data-list-DlXU1PLQ.cjs');
|
|
43
|
-
require('../../../../keyboard/keyboard-shortcuts-context.cjs.js');
|
|
44
43
|
const lib_framework = require('../../../../lib/framework.cjs.js');
|
|
45
44
|
require('../../../workflows/components/workflow-information.cjs.js');
|
|
46
45
|
require('@base-ui/react/combobox');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-badge.cjs.js","sources":["../../../../../src/domains/chat/tools/badges/workflow-badge.tsx"],"sourcesContent":["import type { GetWorkflowResponse } from '@mastra/client-js';\nimport { useWorkflow } from '@mastra/react/hooks/workflows';\nimport { Eye } from 'lucide-react';\nimport { useContext, useEffect } from 'react';\nimport { BackgroundTaskMetadataDialogTrigger } from './background-task-metadata-dialog';\nimport type { MessageMetadata } from '@/domains/chat';\n\nimport { LoadingBadge } from '@/domains/chat/components/loading-badge';\nimport { NetworkChoiceMetadataDialogTrigger } from '@/domains/chat/components/network-choice-metadata-dialog';\nimport { SectionLabel } from '@/domains/chat/components/section-label';\nimport { awaitsToolApproval } from '@/domains/chat/tools/badges/awaits-tool-approval';\nimport type { ToolApprovalRequest } from '@/domains/chat/tools/badges/tool-approval-badge';\nimport { ToolApprovalBadge } from '@/domains/chat/tools/badges/tool-approval-badge';\nimport { useEntityRequestContext } from '@/domains/request-context/hooks/use-entity-request-context';\nimport {\n WorkflowGraph,\n WorkflowRunContext,\n WorkflowSelectedStepProvider,\n WorkflowStepDetailProvider,\n useWorkflowStepDetail,\n} from '@/domains/workflows';\nimport { WorkflowStepDetailContent } from '@/domains/workflows/components/workflow-step-detail';\nimport { PlaygroundWorkflowRunProvider } from '@/domains/workflows/context/playground-workflow-run-provider';\nimport type { WorkflowRunStreamResult } from '@/domains/workflows/context/workflow-run-context';\nimport { ToolCallMono } from '@/ds/components/ai/tool-call';\nimport { Button } from '@/ds/components/Button';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { useLinkComponent } from '@/lib/framework';\n\nexport interface WorkflowBadgeProps extends Omit<ToolApprovalRequest, 'toolCalled'> {\n workflowId: string;\n result?: any;\n isStreaming?: boolean;\n metadata?: MessageMetadata;\n suspendPayload?: any;\n toolCalled?: boolean;\n}\n\nexport const WorkflowBadge = ({\n result,\n workflowId,\n isStreaming,\n metadata,\n toolCallId,\n toolApprovalMetadata,\n suspendPayload,\n toolName,\n isNetwork,\n toolCalled,\n}: WorkflowBadgeProps) => {\n const { runId, status } = result || {};\n const { data: workflow, isLoading: isWorkflowLoading } = useWorkflow({\n workflowId,\n requestContext: useEntityRequestContext('workflow', workflowId)[0],\n queryOptions: { enabled: Boolean(workflowId) },\n });\n const routingDecision = metadata?.mode === 'network' ? metadata.routingDecision : undefined;\n const selectionReason =\n metadata?.mode === 'network' ? (routingDecision?.selectionReason ?? metadata.selectionReason) : undefined;\n const agentNetworkInput = metadata?.mode === 'network' ? (routingDecision ?? metadata.agentInput) : undefined;\n\n const bgEntry =\n (metadata?.mode === 'stream' || metadata?.mode === 'generate') && metadata?.backgroundTasks\n ? metadata.backgroundTasks[toolCallId]\n : undefined;\n\n let suspendPayloadSlot =\n typeof suspendPayload === 'string' ? (\n <ToolCallMono copyText={suspendPayload} className=\"text-muted-foreground\">\n {suspendPayload}\n </ToolCallMono>\n ) : (\n <CodeEditor data={suspendPayload} data-testid=\"tool-suspend-payload\" />\n );\n\n if (isWorkflowLoading || !workflow) return <LoadingBadge />;\n\n const toolCalledOrFinished = toolCalled ?? !!status;\n const showsRun = isStreaming || Boolean(runId);\n const hasBody =\n showsRun ||\n Boolean(suspendPayload) ||\n awaitsToolApproval({ toolApprovalMetadata, toolCalled: toolCalledOrFinished });\n\n return (\n <ToolApprovalBadge\n approval={{\n toolCalled: toolCalledOrFinished,\n toolCallId,\n toolApprovalMetadata,\n toolName,\n isNetwork,\n isGenerateMode: metadata?.mode === 'generate',\n }}\n data-testid=\"workflow-badge\"\n icon={<WorkflowIcon className=\"text-span-workflow\" />}\n title={workflow.name}\n initialCollapsed={false}\n extraInfo={\n metadata?.mode === 'network' ? (\n <NetworkChoiceMetadataDialogTrigger\n selectionReason={selectionReason ?? ''}\n input={agentNetworkInput as string | Record<string, unknown> | undefined}\n />\n ) : bgEntry?.taskId && bgEntry?.startedAt ? (\n <BackgroundTaskMetadataDialogTrigger backgroundTask={bgEntry} />\n ) : null\n }\n >\n {hasBody && (\n <>\n {!isStreaming && runId && (\n <PlaygroundWorkflowRunProvider workflowId={workflowId} initialRunId={runId} withoutTimeTravel>\n <WorkflowBadgeExtended workflowId={workflowId} workflow={workflow} runId={runId} />\n </PlaygroundWorkflowRunProvider>\n )}\n\n {isStreaming && <WorkflowBadgeExtended workflowId={workflowId} workflow={workflow} runId={runId} />}\n\n {suspendPayloadSlot !== undefined && suspendPayload && (\n <div>\n <SectionLabel>Workflow suspend payload</SectionLabel>\n {suspendPayloadSlot}\n </div>\n )}\n </>\n )}\n </ToolApprovalBadge>\n );\n};\n\ninterface WorkflowBadgeExtendedProps {\n workflowId: string;\n runId?: string;\n workflow: GetWorkflowResponse;\n}\n\nconst WorkflowBadgeExtended = ({ workflowId, workflow, runId }: WorkflowBadgeExtendedProps) => {\n const requestContext = useEntityRequestContext('workflow', workflowId)[0];\n const { Link } = useLinkComponent();\n const { isLoadingRunExecutionResult } = useContext(WorkflowRunContext);\n\n return (\n <>\n <div className=\"flex items-center gap-2 pb-2\">\n <Button icon={<WorkflowIcon />} render={<Link href={`/workflows/${workflowId}/graph`} />}>\n Go to workflow\n </Button>\n {runId && (\n <Button icon={<Eye />} render={<Link href={`/workflows/${workflowId}/graph/${runId}`} />}>\n See run\n </Button>\n )}\n </div>\n\n <WorkflowSelectedStepProvider>\n <WorkflowStepDetailProvider>\n <div className=\"h-[60vh] w-full overflow-hidden rounded-md\">\n <WorkflowGraph\n workflowId={workflowId}\n workflow={workflow}\n isLoading={isLoadingRunExecutionResult}\n requestContext={requestContext}\n />\n </div>\n <WorkflowBadgeStepDetail requestContext={requestContext} />\n </WorkflowStepDetailProvider>\n </WorkflowSelectedStepProvider>\n </>\n );\n};\n\nconst WorkflowBadgeStepDetail = ({ requestContext }: { requestContext: Record<string, any> }) => {\n const { stepDetail } = useWorkflowStepDetail();\n if (!stepDetail) return null;\n return (\n <div className=\"mt-2 flex max-h-[60vh] flex-col overflow-hidden rounded-md border border-border bg-background\">\n <WorkflowStepDetailContent requestContext={requestContext} />\n </div>\n );\n};\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const useWorkflowStream = (workflowFullState?: WorkflowRunStreamResult) => {\n const { setResult } = useContext(WorkflowRunContext);\n\n useEffect(() => {\n if (!workflowFullState) return;\n setResult(workflowFullState);\n }, [workflowFullState, setResult]);\n};\n"],"names":["useWorkflow","useEntityRequestContext","jsx","ToolCallMono","CodeEditor","LoadingBadge","awaitsToolApproval","ToolApprovalBadge","WorkflowIcon","NetworkChoiceMetadataDialogTrigger","BackgroundTaskMetadataDialogTrigger","jsxs","Fragment","PlaygroundWorkflowRunProvider","SectionLabel","useLinkComponent","useContext","WorkflowRunContext","Button","Eye","WorkflowSelectedStepProvider","WorkflowStepDetailProvider","WorkflowGraph","useWorkflowStepDetail","WorkflowStepDetailContent","useEffect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCO,MAAM,gBAAgB,CAAC;AAAA,EAC5B,MAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,oBAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,KAA0B;AACxB,EAAA,MAAM,EAAE,KAAA,EAAO,MAAA,EAAO,GAAI,UAAU,EAAC;AACrC,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,iBAAA,KAAsBA,qBAAA,CAAY;AAAA,IACnE,UAAA;AAAA,IACA,cAAA,EAAgBC,4EAAA,CAAwB,UAAA,EAAY,UAAU,EAAE,CAAC,CAAA;AAAA,IACjE,YAAA,EAAc,EAAE,OAAA,EAAS,OAAA,CAAQ,UAAU,CAAA;AAAE,GAC9C,CAAA;AACD,EAAA,MAAM,eAAA,GAAkB,QAAA,EAAU,IAAA,KAAS,SAAA,GAAY,SAAS,eAAA,GAAkB,MAAA;AAClF,EAAA,MAAM,kBACJ,QAAA,EAAU,IAAA,KAAS,YAAa,eAAA,EAAiB,eAAA,IAAmB,SAAS,eAAA,GAAmB,MAAA;AAClG,EAAA,MAAM,oBAAoB,QAAA,EAAU,IAAA,KAAS,SAAA,GAAa,eAAA,IAAmB,SAAS,UAAA,GAAc,MAAA;AAEpG,EAAA,MAAM,OAAA,GAAA,CACH,QAAA,EAAU,IAAA,KAAS,QAAA,IAAY,QAAA,EAAU,IAAA,KAAS,UAAA,KAAe,QAAA,EAAU,eAAA,GACxE,QAAA,CAAS,eAAA,CAAgB,UAAU,CAAA,GACnC,MAAA;AAEN,EAAA,IAAI,qBACF,OAAO,cAAA,KAAmB,QAAA,mBACxBC,cAAA,CAACC,6BAAa,QAAA,EAAU,cAAA,EAAgB,SAAA,EAAU,uBAAA,EAC/C,0BACH,CAAA,mBAEAD,cAAA,CAACE,yBAAW,IAAA,EAAM,cAAA,EAAgB,eAAY,sBAAA,EAAuB,CAAA;AAGzE,EAAA,IAAI,iBAAA,IAAqB,CAAC,QAAA,EAAU,sCAAQC,iDAAA,EAAA,EAAa,CAAA;AAEzD,EAAA,MAAM,oBAAA,GAAuB,UAAA,IAAc,CAAC,CAAC,MAAA;AAC7C,EAAA,MAAM,QAAA,GAAW,WAAA,IAAe,OAAA,CAAQ,KAAK,CAAA;AAC7C,EAAA,MAAM,OAAA,GACJ,QAAA,IACA,OAAA,CAAQ,cAAc,CAAA,IACtBC,gEAAmB,EAAE,oBAAA,EAAsB,UAAA,EAAY,oBAAA,EAAsB,CAAA;AAE/E,EAAA,uBACEJ,cAAA;AAAA,IAACK,6DAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU;AAAA,QACR,UAAA,EAAY,oBAAA;AAAA,QACZ,UAAA;AAAA,QACA,oBAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA;AAAA,QACA,cAAA,EAAgB,UAAU,IAAA,KAAS;AAAA,OACrC;AAAA,MACA,aAAA,EAAY,gBAAA;AAAA,MACZ,IAAA,kBAAML,cAAA,CAACM,+BAAA,EAAA,EAAa,SAAA,EAAU,oBAAA,EAAqB,CAAA;AAAA,MACnD,OAAO,QAAA,CAAS,IAAA;AAAA,MAChB,gBAAA,EAAkB,KAAA;AAAA,MAClB,SAAA,EACE,QAAA,EAAU,IAAA,KAAS,SAAA,mBACjBN,cAAA;AAAA,QAACO,sFAAA;AAAA,QAAA;AAAA,UACC,iBAAiB,eAAA,IAAmB,EAAA;AAAA,UACpC,KAAA,EAAO;AAAA;AAAA,OACT,GACE,SAAS,MAAA,IAAU,OAAA,EAAS,4BAC9BP,cAAA,CAACQ,0FAAA,EAAA,EAAoC,cAAA,EAAgB,OAAA,EAAS,CAAA,GAC5D,IAAA;AAAA,MAGL,qCACCC,eAAA,CAAAC,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,CAAC,WAAA,IAAe,KAAA,oBACfV,cAAA,CAACW,qFAAA,EAAA,EAA8B,YAAwB,YAAA,EAAc,KAAA,EAAO,iBAAA,EAAiB,IAAA,EAC3F,QAAA,kBAAAX,cAAA,CAAC,qBAAA,EAAA,EAAsB,UAAA,EAAwB,QAAA,EAAoB,OAAc,CAAA,EACnF,CAAA;AAAA,QAGD,WAAA,oBAAeA,cAAA,CAAC,qBAAA,EAAA,EAAsB,UAAA,EAAwB,UAAoB,KAAA,EAAc,CAAA;AAAA,QAEhG,kBAAA,KAAuB,MAAA,IAAa,cAAA,oBACnCS,eAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAT,cAAA,CAACY,qDAAa,QAAA,EAAA,0BAAA,EAAwB,CAAA;AAAA,UACrC;AAAA,SAAA,EACH;AAAA,OAAA,EAEJ;AAAA;AAAA,GAEJ;AAEJ;AAQA,MAAM,wBAAwB,CAAC,EAAE,UAAA,EAAY,QAAA,EAAU,OAAM,KAAkC;AAC7F,EAAA,MAAM,cAAA,GAAiBb,4EAAA,CAAwB,UAAA,EAAY,UAAU,EAAE,CAAC,CAAA;AACxE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAIc,8BAAA,EAAiB;AAClC,EAAA,MAAM,EAAE,2BAAA,EAA4B,GAAIC,gBAAA,CAAWC,+DAAkB,CAAA;AAErE,EAAA,uBACEN,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAD,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,8BAAA,EACb,QAAA,EAAA;AAAA,sBAAAT,cAAA,CAACgB,aAAA,EAAA,EAAO,IAAA,kBAAMhB,cAAA,CAACM,+BAAA,EAAA,EAAa,CAAA,EAAI,MAAA,kBAAQN,cAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,CAAA,WAAA,EAAc,UAAU,CAAA,MAAA,CAAA,EAAU,GAAI,QAAA,EAAA,gBAAA,EAE1F,CAAA;AAAA,MACC,yBACCA,cAAA,CAACgB,aAAA,EAAA,EAAO,IAAA,kBAAMhB,cAAA,CAACiB,mBAAI,CAAA,EAAI,MAAA,kBAAQjB,cAAA,CAAC,IAAA,EAAA,EAAK,MAAM,CAAA,WAAA,EAAc,UAAU,UAAU,KAAK,CAAA,CAAA,EAAI,GAAI,QAAA,EAAA,SAAA,EAE1F;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEAA,cAAA,CAACkB,kFAAA,EAAA,EACC,QAAA,kBAAAT,eAAA,CAACU,+EAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAnB,cAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4CAAA,EACb,QAAA,kBAAAA,cAAA;AAAA,QAACoB,sDAAA;AAAA,QAAA;AAAA,UACC,UAAA;AAAA,UACA,QAAA;AAAA,UACA,SAAA,EAAW,2BAAA;AAAA,UACX;AAAA;AAAA,OACF,EACF,CAAA;AAAA,sBACApB,cAAA,CAAC,2BAAwB,cAAA,EAAgC;AAAA,KAAA,EAC3D,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,MAAM,uBAAA,GAA0B,CAAC,EAAE,cAAA,EAAe,KAA+C;AAC/F,EAAA,MAAM,EAAE,UAAA,EAAW,GAAIqB,yEAAA,EAAsB;AAC7C,EAAA,IAAI,CAAC,YAAY,OAAO,IAAA;AACxB,EAAA,sCACG,KAAA,EAAA,EAAI,SAAA,EAAU,iGACb,QAAA,kBAAArB,cAAA,CAACsB,yEAAA,EAAA,EAA0B,gBAAgC,CAAA,EAC7D,CAAA;AAEJ,CAAA;AAGO,MAAM,iBAAA,GAAoB,CAAC,iBAAA,KAAgD;AAChF,EAAA,MAAM,EAAE,SAAA,EAAU,GAAIR,gBAAA,CAAWC,+DAAkB,CAAA;AAEnD,EAAAQ,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,iBAAA,EAAmB;AACxB,IAAA,SAAA,CAAU,iBAAiB,CAAA;AAAA,EAC7B,CAAA,EAAG,CAAC,iBAAA,EAAmB,SAAS,CAAC,CAAA;AACnC;;;;;"}
|
|
1
|
+
{"version":3,"file":"workflow-badge.cjs.js","sources":["../../../../../src/domains/chat/tools/badges/workflow-badge.tsx"],"sourcesContent":["import type { GetWorkflowResponse } from '@mastra/client-js';\nimport { useWorkflow } from '@mastra/react/hooks/workflows';\nimport { Eye } from 'lucide-react';\nimport { useContext, useEffect } from 'react';\nimport { BackgroundTaskMetadataDialogTrigger } from './background-task-metadata-dialog';\nimport type { MessageMetadata } from '@/domains/chat';\n\nimport { LoadingBadge } from '@/domains/chat/components/loading-badge';\nimport { NetworkChoiceMetadataDialogTrigger } from '@/domains/chat/components/network-choice-metadata-dialog';\nimport { SectionLabel } from '@/domains/chat/components/section-label';\nimport { awaitsToolApproval } from '@/domains/chat/tools/badges/awaits-tool-approval';\nimport type { ToolApprovalRequest } from '@/domains/chat/tools/badges/tool-approval-badge';\nimport { ToolApprovalBadge } from '@/domains/chat/tools/badges/tool-approval-badge';\nimport { useEntityRequestContext } from '@/domains/request-context/hooks/use-entity-request-context';\nimport {\n WorkflowGraph,\n WorkflowRunContext,\n WorkflowSelectedStepProvider,\n WorkflowStepDetailProvider,\n useWorkflowStepDetail,\n} from '@/domains/workflows';\nimport { WorkflowStepDetailContent } from '@/domains/workflows/components/workflow-step-detail';\nimport { PlaygroundWorkflowRunProvider } from '@/domains/workflows/context/playground-workflow-run-provider';\nimport type { WorkflowRunStreamResult } from '@/domains/workflows/context/workflow-run-context';\nimport { ToolCallMono } from '@/ds/components/ai/tool-call';\nimport { Button } from '@/ds/components/Button';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { useLinkComponent } from '@/lib/framework';\n\nexport interface WorkflowBadgeProps extends Omit<ToolApprovalRequest, 'toolCalled'> {\n workflowId: string;\n result?: any;\n isStreaming?: boolean;\n metadata?: MessageMetadata;\n suspendPayload?: any;\n toolCalled?: boolean;\n}\n\nexport const WorkflowBadge = ({\n result,\n workflowId,\n isStreaming,\n metadata,\n toolCallId,\n toolApprovalMetadata,\n suspendPayload,\n toolName,\n isNetwork,\n toolCalled,\n}: WorkflowBadgeProps) => {\n const { runId, status } = result || {};\n const { data: workflow, isLoading: isWorkflowLoading } = useWorkflow({\n workflowId,\n requestContext: useEntityRequestContext('workflow', workflowId)[0],\n queryOptions: { enabled: Boolean(workflowId) },\n });\n const routingDecision = metadata?.mode === 'network' ? metadata.routingDecision : undefined;\n const selectionReason =\n metadata?.mode === 'network' ? (routingDecision?.selectionReason ?? metadata.selectionReason) : undefined;\n const agentNetworkInput = metadata?.mode === 'network' ? (routingDecision ?? metadata.agentInput) : undefined;\n\n const bgEntry =\n (metadata?.mode === 'stream' || metadata?.mode === 'generate') && metadata?.backgroundTasks\n ? metadata.backgroundTasks[toolCallId]\n : undefined;\n\n let suspendPayloadSlot =\n typeof suspendPayload === 'string' ? (\n <ToolCallMono copyText={suspendPayload} className=\"text-muted-foreground\">\n {suspendPayload}\n </ToolCallMono>\n ) : (\n <CodeEditor data={suspendPayload} data-testid=\"tool-suspend-payload\" />\n );\n\n if (isWorkflowLoading || !workflow) return <LoadingBadge />;\n\n const toolCalledOrFinished = toolCalled ?? !!status;\n const showsRun = isStreaming || Boolean(runId);\n const hasBody =\n showsRun ||\n Boolean(suspendPayload) ||\n awaitsToolApproval({ toolApprovalMetadata, toolCalled: toolCalledOrFinished });\n\n return (\n <ToolApprovalBadge\n approval={{\n toolCalled: toolCalledOrFinished,\n toolCallId,\n toolApprovalMetadata,\n toolName,\n isNetwork,\n isGenerateMode: metadata?.mode === 'generate',\n }}\n data-testid=\"workflow-badge\"\n icon={<WorkflowIcon className=\"text-span-workflow\" />}\n title={workflow.name}\n initialCollapsed={false}\n extraInfo={\n metadata?.mode === 'network' ? (\n <NetworkChoiceMetadataDialogTrigger\n selectionReason={selectionReason ?? ''}\n input={agentNetworkInput as string | Record<string, unknown> | undefined}\n />\n ) : bgEntry?.taskId && bgEntry?.startedAt ? (\n <BackgroundTaskMetadataDialogTrigger backgroundTask={bgEntry} />\n ) : null\n }\n >\n {hasBody && (\n <>\n {!isStreaming && runId && (\n <PlaygroundWorkflowRunProvider workflowId={workflowId} initialRunId={runId} withoutTimeTravel>\n <WorkflowBadgeExtended workflowId={workflowId} workflow={workflow} runId={runId} />\n </PlaygroundWorkflowRunProvider>\n )}\n\n {isStreaming && <WorkflowBadgeExtended workflowId={workflowId} workflow={workflow} runId={runId} />}\n\n {suspendPayloadSlot !== undefined && suspendPayload && (\n <div>\n <SectionLabel>Workflow suspend payload</SectionLabel>\n {suspendPayloadSlot}\n </div>\n )}\n </>\n )}\n </ToolApprovalBadge>\n );\n};\n\ninterface WorkflowBadgeExtendedProps {\n workflowId: string;\n runId?: string;\n workflow: GetWorkflowResponse;\n}\n\nconst WorkflowBadgeExtended = ({ workflowId, workflow, runId }: WorkflowBadgeExtendedProps) => {\n const requestContext = useEntityRequestContext('workflow', workflowId)[0];\n const { Link } = useLinkComponent();\n const { isLoadingRunExecutionResult } = useContext(WorkflowRunContext);\n\n return (\n <>\n <div className=\"flex items-center gap-2 pb-2\">\n <Button icon={<WorkflowIcon />} render={<Link href={`/workflows/${workflowId}/graph`} />}>\n Go to workflow\n </Button>\n {runId && (\n <Button icon={<Eye />} render={<Link href={`/workflows/${workflowId}/graph/${runId}`} />}>\n See run\n </Button>\n )}\n </div>\n\n <WorkflowSelectedStepProvider>\n <WorkflowStepDetailProvider>\n <div className=\"h-[60vh] w-full overflow-hidden rounded-md\">\n <WorkflowGraph\n workflowId={workflowId}\n workflow={workflow}\n isLoading={isLoadingRunExecutionResult}\n requestContext={requestContext}\n />\n </div>\n <WorkflowBadgeStepDetail requestContext={requestContext} />\n </WorkflowStepDetailProvider>\n </WorkflowSelectedStepProvider>\n </>\n );\n};\n\nconst WorkflowBadgeStepDetail = ({ requestContext }: { requestContext: Record<string, any> }) => {\n const { stepDetail } = useWorkflowStepDetail();\n if (!stepDetail) return null;\n return (\n <div className=\"mt-2 flex max-h-[60vh] flex-col overflow-hidden rounded-md border border-border bg-background\">\n <WorkflowStepDetailContent requestContext={requestContext} />\n </div>\n );\n};\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const useWorkflowStream = (workflowFullState?: WorkflowRunStreamResult) => {\n const { setResult } = useContext(WorkflowRunContext);\n\n useEffect(() => {\n if (!workflowFullState) return;\n setResult(workflowFullState);\n }, [workflowFullState, setResult]);\n};\n"],"names":["useWorkflow","useEntityRequestContext","jsx","ToolCallMono","CodeEditor","LoadingBadge","awaitsToolApproval","ToolApprovalBadge","WorkflowIcon","NetworkChoiceMetadataDialogTrigger","BackgroundTaskMetadataDialogTrigger","jsxs","Fragment","PlaygroundWorkflowRunProvider","SectionLabel","useLinkComponent","useContext","WorkflowRunContext","Button","Eye","WorkflowSelectedStepProvider","WorkflowStepDetailProvider","WorkflowGraph","useWorkflowStepDetail","WorkflowStepDetailContent","useEffect"],"mappings":"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"}
|
|
@@ -25,6 +25,7 @@ import '@mastra/core/utils/safe-stringify';
|
|
|
25
25
|
import { C as CodeEditor } from '../../../../code-editor-8qu58Npy.js';
|
|
26
26
|
import '../../../../highlight-CXDme3FZ.js';
|
|
27
27
|
import '@base-ui/react/use-render';
|
|
28
|
+
import '../../../../tooltip-DrsXZDAj.js';
|
|
28
29
|
import '../../../workflows/workflow/input/processor-input.es.js';
|
|
29
30
|
import 'react-hook-form';
|
|
30
31
|
import '../../../../lib/form/field-context.es.js';
|
|
@@ -35,8 +36,6 @@ import '@autoform/react';
|
|
|
35
36
|
import '@lukeed/uuid';
|
|
36
37
|
import '../../../../lib/form/dynamic-form.es.js';
|
|
37
38
|
import { WorkflowIcon } from '../../../../icons/WorkflowIcon.es.js';
|
|
38
|
-
import '../../../../data-list-DATsbxcn.js';
|
|
39
|
-
import '../../../../keyboard/keyboard-shortcuts-context.es.js';
|
|
40
39
|
import { useLinkComponent } from '../../../../lib/framework.es.js';
|
|
41
40
|
import '../../../workflows/components/workflow-information.es.js';
|
|
42
41
|
import '@base-ui/react/combobox';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-badge.es.js","sources":["../../../../../src/domains/chat/tools/badges/workflow-badge.tsx"],"sourcesContent":["import type { GetWorkflowResponse } from '@mastra/client-js';\nimport { useWorkflow } from '@mastra/react/hooks/workflows';\nimport { Eye } from 'lucide-react';\nimport { useContext, useEffect } from 'react';\nimport { BackgroundTaskMetadataDialogTrigger } from './background-task-metadata-dialog';\nimport type { MessageMetadata } from '@/domains/chat';\n\nimport { LoadingBadge } from '@/domains/chat/components/loading-badge';\nimport { NetworkChoiceMetadataDialogTrigger } from '@/domains/chat/components/network-choice-metadata-dialog';\nimport { SectionLabel } from '@/domains/chat/components/section-label';\nimport { awaitsToolApproval } from '@/domains/chat/tools/badges/awaits-tool-approval';\nimport type { ToolApprovalRequest } from '@/domains/chat/tools/badges/tool-approval-badge';\nimport { ToolApprovalBadge } from '@/domains/chat/tools/badges/tool-approval-badge';\nimport { useEntityRequestContext } from '@/domains/request-context/hooks/use-entity-request-context';\nimport {\n WorkflowGraph,\n WorkflowRunContext,\n WorkflowSelectedStepProvider,\n WorkflowStepDetailProvider,\n useWorkflowStepDetail,\n} from '@/domains/workflows';\nimport { WorkflowStepDetailContent } from '@/domains/workflows/components/workflow-step-detail';\nimport { PlaygroundWorkflowRunProvider } from '@/domains/workflows/context/playground-workflow-run-provider';\nimport type { WorkflowRunStreamResult } from '@/domains/workflows/context/workflow-run-context';\nimport { ToolCallMono } from '@/ds/components/ai/tool-call';\nimport { Button } from '@/ds/components/Button';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { useLinkComponent } from '@/lib/framework';\n\nexport interface WorkflowBadgeProps extends Omit<ToolApprovalRequest, 'toolCalled'> {\n workflowId: string;\n result?: any;\n isStreaming?: boolean;\n metadata?: MessageMetadata;\n suspendPayload?: any;\n toolCalled?: boolean;\n}\n\nexport const WorkflowBadge = ({\n result,\n workflowId,\n isStreaming,\n metadata,\n toolCallId,\n toolApprovalMetadata,\n suspendPayload,\n toolName,\n isNetwork,\n toolCalled,\n}: WorkflowBadgeProps) => {\n const { runId, status } = result || {};\n const { data: workflow, isLoading: isWorkflowLoading } = useWorkflow({\n workflowId,\n requestContext: useEntityRequestContext('workflow', workflowId)[0],\n queryOptions: { enabled: Boolean(workflowId) },\n });\n const routingDecision = metadata?.mode === 'network' ? metadata.routingDecision : undefined;\n const selectionReason =\n metadata?.mode === 'network' ? (routingDecision?.selectionReason ?? metadata.selectionReason) : undefined;\n const agentNetworkInput = metadata?.mode === 'network' ? (routingDecision ?? metadata.agentInput) : undefined;\n\n const bgEntry =\n (metadata?.mode === 'stream' || metadata?.mode === 'generate') && metadata?.backgroundTasks\n ? metadata.backgroundTasks[toolCallId]\n : undefined;\n\n let suspendPayloadSlot =\n typeof suspendPayload === 'string' ? (\n <ToolCallMono copyText={suspendPayload} className=\"text-muted-foreground\">\n {suspendPayload}\n </ToolCallMono>\n ) : (\n <CodeEditor data={suspendPayload} data-testid=\"tool-suspend-payload\" />\n );\n\n if (isWorkflowLoading || !workflow) return <LoadingBadge />;\n\n const toolCalledOrFinished = toolCalled ?? !!status;\n const showsRun = isStreaming || Boolean(runId);\n const hasBody =\n showsRun ||\n Boolean(suspendPayload) ||\n awaitsToolApproval({ toolApprovalMetadata, toolCalled: toolCalledOrFinished });\n\n return (\n <ToolApprovalBadge\n approval={{\n toolCalled: toolCalledOrFinished,\n toolCallId,\n toolApprovalMetadata,\n toolName,\n isNetwork,\n isGenerateMode: metadata?.mode === 'generate',\n }}\n data-testid=\"workflow-badge\"\n icon={<WorkflowIcon className=\"text-span-workflow\" />}\n title={workflow.name}\n initialCollapsed={false}\n extraInfo={\n metadata?.mode === 'network' ? (\n <NetworkChoiceMetadataDialogTrigger\n selectionReason={selectionReason ?? ''}\n input={agentNetworkInput as string | Record<string, unknown> | undefined}\n />\n ) : bgEntry?.taskId && bgEntry?.startedAt ? (\n <BackgroundTaskMetadataDialogTrigger backgroundTask={bgEntry} />\n ) : null\n }\n >\n {hasBody && (\n <>\n {!isStreaming && runId && (\n <PlaygroundWorkflowRunProvider workflowId={workflowId} initialRunId={runId} withoutTimeTravel>\n <WorkflowBadgeExtended workflowId={workflowId} workflow={workflow} runId={runId} />\n </PlaygroundWorkflowRunProvider>\n )}\n\n {isStreaming && <WorkflowBadgeExtended workflowId={workflowId} workflow={workflow} runId={runId} />}\n\n {suspendPayloadSlot !== undefined && suspendPayload && (\n <div>\n <SectionLabel>Workflow suspend payload</SectionLabel>\n {suspendPayloadSlot}\n </div>\n )}\n </>\n )}\n </ToolApprovalBadge>\n );\n};\n\ninterface WorkflowBadgeExtendedProps {\n workflowId: string;\n runId?: string;\n workflow: GetWorkflowResponse;\n}\n\nconst WorkflowBadgeExtended = ({ workflowId, workflow, runId }: WorkflowBadgeExtendedProps) => {\n const requestContext = useEntityRequestContext('workflow', workflowId)[0];\n const { Link } = useLinkComponent();\n const { isLoadingRunExecutionResult } = useContext(WorkflowRunContext);\n\n return (\n <>\n <div className=\"flex items-center gap-2 pb-2\">\n <Button icon={<WorkflowIcon />} render={<Link href={`/workflows/${workflowId}/graph`} />}>\n Go to workflow\n </Button>\n {runId && (\n <Button icon={<Eye />} render={<Link href={`/workflows/${workflowId}/graph/${runId}`} />}>\n See run\n </Button>\n )}\n </div>\n\n <WorkflowSelectedStepProvider>\n <WorkflowStepDetailProvider>\n <div className=\"h-[60vh] w-full overflow-hidden rounded-md\">\n <WorkflowGraph\n workflowId={workflowId}\n workflow={workflow}\n isLoading={isLoadingRunExecutionResult}\n requestContext={requestContext}\n />\n </div>\n <WorkflowBadgeStepDetail requestContext={requestContext} />\n </WorkflowStepDetailProvider>\n </WorkflowSelectedStepProvider>\n </>\n );\n};\n\nconst WorkflowBadgeStepDetail = ({ requestContext }: { requestContext: Record<string, any> }) => {\n const { stepDetail } = useWorkflowStepDetail();\n if (!stepDetail) return null;\n return (\n <div className=\"mt-2 flex max-h-[60vh] flex-col overflow-hidden rounded-md border border-border bg-background\">\n <WorkflowStepDetailContent requestContext={requestContext} />\n </div>\n );\n};\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const useWorkflowStream = (workflowFullState?: WorkflowRunStreamResult) => {\n const { setResult } = useContext(WorkflowRunContext);\n\n useEffect(() => {\n if (!workflowFullState) return;\n setResult(workflowFullState);\n }, [workflowFullState, setResult]);\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflow-badge.es.js","sources":["../../../../../src/domains/chat/tools/badges/workflow-badge.tsx"],"sourcesContent":["import type { GetWorkflowResponse } from '@mastra/client-js';\nimport { useWorkflow } from '@mastra/react/hooks/workflows';\nimport { Eye } from 'lucide-react';\nimport { useContext, useEffect } from 'react';\nimport { BackgroundTaskMetadataDialogTrigger } from './background-task-metadata-dialog';\nimport type { MessageMetadata } from '@/domains/chat';\n\nimport { LoadingBadge } from '@/domains/chat/components/loading-badge';\nimport { NetworkChoiceMetadataDialogTrigger } from '@/domains/chat/components/network-choice-metadata-dialog';\nimport { SectionLabel } from '@/domains/chat/components/section-label';\nimport { awaitsToolApproval } from '@/domains/chat/tools/badges/awaits-tool-approval';\nimport type { ToolApprovalRequest } from '@/domains/chat/tools/badges/tool-approval-badge';\nimport { ToolApprovalBadge } from '@/domains/chat/tools/badges/tool-approval-badge';\nimport { useEntityRequestContext } from '@/domains/request-context/hooks/use-entity-request-context';\nimport {\n WorkflowGraph,\n WorkflowRunContext,\n WorkflowSelectedStepProvider,\n WorkflowStepDetailProvider,\n useWorkflowStepDetail,\n} from '@/domains/workflows';\nimport { WorkflowStepDetailContent } from '@/domains/workflows/components/workflow-step-detail';\nimport { PlaygroundWorkflowRunProvider } from '@/domains/workflows/context/playground-workflow-run-provider';\nimport type { WorkflowRunStreamResult } from '@/domains/workflows/context/workflow-run-context';\nimport { ToolCallMono } from '@/ds/components/ai/tool-call';\nimport { Button } from '@/ds/components/Button';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { useLinkComponent } from '@/lib/framework';\n\nexport interface WorkflowBadgeProps extends Omit<ToolApprovalRequest, 'toolCalled'> {\n workflowId: string;\n result?: any;\n isStreaming?: boolean;\n metadata?: MessageMetadata;\n suspendPayload?: any;\n toolCalled?: boolean;\n}\n\nexport const WorkflowBadge = ({\n result,\n workflowId,\n isStreaming,\n metadata,\n toolCallId,\n toolApprovalMetadata,\n suspendPayload,\n toolName,\n isNetwork,\n toolCalled,\n}: WorkflowBadgeProps) => {\n const { runId, status } = result || {};\n const { data: workflow, isLoading: isWorkflowLoading } = useWorkflow({\n workflowId,\n requestContext: useEntityRequestContext('workflow', workflowId)[0],\n queryOptions: { enabled: Boolean(workflowId) },\n });\n const routingDecision = metadata?.mode === 'network' ? metadata.routingDecision : undefined;\n const selectionReason =\n metadata?.mode === 'network' ? (routingDecision?.selectionReason ?? metadata.selectionReason) : undefined;\n const agentNetworkInput = metadata?.mode === 'network' ? (routingDecision ?? metadata.agentInput) : undefined;\n\n const bgEntry =\n (metadata?.mode === 'stream' || metadata?.mode === 'generate') && metadata?.backgroundTasks\n ? metadata.backgroundTasks[toolCallId]\n : undefined;\n\n let suspendPayloadSlot =\n typeof suspendPayload === 'string' ? (\n <ToolCallMono copyText={suspendPayload} className=\"text-muted-foreground\">\n {suspendPayload}\n </ToolCallMono>\n ) : (\n <CodeEditor data={suspendPayload} data-testid=\"tool-suspend-payload\" />\n );\n\n if (isWorkflowLoading || !workflow) return <LoadingBadge />;\n\n const toolCalledOrFinished = toolCalled ?? !!status;\n const showsRun = isStreaming || Boolean(runId);\n const hasBody =\n showsRun ||\n Boolean(suspendPayload) ||\n awaitsToolApproval({ toolApprovalMetadata, toolCalled: toolCalledOrFinished });\n\n return (\n <ToolApprovalBadge\n approval={{\n toolCalled: toolCalledOrFinished,\n toolCallId,\n toolApprovalMetadata,\n toolName,\n isNetwork,\n isGenerateMode: metadata?.mode === 'generate',\n }}\n data-testid=\"workflow-badge\"\n icon={<WorkflowIcon className=\"text-span-workflow\" />}\n title={workflow.name}\n initialCollapsed={false}\n extraInfo={\n metadata?.mode === 'network' ? (\n <NetworkChoiceMetadataDialogTrigger\n selectionReason={selectionReason ?? ''}\n input={agentNetworkInput as string | Record<string, unknown> | undefined}\n />\n ) : bgEntry?.taskId && bgEntry?.startedAt ? (\n <BackgroundTaskMetadataDialogTrigger backgroundTask={bgEntry} />\n ) : null\n }\n >\n {hasBody && (\n <>\n {!isStreaming && runId && (\n <PlaygroundWorkflowRunProvider workflowId={workflowId} initialRunId={runId} withoutTimeTravel>\n <WorkflowBadgeExtended workflowId={workflowId} workflow={workflow} runId={runId} />\n </PlaygroundWorkflowRunProvider>\n )}\n\n {isStreaming && <WorkflowBadgeExtended workflowId={workflowId} workflow={workflow} runId={runId} />}\n\n {suspendPayloadSlot !== undefined && suspendPayload && (\n <div>\n <SectionLabel>Workflow suspend payload</SectionLabel>\n {suspendPayloadSlot}\n </div>\n )}\n </>\n )}\n </ToolApprovalBadge>\n );\n};\n\ninterface WorkflowBadgeExtendedProps {\n workflowId: string;\n runId?: string;\n workflow: GetWorkflowResponse;\n}\n\nconst WorkflowBadgeExtended = ({ workflowId, workflow, runId }: WorkflowBadgeExtendedProps) => {\n const requestContext = useEntityRequestContext('workflow', workflowId)[0];\n const { Link } = useLinkComponent();\n const { isLoadingRunExecutionResult } = useContext(WorkflowRunContext);\n\n return (\n <>\n <div className=\"flex items-center gap-2 pb-2\">\n <Button icon={<WorkflowIcon />} render={<Link href={`/workflows/${workflowId}/graph`} />}>\n Go to workflow\n </Button>\n {runId && (\n <Button icon={<Eye />} render={<Link href={`/workflows/${workflowId}/graph/${runId}`} />}>\n See run\n </Button>\n )}\n </div>\n\n <WorkflowSelectedStepProvider>\n <WorkflowStepDetailProvider>\n <div className=\"h-[60vh] w-full overflow-hidden rounded-md\">\n <WorkflowGraph\n workflowId={workflowId}\n workflow={workflow}\n isLoading={isLoadingRunExecutionResult}\n requestContext={requestContext}\n />\n </div>\n <WorkflowBadgeStepDetail requestContext={requestContext} />\n </WorkflowStepDetailProvider>\n </WorkflowSelectedStepProvider>\n </>\n );\n};\n\nconst WorkflowBadgeStepDetail = ({ requestContext }: { requestContext: Record<string, any> }) => {\n const { stepDetail } = useWorkflowStepDetail();\n if (!stepDetail) return null;\n return (\n <div className=\"mt-2 flex max-h-[60vh] flex-col overflow-hidden rounded-md border border-border bg-background\">\n <WorkflowStepDetailContent requestContext={requestContext} />\n </div>\n );\n};\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const useWorkflowStream = (workflowFullState?: WorkflowRunStreamResult) => {\n const { setResult } = useContext(WorkflowRunContext);\n\n useEffect(() => {\n if (!workflowFullState) return;\n setResult(workflowFullState);\n }, [workflowFullState, setResult]);\n};\n"],"names":[],"mappings":"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"}
|
package/dist/domains/chat.cjs.js
CHANGED
|
@@ -34,6 +34,7 @@ exports.ToolCallProvider = domains_chat_context_toolCallContext.ToolCallProvider
|
|
|
34
34
|
exports.useOptionalToolCall = domains_chat_context_toolCallContext.useOptionalToolCall;
|
|
35
35
|
exports.useToolCall = domains_chat_context_toolCallContext.useToolCall;
|
|
36
36
|
exports.formatSignalValue = domains_chat_messages_signalData.formatSignalValue;
|
|
37
|
+
exports.getMcpEventSignalInfo = domains_chat_messages_signalData.getMcpEventSignalInfo;
|
|
37
38
|
exports.getNotificationMetadata = domains_chat_messages_signalData.getNotificationMetadata;
|
|
38
39
|
exports.getSignalType = domains_chat_messages_signalData.getSignalType;
|
|
39
40
|
exports.isRecord = domains_chat_messages_signalData.isRecord;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chat.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/domains/chat.es.js
CHANGED
|
@@ -4,7 +4,7 @@ export { NetworkChoiceMetadataDialogTrigger } from './chat/components/network-ch
|
|
|
4
4
|
export { SectionLabel } from './chat/components/section-label.es.js';
|
|
5
5
|
export { ChatAgentContext, ChatMessagesContext, ChatRunningContext, ChatSendContext, ChatTasksContext, useChatMessages, useChatRunning, useChatSend, useChatTasks } from './chat/context/chat-context.es.js';
|
|
6
6
|
export { ToolCallProvider, useOptionalToolCall, useToolCall } from './chat/context/tool-call-context.es.js';
|
|
7
|
-
export { formatSignalValue, getNotificationMetadata, getSignalType, isRecord, isSignalData, isUserSignalType, signalContentsToText, toReactiveSignalData } from './chat/messages/signal-data.es.js';
|
|
7
|
+
export { formatSignalValue, getMcpEventSignalInfo, getNotificationMetadata, getSignalType, isRecord, isSignalData, isUserSignalType, signalContentsToText, toReactiveSignalData } from './chat/messages/signal-data.es.js';
|
|
8
8
|
export { isToolPart, readToolPart } from './chat/messages/renderers/tool-part.es.js';
|
|
9
9
|
export { DatasetSaveProvider } from './chat/context/dataset-save-context.es.js';
|
|
10
10
|
export { useDatasetSaveContext } from './chat/context/dataset-save-context-value.es.js';
|