@mastra/playground-ui 68.0.0-alpha.3 → 68.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/{FilterBar-CQl04O6t.cjs → FilterBar-BSP2UTjc.cjs} +2 -2
- package/dist/{FilterBar-CQl04O6t.cjs.map → FilterBar-BSP2UTjc.cjs.map} +1 -1
- package/dist/{FilterBar-BgW2dqRQ.js → FilterBar-PSQ1OwqH.js} +2 -2
- package/dist/{FilterBar-BgW2dqRQ.js.map → FilterBar-PSQ1OwqH.js.map} +1 -1
- package/dist/{MetricsCard-CEB-f2sv.cjs → MetricsCard-BEwiS7Pe.cjs} +8 -8
- package/dist/MetricsCard-BEwiS7Pe.cjs.map +1 -0
- package/dist/{MetricsCard-M8awJ2B_.js → MetricsCard-ua6C6b8a.js} +10 -10
- package/dist/MetricsCard-ua6C6b8a.js.map +1 -0
- package/dist/{MetricsLineChart-BhHoduO0.js → MetricsLineChart-4SwxBbQx.js} +14 -3
- package/dist/MetricsLineChart-4SwxBbQx.js.map +1 -0
- package/dist/{MetricsLineChart-CjBm4IXu.cjs → MetricsLineChart-tZxsauau.cjs} +13 -2
- package/dist/MetricsLineChart-tZxsauau.cjs.map +1 -0
- package/dist/{MetricsStackedBarChart-BdMlKv6G.cjs → MetricsStackedBarChart-CDLE76IB.cjs} +2 -2
- package/dist/{MetricsStackedBarChart-BdMlKv6G.cjs.map → MetricsStackedBarChart-CDLE76IB.cjs.map} +1 -1
- package/dist/{MetricsStackedBarChart-BRuA6MTE.js → MetricsStackedBarChart-D2QyS4-z.js} +2 -2
- package/dist/{MetricsStackedBarChart-BRuA6MTE.js.map → MetricsStackedBarChart-D2QyS4-z.js.map} +1 -1
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/FilterBar.cjs.js +2 -2
- package/dist/components/FilterBar.es.js +2 -2
- package/dist/components/MetricsCard.cjs.js +1 -1
- package/dist/components/MetricsCard.es.js +1 -1
- package/dist/components/MetricsLineChart.cjs.js +1 -1
- package/dist/components/MetricsLineChart.es.js +1 -1
- package/dist/components/MetricsStackedBarChart.cjs.js +1 -1
- package/dist/components/MetricsStackedBarChart.es.js +1 -1
- package/dist/{date-time-range-picker-CTt7Od0P.cjs → date-time-range-picker-CWGjoR3j.cjs} +40 -13
- package/dist/date-time-range-picker-CWGjoR3j.cjs.map +1 -0
- package/dist/{date-time-range-picker-DKh1K9Iy.js → date-time-range-picker-CdSiXwB4.js} +40 -13
- package/dist/date-time-range-picker-CdSiXwB4.js.map +1 -0
- package/dist/domains/chat/messages/message-row.cjs.js +1 -1
- package/dist/domains/chat/messages/message-row.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
- package/dist/domains/chat/tools/connect-prompt-tool.cjs.js +79 -4
- package/dist/domains/chat/tools/connect-prompt-tool.cjs.js.map +1 -1
- package/dist/domains/chat/tools/connect-prompt-tool.es.js +79 -4
- package/dist/domains/chat/tools/connect-prompt-tool.es.js.map +1 -1
- package/dist/domains/chat/tools/mcp-input-request-tool.cjs.js +10 -12
- package/dist/domains/chat/tools/mcp-input-request-tool.cjs.js.map +1 -1
- package/dist/domains/chat/tools/mcp-input-request-tool.es.js +10 -12
- package/dist/domains/chat/tools/mcp-input-request-tool.es.js.map +1 -1
- package/dist/domains/chat/tools/tool-card-kind.cjs.js +1 -1
- package/dist/domains/chat/tools/tool-card-kind.cjs.js.map +1 -1
- package/dist/domains/chat/tools/tool-card-kind.es.js +1 -1
- package/dist/domains/chat/tools/tool-card-kind.es.js.map +1 -1
- package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
- package/dist/domains/chat/tools/tool-card.es.js +1 -1
- package/dist/domains/connect/types.cjs.js.map +1 -1
- package/dist/domains/connect/types.es.js.map +1 -1
- package/dist/domains/connect/use-user-connect.cjs.js +19 -2
- package/dist/domains/connect/use-user-connect.cjs.js.map +1 -1
- package/dist/domains/connect/use-user-connect.es.js +19 -2
- package/dist/domains/connect/use-user-connect.es.js.map +1 -1
- package/dist/domains/dashboards/components/dashboard-renderer.cjs.js +4 -3
- package/dist/domains/dashboards/components/dashboard-renderer.cjs.js.map +1 -1
- package/dist/domains/dashboards/components/dashboard-renderer.es.js +4 -3
- package/dist/domains/dashboards/components/dashboard-renderer.es.js.map +1 -1
- package/dist/domains/dashboards/components/widget-chrome.cjs.js +1 -1
- package/dist/domains/dashboards/components/widget-chrome.es.js +1 -1
- package/dist/domains/dashboards/components/widget-error.cjs.js +1 -1
- package/dist/domains/dashboards/components/widget-error.es.js +1 -1
- package/dist/domains/dashboards/hooks/use-widget-views.cjs.js +4 -3
- package/dist/domains/dashboards/hooks/use-widget-views.cjs.js.map +1 -1
- package/dist/domains/dashboards/hooks/use-widget-views.es.js +4 -3
- package/dist/domains/dashboards/hooks/use-widget-views.es.js.map +1 -1
- package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js +9 -6
- package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js.map +1 -1
- package/dist/domains/dashboards/kinds/scores/scores-widget.es.js +9 -6
- package/dist/domains/dashboards/kinds/scores/scores-widget.es.js.map +1 -1
- package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js +2 -2
- package/dist/domains/dashboards/kinds/table/table-tabs.es.js +2 -2
- package/dist/domains/dashboards/kinds/table/table-widget.cjs.js +1 -1
- package/dist/domains/dashboards/kinds/table/table-widget.es.js +1 -1
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js +6 -5
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js.map +1 -1
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js +6 -5
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js.map +1 -1
- package/dist/domains/dashboards/lib/chrome.cjs.js +9 -2
- package/dist/domains/dashboards/lib/chrome.cjs.js.map +1 -1
- package/dist/domains/dashboards/lib/chrome.es.js +9 -2
- package/dist/domains/dashboards/lib/chrome.es.js.map +1 -1
- package/dist/domains/dashboards/widget-kind.cjs.js.map +1 -1
- package/dist/domains/dashboards/widget-kind.es.js.map +1 -1
- package/dist/domains/metrics/components/agent-runs-card.cjs.js +3 -3
- package/dist/domains/metrics/components/agent-runs-card.es.js +3 -3
- package/dist/domains/metrics/components/breakdown/breakdown-tab-body.cjs.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-tab-body.es.js +1 -1
- package/dist/domains/metrics/components/breakdown-card.cjs.js +1 -1
- package/dist/domains/metrics/components/breakdown-card.es.js +1 -1
- package/dist/domains/metrics/components/chart-area.cjs.js +1 -1
- package/dist/domains/metrics/components/chart-area.es.js +1 -1
- package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
- package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
- package/dist/domains/metrics/components/chart-card.cjs.js +1 -1
- package/dist/domains/metrics/components/chart-card.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/metrics/components/distinct-ids/distinct-ids-chart.cjs.js +3 -2
- package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.cjs.js.map +1 -1
- package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js +3 -2
- package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js.map +1 -1
- package/dist/domains/metrics/components/failure-rate-card.cjs.js +3 -2
- package/dist/domains/metrics/components/failure-rate-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/failure-rate-card.es.js +3 -2
- package/dist/domains/metrics/components/failure-rate-card.es.js.map +1 -1
- package/dist/domains/metrics/components/latency-card.cjs.js +3 -2
- package/dist/domains/metrics/components/latency-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/latency-card.es.js +3 -2
- package/dist/domains/metrics/components/latency-card.es.js.map +1 -1
- package/dist/domains/metrics/components/metrics-time-range-chip.cjs.js +1 -1
- package/dist/domains/metrics/components/metrics-time-range-chip.es.js +1 -1
- package/dist/domains/metrics/components/scores-card.cjs.js +2 -1
- package/dist/domains/metrics/components/scores-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/scores-card.es.js +2 -1
- package/dist/domains/metrics/components/scores-card.es.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-card.cjs.js +3 -3
- package/dist/domains/metrics/components/token-usage-card.es.js +3 -3
- package/dist/domains/metrics/components/trace-aggregate-card.cjs.js +1 -1
- package/dist/domains/metrics/components/trace-aggregate-card.es.js +1 -1
- package/dist/domains/observability/components/observability-histogram.cjs.js +1 -1
- package/dist/domains/observability/components/observability-histogram.es.js +1 -1
- package/dist/domains/spans/components/spans-filter-bar.cjs.js +2 -2
- package/dist/domains/spans/components/spans-filter-bar.es.js +2 -2
- package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js +1 -1
- package/dist/domains/spans/hooks/use-spans-filter-bar.es.js +1 -1
- package/dist/domains/threads/components/threads-filter-bar.cjs.js +2 -2
- package/dist/domains/threads/components/threads-filter-bar.es.js +2 -2
- package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js +1 -1
- package/dist/domains/threads/hooks/use-threads-filter-bar.es.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +2 -2
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +1 -1
- package/dist/{filter-bar-time-range-mg9JeYue.js → filter-bar-time-range-qlV8p7hp.js} +2 -2
- package/dist/{filter-bar-time-range-mg9JeYue.js.map → filter-bar-time-range-qlV8p7hp.js.map} +1 -1
- package/dist/{filter-bar-time-range-BA-pXMlo.cjs → filter-bar-time-range-zdM024JD.cjs} +2 -2
- package/dist/{filter-bar-time-range-BA-pXMlo.cjs.map → filter-bar-time-range-zdM024JD.cjs.map} +1 -1
- package/dist/src/domains/chat/tools/connect-prompt-tool.d.ts +10 -1
- package/dist/src/domains/connect/types.d.ts +16 -0
- package/dist/src/domains/dashboards/components/dashboard-renderer.d.ts +4 -2
- package/dist/src/domains/dashboards/hooks/use-widget-views.d.ts +4 -3
- package/dist/src/domains/dashboards/index.d.ts +1 -1
- package/dist/src/domains/dashboards/kinds/scores/scores-widget.d.ts +1 -1
- package/dist/src/domains/dashboards/lib/chrome.d.ts +6 -4
- package/dist/src/domains/dashboards/widget-kind.d.ts +12 -0
- package/dist/src/ds/components/DateTimeRangePicker/date-time-range-picker.d.ts +12 -1
- package/dist/src/ds/components/MetricsCard/metrics-card-headline.d.ts +1 -1
- package/dist/src/ds/components/MetricsLineChart/metrics-line-chart.d.ts +8 -0
- package/dist/style.css +4 -0
- package/dist/{tool-card-rxhTDpk_.cjs → tool-card-BOLXeKIp.cjs} +4 -1
- package/dist/{tool-card-rxhTDpk_.cjs.map → tool-card-BOLXeKIp.cjs.map} +1 -1
- package/dist/{tool-card-toDgoZzJ.js → tool-card-HZ5bm7ue.js} +4 -1
- package/dist/{tool-card-toDgoZzJ.js.map → tool-card-HZ5bm7ue.js.map} +1 -1
- package/package.json +9 -9
- package/dist/MetricsCard-CEB-f2sv.cjs.map +0 -1
- package/dist/MetricsCard-M8awJ2B_.js.map +0 -1
- package/dist/MetricsLineChart-BhHoduO0.js.map +0 -1
- package/dist/MetricsLineChart-CjBm4IXu.cjs.map +0 -1
- package/dist/date-time-range-picker-CTt7Od0P.cjs.map +0 -1
- package/dist/date-time-range-picker-DKh1K9Iy.js.map +0 -1
|
@@ -2,7 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
2
2
|
const require_trace_filters = require("../../../../trace-filters-a0N9bf52.cjs");
|
|
3
3
|
const require_types = require("../../../../types-CP7wbYua.cjs");
|
|
4
4
|
const require_domains_traces_components_traces_explorer_traces_explorer_actions = require("./traces-explorer-actions.cjs.js");
|
|
5
|
-
const require_filter_bar_time_range = require("../../../../filter-bar-time-range-
|
|
5
|
+
const require_filter_bar_time_range = require("../../../../filter-bar-time-range-zdM024JD.cjs");
|
|
6
6
|
const require_domains_traces_components_traces_explorer_traces_explorer_context = require("./traces-explorer-context.cjs.js");
|
|
7
7
|
const require_domains_traces_components_traces_explorer_use_traces_discovery = require("./use-traces-discovery.cjs.js");
|
|
8
8
|
let react = require("react");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { I as createTraceFilterBarFields, L as filterBarExpressionToTraceFilters, rt as traceTokensToFilterBarItems, tt as traceFiltersToFilterBarExpression } from "../../../../trace-filters-CaWkw779.js";
|
|
2
2
|
import { t as isFilterBarGroup } from "../../../../types-DiiL5mTO.js";
|
|
3
3
|
import { getSelectedEntityOption } from "./traces-explorer-actions.es.js";
|
|
4
|
-
import { r as FILTER_BAR_TIME_RANGE_ITEM, t as FILTER_BAR_TIME_RANGE_FIELD } from "../../../../filter-bar-time-range-
|
|
4
|
+
import { r as FILTER_BAR_TIME_RANGE_ITEM, t as FILTER_BAR_TIME_RANGE_FIELD } from "../../../../filter-bar-time-range-qlV8p7hp.js";
|
|
5
5
|
import { useTracesConfig, useTracesFilters } from "./traces-explorer-context.es.js";
|
|
6
6
|
import { useTracesDiscovery } from "./use-traces-discovery.es.js";
|
|
7
7
|
import { useMemo } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as DateTimeRangePicker } from "./date-time-range-picker-
|
|
1
|
+
import { t as DateTimeRangePicker } from "./date-time-range-picker-CdSiXwB4.js";
|
|
2
2
|
import { p as useFilterBarItemKeys, y as useFilterBarContext } from "./filter-bar-chip-CABeKrtf.js";
|
|
3
3
|
import { useRef } from "react";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -57,4 +57,4 @@ function FilterBarTimeRange(props) {
|
|
|
57
57
|
}
|
|
58
58
|
export { FilterBarTimeRange as i, FILTER_BAR_TIME_RANGE_FIELD_ID as n, FILTER_BAR_TIME_RANGE_ITEM as r, FILTER_BAR_TIME_RANGE_FIELD as t };
|
|
59
59
|
|
|
60
|
-
//# sourceMappingURL=filter-bar-time-range-
|
|
60
|
+
//# sourceMappingURL=filter-bar-time-range-qlV8p7hp.js.map
|
package/dist/{filter-bar-time-range-mg9JeYue.js.map → filter-bar-time-range-qlV8p7hp.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-bar-time-range-
|
|
1
|
+
{"version":3,"file":"filter-bar-time-range-qlV8p7hp.js","names":[],"sources":["../src/ds/components/FilterBar/filter-bar-time-range.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\nimport { CalendarIcon } from 'lucide-react';\nimport { useRef } from 'react';\nimport { FILTER_BAR_CONTROL_SIZE } from './filter-bar-chip';\nimport { useFilterBarContext } from './filter-bar-context';\nimport type { FilterBarField, FilterBarItem } from './types';\nimport { useFilterBarItemKeys } from './use-filter-bar-item-keys';\nimport { DateTimeRangePicker } from '@/ds/components/DateTimeRangePicker/date-time-range-picker';\nimport type { DateTimeRangePickerProps } from '@/ds/components/DateTimeRangePicker/date-time-range-picker';\n\nexport const FILTER_BAR_TIME_RANGE_FIELD_ID = 'timeRange';\n\n/**\n * Synthetic field backing the time range control. Hidden from the input's field step (the\n * range cannot be added twice) but registered so the bar resolves its label and takes it into\n * keyboard navigation. Add it to the bar's `fields` and `FILTER_BAR_TIME_RANGE_ITEM` to its\n * `items`, then render `FilterBar.TimeRange` for that item from `FilterBar.Chips`.\n */\nexport const FILTER_BAR_TIME_RANGE_FIELD: FilterBarField = {\n id: FILTER_BAR_TIME_RANGE_FIELD_ID,\n label: 'Time',\n icon: CalendarIcon,\n type: 'text',\n operators: ['is'],\n hidden: true,\n};\n\nexport const FILTER_BAR_TIME_RANGE_ITEM: FilterBarItem = {\n id: FILTER_BAR_TIME_RANGE_FIELD_ID,\n fieldId: FILTER_BAR_TIME_RANGE_FIELD_ID,\n operatorId: 'is',\n value: '',\n};\n\nexport type FilterBarTimeRangeProps = Omit<DateTimeRangePickerProps, 'size' | 'ref'>;\n\n/**\n * A filter bar's time range: the `DateTimeRangePicker` itself at the bar's rung, so it looks and\n * behaves exactly as it does anywhere else, reset × included. It scopes the bar rather than\n * filtering it, so it is not a removable chip; the wrapper only joins it to the bar's arrow-key\n * order.\n */\nexport function FilterBarTimeRange(props: FilterBarTimeRangeProps) {\n const ctx = useFilterBarContext();\n const rootRef = useRef<HTMLDivElement>(null);\n const { onKeyDown } = useFilterBarItemKeys({\n item: FILTER_BAR_TIME_RANGE_ITEM,\n rootRef,\n pinned: true,\n removable: false,\n segmentSelector: 'button',\n });\n\n return (\n <div\n ref={rootRef}\n role=\"group\"\n aria-label=\"Time range\"\n data-slot=\"filter-bar-time-range\"\n className=\"flex\"\n onKeyDown={onKeyDown}\n >\n <DateTimeRangePicker\n {...props}\n size={FILTER_BAR_CONTROL_SIZE}\n ref={el => ctx.registerSegment(FILTER_BAR_TIME_RANGE_ITEM.id, 'value', el)}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;AAUA,IAAa,iCAAiC;;;;;;;AAQ9C,IAAa,8BAA8C;CACzD,IAAI;CACJ,OAAO;CACP,MAAM;CACN,MAAM;CACN,WAAW,CAAC,IAAI;CAChB,QAAQ;AACV;AAEA,IAAa,6BAA4C;CACvD,IAAI;CACJ,SAAS;CACT,YAAY;CACZ,OAAO;AACT;;;;;;;AAUA,SAAgB,mBAAmB,OAAgC;CACjE,MAAM,MAAM,oBAAoB;CAChC,MAAM,UAAU,OAAuB,IAAI;CAC3C,MAAM,EAAE,cAAc,qBAAqB;EACzC,MAAM;EACN;EACA,QAAQ;EACR,WAAW;EACX,iBAAiB;CACnB,CAAC;CAED,OACE,oBAAC,OAAD;EACE,KAAK;EACL,MAAK;EACL,cAAW;EACX,aAAU;EACV,WAAU;EACC;EAEX,UAAA,oBAAC,qBAAD;GACE,GAAI;GACJ,MAAA;GACA,MAAK,OAAM,IAAI,gBAAgB,2BAA2B,IAAI,SAAS,EAAE;EAC1E,CAAA;CACE,CAAA;AAET"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_date_time_range_picker = require("./date-time-range-picker-
|
|
1
|
+
const require_date_time_range_picker = require("./date-time-range-picker-CWGjoR3j.cjs");
|
|
2
2
|
const require_filter_bar_chip = require("./filter-bar-chip-Cg-UbIwP.cjs");
|
|
3
3
|
let react = require("react");
|
|
4
4
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -80,4 +80,4 @@ Object.defineProperty(exports, "FilterBarTimeRange", {
|
|
|
80
80
|
}
|
|
81
81
|
});
|
|
82
82
|
|
|
83
|
-
//# sourceMappingURL=filter-bar-time-range-
|
|
83
|
+
//# sourceMappingURL=filter-bar-time-range-zdM024JD.cjs.map
|
package/dist/{filter-bar-time-range-BA-pXMlo.cjs.map → filter-bar-time-range-zdM024JD.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-bar-time-range-
|
|
1
|
+
{"version":3,"file":"filter-bar-time-range-zdM024JD.cjs","names":["CalendarIcon","useFilterBarContext","useRef","useFilterBarItemKeys","DateTimeRangePicker"],"sources":["../src/ds/components/FilterBar/filter-bar-time-range.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\nimport { CalendarIcon } from 'lucide-react';\nimport { useRef } from 'react';\nimport { FILTER_BAR_CONTROL_SIZE } from './filter-bar-chip';\nimport { useFilterBarContext } from './filter-bar-context';\nimport type { FilterBarField, FilterBarItem } from './types';\nimport { useFilterBarItemKeys } from './use-filter-bar-item-keys';\nimport { DateTimeRangePicker } from '@/ds/components/DateTimeRangePicker/date-time-range-picker';\nimport type { DateTimeRangePickerProps } from '@/ds/components/DateTimeRangePicker/date-time-range-picker';\n\nexport const FILTER_BAR_TIME_RANGE_FIELD_ID = 'timeRange';\n\n/**\n * Synthetic field backing the time range control. Hidden from the input's field step (the\n * range cannot be added twice) but registered so the bar resolves its label and takes it into\n * keyboard navigation. Add it to the bar's `fields` and `FILTER_BAR_TIME_RANGE_ITEM` to its\n * `items`, then render `FilterBar.TimeRange` for that item from `FilterBar.Chips`.\n */\nexport const FILTER_BAR_TIME_RANGE_FIELD: FilterBarField = {\n id: FILTER_BAR_TIME_RANGE_FIELD_ID,\n label: 'Time',\n icon: CalendarIcon,\n type: 'text',\n operators: ['is'],\n hidden: true,\n};\n\nexport const FILTER_BAR_TIME_RANGE_ITEM: FilterBarItem = {\n id: FILTER_BAR_TIME_RANGE_FIELD_ID,\n fieldId: FILTER_BAR_TIME_RANGE_FIELD_ID,\n operatorId: 'is',\n value: '',\n};\n\nexport type FilterBarTimeRangeProps = Omit<DateTimeRangePickerProps, 'size' | 'ref'>;\n\n/**\n * A filter bar's time range: the `DateTimeRangePicker` itself at the bar's rung, so it looks and\n * behaves exactly as it does anywhere else, reset × included. It scopes the bar rather than\n * filtering it, so it is not a removable chip; the wrapper only joins it to the bar's arrow-key\n * order.\n */\nexport function FilterBarTimeRange(props: FilterBarTimeRangeProps) {\n const ctx = useFilterBarContext();\n const rootRef = useRef<HTMLDivElement>(null);\n const { onKeyDown } = useFilterBarItemKeys({\n item: FILTER_BAR_TIME_RANGE_ITEM,\n rootRef,\n pinned: true,\n removable: false,\n segmentSelector: 'button',\n });\n\n return (\n <div\n ref={rootRef}\n role=\"group\"\n aria-label=\"Time range\"\n data-slot=\"filter-bar-time-range\"\n className=\"flex\"\n onKeyDown={onKeyDown}\n >\n <DateTimeRangePicker\n {...props}\n size={FILTER_BAR_CONTROL_SIZE}\n ref={el => ctx.registerSegment(FILTER_BAR_TIME_RANGE_ITEM.id, 'value', el)}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;AAUA,IAAa,iCAAiC;;;;;;;AAQ9C,IAAa,8BAA8C;CACzD,IAAI;CACJ,OAAO;CACP,MAAMA,aAAAA;CACN,MAAM;CACN,WAAW,CAAC,IAAI;CAChB,QAAQ;AACV;AAEA,IAAa,6BAA4C;CACvD,IAAI;CACJ,SAAS;CACT,YAAY;CACZ,OAAO;AACT;;;;;;;AAUA,SAAgB,mBAAmB,OAAgC;CACjE,MAAM,MAAMC,wBAAAA,oBAAoB;CAChC,MAAM,WAAA,GAAUC,MAAAA,OAAAA,CAAuB,IAAI;CAC3C,MAAM,EAAE,cAAcC,wBAAAA,qBAAqB;EACzC,MAAM;EACN;EACA,QAAQ;EACR,WAAW;EACX,iBAAiB;CACnB,CAAC;CAED,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,KAAK;EACL,MAAK;EACL,cAAW;EACX,aAAU;EACV,WAAU;EACC;EAEX,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,+BAAAA,qBAAD;GACE,GAAI;GACJ,MAAA;GACA,MAAK,OAAM,IAAI,gBAAgB,2BAA2B,IAAI,SAAS,EAAE;EAC1E,CAAA;CACE,CAAA;AAET"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import type { MessageMetadata } from '../messages/message-metadata';
|
|
1
2
|
export { CONNECT_PROMPT_TOOL_NAME } from './connect-prompt-tool-id';
|
|
2
3
|
export interface ConnectPromptToolProps {
|
|
4
|
+
toolName: string;
|
|
5
|
+
toolCallId: string;
|
|
3
6
|
output: unknown;
|
|
7
|
+
metadata?: MessageMetadata;
|
|
4
8
|
/** Historical rendering: show the card but suppress the connect action. */
|
|
5
9
|
readOnly?: boolean;
|
|
6
10
|
}
|
|
@@ -11,5 +15,10 @@ export interface ConnectPromptToolProps {
|
|
|
11
15
|
* the mounted `/connect` routes, drives the OAuth flow in a popup through the
|
|
12
16
|
* server's launch gate (which verifies this browser owns the pending session
|
|
13
17
|
* before redirecting to the vendor), and polls until the connection settles.
|
|
18
|
+
*
|
|
19
|
+
* The tool pauses the agent run while the card is up. Once the connection
|
|
20
|
+
* settles, the card resumes the paused call with the outcome — connected, or
|
|
21
|
+
* the reason it failed — so the agent continues from the tool's result rather
|
|
22
|
+
* than a chat message.
|
|
14
23
|
*/
|
|
15
|
-
export declare const ConnectPromptTool: ({ output, readOnly }: ConnectPromptToolProps) => import("react").JSX.Element | null;
|
|
24
|
+
export declare const ConnectPromptTool: ({ toolName, toolCallId, output, metadata, readOnly, }: ConnectPromptToolProps) => import("react").JSX.Element | null;
|
|
@@ -103,6 +103,22 @@ export interface ConnectPromptPayload {
|
|
|
103
103
|
type: 'connect-prompt';
|
|
104
104
|
requestedProvider?: string;
|
|
105
105
|
providers: ConnectPromptProvider[];
|
|
106
|
+
/** Outcome for the model once a paused prompt resumes, e.g. "Linear connected successfully." */
|
|
107
|
+
message?: string;
|
|
108
|
+
/** Why the connection failed, when a paused prompt resumed without one. */
|
|
109
|
+
error?: string;
|
|
106
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* What the card resumes a paused `request_connection` call with once the
|
|
113
|
+
* connection settles: `active`, or `failed` with the reason the card showed.
|
|
114
|
+
*/
|
|
115
|
+
export type ConnectPromptResume = {
|
|
116
|
+
provider: string;
|
|
117
|
+
status: 'active';
|
|
118
|
+
} | {
|
|
119
|
+
provider: string;
|
|
120
|
+
status: 'failed';
|
|
121
|
+
error: string;
|
|
122
|
+
};
|
|
107
123
|
/** Narrows an arbitrary tool output to a connect-prompt payload. */
|
|
108
124
|
export declare function isConnectPromptPayload(output: unknown): output is ConnectPromptPayload;
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import type { DashboardDefinition } from '@mastra/client-js';
|
|
2
2
|
import type { DashboardScope, OnDashboardDrilldown } from '../lib/definition';
|
|
3
|
-
import type { AnyWidgetKind } from '../widget-kind';
|
|
3
|
+
import type { AnyWidgetKind, DashboardExpand } from '../widget-kind';
|
|
4
4
|
export type DashboardRendererProps = {
|
|
5
5
|
definition: DashboardDefinition;
|
|
6
6
|
/** Which widgets, views and columns show: `org` spans several projects, `project` is one. */
|
|
7
7
|
scope: DashboardScope;
|
|
8
8
|
/** Opens a drilldown; each host routes to its own Traces or Logs page. */
|
|
9
9
|
onDrilldown?: OnDashboardDrilldown;
|
|
10
|
+
/** Where chart cards expand to, e.g. the host's query page; see `DashboardExpand`. */
|
|
11
|
+
expand?: DashboardExpand;
|
|
10
12
|
/** Kinds beyond the built-in ones; a kind of the same name replaces the built-in. */
|
|
11
13
|
kinds?: AnyWidgetKind[];
|
|
12
14
|
className?: string;
|
|
@@ -16,4 +18,4 @@ export type DashboardRendererProps = {
|
|
|
16
18
|
* owns the range and filters. Each widget is checked and rendered on its own: one that fails to
|
|
17
19
|
* parse, query or render shows its own error, and the rest of the dashboard still renders.
|
|
18
20
|
*/
|
|
19
|
-
export declare function DashboardRenderer({ definition, scope, onDrilldown, kinds, className }: DashboardRendererProps): import("react").JSX.Element;
|
|
21
|
+
export declare function DashboardRenderer({ definition, scope, onDrilldown, expand, kinds, className, }: DashboardRendererProps): import("react").JSX.Element;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import type { DashboardWidget, DashboardWidgetView } from '@mastra/client-js';
|
|
2
2
|
import type { DrilldownScope } from '../../metrics/drilldown';
|
|
3
3
|
import type { OnDashboardDrilldown } from '../lib/definition';
|
|
4
|
-
import type { ResolvedView } from '../widget-kind';
|
|
4
|
+
import type { DashboardExpand, ResolvedView } from '../widget-kind';
|
|
5
5
|
export type Views<Options> = readonly [ResolvedView<Options>, ...ResolvedView<Options>[]];
|
|
6
6
|
/**
|
|
7
7
|
* The open view of a widget, `defaultIndex` until one is picked, and the card title for it
|
|
8
|
-
* (`title`, and `titleMenu` with several views) to spread into
|
|
8
|
+
* (`title`, and `titleMenu` with several views, or an expand link with `expand`) to spread into
|
|
9
|
+
* `ChartCard`.
|
|
9
10
|
*/
|
|
10
|
-
export declare function useViewMenu<Options>(widget: DashboardWidget, views: Views<Options>, defaultIndex?: number): {
|
|
11
|
+
export declare function useViewMenu<Options>(widget: DashboardWidget, views: Views<Options>, defaultIndex?: number, expand?: DashboardExpand): {
|
|
11
12
|
view: ResolvedView<Options>;
|
|
12
13
|
index: number;
|
|
13
14
|
heading: import("../lib/chrome").ViewHeading;
|
|
@@ -16,4 +16,4 @@ export type { DashboardScope, OnDashboardDrilldown } from './lib/definition';
|
|
|
16
16
|
export { buildRequest } from './lib/requests';
|
|
17
17
|
export type { DashboardPageContext, DashboardRequest } from './lib/requests';
|
|
18
18
|
export { defineWidgetKind } from './widget-kind';
|
|
19
|
-
export type { AnyWidgetKind, ResolvedView, WidgetKind, WidgetKindProps } from './widget-kind';
|
|
19
|
+
export type { AnyWidgetKind, DashboardExpand, ResolvedView, WidgetKind, WidgetKindProps } from './widget-kind';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { WidgetKindProps } from '../../widget-kind';
|
|
2
2
|
import type { ScoresOptions } from './options';
|
|
3
|
-
export declare function ScoresWidget({ widget, views }: WidgetKindProps<ScoresOptions>): import("react").JSX.Element;
|
|
3
|
+
export declare function ScoresWidget({ widget, views, expand }: WidgetKindProps<ScoresOptions>): import("react").JSX.Element;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { DashboardWidget, DashboardWidgetView } from '@mastra/client-js';
|
|
2
2
|
import type { ChartCardProps } from '../../metrics/components/chart-card';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import type { DashboardExpand } from '../widget-kind';
|
|
4
|
+
/** What a widget's card shows as its title: `title`, and `titleMenu` with several views or an expand link. */
|
|
5
|
+
export type ViewHeading = Pick<ChartCardProps, 'title' | 'titleMenu' | 'href' | 'LinkComponent'>;
|
|
5
6
|
export declare const unsupportedMessage: (fields: string[], names?: Record<string, string>) => string;
|
|
6
7
|
/** A view's value in the card's menu: its label in kebab case (`Token usage` → `token-usage`), or its position when unlabelled or blank. */
|
|
7
8
|
export declare const viewValue: (label: string | undefined, index: number) => string;
|
|
@@ -9,6 +10,7 @@ export declare const viewValue: (label: string | undefined, index: number) => st
|
|
|
9
10
|
export declare const viewLabel: (label: string | undefined, index: number) => string;
|
|
10
11
|
/**
|
|
11
12
|
* The card title for the open view: the widget's title for a single view; with several, the open
|
|
12
|
-
* view's label, as a menu of every view (as the metrics cards switch views).
|
|
13
|
+
* view's label, as a menu of every view (as the metrics cards switch views). With somewhere to
|
|
14
|
+
* expand to, the widget's title links there instead.
|
|
13
15
|
*/
|
|
14
|
-
export declare function viewTitle(widget: DashboardWidget, views: readonly DashboardWidgetView[], index: number, onChoose: (index: number) => void): ViewHeading;
|
|
16
|
+
export declare function viewTitle(widget: DashboardWidget, views: readonly DashboardWidgetView[], index: number, onChoose: (index: number) => void, expand?: DashboardExpand): ViewHeading;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { DashboardWidget, DashboardWidgetView } from '@mastra/client-js';
|
|
2
2
|
import type { ComponentType } from 'react';
|
|
3
3
|
import type { z } from 'zod/v4';
|
|
4
|
+
import type { ChartCardProps } from '../metrics/components/chart-card';
|
|
4
5
|
import type { DashboardScope, OnDashboardDrilldown } from './lib/definition';
|
|
5
6
|
/** A view whose options passed its kind's schema. */
|
|
6
7
|
export type ResolvedView<Options> = DashboardWidgetView & {
|
|
@@ -12,6 +13,17 @@ export type WidgetKindProps<Options> = {
|
|
|
12
13
|
views: [ResolvedView<Options>, ...ResolvedView<Options>[]];
|
|
13
14
|
scope: DashboardScope;
|
|
14
15
|
onDrilldown?: OnDashboardDrilldown;
|
|
16
|
+
/** Where a chart card expands to; see `DashboardExpand`. */
|
|
17
|
+
expand?: DashboardExpand;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Where a chart widget expands to (a host's query page), as the Gateway Overview's cards do: the card
|
|
21
|
+
* shows its title with an expand icon linking there, in place of its views menu, on its first view.
|
|
22
|
+
* `href` returns `undefined` for a widget with nowhere to go; that card keeps its menu.
|
|
23
|
+
*/
|
|
24
|
+
export type DashboardExpand = {
|
|
25
|
+
href: (widget: DashboardWidget) => string | undefined;
|
|
26
|
+
LinkComponent: NonNullable<ChartCardProps['LinkComponent']>;
|
|
15
27
|
};
|
|
16
28
|
/**
|
|
17
29
|
* One kind of widget, self-contained: the renderer only looks it up by name, checks each view's
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { Ref } from 'react';
|
|
2
2
|
import type { TextButtonSize } from '../Button/Button';
|
|
3
3
|
export type DateRangePreset = 'all' | 'last-24h' | 'last-3d' | 'last-7d' | 'last-14d' | 'last-30d' | 'custom';
|
|
4
|
+
/** A fixed range offered beside the presets, e.g. the current billing period. */
|
|
5
|
+
export type DateTimeRangePickerNamedRange = {
|
|
6
|
+
label: string;
|
|
7
|
+
from: Date;
|
|
8
|
+
to?: Date;
|
|
9
|
+
};
|
|
4
10
|
export interface DateTimeRangePickerProps {
|
|
5
11
|
preset?: DateRangePreset;
|
|
6
12
|
onPresetChange?: (preset: DateRangePreset) => void;
|
|
@@ -19,6 +25,11 @@ export interface DateTimeRangePickerProps {
|
|
|
19
25
|
minDate?: Date;
|
|
20
26
|
/** Subset of presets to show. If omitted, all presets are shown. */
|
|
21
27
|
presets?: readonly DateRangePreset[];
|
|
28
|
+
/**
|
|
29
|
+
* Fixed ranges listed above the presets, e.g. `{ label: 'This period', from: periodStart }`.
|
|
30
|
+
* Picking one applies it as a custom range; while it's applied the trigger shows its label.
|
|
31
|
+
*/
|
|
32
|
+
namedRanges?: readonly DateTimeRangePickerNamedRange[];
|
|
22
33
|
/** Size of the trigger Button. Defaults to 'sm', the toolbar rung. */
|
|
23
34
|
size?: TextButtonSize;
|
|
24
35
|
/**
|
|
@@ -31,4 +42,4 @@ export interface DateTimeRangePickerProps {
|
|
|
31
42
|
/** The trigger Button. */
|
|
32
43
|
ref?: Ref<HTMLButtonElement>;
|
|
33
44
|
}
|
|
34
|
-
export declare function DateTimeRangePicker({ preset, onPresetChange, dateFrom, dateTo, onDateChange, onDateRangeChange, disabled, maxRangeMs, minDate, presets, size, defaultPreset, onReset, ref, }: DateTimeRangePickerProps): import("react").JSX.Element;
|
|
45
|
+
export declare function DateTimeRangePicker({ preset, onPresetChange, dateFrom, dateTo, onDateChange, onDateRangeChange, disabled, maxRangeMs, minDate, presets, namedRanges, size, defaultPreset, onReset, ref, }: DateTimeRangePickerProps): import("react").JSX.Element;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The header of a card with one large chart (an explorer, a detail page): the label over a large
|
|
3
3
|
* value, the change against the previous period beside it. Cards in a grid use the compact title
|
|
4
|
-
* and `MetricsCard.Total` instead. A skeleton while loading,
|
|
4
|
+
* and `MetricsCard.Total` instead. A skeleton while loading, at the value's own trimmed height.
|
|
5
5
|
*/
|
|
6
6
|
export declare function MetricsCardHeadline({ label, value, change, isLoading, className, }: {
|
|
7
7
|
label: string;
|
|
@@ -57,6 +57,14 @@ export type MetricsLineChartProps = {
|
|
|
57
57
|
showYAxis?: boolean;
|
|
58
58
|
/** Show a ghost of the chart while data loads, in the chart's own footprint. */
|
|
59
59
|
isLoading?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Vertical lines at buckets, e.g. where a billing period starts. `x` must be one of the data's
|
|
62
|
+
* `xKey` values: the axis is categorical, so any other value draws nothing.
|
|
63
|
+
*/
|
|
64
|
+
markers?: {
|
|
65
|
+
x: string;
|
|
66
|
+
label?: string;
|
|
67
|
+
}[];
|
|
60
68
|
className?: string;
|
|
61
69
|
};
|
|
62
70
|
export declare function MetricsLineChart(props: MetricsLineChartProps): import("react").JSX.Element;
|
package/dist/style.css
CHANGED
|
@@ -235,7 +235,10 @@ var ToolCardInner = ({ toolName, input, output, modelOutput, backgroundTaskId, b
|
|
|
235
235
|
});
|
|
236
236
|
break;
|
|
237
237
|
case "connect_prompt": return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_chat_tools_connect_prompt_tool.ConnectPromptTool, {
|
|
238
|
+
toolName,
|
|
239
|
+
toolCallId,
|
|
238
240
|
output,
|
|
241
|
+
metadata,
|
|
239
242
|
readOnly
|
|
240
243
|
});
|
|
241
244
|
case "submit_plan": return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_domains_chat_tools_submit_plan_tool.SubmitPlanTool, {
|
|
@@ -422,4 +425,4 @@ Object.defineProperty(exports, "ToolCardInner", {
|
|
|
422
425
|
}
|
|
423
426
|
});
|
|
424
427
|
|
|
425
|
-
//# sourceMappingURL=tool-card-
|
|
428
|
+
//# sourceMappingURL=tool-card-BOLXeKIp.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-card-rxhTDpk_.cjs","names":["awaitsToolApproval","ToolCallMono","CodeEditor","ToolApprovalBadge","AgentIcon","NetworkChoiceMetadataDialogTrigger","BackgroundTaskMetadataDialogTrigger","_Fragment","Button","Markdown","React","SectionLabel","useAgentMessages","LoadingBadge","toAISdkV5Messages","resolveToChildMessages","PlaygroundWorkflowRunProvider","useMcpAppTools","useChatSend","useContext","ChatAgentContext","useChatRunning","useCallback","toolCardKind","toolInteraction","badgeStatus","useDeferredInputRequest","isDeferredCall","DeferredMcpInputRequest","_Fragment","ObservationMarkerBadge","AskUserTool","ConnectPromptTool","SubmitPlanTool","suspendedMcpInputRequest","ToolBadge","ForegroundMcpInputRequest","isAgentCall","isWorkflowCall","isSettledState","WorkflowBadge","FileTreeBadge","SandboxExecutionBadge","codeModeCall","CodeModeBadge","knowledgeCard","KnowledgeToolBadge","ToolResultMedia","McpAppToolResult"],"sources":["../src/domains/chat/tools/badges/agent-badge.tsx","../src/domains/chat/tools/badges/agent-badge-wrapper.tsx","../src/domains/chat/tools/tool-card.tsx"],"sourcesContent":["import React from 'react';\nimport Markdown from 'react-markdown';\nimport { ToolCard } from '../tool-card';\nimport { BackgroundTaskMetadataDialogTrigger } from './background-task-metadata-dialog';\nimport type { MessageMetadata } from '@/domains/chat';\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 type { ActivityStatus } from '@/ds/components/ai/activity';\nimport { ToolCallMono } from '@/ds/components/ai/tool-call';\nimport { Button } from '@/ds/components/Button';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\n\ntype TextMessage = {\n type: 'text';\n content: string;\n};\n\ntype ToolMessage = {\n type: 'tool';\n toolName: string;\n toolOutput?: any;\n args?: any;\n toolCallId: string;\n result?: any;\n};\n\nexport type AgentMessage = TextMessage | ToolMessage;\n\nexport interface AgentBadgeProps extends Omit<ToolApprovalRequest, 'toolCalled'> {\n agentId: string;\n messages: AgentMessage[];\n metadata?: MessageMetadata;\n suspendPayload?: any;\n toolCalled?: boolean;\n isComplete?: boolean;\n keepOpenForStreamingChildMessages?: boolean;\n status?: ActivityStatus;\n errorText?: string;\n onLoadPrevious?: () => void;\n isLoadingPrevious?: boolean;\n}\n\nexport const AgentBadge = ({\n agentId,\n messages = [],\n metadata,\n toolCallId,\n toolApprovalMetadata,\n toolName,\n isNetwork,\n suspendPayload,\n toolCalled: toolCalledProp,\n isComplete = false,\n keepOpenForStreamingChildMessages = false,\n status = 'idle',\n errorText,\n onLoadPrevious,\n isLoadingPrevious = false,\n}: AgentBadgeProps) => {\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 parentSuspendedTools =\n metadata?.mode === 'stream' || metadata?.mode === 'network' || metadata?.mode === 'generate'\n ? metadata?.suspendedTools\n : undefined;\n\n const bgEntry =\n (metadata?.mode === 'stream' || metadata?.mode === 'generate') && metadata?.backgroundTasks\n ? metadata.backgroundTasks[toolCallId]\n : undefined;\n\n const allChildToolsComplete =\n messages.length > 0 &&\n messages.every(message => {\n if (message.type === 'text') {\n return true;\n }\n return message.toolOutput !== undefined;\n });\n\n let toolCalled = isComplete && allChildToolsComplete;\n\n if (isNetwork) {\n toolCalled = toolCalledProp ?? allChildToolsComplete;\n }\n\n const isError = status === 'error';\n const shouldCollapseContent = isComplete && !isError && !toolApprovalMetadata && !keepOpenForStreamingChildMessages;\n const shownError = isError ? errorText : undefined;\n const hasBody =\n Boolean(onLoadPrevious) ||\n messages.length > 0 ||\n Boolean(shownError) ||\n Boolean(suspendPayload) ||\n awaitsToolApproval({ toolApprovalMetadata, toolCalled });\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 return (\n <ToolApprovalBadge\n approval={{\n toolCalled,\n toolCallId,\n toolApprovalMetadata,\n toolName,\n isNetwork,\n isGenerateMode: metadata?.mode === 'generate',\n }}\n data-testid=\"agent-badge\"\n icon={<AgentIcon className=\"text-span-agent\" />}\n title={agentId}\n status={status}\n initialCollapsed={shouldCollapseContent}\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 {onLoadPrevious && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onLoadPrevious}\n disabled={isLoadingPrevious}\n data-testid=\"agent-badge-load-previous\"\n >\n {isLoadingPrevious ? 'Loading earlier messages…' : 'Load earlier messages'}\n </Button>\n )}\n\n {messages.map((message, index) => {\n if (message.type === 'text') {\n return <Markdown key={index}>{message.content}</Markdown>;\n }\n\n let result;\n\n try {\n result = typeof message.toolOutput === 'string' ? JSON.parse(message.toolOutput) : message.toolOutput;\n } catch {\n result = message.toolOutput;\n }\n\n return (\n <React.Fragment key={index}>\n <ToolCard\n toolName={message.toolName}\n input={message.args}\n output={result}\n state=\"output-available\"\n toolCallId={message.toolCallId}\n metadata={{\n mode: 'stream',\n requireApprovalMetadata: isNetwork ? metadata?.requireApprovalMetadata : undefined,\n suspendedTools: parentSuspendedTools,\n }}\n />\n </React.Fragment>\n );\n })}\n\n {shownError && (\n <ToolCallMono copyText={shownError} data-testid=\"agent-error\" className=\"text-destructive-foreground\">\n {shownError}\n </ToolCallMono>\n )}\n\n {suspendPayloadSlot !== undefined && suspendPayload && (\n <div>\n <SectionLabel>Agent suspend payload</SectionLabel>\n {suspendPayloadSlot}\n </div>\n )}\n </>\n )}\n </ToolApprovalBadge>\n );\n};\n","import { toAISdkV5Messages } from '@mastra/ai-sdk/ui';\nimport { useAgentMessages } from '@mastra/react/hooks/agents';\nimport type { AgentMessage } from './agent-badge';\nimport { AgentBadge } from './agent-badge';\nimport { resolveToChildMessages } from './resolve-child-messages';\nimport type { MessageMetadata } from '@/domains/chat';\nimport { LoadingBadge } from '@/domains/chat/components/loading-badge';\nimport type { ToolApprovalRequest } from '@/domains/chat/tools/badges/tool-approval-badge';\nimport type { ActivityStatus } from '@/ds/components/ai/activity';\n\ninterface SubAgentToolResult {\n toolName: string;\n toolCallId: string;\n result: any;\n args: any;\n}\n\ninterface AgentBadgeWrapperProps extends Omit<ToolApprovalRequest, 'toolCalled'> {\n agentId: string;\n result?: {\n childMessages?: AgentMessage[];\n subAgentResourceId?: string;\n subAgentThreadId?: string;\n subAgentToolResults?: SubAgentToolResult[];\n text?: string;\n };\n metadata?: MessageMetadata;\n suspendPayload?: any;\n toolCalled?: boolean;\n isComplete?: boolean;\n status?: ActivityStatus;\n errorText?: string;\n}\n\nexport const AgentBadgeWrapper = ({\n agentId,\n result,\n metadata,\n toolCallId,\n toolApprovalMetadata,\n toolName,\n isNetwork,\n suspendPayload,\n toolCalled,\n isComplete,\n status,\n errorText,\n}: AgentBadgeWrapperProps) => {\n const shouldFetchAgentMessages = Boolean(\n result?.subAgentThreadId && !result.text && !result.subAgentToolResults?.length,\n );\n const { data, isLoading, fetchNextPage, hasNextPage, isFetchingNextPage } = useAgentMessages({\n threadId: shouldFetchAgentMessages ? result?.subAgentThreadId : undefined,\n agentId,\n memory: true,\n });\n\n if (isLoading) {\n return <LoadingBadge />;\n }\n\n const convertedMessages = data?.messages ? toAISdkV5Messages(data.messages) : [];\n\n let childMessages = result?.childMessages?.length ? result.childMessages : undefined;\n\n if (!childMessages && result?.subAgentToolResults?.length) {\n const toolMessages: AgentMessage[] = result.subAgentToolResults.map(tr => ({\n type: 'tool' as const,\n toolName: tr.toolName,\n toolCallId: tr.toolCallId,\n args: tr.args,\n toolOutput: tr.result,\n }));\n if (result.text) {\n toolMessages.push({ type: 'text' as const, content: result.text });\n }\n childMessages = toolMessages;\n }\n\n if (!childMessages && result?.text) {\n childMessages = [{ type: 'text' as const, content: result.text }];\n }\n\n let onLoadPrevious: (() => void) | undefined;\n if (!childMessages) {\n childMessages = resolveToChildMessages(convertedMessages) as AgentMessage[];\n onLoadPrevious = hasNextPage ? fetchNextPage : undefined;\n }\n\n const hasStreamingChildMessages = Boolean(result && Object.prototype.hasOwnProperty.call(result, 'childMessages'));\n\n return (\n <AgentBadge\n agentId={agentId}\n messages={childMessages ?? []}\n keepOpenForStreamingChildMessages={hasStreamingChildMessages}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n toolName={toolName}\n isNetwork={isNetwork}\n suspendPayload={suspendPayload}\n toolCalled={toolCalled}\n isComplete={isComplete}\n status={status}\n errorText={errorText}\n onLoadPrevious={onLoadPrevious}\n isLoadingPrevious={isFetchingNextPage}\n />\n );\n};\n","import { useMcpAppTools } from '@mastra/react/hooks/mcps';\nimport { useCallback, useContext } from 'react';\nimport { AgentBadgeWrapper } from './badges/agent-badge-wrapper';\nimport { FileTreeBadge } from './badges/file-tree-badge';\nimport { KnowledgeToolBadge, knowledgeCard } from './badges/knowledge-tool-badge';\nimport { DeferredMcpInputRequest, ForegroundMcpInputRequest } from './badges/mcp-input-request-badge';\nimport { SandboxExecutionBadge } from './badges/sandbox-execution-badge';\nimport { ToolBadge } from './badges/tool-badge';\nimport { useDeferredInputRequest } from './badges/use-deferred-input-request';\nimport { useWorkflowStream, WorkflowBadge } from './badges/workflow-badge';\nimport { suspendedMcpInputRequest } from './mcp-input-request';\nimport { SubmitPlanTool } from './submit-plan-tool';\nimport { ToolResultMedia } from './tool-result-media';\nimport type { MessageMetadata } from '@/domains/chat';\nimport { ChatAgentContext, useChatRunning, useChatSend } from '@/domains/chat/context/chat-context';\nimport { AskUserTool } from '@/domains/chat/tools/ask-user-tool';\nimport { CodeModeBadge } from '@/domains/chat/tools/badges/code-mode-badge';\nimport { ObservationMarkerBadge } from '@/domains/chat/tools/badges/observation-marker-badge';\nimport { ConnectPromptTool } from '@/domains/chat/tools/connect-prompt-tool';\nimport {\n badgeStatus,\n codeModeCall,\n isAgentCall,\n isDeferredCall,\n isSettledState,\n isWorkflowCall,\n toolCardKind,\n toolInteraction,\n} from '@/domains/chat/tools/tool-card-kind';\nimport { McpAppToolResult } from '@/domains/mcps/components/mcp-app-tool-result';\nimport { PlaygroundWorkflowRunProvider } from '@/domains/workflows/context/playground-workflow-run-provider';\n\n/** A `data`-typed part the agent wrote via `writer.custom`, scoped to a call by `data.toolCallId`. */\nexport interface DataMessagePart {\n type: string;\n name?: string;\n data?: any;\n}\n\nexport interface ToolCardProps {\n toolName: string;\n input: any;\n output: any;\n modelOutput?: unknown;\n /** The Mastra background task running the call, when it was deferred. */\n backgroundTaskId?: string;\n /** The background task's status in the part's metadata: `running` until the part holds its result. */\n backgroundTaskStatus?: string;\n toolCallId: string;\n /** Part state: v5 `output-available`/`output-error`/`input-available`, or v4 `result`/`call`. */\n state?: string;\n /** Error message when `state` is `output-error`. */\n errorText?: string;\n metadata?: MessageMetadata;\n /** `data`-typed parts from the parent message, for badges that read live streaming metadata. */\n dataParts?: ReadonlyArray<DataMessagePart>;\n /** Historical rendering mode: preserve presentation while suppressing executable actions and side effects. */\n readOnly?: boolean;\n}\n\nconst stripPrefix = (toolName: string, prefix: string): string =>\n toolName.startsWith(prefix) ? toolName.slice(prefix.length) : toolName;\n\n/** Its own workflow run scope, so a streaming workflow result can drive a live graph inside the card. */\nexport const ToolCard = (props: ToolCardProps) => {\n return (\n <PlaygroundWorkflowRunProvider workflowId=\"\" withoutTimeTravel>\n <ToolCardInner {...props} />\n </PlaygroundWorkflowRunProvider>\n );\n};\n\nexport const ToolCardInner = ({\n toolName,\n input,\n output,\n modelOutput,\n backgroundTaskId,\n backgroundTaskStatus,\n toolCallId,\n state,\n errorText,\n metadata,\n dataParts,\n readOnly = false,\n}: ToolCardProps) => {\n const { data: mcpAppTools } = useMcpAppTools();\n const send = useChatSend();\n const chatAgent = useContext(ChatAgentContext);\n const { isRunning } = useChatRunning();\n const handleMcpAppSendMessage = useCallback(\n (content: string) => {\n void send({ message: content });\n },\n [send],\n );\n useWorkflowStream(output);\n\n const kind = toolCardKind(\n { toolName, toolCallId, input, output, state, backgroundTaskId, backgroundTaskStatus },\n { metadata, mcpAppTools },\n );\n const { approval: toolApprovalMetadata, suspended: suspendedToolMetadata } = toolInteraction(\n metadata,\n toolName,\n toolCallId,\n );\n const status = badgeStatus(state, isRunning);\n // Any deferred call, whatever its output looks like: live it holds the MCP task's progress records,\n // after a reload the \"Background task started\" placeholder.\n const deferredRequest = useDeferredInputRequest(\n backgroundTaskId ?? '',\n isDeferredCall(backgroundTaskId, backgroundTaskStatus) && !readOnly,\n );\n const isNetwork = metadata?.mode === 'network';\n const toolCalled = isNetwork && metadata?.hasMoreMessages ? true : undefined;\n const agentToolName = stripPrefix(toolName, 'agent-');\n const workflowToolName = stripPrefix(toolName, 'workflow-');\n const deferredCard = deferredRequest && backgroundTaskId && (\n <DeferredMcpInputRequest\n key={String(deferredRequest.suspendedAt)}\n backgroundTaskId={backgroundTaskId}\n request={deferredRequest}\n />\n );\n\n const body = renderKind();\n // A deferred call's question shows under whichever badge draws the call. One fragment either way, so\n // the badge (and its task progress) isn't remounted when the question comes and goes.\n return (\n <>\n {body}\n {body !== null && deferredCard}\n </>\n );\n\n function renderKind() {\n switch (kind) {\n case 'hidden':\n return null;\n case 'observation':\n return <ObservationMarkerBadge toolName={toolName} omData={output?.omData ?? input} />;\n case 'ask_user':\n if (!readOnly) {\n return <AskUserTool toolName={toolName} toolCallId={toolCallId} output={output} metadata={metadata} />;\n }\n break;\n case 'connect_prompt':\n return <ConnectPromptTool output={output} readOnly={readOnly} />;\n case 'submit_plan':\n return (\n <SubmitPlanTool\n agentId={chatAgent?.agentId}\n agentVersionId={chatAgent?.agentVersionId}\n requestContext={chatAgent?.requestContext}\n toolName={toolName}\n toolCallId={toolCallId}\n output={output}\n metadata={metadata}\n />\n );\n case 'mcp_input_request': {\n const payload = suspendedMcpInputRequest(metadata, toolCallId);\n if (!payload) break;\n return (\n <>\n <ToolBadge\n toolName={toolName}\n args={input}\n result={output}\n toolOutput={[]}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n status={status}\n mcpInputRequest={payload}\n />\n {/* The card stays mounted across a call's suspensions, so a new one must start with no answers. */}\n <ForegroundMcpInputRequest\n key={payload.requestedAt ?? payload.createdAt}\n toolCallId={toolCallId}\n payload={payload}\n readOnly={readOnly}\n isNetwork={isNetwork}\n />\n </>\n );\n }\n case 'background': {\n const isAgent = isAgentCall(metadata, toolName);\n const isWorkflow = isWorkflowCall(metadata, toolName);\n return (\n <>\n <ToolBadge\n toolName={isAgent ? agentToolName : isWorkflow ? workflowToolName : toolName}\n args={input}\n result={output}\n toolOutput={[]}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n suspendPayload={suspendedToolMetadata?.suspendPayload}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n withoutArgs={isAgent || isWorkflow}\n status={status}\n backgroundTaskId={backgroundTaskId}\n backgroundTaskStatus={backgroundTaskStatus}\n mcpInputRequest={deferredRequest?.payload}\n />\n </>\n );\n }\n case 'agent':\n return (\n <AgentBadgeWrapper\n agentId={agentToolName}\n result={output}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n toolName={toolName}\n isNetwork={isNetwork}\n suspendPayload={suspendedToolMetadata?.suspendPayload}\n toolCalled={toolCalled}\n isComplete={isSettledState(state)}\n status={status}\n errorText={errorText}\n />\n );\n case 'workflow':\n return (\n <WorkflowBadge\n workflowId={workflowToolName}\n isStreaming={metadata?.mode === 'stream' || isNetwork}\n result={output}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n suspendPayload={suspendedToolMetadata?.suspendPayload}\n toolName={toolName}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n />\n );\n case 'file_tree':\n return (\n <FileTreeBadge\n toolName={toolName}\n args={input}\n result={output}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n dataParts={dataParts}\n status={status}\n />\n );\n case 'sandbox':\n return (\n <SandboxExecutionBadge\n toolName={toolName}\n args={input}\n result={output}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n dataParts={dataParts}\n status={status}\n />\n );\n case 'code_mode': {\n const call = codeModeCall(input, output);\n if (call) {\n return (\n <CodeModeBadge\n toolName={toolName}\n code={call.code}\n result={call.result}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n />\n );\n }\n break;\n }\n case 'knowledge': {\n const card = knowledgeCard(toolName, input, output, state === 'output-error' ? (errorText ?? '') : undefined);\n if (card) {\n return (\n <KnowledgeToolBadge\n card={card}\n toolName={toolName}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n isNetwork={isNetwork}\n status={status}\n />\n );\n }\n break;\n }\n case 'mcp_app':\n case 'plain':\n break;\n }\n\n const mcpAppInfo = mcpAppTools?.[toolName];\n\n return (\n <>\n <ToolBadge\n toolName={toolName}\n args={input}\n result={output ?? errorText}\n toolOutput={output?.toolOutput || []}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n suspendPayload={suspendedToolMetadata?.suspendPayload}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n status={status}\n backgroundTaskId={backgroundTaskId}\n backgroundTaskStatus={backgroundTaskStatus}\n mcpInputRequest={deferredRequest?.payload}\n />\n <ToolResultMedia modelOutput={modelOutput} />\n {mcpAppInfo && output !== undefined && (\n <McpAppToolResult\n appInfo={mcpAppInfo}\n toolArgs={input}\n toolResult={output}\n onSendMessage={handleMcpAppSendMessage}\n readOnly={readOnly}\n />\n )}\n </>\n );\n }\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,IAAa,cAAc,EACzB,SACA,WAAW,CAAC,GACZ,UACA,YACA,sBACA,UACA,WACA,gBACA,YAAY,gBACZ,aAAa,OACb,oCAAoC,OACpC,SAAS,QACT,WACA,gBACA,oBAAoB,YACC;CACrB,MAAM,kBAAkB,UAAU,SAAS,YAAY,SAAS,kBAAkB,KAAA;CAClF,MAAM,kBACJ,UAAU,SAAS,YAAa,iBAAiB,mBAAmB,SAAS,kBAAmB,KAAA;CAClG,MAAM,oBAAoB,UAAU,SAAS,YAAa,mBAAmB,SAAS,aAAc,KAAA;CAEpG,MAAM,uBACJ,UAAU,SAAS,YAAY,UAAU,SAAS,aAAa,UAAU,SAAS,aAC9E,UAAU,iBACV,KAAA;CAEN,MAAM,WACH,UAAU,SAAS,YAAY,UAAU,SAAS,eAAe,UAAU,kBACxE,SAAS,gBAAgB,cACzB,KAAA;CAEN,MAAM,wBACJ,SAAS,SAAS,KAClB,SAAS,OAAM,YAAW;EACxB,IAAI,QAAQ,SAAS,QACnB,OAAO;EAET,OAAO,QAAQ,eAAe,KAAA;CAChC,CAAC;CAEH,IAAI,aAAa,cAAc;CAE/B,IAAI,WACF,aAAa,kBAAkB;CAGjC,MAAM,UAAU,WAAW;CAC3B,MAAM,wBAAwB,cAAc,CAAC,WAAW,CAAC,wBAAwB,CAAC;CAClF,MAAM,aAAa,UAAU,YAAY,KAAA;CACzC,MAAM,UACJ,QAAQ,cAAc,KACtB,SAAS,SAAS,KAClB,QAAQ,UAAU,KAClB,QAAQ,cAAc,KACtBA,uDAAAA,mBAAmB;EAAE;EAAsB;CAAW,CAAC;CAEzD,IAAI,qBACF,OAAO,mBAAmB,WACxB,iBAAA,GAAA,kBAAA,IAAA,CAACC,kBAAAA,cAAD;EAAc,UAAU;EAAgB,WAAU;EAC/C,UAAA;CACW,CAAA,IAEd,iBAAA,GAAA,kBAAA,IAAA,CAACC,mBAAAA,YAAD;EAAY,MAAM;EAAgB,eAAY;CAAwB,CAAA;CAG1E,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,sDAAAA,mBAAD;EACE,UAAU;GACR;GACA;GACA;GACA;GACA;GACA,gBAAgB,UAAU,SAAS;EACrC;EACA,eAAY;EACZ,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAACC,wBAAAA,WAAD,EAAW,WAAU,kBAAmB,CAAA;EAC9C,OAAO;EACC;EACR,kBAAkB;EAClB,WACE,UAAU,SAAS,YACjB,iBAAA,GAAA,kBAAA,IAAA,CAACC,+DAAAA,oCAAD;GACE,iBAAiB,mBAAmB;GACpC,OAAO;EACR,CAAA,IACC,SAAS,UAAU,SAAS,YAC9B,iBAAA,GAAA,kBAAA,IAAA,CAACC,kEAAAA,qCAAD,EAAqC,gBAAgB,QAAU,CAAA,IAC7D;EAGL,UAAA,WACC,iBAAA,GAAA,kBAAA,KAAA,CAAAC,kBAAAA,UAAA,EAAA,UAAA;GACG,kBACC,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,QAAD;IACE,SAAQ;IACR,MAAK;IACL,SAAS;IACT,UAAU;IACV,eAAY;IAEX,UAAA,oBAAoB,8BAA8B;GAC7C,CAAA;GAGT,SAAS,KAAK,SAAS,UAAU;IAChC,IAAI,QAAQ,SAAS,QACnB,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,SAAD,EAAA,UAAuB,QAAQ,QAAkB,GAAlC,KAAkC;IAG1D,IAAI;IAEJ,IAAI;KACF,SAAS,OAAO,QAAQ,eAAe,WAAW,KAAK,MAAM,QAAQ,UAAU,IAAI,QAAQ;IAC7F,QAAQ;KACN,SAAS,QAAQ;IACnB;IAEA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,MAAAA,QAAM,UAAP,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;KACE,UAAU,QAAQ;KAClB,OAAO,QAAQ;KACf,QAAQ;KACR,OAAM;KACN,YAAY,QAAQ;KACpB,UAAU;MACR,MAAM;MACN,yBAAyB,YAAY,UAAU,0BAA0B,KAAA;MACzE,gBAAgB;KAClB;IACD,CAAA,EACa,GAbK,KAaL;GAEpB,CAAC;GAEA,cACC,iBAAA,GAAA,kBAAA,IAAA,CAACT,kBAAAA,cAAD;IAAc,UAAU;IAAY,eAAY;IAAc,WAAU;IACrE,UAAA;GACW,CAAA;GAGf,uBAAuB,KAAA,KAAa,kBACnC,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACU,8CAAAA,cAAD,EAAA,UAAc,wBAAmC,CAAA,GAChD,kBACE,EAAA,CAAA;EAEP,EAAA,CAAA;CAEa,CAAA;AAEvB;;ACrKA,IAAa,qBAAqB,EAChC,SACA,QACA,UACA,YACA,sBACA,UACA,WACA,gBACA,YACA,YACA,QACA,gBAC4B;CAC5B,MAAM,2BAA2B,QAC/B,QAAQ,oBAAoB,CAAC,OAAO,QAAQ,CAAC,OAAO,qBAAqB,MAC3E;CACA,MAAM,EAAE,MAAM,WAAW,eAAe,aAAa,wBAAA,GAAuBC,2BAAAA,iBAAAA,CAAiB;EAC3F,UAAU,2BAA2B,QAAQ,mBAAmB,KAAA;EAChE;EACA,QAAQ;CACV,CAAC;CAED,IAAI,WACF,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACC,8CAAAA,cAAD,CAAe,CAAA;CAGxB,MAAM,oBAAoB,MAAM,YAAA,GAAWC,kBAAAA,kBAAAA,CAAkB,KAAK,QAAQ,IAAI,CAAC;CAE/E,IAAI,gBAAgB,QAAQ,eAAe,SAAS,OAAO,gBAAgB,KAAA;CAE3E,IAAI,CAAC,iBAAiB,QAAQ,qBAAqB,QAAQ;EACzD,MAAM,eAA+B,OAAO,oBAAoB,KAAI,QAAO;GACzE,MAAM;GACN,UAAU,GAAG;GACb,YAAY,GAAG;GACf,MAAM,GAAG;GACT,YAAY,GAAG;EACjB,EAAE;EACF,IAAI,OAAO,MACT,aAAa,KAAK;GAAE,MAAM;GAAiB,SAAS,OAAO;EAAK,CAAC;EAEnE,gBAAgB;CAClB;CAEA,IAAI,CAAC,iBAAiB,QAAQ,MAC5B,gBAAgB,CAAC;EAAE,MAAM;EAAiB,SAAS,OAAO;CAAK,CAAC;CAGlE,IAAI;CACJ,IAAI,CAAC,eAAe;EAClB,gBAAgBC,yDAAAA,uBAAuB,iBAAiB;EACxD,iBAAiB,cAAc,gBAAgB,KAAA;CACjD;CAEA,MAAM,4BAA4B,QAAQ,UAAU,OAAO,UAAU,eAAe,KAAK,QAAQ,eAAe,CAAC;CAEjH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,YAAD;EACW;EACT,UAAU,iBAAiB,CAAC;EAC5B,mCAAmC;EACzB;EACE;EACU;EACZ;EACC;EACK;EACJ;EACA;EACJ;EACG;EACK;EAChB,mBAAmB;CACpB,CAAA;AAEL;;AClDA,IAAM,eAAe,UAAkB,WACrC,SAAS,WAAW,MAAM,IAAI,SAAS,MAAM,OAAO,MAAM,IAAI;;AAGhE,IAAa,YAAY,UAAyB;CAChD,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,mEAAAA,+BAAD;EAA+B,YAAW;EAAG,mBAAA;EAC3C,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAD,EAAe,GAAI,MAAQ,CAAA;CACE,CAAA;AAEnC;AAEA,IAAa,iBAAiB,EAC5B,UACA,OACA,QACA,aACA,kBACA,sBACA,YACA,OACA,WACA,UACA,WACA,WAAW,YACQ;CACnB,MAAM,EAAE,MAAM,iBAAA,GAAgBC,yBAAAA,eAAAA,CAAe;CAC7C,MAAM,OAAOC,0CAAAA,YAAY;CACzB,MAAM,aAAA,GAAYC,MAAAA,WAAAA,CAAWC,0CAAAA,gBAAgB;CAC7C,MAAM,EAAE,cAAcC,0CAAAA,eAAe;CACrC,MAAM,2BAAA,GAA0BC,MAAAA,YAAAA,EAC7B,YAAoB;EACnB,KAAU,EAAE,SAAS,QAAQ,CAAC;CAChC,GACA,CAAC,IAAI,CACP;CACA,iDAAA,kBAAkB,MAAM;CAExB,MAAM,OAAOC,0CAAAA,aACX;EAAE;EAAU;EAAY;EAAO;EAAQ;EAAO;EAAkB;CAAqB,GACrF;EAAE;EAAU;CAAY,CAC1B;CACA,MAAM,EAAE,UAAU,sBAAsB,WAAW,0BAA0BC,0CAAAA,gBAC3E,UACA,UACA,UACF;CACA,MAAM,SAASC,0CAAAA,YAAY,OAAO,SAAS;CAG3C,MAAM,kBAAkBC,6DAAAA,wBACtB,oBAAoB,IACpBC,0CAAAA,eAAe,kBAAkB,oBAAoB,KAAK,CAAC,QAC7D;CACA,MAAM,YAAY,UAAU,SAAS;CACrC,MAAM,aAAa,aAAa,UAAU,kBAAkB,OAAO,KAAA;CACnE,MAAM,gBAAgB,YAAY,UAAU,QAAQ;CACpD,MAAM,mBAAmB,YAAY,UAAU,WAAW;CAC1D,MAAM,eAAe,mBAAmB,oBACtC,iBAAA,GAAA,kBAAA,IAAA,CAACC,0DAAAA,yBAAD;EAEoB;EAClB,SAAS;CACV,GAHM,OAAO,gBAAgB,WAAW,CAGxC;CAGH,MAAM,OAAO,WAAW;CAGxB,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAAC,kBAAAA,UAAA,EAAA,UAAA,CACG,MACA,SAAS,QAAQ,YAClB,EAAA,CAAA;CAGJ,SAAS,aAAa;EACpB,QAAQ,MAAR;GACE,KAAK,UACH,OAAO;GACT,KAAK,eACH,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACC,2DAAAA,wBAAD;IAAkC;IAAU,QAAQ,QAAQ,UAAU;GAAQ,CAAA;GACvF,KAAK;IACH,IAAI,CAAC,UACH,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACC,yCAAAA,aAAD;KAAuB;KAAsB;KAAoB;KAAkB;IAAW,CAAA;IAEvG;GACF,KAAK,kBACH,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACC,+CAAAA,mBAAD;IAA2B;IAAkB;GAAW,CAAA;GACjE,KAAK,eACH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,4CAAAA,gBAAD;IACE,SAAS,WAAW;IACpB,gBAAgB,WAAW;IAC3B,gBAAgB,WAAW;IACjB;IACE;IACJ;IACE;GACX,CAAA;GAEL,KAAK,qBAAqB;IACxB,MAAM,UAAUC,6CAAAA,yBAAyB,UAAU,UAAU;IAC7D,IAAI,CAAC,SAAS;IACd,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAAL,kBAAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACM,6CAAAA,WAAD;KACY;KACV,MAAM;KACN,QAAQ;KACR,YAAY,CAAC;KACH;KACE;KACU;KACX;KACC;KACJ;KACR,iBAAiB;IAClB,CAAA,GAED,iBAAA,GAAA,kBAAA,IAAA,CAACC,0DAAAA,2BAAD;KAEc;KACH;KACC;KACC;IACZ,GALM,QAAQ,eAAe,QAAQ,SAKrC,CACD,EAAA,CAAA;GAEN;GACA,KAAK,cAAc;IACjB,MAAM,UAAUC,0CAAAA,YAAY,UAAU,QAAQ;IAC9C,MAAM,aAAaC,0CAAAA,eAAe,UAAU,QAAQ;IACpD,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAAT,kBAAAA,UAAA,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAACM,6CAAAA,WAAD;KACE,UAAU,UAAU,gBAAgB,aAAa,mBAAmB;KACpE,MAAM;KACN,QAAQ;KACR,YAAY,CAAC;KACH;KACE;KACU;KACtB,gBAAgB,uBAAuB;KAC5B;KACC;KACZ,aAAa,WAAW;KAChB;KACU;KACI;KACtB,iBAAiB,iBAAiB;IACnC,CAAA,EACD,CAAA;GAEN;GACA,KAAK,SACH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,mBAAD;IACE,SAAS;IACT,QAAQ;IACE;IACE;IACU;IACZ;IACC;IACX,gBAAgB,uBAAuB;IAC3B;IACZ,YAAYI,0CAAAA,eAAe,KAAK;IACxB;IACG;GACZ,CAAA;GAEL,KAAK,YACH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,iDAAAA,eAAD;IACE,YAAY;IACZ,aAAa,UAAU,SAAS,YAAY;IAC5C,QAAQ;IACE;IACE;IACU;IACtB,gBAAgB,uBAAuB;IAC7B;IACC;IACC;GACb,CAAA;GAEL,KAAK,aACH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,kDAAAA,eAAD;IACY;IACV,MAAM;IACN,QAAQ;IACE;IACE;IACU;IACX;IACC;IACD;IACH;GACT,CAAA;GAEL,KAAK,WACH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,0DAAAA,uBAAD;IACY;IACV,MAAM;IACN,QAAQ;IACE;IACE;IACU;IACX;IACC;IACD;IACH;GACT,CAAA;GAEL,KAAK,aAAa;IAChB,MAAM,OAAOC,0CAAAA,aAAa,OAAO,MAAM;IACvC,IAAI,MACF,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,kDAAAA,eAAD;KACY;KACV,MAAM,KAAK;KACX,QAAQ,KAAK;KACH;KACE;KACU;KACX;KACC;IACb,CAAA;IAGL;GACF;GACA,KAAK,aAAa;IAChB,MAAM,OAAOC,uDAAAA,cAAc,UAAU,OAAO,QAAQ,UAAU,iBAAkB,aAAa,KAAM,KAAA,CAAS;IAC5G,IAAI,MACF,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,uDAAAA,oBAAD;KACQ;KACI;KACA;KACE;KACU;KACX;KACH;IACT,CAAA;IAGL;GACF;EAIF;EAEA,MAAM,aAAa,cAAc;EAEjC,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAAjB,kBAAAA,UAAA,EAAA,UAAA;GACE,iBAAA,GAAA,kBAAA,IAAA,CAACM,6CAAAA,WAAD;IACY;IACV,MAAM;IACN,QAAQ,UAAU;IAClB,YAAY,QAAQ,cAAc,CAAC;IACzB;IACE;IACU;IACtB,gBAAgB,uBAAuB;IAC5B;IACC;IACJ;IACU;IACI;IACtB,iBAAiB,iBAAiB;GACnC,CAAA;GACD,iBAAA,GAAA,kBAAA,IAAA,CAACY,6CAAAA,iBAAD,EAA8B,YAAc,CAAA;GAC3C,cAAc,WAAW,KAAA,KACxB,iBAAA,GAAA,kBAAA,IAAA,CAACC,oDAAAA,kBAAD;IACE,SAAS;IACT,UAAU;IACV,YAAY;IACZ,eAAe;IACL;GACX,CAAA;EAEH,EAAA,CAAA;CAEN;AACF"}
|
|
1
|
+
{"version":3,"file":"tool-card-BOLXeKIp.cjs","names":["awaitsToolApproval","ToolCallMono","CodeEditor","ToolApprovalBadge","AgentIcon","NetworkChoiceMetadataDialogTrigger","BackgroundTaskMetadataDialogTrigger","_Fragment","Button","Markdown","React","SectionLabel","useAgentMessages","LoadingBadge","toAISdkV5Messages","resolveToChildMessages","PlaygroundWorkflowRunProvider","useMcpAppTools","useChatSend","useContext","ChatAgentContext","useChatRunning","useCallback","toolCardKind","toolInteraction","badgeStatus","useDeferredInputRequest","isDeferredCall","DeferredMcpInputRequest","_Fragment","ObservationMarkerBadge","AskUserTool","ConnectPromptTool","SubmitPlanTool","suspendedMcpInputRequest","ToolBadge","ForegroundMcpInputRequest","isAgentCall","isWorkflowCall","isSettledState","WorkflowBadge","FileTreeBadge","SandboxExecutionBadge","codeModeCall","CodeModeBadge","knowledgeCard","KnowledgeToolBadge","ToolResultMedia","McpAppToolResult"],"sources":["../src/domains/chat/tools/badges/agent-badge.tsx","../src/domains/chat/tools/badges/agent-badge-wrapper.tsx","../src/domains/chat/tools/tool-card.tsx"],"sourcesContent":["import React from 'react';\nimport Markdown from 'react-markdown';\nimport { ToolCard } from '../tool-card';\nimport { BackgroundTaskMetadataDialogTrigger } from './background-task-metadata-dialog';\nimport type { MessageMetadata } from '@/domains/chat';\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 type { ActivityStatus } from '@/ds/components/ai/activity';\nimport { ToolCallMono } from '@/ds/components/ai/tool-call';\nimport { Button } from '@/ds/components/Button';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\n\ntype TextMessage = {\n type: 'text';\n content: string;\n};\n\ntype ToolMessage = {\n type: 'tool';\n toolName: string;\n toolOutput?: any;\n args?: any;\n toolCallId: string;\n result?: any;\n};\n\nexport type AgentMessage = TextMessage | ToolMessage;\n\nexport interface AgentBadgeProps extends Omit<ToolApprovalRequest, 'toolCalled'> {\n agentId: string;\n messages: AgentMessage[];\n metadata?: MessageMetadata;\n suspendPayload?: any;\n toolCalled?: boolean;\n isComplete?: boolean;\n keepOpenForStreamingChildMessages?: boolean;\n status?: ActivityStatus;\n errorText?: string;\n onLoadPrevious?: () => void;\n isLoadingPrevious?: boolean;\n}\n\nexport const AgentBadge = ({\n agentId,\n messages = [],\n metadata,\n toolCallId,\n toolApprovalMetadata,\n toolName,\n isNetwork,\n suspendPayload,\n toolCalled: toolCalledProp,\n isComplete = false,\n keepOpenForStreamingChildMessages = false,\n status = 'idle',\n errorText,\n onLoadPrevious,\n isLoadingPrevious = false,\n}: AgentBadgeProps) => {\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 parentSuspendedTools =\n metadata?.mode === 'stream' || metadata?.mode === 'network' || metadata?.mode === 'generate'\n ? metadata?.suspendedTools\n : undefined;\n\n const bgEntry =\n (metadata?.mode === 'stream' || metadata?.mode === 'generate') && metadata?.backgroundTasks\n ? metadata.backgroundTasks[toolCallId]\n : undefined;\n\n const allChildToolsComplete =\n messages.length > 0 &&\n messages.every(message => {\n if (message.type === 'text') {\n return true;\n }\n return message.toolOutput !== undefined;\n });\n\n let toolCalled = isComplete && allChildToolsComplete;\n\n if (isNetwork) {\n toolCalled = toolCalledProp ?? allChildToolsComplete;\n }\n\n const isError = status === 'error';\n const shouldCollapseContent = isComplete && !isError && !toolApprovalMetadata && !keepOpenForStreamingChildMessages;\n const shownError = isError ? errorText : undefined;\n const hasBody =\n Boolean(onLoadPrevious) ||\n messages.length > 0 ||\n Boolean(shownError) ||\n Boolean(suspendPayload) ||\n awaitsToolApproval({ toolApprovalMetadata, toolCalled });\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 return (\n <ToolApprovalBadge\n approval={{\n toolCalled,\n toolCallId,\n toolApprovalMetadata,\n toolName,\n isNetwork,\n isGenerateMode: metadata?.mode === 'generate',\n }}\n data-testid=\"agent-badge\"\n icon={<AgentIcon className=\"text-span-agent\" />}\n title={agentId}\n status={status}\n initialCollapsed={shouldCollapseContent}\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 {onLoadPrevious && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onLoadPrevious}\n disabled={isLoadingPrevious}\n data-testid=\"agent-badge-load-previous\"\n >\n {isLoadingPrevious ? 'Loading earlier messages…' : 'Load earlier messages'}\n </Button>\n )}\n\n {messages.map((message, index) => {\n if (message.type === 'text') {\n return <Markdown key={index}>{message.content}</Markdown>;\n }\n\n let result;\n\n try {\n result = typeof message.toolOutput === 'string' ? JSON.parse(message.toolOutput) : message.toolOutput;\n } catch {\n result = message.toolOutput;\n }\n\n return (\n <React.Fragment key={index}>\n <ToolCard\n toolName={message.toolName}\n input={message.args}\n output={result}\n state=\"output-available\"\n toolCallId={message.toolCallId}\n metadata={{\n mode: 'stream',\n requireApprovalMetadata: isNetwork ? metadata?.requireApprovalMetadata : undefined,\n suspendedTools: parentSuspendedTools,\n }}\n />\n </React.Fragment>\n );\n })}\n\n {shownError && (\n <ToolCallMono copyText={shownError} data-testid=\"agent-error\" className=\"text-destructive-foreground\">\n {shownError}\n </ToolCallMono>\n )}\n\n {suspendPayloadSlot !== undefined && suspendPayload && (\n <div>\n <SectionLabel>Agent suspend payload</SectionLabel>\n {suspendPayloadSlot}\n </div>\n )}\n </>\n )}\n </ToolApprovalBadge>\n );\n};\n","import { toAISdkV5Messages } from '@mastra/ai-sdk/ui';\nimport { useAgentMessages } from '@mastra/react/hooks/agents';\nimport type { AgentMessage } from './agent-badge';\nimport { AgentBadge } from './agent-badge';\nimport { resolveToChildMessages } from './resolve-child-messages';\nimport type { MessageMetadata } from '@/domains/chat';\nimport { LoadingBadge } from '@/domains/chat/components/loading-badge';\nimport type { ToolApprovalRequest } from '@/domains/chat/tools/badges/tool-approval-badge';\nimport type { ActivityStatus } from '@/ds/components/ai/activity';\n\ninterface SubAgentToolResult {\n toolName: string;\n toolCallId: string;\n result: any;\n args: any;\n}\n\ninterface AgentBadgeWrapperProps extends Omit<ToolApprovalRequest, 'toolCalled'> {\n agentId: string;\n result?: {\n childMessages?: AgentMessage[];\n subAgentResourceId?: string;\n subAgentThreadId?: string;\n subAgentToolResults?: SubAgentToolResult[];\n text?: string;\n };\n metadata?: MessageMetadata;\n suspendPayload?: any;\n toolCalled?: boolean;\n isComplete?: boolean;\n status?: ActivityStatus;\n errorText?: string;\n}\n\nexport const AgentBadgeWrapper = ({\n agentId,\n result,\n metadata,\n toolCallId,\n toolApprovalMetadata,\n toolName,\n isNetwork,\n suspendPayload,\n toolCalled,\n isComplete,\n status,\n errorText,\n}: AgentBadgeWrapperProps) => {\n const shouldFetchAgentMessages = Boolean(\n result?.subAgentThreadId && !result.text && !result.subAgentToolResults?.length,\n );\n const { data, isLoading, fetchNextPage, hasNextPage, isFetchingNextPage } = useAgentMessages({\n threadId: shouldFetchAgentMessages ? result?.subAgentThreadId : undefined,\n agentId,\n memory: true,\n });\n\n if (isLoading) {\n return <LoadingBadge />;\n }\n\n const convertedMessages = data?.messages ? toAISdkV5Messages(data.messages) : [];\n\n let childMessages = result?.childMessages?.length ? result.childMessages : undefined;\n\n if (!childMessages && result?.subAgentToolResults?.length) {\n const toolMessages: AgentMessage[] = result.subAgentToolResults.map(tr => ({\n type: 'tool' as const,\n toolName: tr.toolName,\n toolCallId: tr.toolCallId,\n args: tr.args,\n toolOutput: tr.result,\n }));\n if (result.text) {\n toolMessages.push({ type: 'text' as const, content: result.text });\n }\n childMessages = toolMessages;\n }\n\n if (!childMessages && result?.text) {\n childMessages = [{ type: 'text' as const, content: result.text }];\n }\n\n let onLoadPrevious: (() => void) | undefined;\n if (!childMessages) {\n childMessages = resolveToChildMessages(convertedMessages) as AgentMessage[];\n onLoadPrevious = hasNextPage ? fetchNextPage : undefined;\n }\n\n const hasStreamingChildMessages = Boolean(result && Object.prototype.hasOwnProperty.call(result, 'childMessages'));\n\n return (\n <AgentBadge\n agentId={agentId}\n messages={childMessages ?? []}\n keepOpenForStreamingChildMessages={hasStreamingChildMessages}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n toolName={toolName}\n isNetwork={isNetwork}\n suspendPayload={suspendPayload}\n toolCalled={toolCalled}\n isComplete={isComplete}\n status={status}\n errorText={errorText}\n onLoadPrevious={onLoadPrevious}\n isLoadingPrevious={isFetchingNextPage}\n />\n );\n};\n","import { useMcpAppTools } from '@mastra/react/hooks/mcps';\nimport { useCallback, useContext } from 'react';\nimport { AgentBadgeWrapper } from './badges/agent-badge-wrapper';\nimport { FileTreeBadge } from './badges/file-tree-badge';\nimport { KnowledgeToolBadge, knowledgeCard } from './badges/knowledge-tool-badge';\nimport { DeferredMcpInputRequest, ForegroundMcpInputRequest } from './badges/mcp-input-request-badge';\nimport { SandboxExecutionBadge } from './badges/sandbox-execution-badge';\nimport { ToolBadge } from './badges/tool-badge';\nimport { useDeferredInputRequest } from './badges/use-deferred-input-request';\nimport { useWorkflowStream, WorkflowBadge } from './badges/workflow-badge';\nimport { suspendedMcpInputRequest } from './mcp-input-request';\nimport { SubmitPlanTool } from './submit-plan-tool';\nimport { ToolResultMedia } from './tool-result-media';\nimport type { MessageMetadata } from '@/domains/chat';\nimport { ChatAgentContext, useChatRunning, useChatSend } from '@/domains/chat/context/chat-context';\nimport { AskUserTool } from '@/domains/chat/tools/ask-user-tool';\nimport { CodeModeBadge } from '@/domains/chat/tools/badges/code-mode-badge';\nimport { ObservationMarkerBadge } from '@/domains/chat/tools/badges/observation-marker-badge';\nimport { ConnectPromptTool } from '@/domains/chat/tools/connect-prompt-tool';\nimport {\n badgeStatus,\n codeModeCall,\n isAgentCall,\n isDeferredCall,\n isSettledState,\n isWorkflowCall,\n toolCardKind,\n toolInteraction,\n} from '@/domains/chat/tools/tool-card-kind';\nimport { McpAppToolResult } from '@/domains/mcps/components/mcp-app-tool-result';\nimport { PlaygroundWorkflowRunProvider } from '@/domains/workflows/context/playground-workflow-run-provider';\n\n/** A `data`-typed part the agent wrote via `writer.custom`, scoped to a call by `data.toolCallId`. */\nexport interface DataMessagePart {\n type: string;\n name?: string;\n data?: any;\n}\n\nexport interface ToolCardProps {\n toolName: string;\n input: any;\n output: any;\n modelOutput?: unknown;\n /** The Mastra background task running the call, when it was deferred. */\n backgroundTaskId?: string;\n /** The background task's status in the part's metadata: `running` until the part holds its result. */\n backgroundTaskStatus?: string;\n toolCallId: string;\n /** Part state: v5 `output-available`/`output-error`/`input-available`, or v4 `result`/`call`. */\n state?: string;\n /** Error message when `state` is `output-error`. */\n errorText?: string;\n metadata?: MessageMetadata;\n /** `data`-typed parts from the parent message, for badges that read live streaming metadata. */\n dataParts?: ReadonlyArray<DataMessagePart>;\n /** Historical rendering mode: preserve presentation while suppressing executable actions and side effects. */\n readOnly?: boolean;\n}\n\nconst stripPrefix = (toolName: string, prefix: string): string =>\n toolName.startsWith(prefix) ? toolName.slice(prefix.length) : toolName;\n\n/** Its own workflow run scope, so a streaming workflow result can drive a live graph inside the card. */\nexport const ToolCard = (props: ToolCardProps) => {\n return (\n <PlaygroundWorkflowRunProvider workflowId=\"\" withoutTimeTravel>\n <ToolCardInner {...props} />\n </PlaygroundWorkflowRunProvider>\n );\n};\n\nexport const ToolCardInner = ({\n toolName,\n input,\n output,\n modelOutput,\n backgroundTaskId,\n backgroundTaskStatus,\n toolCallId,\n state,\n errorText,\n metadata,\n dataParts,\n readOnly = false,\n}: ToolCardProps) => {\n const { data: mcpAppTools } = useMcpAppTools();\n const send = useChatSend();\n const chatAgent = useContext(ChatAgentContext);\n const { isRunning } = useChatRunning();\n const handleMcpAppSendMessage = useCallback(\n (content: string) => {\n void send({ message: content });\n },\n [send],\n );\n useWorkflowStream(output);\n\n const kind = toolCardKind(\n { toolName, toolCallId, input, output, state, backgroundTaskId, backgroundTaskStatus },\n { metadata, mcpAppTools },\n );\n const { approval: toolApprovalMetadata, suspended: suspendedToolMetadata } = toolInteraction(\n metadata,\n toolName,\n toolCallId,\n );\n const status = badgeStatus(state, isRunning);\n // Any deferred call, whatever its output looks like: live it holds the MCP task's progress records,\n // after a reload the \"Background task started\" placeholder.\n const deferredRequest = useDeferredInputRequest(\n backgroundTaskId ?? '',\n isDeferredCall(backgroundTaskId, backgroundTaskStatus) && !readOnly,\n );\n const isNetwork = metadata?.mode === 'network';\n const toolCalled = isNetwork && metadata?.hasMoreMessages ? true : undefined;\n const agentToolName = stripPrefix(toolName, 'agent-');\n const workflowToolName = stripPrefix(toolName, 'workflow-');\n const deferredCard = deferredRequest && backgroundTaskId && (\n <DeferredMcpInputRequest\n key={String(deferredRequest.suspendedAt)}\n backgroundTaskId={backgroundTaskId}\n request={deferredRequest}\n />\n );\n\n const body = renderKind();\n // A deferred call's question shows under whichever badge draws the call. One fragment either way, so\n // the badge (and its task progress) isn't remounted when the question comes and goes.\n return (\n <>\n {body}\n {body !== null && deferredCard}\n </>\n );\n\n function renderKind() {\n switch (kind) {\n case 'hidden':\n return null;\n case 'observation':\n return <ObservationMarkerBadge toolName={toolName} omData={output?.omData ?? input} />;\n case 'ask_user':\n if (!readOnly) {\n return <AskUserTool toolName={toolName} toolCallId={toolCallId} output={output} metadata={metadata} />;\n }\n break;\n case 'connect_prompt':\n return (\n <ConnectPromptTool\n toolName={toolName}\n toolCallId={toolCallId}\n output={output}\n metadata={metadata}\n readOnly={readOnly}\n />\n );\n case 'submit_plan':\n return (\n <SubmitPlanTool\n agentId={chatAgent?.agentId}\n agentVersionId={chatAgent?.agentVersionId}\n requestContext={chatAgent?.requestContext}\n toolName={toolName}\n toolCallId={toolCallId}\n output={output}\n metadata={metadata}\n />\n );\n case 'mcp_input_request': {\n const payload = suspendedMcpInputRequest(metadata, toolCallId);\n if (!payload) break;\n return (\n <>\n <ToolBadge\n toolName={toolName}\n args={input}\n result={output}\n toolOutput={[]}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n status={status}\n mcpInputRequest={payload}\n />\n {/* The card stays mounted across a call's suspensions, so a new one must start with no answers. */}\n <ForegroundMcpInputRequest\n key={payload.requestedAt ?? payload.createdAt}\n toolCallId={toolCallId}\n payload={payload}\n readOnly={readOnly}\n isNetwork={isNetwork}\n />\n </>\n );\n }\n case 'background': {\n const isAgent = isAgentCall(metadata, toolName);\n const isWorkflow = isWorkflowCall(metadata, toolName);\n return (\n <>\n <ToolBadge\n toolName={isAgent ? agentToolName : isWorkflow ? workflowToolName : toolName}\n args={input}\n result={output}\n toolOutput={[]}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n suspendPayload={suspendedToolMetadata?.suspendPayload}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n withoutArgs={isAgent || isWorkflow}\n status={status}\n backgroundTaskId={backgroundTaskId}\n backgroundTaskStatus={backgroundTaskStatus}\n mcpInputRequest={deferredRequest?.payload}\n />\n </>\n );\n }\n case 'agent':\n return (\n <AgentBadgeWrapper\n agentId={agentToolName}\n result={output}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n toolName={toolName}\n isNetwork={isNetwork}\n suspendPayload={suspendedToolMetadata?.suspendPayload}\n toolCalled={toolCalled}\n isComplete={isSettledState(state)}\n status={status}\n errorText={errorText}\n />\n );\n case 'workflow':\n return (\n <WorkflowBadge\n workflowId={workflowToolName}\n isStreaming={metadata?.mode === 'stream' || isNetwork}\n result={output}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n suspendPayload={suspendedToolMetadata?.suspendPayload}\n toolName={toolName}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n />\n );\n case 'file_tree':\n return (\n <FileTreeBadge\n toolName={toolName}\n args={input}\n result={output}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n dataParts={dataParts}\n status={status}\n />\n );\n case 'sandbox':\n return (\n <SandboxExecutionBadge\n toolName={toolName}\n args={input}\n result={output}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n dataParts={dataParts}\n status={status}\n />\n );\n case 'code_mode': {\n const call = codeModeCall(input, output);\n if (call) {\n return (\n <CodeModeBadge\n toolName={toolName}\n code={call.code}\n result={call.result}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n />\n );\n }\n break;\n }\n case 'knowledge': {\n const card = knowledgeCard(toolName, input, output, state === 'output-error' ? (errorText ?? '') : undefined);\n if (card) {\n return (\n <KnowledgeToolBadge\n card={card}\n toolName={toolName}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n isNetwork={isNetwork}\n status={status}\n />\n );\n }\n break;\n }\n case 'mcp_app':\n case 'plain':\n break;\n }\n\n const mcpAppInfo = mcpAppTools?.[toolName];\n\n return (\n <>\n <ToolBadge\n toolName={toolName}\n args={input}\n result={output ?? errorText}\n toolOutput={output?.toolOutput || []}\n metadata={metadata}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n suspendPayload={suspendedToolMetadata?.suspendPayload}\n isNetwork={isNetwork}\n toolCalled={toolCalled}\n status={status}\n backgroundTaskId={backgroundTaskId}\n backgroundTaskStatus={backgroundTaskStatus}\n mcpInputRequest={deferredRequest?.payload}\n />\n <ToolResultMedia modelOutput={modelOutput} />\n {mcpAppInfo && output !== undefined && (\n <McpAppToolResult\n appInfo={mcpAppInfo}\n toolArgs={input}\n toolResult={output}\n onSendMessage={handleMcpAppSendMessage}\n readOnly={readOnly}\n />\n )}\n </>\n );\n }\n};\n"],"mappings":"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"}
|
|
@@ -232,7 +232,10 @@ var ToolCardInner = ({ toolName, input, output, modelOutput, backgroundTaskId, b
|
|
|
232
232
|
});
|
|
233
233
|
break;
|
|
234
234
|
case "connect_prompt": return /* @__PURE__ */ jsx(ConnectPromptTool, {
|
|
235
|
+
toolName,
|
|
236
|
+
toolCallId,
|
|
235
237
|
output,
|
|
238
|
+
metadata,
|
|
236
239
|
readOnly
|
|
237
240
|
});
|
|
238
241
|
case "submit_plan": return /* @__PURE__ */ jsx(SubmitPlanTool, {
|
|
@@ -396,4 +399,4 @@ var ToolCardInner = ({ toolName, input, output, modelOutput, backgroundTaskId, b
|
|
|
396
399
|
};
|
|
397
400
|
export { AgentBadge as i, ToolCardInner as n, AgentBadgeWrapper as r, ToolCard as t };
|
|
398
401
|
|
|
399
|
-
//# sourceMappingURL=tool-card-
|
|
402
|
+
//# sourceMappingURL=tool-card-HZ5bm7ue.js.map
|