@mastra/playground-ui 65.0.0-alpha.9 → 65.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +15 -17
- package/dist/components/DataList.cjs.js.map +1 -1
- package/dist/components/DataList.es.js +4 -5
- 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 +5 -2
- package/dist/components/LogsDataList.cjs.js.map +1 -1
- package/dist/components/LogsDataList.es.js +5 -2
- 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 +225 -2
- package/dist/components/SideDialog.cjs.js.map +1 -1
- package/dist/components/SideDialog.es.js +210 -1
- package/dist/components/SideDialog.es.js.map +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-top-DJh08vFA.cjs → data-list-4t6Ueon8.cjs} +365 -16
- package/dist/data-list-4t6Ueon8.cjs.map +1 -0
- package/dist/{data-list-top-Cu4C2Z07.js → data-list-BQMBFAyK.js} +357 -7
- package/dist/data-list-BQMBFAyK.js.map +1 -0
- package/dist/{data-list-skeleton-sdcaabdX.cjs → data-list-skeleton-CVXZYY0k.cjs} +6 -6
- package/dist/{data-list-skeleton-sdcaabdX.cjs.map → data-list-skeleton-CVXZYY0k.cjs.map} +1 -1
- package/dist/{data-list-skeleton-CiilOVAl.js → data-list-skeleton-D54r1ycU.js} +2 -2
- package/dist/{data-list-skeleton-CiilOVAl.js.map → data-list-skeleton-D54r1ycU.js.map} +1 -1
- 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/capabilities.cjs.js +4 -0
- package/dist/domains/capabilities.cjs.js.map +1 -1
- package/dist/domains/capabilities.es.js +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 +3 -0
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +3 -0
- 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 +24 -16
- 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 +24 -16
- 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 +3 -2
- package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
- package/dist/domains/logs/components/logs-list-view.es.js +3 -2
- 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 +2 -1
- package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js +2 -1
- 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 +3 -8
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.es.js +4 -9
- package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel.cjs.js +2 -0
- package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel.es.js +2 -0
- package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
- package/dist/domains/traces/components/trace-error-cell.cjs.js +3 -1
- package/dist/domains/traces/components/trace-error-cell.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-error-cell.es.js +3 -1
- 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-span-panel.cjs.js +0 -2
- package/dist/domains/traces/components/trace-span-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-span-panel.es.js +0 -2
- package/dist/domains/traces/components/trace-span-panel.es.js.map +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-context.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js +2 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js +2 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js +4 -15
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js +4 -15
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +3 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +4 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js.map +1 -1
- 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 +4 -5
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +3 -4
- package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +4 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js +4 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-traces-list-source.cjs.js +36 -9
- package/dist/domains/traces/hooks/use-traces-list-source.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-traces-list-source.es.js +37 -12
- package/dist/domains/traces/hooks/use-traces-list-source.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 +3 -1
- package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +3 -1
- package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +4 -2
- 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 +4 -2
- 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-DCj8Pj77.cjs → logs-data-list-C4Z4rw62.cjs} +21 -22
- package/dist/{logs-data-list-DCj8Pj77.cjs.map → logs-data-list-C4Z4rw62.cjs.map} +1 -1
- package/dist/{logs-data-list-VEEruqHO.js → logs-data-list-CL3iq_6r.js} +2 -3
- package/dist/{logs-data-list-VEEruqHO.js.map → logs-data-list-CL3iq_6r.js.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/capabilities/index.d.ts +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/domains/traces/components/trace-data-panel-view.d.ts +1 -5
- package/dist/src/domains/traces/components/trace-span-panel.d.ts +1 -2
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-context.d.ts +2 -0
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-panel.d.ts +3 -1
- package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +7 -1
- 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 +29 -13
- package/dist/{traces-data-list-CF_LFvnf.cjs → traces-data-list-BOHhsgDI.cjs} +18 -20
- package/dist/{traces-data-list-CF_LFvnf.cjs.map → traces-data-list-BOHhsgDI.cjs.map} +1 -1
- package/dist/{traces-data-list-DgmSuEKb.js → traces-data-list-CP6knkOn.js} +2 -4
- package/dist/{traces-data-list-DgmSuEKb.js.map → traces-data-list-CP6knkOn.js.map} +1 -1
- package/package.json +11 -11
- package/dist/data-list-CD_lls8O.js +0 -138
- package/dist/data-list-CD_lls8O.js.map +0 -1
- package/dist/data-list-CGD9hzcp.cjs +0 -142
- package/dist/data-list-CGD9hzcp.cjs.map +0 -1
- package/dist/data-list-spacer-DpXJrZe1.js +0 -209
- package/dist/data-list-spacer-DpXJrZe1.js.map +0 -1
- package/dist/data-list-spacer-Dpoj55mv.cjs +0 -218
- package/dist/data-list-spacer-Dpoj55mv.cjs.map +0 -1
- package/dist/data-list-top-Cu4C2Z07.js.map +0 -1
- package/dist/data-list-top-DJh08vFA.cjs.map +0 -1
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +0 -205
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js.map +0 -1
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.d.ts +0 -2
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +0 -201
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js.map +0 -1
- package/dist/notification-activity-BSNuqJDd.cjs.map +0 -1
- package/dist/notification-activity-BWXHmlTn.js.map +0 -1
- package/dist/side-dialog-B7a4dasE.cjs +0 -231
- package/dist/side-dialog-B7a4dasE.cjs.map +0 -1
- package/dist/side-dialog-DVea8YTO.js +0 -211
- package/dist/side-dialog-DVea8YTO.js.map +0 -1
- package/dist/src/domains/observability/components/add-trace-mocks-to-item-dialog.d.ts +0 -9
|
@@ -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":";;;;AAqBO,MAAM,QAAA,GAAW,CAAC,KAAA,KACvB,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,IAAQ,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK;AAE9D,MAAM,oBAAA,GAAuB,CAAC,QAAA,KAA8B;AACjE,EAAA,IAAI,OAAO,QAAA,KAAa,QAAA,EAAU,OAAO,QAAA;AACzC,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,QAAQ,GAAG,OAAO,EAAA;AAErC,EAAA,OAAO,QAAA,CACJ,QAAQ,CAAA,IAAA,KAAQ;AACf,IAAA,IAAI,CAAC,QAAA,CAAS,IAAI,CAAA,SAAU,EAAC;AAC7B,IAAA,OAAO,IAAA,CAAK,IAAA,KAAS,MAAA,IAAU,OAAO,KAAK,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA,GAAI,CAAC,IAAA,CAAK,IAAI,IAAI,EAAC;AAAA,EACxG,CAAC,CAAA,CACA,IAAA,CAAK,IAAI,CAAA;AACd;AAEO,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAuC;AACvE,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,IAAI,OAAO,UAAU,QAAA,IAAY,OAAO,UAAU,SAAA,EAAW,OAAO,OAAO,KAAK,CAAA;AAChF,EAAA,OAAO,MAAA;AACT;AAEO,MAAM,YAAA,GAAe,CAAC,KAAA,KAAwC;AACnE,EAAA,IAAI,CAAC,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,KAAA;AAC7B,EAAA,OAAO,MAAM,IAAA,KAAS,cAAA,IAAkB,MAAM,IAAA,KAAS,OAAA,IAAW,MAAM,IAAA,KAAS,UAAA;AACnF;AAEA,MAAM,iBAAA,GAAoB,CAAC,OAAA,KAAkE;AAC3F,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,OAAA,CAAQ,QAAA,EAAU,MAAA;AACzC,EAAA,OAAO,QAAA,CAAS,MAAM,CAAA,GAAI,MAAA,GAAS,MAAA;AACrC,CAAA;AAOO,MAAM,aAAA,GAAgB,CAAC,OAAA,KAAiD;AAC7E,EAAA,MAAM,IAAA,GAAO,iBAAA,CAAkB,OAAO,CAAA,EAAG,IAAA;AACzC,EAAA,OAAO,OAAO,IAAA,KAAS,QAAA,GAAW,IAAA,GAAO,OAAA,CAAQ,IAAA;AACnD;AASO,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAsC,IAAA,KAAS,UAAU,IAAA,KAAS;AAEnG,MAAM,qBAAA,GAAwB,CAAC,KAAA,KAAwD;AACrF,EAAA,MAAM,WAAsG,EAAC;AAC7G,EAAA,KAAA,MAAW,WAAW,KAAA,EAAO;AAC3B,IAAA,MAAM,IAAA,GAAO,OAAA;AACb,IAAA,IAAI,KAAK,IAAA,KAAS,MAAA,IAAU,OAAO,IAAA,CAAK,SAAS,QAAA,EAAU;AACzD,MAAA,QAAA,CAAS,KAAK,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,IAAA,CAAK,MAAM,CAAA;AAC/C,MAAA;AAAA,IACF;AACA,IAAA,IAAI,KAAK,IAAA,KAAS,MAAA,IAAU,OAAO,IAAA,CAAK,SAAS,QAAA,EAAU;AACzD,MAAA,MAAM,SAAA,GAAA,CACH,OAAO,IAAA,CAAK,SAAA,KAAc,WAAW,IAAA,CAAK,SAAA,GAAY,MAAA,MACtD,OAAO,IAAA,CAAK,QAAA,KAAa,QAAA,GAAW,IAAA,CAAK,WAAW,MAAA,CAAA,IACrD,0BAAA;AACF,MAAA,QAAA,CAAS,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,IAAA,CAAK,IAAA,EAAM,WAAW,CAAA;AAAA,IAC5D;AAAA,EACF;AACA,EAAA,OAAO,QAAA,CAAS,MAAA,KAAW,CAAA,IAAK,QAAA,CAAS,CAAC,CAAA,EAAG,IAAA,KAAS,MAAA,GAAS,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA,GAAO,QAAA;AACpF,CAAA;AAQO,MAAM,oBAAA,GAAuB,CAAC,OAAA,KAAyC;AAC5E,EAAA,MAAM,MAAA,GAAS,iBAAA,CAAkB,OAAO,CAAA,IAAK,EAAC;AAC9C,EAAA,OAAO;AAAA,IACL,IAAI,OAAO,MAAA,CAAO,OAAO,QAAA,GAAW,MAAA,CAAO,KAAK,OAAA,CAAQ,EAAA;AAAA,IACxD,IAAA,EAAM,cAAc,OAAO,CAAA;AAAA,IAC3B,SAAS,OAAO,MAAA,CAAO,YAAY,QAAA,GAAW,MAAA,CAAO,UAAU,OAAA,CAAQ,IAAA;AAAA,IACvE,QAAA,EAAU,qBAAA,CAAsB,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA;AAAA,IACrD,GAAI,QAAA,CAAS,MAAA,CAAO,UAAU,CAAA,GAAI,EAAE,UAAA,EAAY,MAAA,CAAO,UAAA,EAAuC,GAAI,EAAC;AAAA,IACnG,GAAI,QAAA,CAAS,MAAA,CAAO,QAAQ,CAAA,GAAI,EAAE,QAAA,EAAU,MAAA,CAAO,QAAA,EAAS,GAAI;AAAC,GACnE;AACF;AAEO,MAAM,uBAAA,GAA0B,CAAC,MAAA,KAA+D;AACrG,EAAA,MAAM,YAAA,GAAe,SAAS,MAAA,CAAO,QAAA,EAAU,YAAY,CAAA,GAAI,MAAA,CAAO,SAAS,YAAA,GAAe,MAAA;AAC9F,EAAA,IAAI,CAAC,cAAc,OAAO,MAAA;AAE1B,EAAA,OAAO;AAAA,IACL,MAAA,EACE,aAAa,MAAA,KAAW,cAAA,IAAkB,aAAa,MAAA,KAAW,SAAA,GAAY,aAAa,MAAA,GAAS,MAAA;AAAA,IACtG,UAAU,OAAO,YAAA,CAAa,QAAA,KAAa,QAAA,GAAW,aAAa,QAAA,GAAW,MAAA;AAAA,IAC9E,QAAQ,OAAO,YAAA,CAAa,MAAA,KAAW,QAAA,GAAW,aAAa,MAAA,GAAS,MAAA;AAAA,IACxE,MAAM,OAAO,YAAA,CAAa,IAAA,KAAS,QAAA,GAAW,aAAa,IAAA,GAAO,MAAA;AAAA,IAClE,UAAU,OAAO,YAAA,CAAa,QAAA,KAAa,QAAA,GAAW,aAAa,QAAA,GAAW,MAAA;AAAA,IAC9E,QAAQ,OAAO,YAAA,CAAa,MAAA,KAAW,QAAA,GAAW,aAAa,MAAA,GAAS,MAAA;AAAA,IACxE,SAAS,OAAO,YAAA,CAAa,OAAA,KAAY,QAAA,GAAW,aAAa,OAAA,GAAU;AAAA,GAC7E;AACF;;;;;;;;;;;"}
|
|
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":";;;;AAqBO,MAAM,QAAA,GAAW,CAAC,KAAA,KACvB,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,IAAQ,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK;AAE9D,MAAM,oBAAA,GAAuB,CAAC,QAAA,KAA8B;AACjE,EAAA,IAAI,OAAO,QAAA,KAAa,QAAA,EAAU,OAAO,QAAA;AACzC,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,QAAQ,GAAG,OAAO,EAAA;AAErC,EAAA,OAAO,QAAA,CACJ,QAAQ,CAAA,IAAA,KAAQ;AACf,IAAA,IAAI,CAAC,QAAA,CAAS,IAAI,CAAA,SAAU,EAAC;AAC7B,IAAA,OAAO,IAAA,CAAK,IAAA,KAAS,MAAA,IAAU,OAAO,KAAK,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA,GAAI,CAAC,IAAA,CAAK,IAAI,IAAI,EAAC;AAAA,EACxG,CAAC,CAAA,CACA,IAAA,CAAK,IAAI,CAAA;AACd;AAEO,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAuC;AACvE,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,IAAI,OAAO,UAAU,QAAA,IAAY,OAAO,UAAU,SAAA,EAAW,OAAO,OAAO,KAAK,CAAA;AAChF,EAAA,OAAO,MAAA;AACT;AAEO,MAAM,YAAA,GAAe,CAAC,KAAA,KAAwC;AACnE,EAAA,IAAI,CAAC,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,KAAA;AAC7B,EAAA,OAAO,MAAM,IAAA,KAAS,cAAA,IAAkB,MAAM,IAAA,KAAS,OAAA,IAAW,MAAM,IAAA,KAAS,UAAA;AACnF;AAEA,MAAM,iBAAA,GAAoB,CAAC,OAAA,KAAkE;AAC3F,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,OAAA,CAAQ,QAAA,EAAU,MAAA;AACzC,EAAA,OAAO,QAAA,CAAS,MAAM,CAAA,GAAI,MAAA,GAAS,MAAA;AACrC,CAAA;AAOO,MAAM,aAAA,GAAgB,CAAC,OAAA,KAAiD;AAC7E,EAAA,MAAM,IAAA,GAAO,iBAAA,CAAkB,OAAO,CAAA,EAAG,IAAA;AACzC,EAAA,OAAO,OAAO,IAAA,KAAS,QAAA,GAAW,IAAA,GAAO,OAAA,CAAQ,IAAA;AACnD;AASO,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAsC,IAAA,KAAS,UAAU,IAAA,KAAS;AAEnG,MAAM,qBAAA,GAAwB,CAAC,KAAA,KAAwD;AACrF,EAAA,MAAM,WAAsG,EAAC;AAC7G,EAAA,KAAA,MAAW,WAAW,KAAA,EAAO;AAC3B,IAAA,MAAM,IAAA,GAAO,OAAA;AACb,IAAA,IAAI,KAAK,IAAA,KAAS,MAAA,IAAU,OAAO,IAAA,CAAK,SAAS,QAAA,EAAU;AACzD,MAAA,QAAA,CAAS,KAAK,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,IAAA,CAAK,MAAM,CAAA;AAC/C,MAAA;AAAA,IACF;AACA,IAAA,IAAI,KAAK,IAAA,KAAS,MAAA,IAAU,OAAO,IAAA,CAAK,SAAS,QAAA,EAAU;AACzD,MAAA,MAAM,SAAA,GAAA,CACH,OAAO,IAAA,CAAK,SAAA,KAAc,WAAW,IAAA,CAAK,SAAA,GAAY,MAAA,MACtD,OAAO,IAAA,CAAK,QAAA,KAAa,QAAA,GAAW,IAAA,CAAK,WAAW,MAAA,CAAA,IACrD,0BAAA;AACF,MAAA,QAAA,CAAS,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,IAAA,CAAK,IAAA,EAAM,WAAW,CAAA;AAAA,IAC5D;AAAA,EACF;AACA,EAAA,OAAO,QAAA,CAAS,MAAA,KAAW,CAAA,IAAK,QAAA,CAAS,CAAC,CAAA,EAAG,IAAA,KAAS,MAAA,GAAS,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA,GAAO,QAAA;AACpF,CAAA;AAQO,MAAM,oBAAA,GAAuB,CAAC,OAAA,KAAyC;AAC5E,EAAA,MAAM,MAAA,GAAS,iBAAA,CAAkB,OAAO,CAAA,IAAK,EAAC;AAC9C,EAAA,OAAO;AAAA,IACL,IAAI,OAAO,MAAA,CAAO,OAAO,QAAA,GAAW,MAAA,CAAO,KAAK,OAAA,CAAQ,EAAA;AAAA,IACxD,IAAA,EAAM,cAAc,OAAO,CAAA;AAAA,IAC3B,SAAS,OAAO,MAAA,CAAO,YAAY,QAAA,GAAW,MAAA,CAAO,UAAU,OAAA,CAAQ,IAAA;AAAA,IACvE,QAAA,EAAU,qBAAA,CAAsB,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA;AAAA,IACrD,GAAI,QAAA,CAAS,MAAA,CAAO,UAAU,CAAA,GAAI,EAAE,UAAA,EAAY,MAAA,CAAO,UAAA,EAAuC,GAAI,EAAC;AAAA,IACnG,GAAI,QAAA,CAAS,MAAA,CAAO,QAAQ,CAAA,GAAI,EAAE,QAAA,EAAU,MAAA,CAAO,QAAA,EAAS,GAAI;AAAC,GACnE;AACF;AAWO,MAAM,qBAAA,GAAwB,CAAC,MAAA,KAAuD;AAC3F,EAAA,MAAM,IAAA,GAAO,wBAAwB,MAAM,CAAA,EAAG,QAAQ,iBAAA,CAAkB,MAAA,CAAO,YAAY,IAAI,CAAA;AAC/F,EAAA,IAAI,IAAA,KAAS,WAAA,IAAe,IAAA,KAAS,8BAAA,EAAgC,OAAO,MAAA;AAC5E,EAAA,MAAM,UAAA,GAAa,MAAA,CAAO,UAAA,IAAc,EAAC;AACzC,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,MAAA,EAAQ,iBAAA,CAAkB,UAAA,CAAW,MAAM,CAAA,IAAK,MAAA;AAAA,IAChD,KAAA,EAAO,iBAAA,CAAkB,UAAA,CAAW,KAAK,CAAA,IAAK,MAAA;AAAA,IAC9C,SAAA,EAAW,UAAA,CAAW,SAAA,KAAc,IAAA,IAAQ,WAAW,SAAA,KAAc;AAAA,GACvE;AACF;AAEO,MAAM,uBAAA,GAA0B,CAAC,MAAA,KAA+D;AACrG,EAAA,MAAM,YAAA,GAAe,SAAS,MAAA,CAAO,QAAA,EAAU,YAAY,CAAA,GAAI,MAAA,CAAO,SAAS,YAAA,GAAe,MAAA;AAC9F,EAAA,IAAI,CAAC,cAAc,OAAO,MAAA;AAE1B,EAAA,OAAO;AAAA,IACL,MAAA,EACE,aAAa,MAAA,KAAW,cAAA,IAAkB,aAAa,MAAA,KAAW,SAAA,GAAY,aAAa,MAAA,GAAS,MAAA;AAAA,IACtG,UAAU,OAAO,YAAA,CAAa,QAAA,KAAa,QAAA,GAAW,aAAa,QAAA,GAAW,MAAA;AAAA,IAC9E,QAAQ,OAAO,YAAA,CAAa,MAAA,KAAW,QAAA,GAAW,aAAa,MAAA,GAAS,MAAA;AAAA,IACxE,MAAM,OAAO,YAAA,CAAa,IAAA,KAAS,QAAA,GAAW,aAAa,IAAA,GAAO,MAAA;AAAA,IAClE,UAAU,OAAO,YAAA,CAAa,QAAA,KAAa,QAAA,GAAW,aAAa,QAAA,GAAW,MAAA;AAAA,IAC9E,QAAQ,OAAO,YAAA,CAAa,MAAA,KAAW,QAAA,GAAW,aAAa,MAAA,GAAS,MAAA;AAAA,IACxE,SAAS,OAAO,YAAA,CAAa,OAAA,KAAY,QAAA,GAAW,aAAa,OAAA,GAAU;AAAA,GAC7E;AACF;;;;;;;;;;;;"}
|
|
@@ -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();
|
|
@@ -30,6 +30,7 @@ require('@mastra/core/utils/safe-stringify');
|
|
|
30
30
|
const codeEditor = require('../../../../code-editor-4ukTuvqG.cjs');
|
|
31
31
|
require('../../../../highlight-DfnRU-Am.cjs');
|
|
32
32
|
require('@base-ui/react/use-render');
|
|
33
|
+
require('../../../../tooltip-BppwIf6Y.cjs');
|
|
33
34
|
require('../../../workflows/workflow/input/processor-input.cjs.js');
|
|
34
35
|
require('react-hook-form');
|
|
35
36
|
require('../../../../lib/form/field-context.cjs.js');
|
|
@@ -40,6 +41,8 @@ require('@autoform/react');
|
|
|
40
41
|
require('@lukeed/uuid');
|
|
41
42
|
require('../../../../lib/form/dynamic-form.cjs.js');
|
|
42
43
|
const icons_WorkflowIcon = require('../../../../icons/WorkflowIcon.cjs.js');
|
|
44
|
+
require('../../../../data-list-4t6Ueon8.cjs');
|
|
45
|
+
require('../../../../keyboard/keyboard-shortcuts-context.cjs.js');
|
|
43
46
|
const lib_framework = require('../../../../lib/framework.cjs.js');
|
|
44
47
|
require('../../../workflows/components/workflow-information.cjs.js');
|
|
45
48
|
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":"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"}
|
|
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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"}
|
|
@@ -26,6 +26,7 @@ import '@mastra/core/utils/safe-stringify';
|
|
|
26
26
|
import { C as CodeEditor } from '../../../../code-editor-8qu58Npy.js';
|
|
27
27
|
import '../../../../highlight-CXDme3FZ.js';
|
|
28
28
|
import '@base-ui/react/use-render';
|
|
29
|
+
import '../../../../tooltip-DrsXZDAj.js';
|
|
29
30
|
import '../../../workflows/workflow/input/processor-input.es.js';
|
|
30
31
|
import 'react-hook-form';
|
|
31
32
|
import '../../../../lib/form/field-context.es.js';
|
|
@@ -36,6 +37,8 @@ import '@autoform/react';
|
|
|
36
37
|
import '@lukeed/uuid';
|
|
37
38
|
import '../../../../lib/form/dynamic-form.es.js';
|
|
38
39
|
import { WorkflowIcon } from '../../../../icons/WorkflowIcon.es.js';
|
|
40
|
+
import '../../../../data-list-BQMBFAyK.js';
|
|
41
|
+
import '../../../../keyboard/keyboard-shortcuts-context.es.js';
|
|
39
42
|
import { useLinkComponent } from '../../../../lib/framework.es.js';
|
|
40
43
|
import '../../../workflows/components/workflow-information.es.js';
|
|
41
44
|
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';
|
package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js
CHANGED
|
@@ -18,7 +18,7 @@ const Button = require('../../../../Button-C4I05uT4.cjs');
|
|
|
18
18
|
const codeEditor = require('../../../../code-editor-4ukTuvqG.cjs');
|
|
19
19
|
require('../../../../highlight-DfnRU-Am.cjs');
|
|
20
20
|
const dialog = require('../../../../dialog-SSeOqRnH.cjs');
|
|
21
|
-
const field = require('../../../../field-
|
|
21
|
+
const field = require('../../../../field-CZ5fldpM.cjs');
|
|
22
22
|
require('../../../../field-control-aria-WzMGs0A4.cjs');
|
|
23
23
|
const Txt = require('../../../../Txt-CIS2G5Jx.cjs');
|
|
24
24
|
const settingsContainer = require('../../../../settings-container-umHxLp1a.cjs');
|
|
@@ -70,6 +70,14 @@ const STEPS = {
|
|
|
70
70
|
};
|
|
71
71
|
const GROUND_TRUTH_PLACEHOLDER = '{ "text": "The answer you expect" }';
|
|
72
72
|
const hasContent = (value) => !["", "{}"].includes(value.trim());
|
|
73
|
+
const isJson = (value) => {
|
|
74
|
+
try {
|
|
75
|
+
JSON.parse(value);
|
|
76
|
+
return true;
|
|
77
|
+
} catch {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
};
|
|
73
81
|
const STEP_COUNT = Object.keys(STEPS).length;
|
|
74
82
|
const STEP_OF_FIELD = {
|
|
75
83
|
input: 1,
|
|
@@ -183,7 +191,7 @@ function AddDatasetItemForm({
|
|
|
183
191
|
const errorOf = (field) => formError?.field === field ? formError.message : void 0;
|
|
184
192
|
const apiErrorsOf = (field) => apiErrors?.field === field ? apiErrors.errors : [];
|
|
185
193
|
const isInvalid = (field) => Boolean(errorOf(field)) || apiErrorsOf(field).length > 0;
|
|
186
|
-
const
|
|
194
|
+
const editField = (field) => (value) => {
|
|
187
195
|
update(() => ({ [field]: value }));
|
|
188
196
|
setApiErrors(void 0);
|
|
189
197
|
};
|
|
@@ -202,19 +210,19 @@ function AddDatasetItemForm({
|
|
|
202
210
|
onCreateDataset: renderCreateDatasetDialog ? () => setIsCreateDatasetOpen(true) : void 0
|
|
203
211
|
}
|
|
204
212
|
),
|
|
205
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-5 sm:grid-cols-2", children: [
|
|
213
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-start gap-5 sm:grid-cols-2", children: [
|
|
206
214
|
/* @__PURE__ */ jsxRuntime.jsxs(field.Field, { invalid: isInvalid("input"), children: [
|
|
207
215
|
/* @__PURE__ */ jsxRuntime.jsx(field.FieldLabel, { required: true, children: "Input" }),
|
|
208
|
-
/* @__PURE__ */ jsxRuntime.jsx(field.FieldDescription, { children: "What the target receives when this item runs." }),
|
|
216
|
+
/* @__PURE__ */ jsxRuntime.jsx(field.FieldDescription, { children: "What the target receives when this item runs. JSON or plain text." }),
|
|
209
217
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
210
218
|
codeEditor.CodeEditor,
|
|
211
219
|
{
|
|
212
220
|
value: draft.input,
|
|
213
|
-
onChange:
|
|
214
|
-
"aria-label": "Input
|
|
221
|
+
onChange: editField("input"),
|
|
222
|
+
"aria-label": "Input",
|
|
215
223
|
showCopyButton: hasContent(draft.input),
|
|
216
|
-
showFormatButton: hasContent(draft.input),
|
|
217
|
-
className: "
|
|
224
|
+
showFormatButton: hasContent(draft.input) && isJson(draft.input),
|
|
225
|
+
className: "h-[220px]"
|
|
218
226
|
}
|
|
219
227
|
),
|
|
220
228
|
/* @__PURE__ */ jsxRuntime.jsx(field.FieldError, { children: errorOf("input") }),
|
|
@@ -222,17 +230,17 @@ function AddDatasetItemForm({
|
|
|
222
230
|
] }),
|
|
223
231
|
/* @__PURE__ */ jsxRuntime.jsxs(field.Field, { invalid: isInvalid("groundTruth"), children: [
|
|
224
232
|
/* @__PURE__ */ jsxRuntime.jsx(field.FieldLabel, { children: "Ground truth" }),
|
|
225
|
-
/* @__PURE__ */ jsxRuntime.jsx(field.FieldDescription, { children: "The expected answer scorers compare against." }),
|
|
233
|
+
/* @__PURE__ */ jsxRuntime.jsx(field.FieldDescription, { children: "The expected answer scorers compare against. JSON or plain text." }),
|
|
226
234
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
227
235
|
codeEditor.CodeEditor,
|
|
228
236
|
{
|
|
229
237
|
value: draft.groundTruth,
|
|
230
|
-
onChange:
|
|
231
|
-
"aria-label": "Ground truth
|
|
238
|
+
onChange: editField("groundTruth"),
|
|
239
|
+
"aria-label": "Ground truth",
|
|
232
240
|
placeholder: GROUND_TRUTH_PLACEHOLDER,
|
|
233
241
|
showCopyButton: hasContent(draft.groundTruth),
|
|
234
|
-
showFormatButton: hasContent(draft.groundTruth),
|
|
235
|
-
className: "
|
|
242
|
+
showFormatButton: hasContent(draft.groundTruth) && isJson(draft.groundTruth),
|
|
243
|
+
className: "h-[220px]"
|
|
236
244
|
}
|
|
237
245
|
),
|
|
238
246
|
/* @__PURE__ */ jsxRuntime.jsx(field.FieldError, { children: errorOf("groundTruth") }),
|
|
@@ -245,12 +253,12 @@ function AddDatasetItemForm({
|
|
|
245
253
|
codeEditor.CodeEditor,
|
|
246
254
|
{
|
|
247
255
|
value: draft.toolMocks,
|
|
248
|
-
onChange:
|
|
256
|
+
onChange: editField("toolMocks"),
|
|
249
257
|
"aria-label": "Tool mocks JSON",
|
|
250
258
|
placeholder: TOOL_MOCKS_PLACEHOLDER,
|
|
251
259
|
showCopyButton: hasContent(draft.toolMocks),
|
|
252
260
|
showFormatButton: hasContent(draft.toolMocks),
|
|
253
|
-
className: "
|
|
261
|
+
className: "h-80"
|
|
254
262
|
}
|
|
255
263
|
),
|
|
256
264
|
/* @__PURE__ */ jsxRuntime.jsx(field.FieldError, { children: errorOf("toolMocks") }),
|
|
@@ -269,7 +277,7 @@ function AddDatasetItemForm({
|
|
|
269
277
|
codeEditor.CodeEditor,
|
|
270
278
|
{
|
|
271
279
|
value: draft.requestContext,
|
|
272
|
-
onChange:
|
|
280
|
+
onChange: editField("requestContext"),
|
|
273
281
|
"aria-label": "Request context JSON",
|
|
274
282
|
placeholder: requestContextPlaceholder(targetDataset?.requestContextSchema),
|
|
275
283
|
showCopyButton: hasContent(draft.requestContext),
|