@agent-native/core 0.58.3 → 0.58.4

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.
Files changed (64) hide show
  1. package/dist/agent/production-agent.d.ts +9 -0
  2. package/dist/agent/production-agent.d.ts.map +1 -1
  3. package/dist/agent/production-agent.js +80 -4
  4. package/dist/agent/production-agent.js.map +1 -1
  5. package/dist/cli/plan-local.d.ts +34 -0
  6. package/dist/cli/plan-local.d.ts.map +1 -1
  7. package/dist/cli/plan-local.js +205 -1
  8. package/dist/cli/plan-local.js.map +1 -1
  9. package/dist/cli/pr-visual-recap-workflow.d.ts +1 -1
  10. package/dist/cli/pr-visual-recap-workflow.d.ts.map +1 -1
  11. package/dist/cli/pr-visual-recap-workflow.js +1 -1
  12. package/dist/cli/pr-visual-recap-workflow.js.map +1 -1
  13. package/dist/cli/recap.d.ts +5 -0
  14. package/dist/cli/recap.d.ts.map +1 -1
  15. package/dist/cli/recap.js +19 -2
  16. package/dist/cli/recap.js.map +1 -1
  17. package/dist/client/AgentPanel.d.ts +3 -1
  18. package/dist/client/AgentPanel.d.ts.map +1 -1
  19. package/dist/client/AgentPanel.js +6 -3
  20. package/dist/client/AgentPanel.js.map +1 -1
  21. package/dist/client/AssistantChat.d.ts +5 -0
  22. package/dist/client/AssistantChat.d.ts.map +1 -1
  23. package/dist/client/AssistantChat.js +141 -39
  24. package/dist/client/AssistantChat.js.map +1 -1
  25. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  26. package/dist/client/MultiTabAssistantChat.js +44 -31
  27. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  28. package/dist/client/blocks/library/diagram.d.ts.map +1 -1
  29. package/dist/client/blocks/library/diagram.js +85 -20
  30. package/dist/client/blocks/library/diagram.js.map +1 -1
  31. package/dist/client/blocks/library/tabs.d.ts.map +1 -1
  32. package/dist/client/blocks/library/tabs.js +5 -5
  33. package/dist/client/blocks/library/tabs.js.map +1 -1
  34. package/dist/client/chat/message-components.d.ts.map +1 -1
  35. package/dist/client/chat/message-components.js +13 -10
  36. package/dist/client/chat/message-components.js.map +1 -1
  37. package/dist/client/chat/run-recovery.d.ts.map +1 -1
  38. package/dist/client/chat/run-recovery.js +3 -3
  39. package/dist/client/chat/run-recovery.js.map +1 -1
  40. package/dist/client/chat/tool-call-display.d.ts +0 -1
  41. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  42. package/dist/client/chat/tool-call-display.js +5 -2
  43. package/dist/client/chat/tool-call-display.js.map +1 -1
  44. package/dist/client/chat/widgets/DataChartRenderer.d.ts.map +1 -1
  45. package/dist/client/chat/widgets/DataChartRenderer.js +98 -21
  46. package/dist/client/chat/widgets/DataChartRenderer.js.map +1 -1
  47. package/dist/client/chat/widgets/builtin-tool-renderers.d.ts +4 -1
  48. package/dist/client/chat/widgets/builtin-tool-renderers.d.ts.map +1 -1
  49. package/dist/client/chat/widgets/builtin-tool-renderers.js +30 -4
  50. package/dist/client/chat/widgets/builtin-tool-renderers.js.map +1 -1
  51. package/dist/client/composer/AgentComposerFrame.js +1 -1
  52. package/dist/client/composer/AgentComposerFrame.js.map +1 -1
  53. package/dist/server/agent-chat-plugin.d.ts +17 -0
  54. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  55. package/dist/server/agent-chat-plugin.js +6 -2
  56. package/dist/server/agent-chat-plugin.js.map +1 -1
  57. package/dist/sharing/actions/set-resource-visibility.d.ts.map +1 -1
  58. package/dist/sharing/actions/set-resource-visibility.js +25 -11
  59. package/dist/sharing/actions/set-resource-visibility.js.map +1 -1
  60. package/dist/styles/agent-native.css +115 -2
  61. package/dist/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +100 -0
  62. package/docs/content/pr-visual-recap.md +2 -2
  63. package/package.json +1 -1
  64. package/src/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +100 -0
@@ -1,33 +1,110 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useState } from "react";
3
- import { Area, AreaChart, Bar, BarChart, CartesianGrid, Line, LineChart, ResponsiveContainer, Tooltip, XAxis, YAxis, } from "recharts";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
4
2
  const DEFAULT_COLORS = [
5
3
  "hsl(var(--primary))",
6
4
  "hsl(199 89% 48%)",
7
5
  "hsl(151 55% 42%)",
8
6
  "hsl(35 92% 50%)",
9
7
  ];
10
- function ChartBody({ chart }) {
11
- const axes = (_jsxs(_Fragment, { children: [_jsx(CartesianGrid, { strokeDasharray: "3 3", stroke: "hsl(var(--border))" }), _jsx(XAxis, { dataKey: chart.xKey, tickLine: false, axisLine: false, tick: { fill: "hsl(var(--muted-foreground))", fontSize: 11 } }), _jsx(YAxis, { tickLine: false, axisLine: false, tick: { fill: "hsl(var(--muted-foreground))", fontSize: 11 }, width: 34 }), _jsx(Tooltip, { contentStyle: {
12
- background: "hsl(var(--background))",
13
- border: "1px solid hsl(var(--border))",
14
- borderRadius: 8,
15
- color: "hsl(var(--foreground))",
16
- fontSize: 12,
17
- } })] }));
18
- if (chart.type === "line") {
19
- return (_jsxs(LineChart, { data: chart.data, children: [axes, chart.series.map((series, index) => (_jsx(Line, { type: "monotone", dataKey: series.key, name: series.label, stroke: series.color ?? DEFAULT_COLORS[index % DEFAULT_COLORS.length], strokeWidth: 2, dot: false, isAnimationActive: false }, series.key)))] }));
8
+ const WIDTH = 640;
9
+ const HEIGHT = 240;
10
+ const MARGIN = { top: 14, right: 18, bottom: 34, left: 46 };
11
+ const PLOT_WIDTH = WIDTH - MARGIN.left - MARGIN.right;
12
+ const PLOT_HEIGHT = HEIGHT - MARGIN.top - MARGIN.bottom;
13
+ function numericValue(row, key) {
14
+ const value = row[key];
15
+ if (typeof value === "number" && Number.isFinite(value))
16
+ return value;
17
+ if (typeof value === "string" && value.trim()) {
18
+ const parsed = Number(value);
19
+ if (Number.isFinite(parsed))
20
+ return parsed;
21
+ }
22
+ return null;
23
+ }
24
+ function formatTick(value) {
25
+ if (Math.abs(value) >= 1000)
26
+ return value.toLocaleString();
27
+ if (Number.isInteger(value))
28
+ return String(value);
29
+ return value.toFixed(1);
30
+ }
31
+ function labelFor(value) {
32
+ const label = value == null ? "" : String(value);
33
+ return label.length > 16 ? `${label.slice(0, 15)}...` : label;
34
+ }
35
+ function rangeFor(chart) {
36
+ const values = chart.data.flatMap((row) => chart.series
37
+ .map((series) => numericValue(row, series.key))
38
+ .filter((value) => value !== null));
39
+ if (values.length === 0)
40
+ return { min: 0, max: 1 };
41
+ let min = Math.min(...values);
42
+ let max = Math.max(...values);
43
+ if (chart.type === "bar" || chart.type === "area") {
44
+ min = Math.min(0, min);
45
+ max = Math.max(0, max);
46
+ }
47
+ if (min === max) {
48
+ const pad = Math.abs(max || 1) * 0.2;
49
+ min -= pad;
50
+ max += pad;
20
51
  }
21
- if (chart.type === "area") {
22
- return (_jsxs(AreaChart, { data: chart.data, children: [axes, chart.series.map((series, index) => (_jsx(Area, { type: "monotone", dataKey: series.key, name: series.label, stroke: series.color ?? DEFAULT_COLORS[index % DEFAULT_COLORS.length], fill: series.color ?? DEFAULT_COLORS[index % DEFAULT_COLORS.length], fillOpacity: 0.18, isAnimationActive: false }, series.key)))] }));
52
+ return { min, max };
53
+ }
54
+ function ChartBody({ chart }) {
55
+ const { min, max } = rangeFor(chart);
56
+ const yFor = (value) => MARGIN.top + ((max - value) / (max - min)) * PLOT_HEIGHT;
57
+ const xForPoint = (index) => chart.data.length <= 1
58
+ ? MARGIN.left + PLOT_WIDTH / 2
59
+ : MARGIN.left + (index / (chart.data.length - 1)) * PLOT_WIDTH;
60
+ const gridTicks = Array.from({ length: 4 }, (_, index) => {
61
+ const value = min + ((max - min) * index) / 3;
62
+ return { value, y: yFor(value) };
63
+ });
64
+ const xTickEvery = Math.max(1, Math.ceil(chart.data.length / 6));
65
+ const zeroY = yFor(Math.max(min, Math.min(max, 0)));
66
+ const axes = (_jsxs("g", { "aria-hidden": "true", children: [gridTicks.map((tick) => (_jsxs("g", { children: [_jsx("line", { x1: MARGIN.left, x2: WIDTH - MARGIN.right, y1: tick.y, y2: tick.y, stroke: "hsl(var(--border))", strokeDasharray: "3 3" }), _jsx("text", { x: MARGIN.left - 8, y: tick.y + 4, fill: "hsl(var(--muted-foreground))", fontSize: "11", textAnchor: "end", children: formatTick(tick.value) })] }, tick.y))), _jsx("line", { x1: MARGIN.left, x2: WIDTH - MARGIN.right, y1: zeroY, y2: zeroY, stroke: "hsl(var(--border))" }), chart.data.map((row, index) => index % xTickEvery === 0 || index === chart.data.length - 1 ? (_jsx("text", { x: chart.type === "bar"
67
+ ? MARGIN.left + (index + 0.5) * (PLOT_WIDTH / chart.data.length)
68
+ : xForPoint(index), y: HEIGHT - 12, fill: "hsl(var(--muted-foreground))", fontSize: "11", textAnchor: "middle", children: labelFor(row[chart.xKey]) }, `${index}-${String(row[chart.xKey] ?? "")}`)) : null)] }));
69
+ if (chart.type === "bar") {
70
+ const slotWidth = PLOT_WIDTH / Math.max(1, chart.data.length);
71
+ const groupWidth = slotWidth * 0.72;
72
+ const barWidth = groupWidth / Math.max(1, chart.series.length);
73
+ return (_jsxs(_Fragment, { children: [axes, chart.data.map((row, rowIndex) => chart.series.map((series, seriesIndex) => {
74
+ const value = numericValue(row, series.key);
75
+ if (value === null)
76
+ return null;
77
+ const color = series.color ??
78
+ DEFAULT_COLORS[seriesIndex % DEFAULT_COLORS.length];
79
+ const y = yFor(Math.max(value, 0));
80
+ const height = Math.max(1, Math.abs(zeroY - yFor(value)));
81
+ return (_jsx("rect", { x: MARGIN.left +
82
+ rowIndex * slotWidth +
83
+ (slotWidth - groupWidth) / 2 +
84
+ seriesIndex * barWidth, y: y, width: Math.max(2, barWidth - 2), height: height, rx: "3", fill: color }, `${rowIndex}-${series.key}`));
85
+ }))] }));
23
86
  }
24
- return (_jsxs(BarChart, { data: chart.data, children: [axes, chart.series.map((series, index) => (_jsx(Bar, { dataKey: series.key, name: series.label, fill: series.color ?? DEFAULT_COLORS[index % DEFAULT_COLORS.length], radius: [4, 4, 0, 0], isAnimationActive: false }, series.key)))] }));
87
+ const paths = chart.series.map((series, seriesIndex) => {
88
+ const points = chart.data
89
+ .map((row, rowIndex) => {
90
+ const value = numericValue(row, series.key);
91
+ return value === null
92
+ ? null
93
+ : { x: xForPoint(rowIndex), y: yFor(value) };
94
+ })
95
+ .filter((point) => point !== null);
96
+ const color = series.color ?? DEFAULT_COLORS[seriesIndex % DEFAULT_COLORS.length];
97
+ const linePath = points
98
+ .map((point, index) => `${index === 0 ? "M" : "L"} ${point.x} ${point.y}`)
99
+ .join(" ");
100
+ const areaPath = points.length > 0
101
+ ? `${linePath} L ${points[points.length - 1].x} ${zeroY} L ${points[0].x} ${zeroY} Z`
102
+ : "";
103
+ return { series, color, linePath, areaPath, points };
104
+ });
105
+ return (_jsxs(_Fragment, { children: [axes, paths.map(({ series, color, areaPath }) => chart.type === "area" && areaPath ? (_jsx("path", { d: areaPath, fill: color, opacity: "0.18", stroke: "none" }, series.key)) : null), paths.map(({ series, color, linePath, points }) => (_jsxs("g", { children: [_jsx("path", { d: linePath, fill: "none", stroke: color, strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }), points.map((point, index) => (_jsx("circle", { cx: point.x, cy: point.y, r: "3", fill: "hsl(var(--background))", stroke: color, strokeWidth: "2" }, index)))] }, series.key)))] }));
25
106
  }
26
107
  export function DataChartRenderer({ chart }) {
27
- const [ready, setReady] = useState(false);
28
- useEffect(() => {
29
- setReady(true);
30
- }, []);
31
- return (_jsx("div", { className: "h-60 w-full min-w-0", children: ready ? (_jsx(ResponsiveContainer, { width: "100%", height: "100%", children: _jsx(ChartBody, { chart: chart }) })) : null }));
108
+ return (_jsx("div", { className: "h-60 w-full min-w-0 overflow-hidden", children: _jsx("svg", { className: "agent-data-chart-renderer h-full w-full", viewBox: `0 0 ${WIDTH} ${HEIGHT}`, role: "img", "aria-label": chart.title ?? "Data chart", preserveAspectRatio: "none", children: _jsx(ChartBody, { chart: chart }) }) }));
32
109
  }
33
110
  //# sourceMappingURL=DataChartRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataChartRenderer.js","sourceRoot":"","sources":["../../../../src/client/chat/widgets/DataChartRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from \"react\";\nimport {\n Area,\n AreaChart,\n Bar,\n BarChart,\n CartesianGrid,\n Line,\n LineChart,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport type { DataChartWidget as DataChartWidgetData } from \"./data-widget-types.js\";\n\nconst DEFAULT_COLORS = [\n \"hsl(var(--primary))\",\n \"hsl(199 89% 48%)\",\n \"hsl(151 55% 42%)\",\n \"hsl(35 92% 50%)\",\n];\n\nfunction ChartBody({ chart }: { chart: DataChartWidgetData }) {\n const axes = (\n <>\n <CartesianGrid strokeDasharray=\"3 3\" stroke=\"hsl(var(--border))\" />\n <XAxis\n dataKey={chart.xKey}\n tickLine={false}\n axisLine={false}\n tick={{ fill: \"hsl(var(--muted-foreground))\", fontSize: 11 }}\n />\n <YAxis\n tickLine={false}\n axisLine={false}\n tick={{ fill: \"hsl(var(--muted-foreground))\", fontSize: 11 }}\n width={34}\n />\n <Tooltip\n contentStyle={{\n background: \"hsl(var(--background))\",\n border: \"1px solid hsl(var(--border))\",\n borderRadius: 8,\n color: \"hsl(var(--foreground))\",\n fontSize: 12,\n }}\n />\n </>\n );\n\n if (chart.type === \"line\") {\n return (\n <LineChart data={chart.data}>\n {axes}\n {chart.series.map((series, index) => (\n <Line\n key={series.key}\n type=\"monotone\"\n dataKey={series.key}\n name={series.label}\n stroke={\n series.color ?? DEFAULT_COLORS[index % DEFAULT_COLORS.length]\n }\n strokeWidth={2}\n dot={false}\n isAnimationActive={false}\n />\n ))}\n </LineChart>\n );\n }\n\n if (chart.type === \"area\") {\n return (\n <AreaChart data={chart.data}>\n {axes}\n {chart.series.map((series, index) => (\n <Area\n key={series.key}\n type=\"monotone\"\n dataKey={series.key}\n name={series.label}\n stroke={\n series.color ?? DEFAULT_COLORS[index % DEFAULT_COLORS.length]\n }\n fill={series.color ?? DEFAULT_COLORS[index % DEFAULT_COLORS.length]}\n fillOpacity={0.18}\n isAnimationActive={false}\n />\n ))}\n </AreaChart>\n );\n }\n\n return (\n <BarChart data={chart.data}>\n {axes}\n {chart.series.map((series, index) => (\n <Bar\n key={series.key}\n dataKey={series.key}\n name={series.label}\n fill={series.color ?? DEFAULT_COLORS[index % DEFAULT_COLORS.length]}\n radius={[4, 4, 0, 0]}\n isAnimationActive={false}\n />\n ))}\n </BarChart>\n );\n}\n\nexport function DataChartRenderer({ chart }: { chart: DataChartWidgetData }) {\n const [ready, setReady] = useState(false);\n\n useEffect(() => {\n setReady(true);\n }, []);\n\n return (\n <div className=\"h-60 w-full min-w-0\">\n {ready ? (\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <ChartBody chart={chart} />\n </ResponsiveContainer>\n ) : null}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"DataChartRenderer.js","sourceRoot":"","sources":["../../../../src/client/chat/widgets/DataChartRenderer.tsx"],"names":[],"mappings":";AAEA,MAAM,cAAc,GAAG;IACrB,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;CAClB,CAAC;AAEF,MAAM,KAAK,GAAG,GAAG,CAAC;AAClB,MAAM,MAAM,GAAG,GAAG,CAAC;AACnB,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAC5D,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;AACtD,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;AAExD,SAAS,YAAY,CACnB,GAA4B,EAC5B,GAAW;IAEX,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;IAC7C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC,cAAc,EAAE,CAAC;IAC3D,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,MAAM,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAChE,CAAC;AAED,SAAS,QAAQ,CAAC,KAA0B;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACxC,KAAK,CAAC,MAAM;SACT,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;SAC9C,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CACtD,CAAC;IACF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IAEnD,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAC9B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAClD,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;QACrC,GAAG,IAAI,GAAG,CAAC;QACX,GAAG,IAAI,GAAG,CAAC;IACb,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,KAAK,EAAkC;IAC1D,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAC7B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;IAC3D,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE,CAClC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;QACpB,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,UAAU,GAAG,CAAC;QAC9B,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;IACnE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QACvD,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9C,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpD,MAAM,IAAI,GAAG,CACX,4BAAe,MAAM,aAClB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACvB,wBACE,eACE,EAAE,EAAE,MAAM,CAAC,IAAI,EACf,EAAE,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,EACxB,EAAE,EAAE,IAAI,CAAC,CAAC,EACV,EAAE,EAAE,IAAI,CAAC,CAAC,EACV,MAAM,EAAC,oBAAoB,EAC3B,eAAe,EAAC,KAAK,GACrB,EACF,eACE,CAAC,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,EAClB,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EACb,IAAI,EAAC,8BAA8B,EACnC,QAAQ,EAAC,IAAI,EACb,UAAU,EAAC,KAAK,YAEf,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAClB,KAjBD,IAAI,CAAC,CAAC,CAkBV,CACL,CAAC,EACF,eACE,EAAE,EAAE,MAAM,CAAC,IAAI,EACf,EAAE,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,EACxB,EAAE,EAAE,KAAK,EACT,EAAE,EAAE,KAAK,EACT,MAAM,EAAC,oBAAoB,GAC3B,EACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAC7B,KAAK,GAAG,UAAU,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC5D,eAEE,CAAC,EACC,KAAK,CAAC,IAAI,KAAK,KAAK;oBAClB,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;oBAChE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,EAEtB,CAAC,EAAE,MAAM,GAAG,EAAE,EACd,IAAI,EAAC,8BAA8B,EACnC,QAAQ,EAAC,IAAI,EACb,UAAU,EAAC,QAAQ,YAElB,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAXrB,GAAG,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAY3C,CACR,CAAC,CAAC,CAAC,IAAI,CACT,IACC,CACL,CAAC;IAEF,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;QACpC,MAAM,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/D,OAAO,CACL,8BACG,IAAI,EACJ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAChC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;oBACvC,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC5C,IAAI,KAAK,KAAK,IAAI;wBAAE,OAAO,IAAI,CAAC;oBAChC,MAAM,KAAK,GACT,MAAM,CAAC,KAAK;wBACZ,cAAc,CAAC,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;oBACtD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;oBACnC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC1D,OAAO,CACL,eAEE,CAAC,EACC,MAAM,CAAC,IAAI;4BACX,QAAQ,GAAG,SAAS;4BACpB,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC;4BAC5B,WAAW,GAAG,QAAQ,EAExB,CAAC,EAAE,CAAC,EACJ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,EAChC,MAAM,EAAE,MAAM,EACd,EAAE,EAAC,GAAG,EACN,IAAI,EAAE,KAAK,IAXN,GAAG,QAAQ,IAAI,MAAM,CAAC,GAAG,EAAE,CAYhC,CACH,CAAC;gBACJ,CAAC,CAAC,CACH,IACA,CACJ,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QACrD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI;aACtB,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;YACrB,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5C,OAAO,KAAK,KAAK,IAAI;gBACnB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,KAAK,EAAqC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;QACxE,MAAM,KAAK,GACT,MAAM,CAAC,KAAK,IAAI,cAAc,CAAC,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,MAAM;aACpB,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;aACzE,IAAI,CAAC,GAAG,CAAC,CAAC;QACb,MAAM,QAAQ,GACZ,MAAM,CAAC,MAAM,GAAG,CAAC;YACf,CAAC,CAAC,GAAG,QAAQ,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI;YACrF,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,8BACG,IAAI,EACJ,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CACzC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAClC,eAEE,CAAC,EAAE,QAAQ,EACX,IAAI,EAAE,KAAK,EACX,OAAO,EAAC,MAAM,EACd,MAAM,EAAC,MAAM,IAJR,MAAM,CAAC,GAAG,CAKf,CACH,CAAC,CAAC,CAAC,IAAI,CACT,EACA,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAClD,wBACE,eACE,CAAC,EAAE,QAAQ,EACX,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,KAAK,EACb,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,GACtB,EACD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAC5B,iBAEE,EAAE,EAAE,KAAK,CAAC,CAAC,EACX,EAAE,EAAE,KAAK,CAAC,CAAC,EACX,CAAC,EAAC,GAAG,EACL,IAAI,EAAC,wBAAwB,EAC7B,MAAM,EAAE,KAAK,EACb,WAAW,EAAC,GAAG,IANV,KAAK,CAOV,CACH,CAAC,KAnBI,MAAM,CAAC,GAAG,CAoBd,CACL,CAAC,IACD,CACJ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAE,KAAK,EAAkC;IACzE,OAAO,CACL,cAAK,SAAS,EAAC,qCAAqC,YAClD,cACE,SAAS,EAAC,yCAAyC,EACnD,OAAO,EAAE,OAAO,KAAK,IAAI,MAAM,EAAE,EACjC,IAAI,EAAC,KAAK,gBACE,KAAK,CAAC,KAAK,IAAI,YAAY,EACvC,mBAAmB,EAAC,MAAM,YAE1B,KAAC,SAAS,IAAC,KAAK,EAAE,KAAK,GAAI,GACvB,GACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["import type { DataChartWidget as DataChartWidgetData } from \"./data-widget-types.js\";\n\nconst DEFAULT_COLORS = [\n \"hsl(var(--primary))\",\n \"hsl(199 89% 48%)\",\n \"hsl(151 55% 42%)\",\n \"hsl(35 92% 50%)\",\n];\n\nconst WIDTH = 640;\nconst HEIGHT = 240;\nconst MARGIN = { top: 14, right: 18, bottom: 34, left: 46 };\nconst PLOT_WIDTH = WIDTH - MARGIN.left - MARGIN.right;\nconst PLOT_HEIGHT = HEIGHT - MARGIN.top - MARGIN.bottom;\n\nfunction numericValue(\n row: Record<string, unknown>,\n key: string,\n): number | null {\n const value = row[key];\n if (typeof value === \"number\" && Number.isFinite(value)) return value;\n if (typeof value === \"string\" && value.trim()) {\n const parsed = Number(value);\n if (Number.isFinite(parsed)) return parsed;\n }\n return null;\n}\n\nfunction formatTick(value: number): string {\n if (Math.abs(value) >= 1000) return value.toLocaleString();\n if (Number.isInteger(value)) return String(value);\n return value.toFixed(1);\n}\n\nfunction labelFor(value: unknown): string {\n const label = value == null ? \"\" : String(value);\n return label.length > 16 ? `${label.slice(0, 15)}...` : label;\n}\n\nfunction rangeFor(chart: DataChartWidgetData) {\n const values = chart.data.flatMap((row) =>\n chart.series\n .map((series) => numericValue(row, series.key))\n .filter((value): value is number => value !== null),\n );\n if (values.length === 0) return { min: 0, max: 1 };\n\n let min = Math.min(...values);\n let max = Math.max(...values);\n if (chart.type === \"bar\" || chart.type === \"area\") {\n min = Math.min(0, min);\n max = Math.max(0, max);\n }\n if (min === max) {\n const pad = Math.abs(max || 1) * 0.2;\n min -= pad;\n max += pad;\n }\n return { min, max };\n}\n\nfunction ChartBody({ chart }: { chart: DataChartWidgetData }) {\n const { min, max } = rangeFor(chart);\n const yFor = (value: number) =>\n MARGIN.top + ((max - value) / (max - min)) * PLOT_HEIGHT;\n const xForPoint = (index: number) =>\n chart.data.length <= 1\n ? MARGIN.left + PLOT_WIDTH / 2\n : MARGIN.left + (index / (chart.data.length - 1)) * PLOT_WIDTH;\n const gridTicks = Array.from({ length: 4 }, (_, index) => {\n const value = min + ((max - min) * index) / 3;\n return { value, y: yFor(value) };\n });\n const xTickEvery = Math.max(1, Math.ceil(chart.data.length / 6));\n const zeroY = yFor(Math.max(min, Math.min(max, 0)));\n\n const axes = (\n <g aria-hidden=\"true\">\n {gridTicks.map((tick) => (\n <g key={tick.y}>\n <line\n x1={MARGIN.left}\n x2={WIDTH - MARGIN.right}\n y1={tick.y}\n y2={tick.y}\n stroke=\"hsl(var(--border))\"\n strokeDasharray=\"3 3\"\n />\n <text\n x={MARGIN.left - 8}\n y={tick.y + 4}\n fill=\"hsl(var(--muted-foreground))\"\n fontSize=\"11\"\n textAnchor=\"end\"\n >\n {formatTick(tick.value)}\n </text>\n </g>\n ))}\n <line\n x1={MARGIN.left}\n x2={WIDTH - MARGIN.right}\n y1={zeroY}\n y2={zeroY}\n stroke=\"hsl(var(--border))\"\n />\n {chart.data.map((row, index) =>\n index % xTickEvery === 0 || index === chart.data.length - 1 ? (\n <text\n key={`${index}-${String(row[chart.xKey] ?? \"\")}`}\n x={\n chart.type === \"bar\"\n ? MARGIN.left + (index + 0.5) * (PLOT_WIDTH / chart.data.length)\n : xForPoint(index)\n }\n y={HEIGHT - 12}\n fill=\"hsl(var(--muted-foreground))\"\n fontSize=\"11\"\n textAnchor=\"middle\"\n >\n {labelFor(row[chart.xKey])}\n </text>\n ) : null,\n )}\n </g>\n );\n\n if (chart.type === \"bar\") {\n const slotWidth = PLOT_WIDTH / Math.max(1, chart.data.length);\n const groupWidth = slotWidth * 0.72;\n const barWidth = groupWidth / Math.max(1, chart.series.length);\n return (\n <>\n {axes}\n {chart.data.map((row, rowIndex) =>\n chart.series.map((series, seriesIndex) => {\n const value = numericValue(row, series.key);\n if (value === null) return null;\n const color =\n series.color ??\n DEFAULT_COLORS[seriesIndex % DEFAULT_COLORS.length];\n const y = yFor(Math.max(value, 0));\n const height = Math.max(1, Math.abs(zeroY - yFor(value)));\n return (\n <rect\n key={`${rowIndex}-${series.key}`}\n x={\n MARGIN.left +\n rowIndex * slotWidth +\n (slotWidth - groupWidth) / 2 +\n seriesIndex * barWidth\n }\n y={y}\n width={Math.max(2, barWidth - 2)}\n height={height}\n rx=\"3\"\n fill={color}\n />\n );\n }),\n )}\n </>\n );\n }\n\n const paths = chart.series.map((series, seriesIndex) => {\n const points = chart.data\n .map((row, rowIndex) => {\n const value = numericValue(row, series.key);\n return value === null\n ? null\n : { x: xForPoint(rowIndex), y: yFor(value) };\n })\n .filter((point): point is { x: number; y: number } => point !== null);\n const color =\n series.color ?? DEFAULT_COLORS[seriesIndex % DEFAULT_COLORS.length];\n const linePath = points\n .map((point, index) => `${index === 0 ? \"M\" : \"L\"} ${point.x} ${point.y}`)\n .join(\" \");\n const areaPath =\n points.length > 0\n ? `${linePath} L ${points[points.length - 1].x} ${zeroY} L ${points[0].x} ${zeroY} Z`\n : \"\";\n return { series, color, linePath, areaPath, points };\n });\n\n return (\n <>\n {axes}\n {paths.map(({ series, color, areaPath }) =>\n chart.type === \"area\" && areaPath ? (\n <path\n key={series.key}\n d={areaPath}\n fill={color}\n opacity=\"0.18\"\n stroke=\"none\"\n />\n ) : null,\n )}\n {paths.map(({ series, color, linePath, points }) => (\n <g key={series.key}>\n <path\n d={linePath}\n fill=\"none\"\n stroke={color}\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n {points.map((point, index) => (\n <circle\n key={index}\n cx={point.x}\n cy={point.y}\n r=\"3\"\n fill=\"hsl(var(--background))\"\n stroke={color}\n strokeWidth=\"2\"\n />\n ))}\n </g>\n ))}\n </>\n );\n}\n\nexport function DataChartRenderer({ chart }: { chart: DataChartWidgetData }) {\n return (\n <div className=\"h-60 w-full min-w-0 overflow-hidden\">\n <svg\n className=\"agent-data-chart-renderer h-full w-full\"\n viewBox={`0 0 ${WIDTH} ${HEIGHT}`}\n role=\"img\"\n aria-label={chart.title ?? \"Data chart\"}\n preserveAspectRatio=\"none\"\n >\n <ChartBody chart={chart} />\n </svg>\n </div>\n );\n}\n"]}
@@ -1,2 +1,5 @@
1
- export {};
1
+ import { type ToolRendererContext, type ToolRendererComponent } from "../tool-render-registry.js";
2
+ export declare function isBuiltinDataWidgetActionRenderer(context: ToolRendererContext): boolean;
3
+ export declare function resolveBuiltinActionChatRenderer(context: ToolRendererContext): ToolRendererComponent | null;
4
+ export declare function resolveBuiltinFallbackToolRenderer(context: ToolRendererContext): ToolRendererComponent | null;
2
5
  //# sourceMappingURL=builtin-tool-renderers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builtin-tool-renderers.d.ts","sourceRoot":"","sources":["../../../../src/client/chat/widgets/builtin-tool-renderers.tsx"],"names":[],"mappings":""}
1
+ {"version":3,"file":"builtin-tool-renderers.d.ts","sourceRoot":"","sources":["../../../../src/client/chat/widgets/builtin-tool-renderers.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;AAiFpC,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAQT;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,mBAAmB,GAC3B,qBAAqB,GAAG,IAAI,CAQ9B;AAED,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,mBAAmB,GAC3B,qBAAqB,GAAG,IAAI,CAI9B"}
@@ -12,9 +12,15 @@ function normalizeActionDataWidgetResult(context) {
12
12
  const result = normalizeDataWidgetResult(context.resultJson);
13
13
  if (result)
14
14
  return result;
15
+ const renderer = context.chatUI?.renderer;
16
+ if (renderer === ACTION_CHAT_UI_DATA_WIDGET_RENDERER ||
17
+ context.toolName === "render-data-widget") {
18
+ const argsResult = normalizeDataWidgetResult(context.args);
19
+ if (argsResult)
20
+ return argsResult;
21
+ }
15
22
  if (!isRecord(context.resultJson))
16
23
  return null;
17
- const renderer = context.chatUI?.renderer;
18
24
  if (renderer === ACTION_CHAT_UI_DATA_TABLE_RENDERER) {
19
25
  return normalizeDataWidgetResult({
20
26
  widget: DATA_TABLE_WIDGET,
@@ -62,6 +68,26 @@ function renderDataWidget(context) {
62
68
  }
63
69
  return null;
64
70
  }
71
+ const BuiltinDataWidgetRenderer = ({ context }) => renderDataWidget(context);
72
+ export function isBuiltinDataWidgetActionRenderer(context) {
73
+ const renderer = context.chatUI?.renderer;
74
+ return (renderer === ACTION_CHAT_UI_DATA_TABLE_RENDERER ||
75
+ renderer === ACTION_CHAT_UI_DATA_CHART_RENDERER ||
76
+ renderer === ACTION_CHAT_UI_DATA_INSIGHTS_RENDERER ||
77
+ renderer === ACTION_CHAT_UI_DATA_WIDGET_RENDERER);
78
+ }
79
+ export function resolveBuiltinActionChatRenderer(context) {
80
+ if (isBuiltinDataWidgetActionRenderer(context) &&
81
+ normalizeActionDataWidgetResult(context)) {
82
+ return BuiltinDataWidgetRenderer;
83
+ }
84
+ return null;
85
+ }
86
+ export function resolveBuiltinFallbackToolRenderer(context) {
87
+ return normalizeActionDataWidgetResult(context) !== null
88
+ ? BuiltinDataWidgetRenderer
89
+ : null;
90
+ }
65
91
  for (const [id, renderer] of [
66
92
  ["core.data-table", ACTION_CHAT_UI_DATA_TABLE_RENDERER],
67
93
  ["core.data-chart", ACTION_CHAT_UI_DATA_CHART_RENDERER],
@@ -71,12 +97,12 @@ for (const [id, renderer] of [
71
97
  registerReservedActionChatRenderer({
72
98
  id,
73
99
  renderer,
74
- Component: ({ context }) => renderDataWidget(context),
100
+ Component: BuiltinDataWidgetRenderer,
75
101
  });
76
102
  }
77
103
  registerReservedFallbackToolRenderer({
78
104
  id: "core.data-widgets",
79
- match: (context) => normalizeDataWidgetResult(context.resultJson) !== null,
80
- Component: ({ context }) => renderDataWidget(context),
105
+ match: (context) => normalizeActionDataWidgetResult(context) !== null,
106
+ Component: BuiltinDataWidgetRenderer,
81
107
  });
82
108
  //# sourceMappingURL=builtin-tool-renderers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"builtin-tool-renderers.js","sourceRoot":"","sources":["../../../../src/client/chat/widgets/builtin-tool-renderers.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,GAE1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,kCAAkC,EAClC,qCAAqC,EACrC,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACL,kCAAkC,EAClC,oCAAoC,GAErC,MAAM,4BAA4B,CAAC;AAEpC,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,+BAA+B,CACtC,OAA4B;IAE5B,MAAM,MAAM,GAAG,yBAAyB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7D,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/C,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1C,IAAI,QAAQ,KAAK,kCAAkC,EAAE,CAAC;QACpD,OAAO,yBAAyB,CAAC;YAC/B,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;gBACvC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;gBAC1B,CAAC,CAAC,OAAO,CAAC,UAAU;YACtB,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC3C,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;gBAC5B,CAAC,CAAC,SAAS;SACd,CAAC,CAAC;IACL,CAAC;IACD,IAAI,QAAQ,KAAK,kCAAkC,EAAE,CAAC;QACpD,OAAO,yBAAyB,CAAC;YAC/B,MAAM,EAAE,iBAAiB;YACzB,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC;gBACnD,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW;gBAChC,CAAC,CAAC,OAAO,CAAC,UAAU;YACtB,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC3C,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;gBAC5B,CAAC,CAAC,SAAS;SACd,CAAC,CAAC;IACL,CAAC;IACD,IAAI,QAAQ,KAAK,qCAAqC,EAAE,CAAC;QACvD,OAAO,yBAAyB,CAAC;YAC/B,GAAG,OAAO,CAAC,UAAU;YACrB,MAAM,EAAE,oBAAoB;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA4B;IACpD,MAAM,MAAM,GACV,+BAA+B,CAAC,OAAO,CAAC;QACxC,yBAAyB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,MAAM,KAAK,iBAAiB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjD,OAAO,CACL,KAAC,eAAe,IACd,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,aAAa,GACrC,CACH,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,iBAAiB,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvD,OAAO,KAAC,eAAe,IAAC,KAAK,EAAE,MAAM,CAAC,WAAW,GAAI,CAAC;IACxD,CAAC;IACD,IAAI,MAAM,KAAK,oBAAoB,EAAE,CAAC;QACpC,OAAO,KAAC,kBAAkB,IAAC,MAAM,EAAE,MAAM,GAAI,CAAC;IAChD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI;IAC3B,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;IACvD,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;IACvD,CAAC,oBAAoB,EAAE,qCAAqC,CAAC;IAC7D,CAAC,kBAAkB,EAAE,mCAAmC,CAAC;CACjD,EAAE,CAAC;IACX,kCAAkC,CAAC;QACjC,EAAE;QACF,QAAQ;QACR,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC;KACtD,CAAC,CAAC;AACL,CAAC;AAED,oCAAoC,CAAC;IACnC,EAAE,EAAE,mBAAmB;IACvB,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI;IAC1E,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC;CACtD,CAAC,CAAC","sourcesContent":["import {\n DATA_CHART_WIDGET,\n DATA_INSIGHTS_WIDGET,\n DATA_TABLE_WIDGET,\n normalizeDataWidgetKind,\n normalizeDataWidgetResult,\n type DataWidgetResult,\n} from \"./data-widget-types.js\";\nimport {\n ACTION_CHAT_UI_DATA_CHART_RENDERER,\n ACTION_CHAT_UI_DATA_INSIGHTS_RENDERER,\n ACTION_CHAT_UI_DATA_TABLE_RENDERER,\n ACTION_CHAT_UI_DATA_WIDGET_RENDERER,\n} from \"../../../action-ui.js\";\nimport { DataChartWidget } from \"./DataChartWidget.js\";\nimport { DataInsightsWidget } from \"./DataInsightsWidget.js\";\nimport { DataTableWidget } from \"./DataTableWidget.js\";\nimport {\n registerReservedActionChatRenderer,\n registerReservedFallbackToolRenderer,\n type ToolRendererContext,\n} from \"../tool-render-registry.js\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction normalizeActionDataWidgetResult(\n context: ToolRendererContext,\n): DataWidgetResult | null {\n const result = normalizeDataWidgetResult(context.resultJson);\n if (result) return result;\n if (!isRecord(context.resultJson)) return null;\n\n const renderer = context.chatUI?.renderer;\n if (renderer === ACTION_CHAT_UI_DATA_TABLE_RENDERER) {\n return normalizeDataWidgetResult({\n widget: DATA_TABLE_WIDGET,\n table: isRecord(context.resultJson.table)\n ? context.resultJson.table\n : context.resultJson,\n display: isRecord(context.resultJson.display)\n ? context.resultJson.display\n : undefined,\n });\n }\n if (renderer === ACTION_CHAT_UI_DATA_CHART_RENDERER) {\n return normalizeDataWidgetResult({\n widget: DATA_CHART_WIDGET,\n chartSeries: isRecord(context.resultJson.chartSeries)\n ? context.resultJson.chartSeries\n : context.resultJson,\n display: isRecord(context.resultJson.display)\n ? context.resultJson.display\n : undefined,\n });\n }\n if (renderer === ACTION_CHAT_UI_DATA_INSIGHTS_RENDERER) {\n return normalizeDataWidgetResult({\n ...context.resultJson,\n widget: DATA_INSIGHTS_WIDGET,\n });\n }\n\n return null;\n}\n\nfunction renderDataWidget(context: ToolRendererContext) {\n const result =\n normalizeActionDataWidgetResult(context) ??\n normalizeDataWidgetResult(context.resultJson);\n if (!result) return null;\n const widget = normalizeDataWidgetKind(result.widget);\n if (widget === DATA_TABLE_WIDGET && result.table) {\n return (\n <DataTableWidget\n table={result.table}\n action={result.display?.primaryAction}\n />\n );\n }\n if (widget === DATA_CHART_WIDGET && result.chartSeries) {\n return <DataChartWidget chart={result.chartSeries} />;\n }\n if (widget === DATA_INSIGHTS_WIDGET) {\n return <DataInsightsWidget result={result} />;\n }\n return null;\n}\n\nfor (const [id, renderer] of [\n [\"core.data-table\", ACTION_CHAT_UI_DATA_TABLE_RENDERER],\n [\"core.data-chart\", ACTION_CHAT_UI_DATA_CHART_RENDERER],\n [\"core.data-insights\", ACTION_CHAT_UI_DATA_INSIGHTS_RENDERER],\n [\"core.data-widget\", ACTION_CHAT_UI_DATA_WIDGET_RENDERER],\n] as const) {\n registerReservedActionChatRenderer({\n id,\n renderer,\n Component: ({ context }) => renderDataWidget(context),\n });\n}\n\nregisterReservedFallbackToolRenderer({\n id: \"core.data-widgets\",\n match: (context) => normalizeDataWidgetResult(context.resultJson) !== null,\n Component: ({ context }) => renderDataWidget(context),\n});\n"]}
1
+ {"version":3,"file":"builtin-tool-renderers.js","sourceRoot":"","sources":["../../../../src/client/chat/widgets/builtin-tool-renderers.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n DATA_CHART_WIDGET,\n DATA_INSIGHTS_WIDGET,\n DATA_TABLE_WIDGET,\n normalizeDataWidgetKind,\n normalizeDataWidgetResult,\n type DataWidgetResult,\n} from \"./data-widget-types.js\";\nimport {\n ACTION_CHAT_UI_DATA_CHART_RENDERER,\n ACTION_CHAT_UI_DATA_INSIGHTS_RENDERER,\n ACTION_CHAT_UI_DATA_TABLE_RENDERER,\n ACTION_CHAT_UI_DATA_WIDGET_RENDERER,\n} from \"../../../action-ui.js\";\nimport { DataChartWidget } from \"./DataChartWidget.js\";\nimport { DataInsightsWidget } from \"./DataInsightsWidget.js\";\nimport { DataTableWidget } from \"./DataTableWidget.js\";\nimport {\n registerReservedActionChatRenderer,\n registerReservedFallbackToolRenderer,\n type ToolRendererContext,\n type ToolRendererComponent,\n} from \"../tool-render-registry.js\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction normalizeActionDataWidgetResult(\n context: ToolRendererContext,\n): DataWidgetResult | null {\n const result = normalizeDataWidgetResult(context.resultJson);\n if (result) return result;\n\n const renderer = context.chatUI?.renderer;\n if (\n renderer === ACTION_CHAT_UI_DATA_WIDGET_RENDERER ||\n context.toolName === \"render-data-widget\"\n ) {\n const argsResult = normalizeDataWidgetResult(context.args);\n if (argsResult) return argsResult;\n }\n\n if (!isRecord(context.resultJson)) return null;\n\n if (renderer === ACTION_CHAT_UI_DATA_TABLE_RENDERER) {\n return normalizeDataWidgetResult({\n widget: DATA_TABLE_WIDGET,\n table: isRecord(context.resultJson.table)\n ? context.resultJson.table\n : context.resultJson,\n display: isRecord(context.resultJson.display)\n ? context.resultJson.display\n : undefined,\n });\n }\n if (renderer === ACTION_CHAT_UI_DATA_CHART_RENDERER) {\n return normalizeDataWidgetResult({\n widget: DATA_CHART_WIDGET,\n chartSeries: isRecord(context.resultJson.chartSeries)\n ? context.resultJson.chartSeries\n : context.resultJson,\n display: isRecord(context.resultJson.display)\n ? context.resultJson.display\n : undefined,\n });\n }\n if (renderer === ACTION_CHAT_UI_DATA_INSIGHTS_RENDERER) {\n return normalizeDataWidgetResult({\n ...context.resultJson,\n widget: DATA_INSIGHTS_WIDGET,\n });\n }\n\n return null;\n}\n\nfunction renderDataWidget(context: ToolRendererContext) {\n const result =\n normalizeActionDataWidgetResult(context) ??\n normalizeDataWidgetResult(context.resultJson);\n if (!result) return null;\n const widget = normalizeDataWidgetKind(result.widget);\n if (widget === DATA_TABLE_WIDGET && result.table) {\n return (\n <DataTableWidget\n table={result.table}\n action={result.display?.primaryAction}\n />\n );\n }\n if (widget === DATA_CHART_WIDGET && result.chartSeries) {\n return <DataChartWidget chart={result.chartSeries} />;\n }\n if (widget === DATA_INSIGHTS_WIDGET) {\n return <DataInsightsWidget result={result} />;\n }\n return null;\n}\n\nconst BuiltinDataWidgetRenderer: ToolRendererComponent = ({ context }) =>\n renderDataWidget(context);\n\nexport function isBuiltinDataWidgetActionRenderer(\n context: ToolRendererContext,\n): boolean {\n const renderer = context.chatUI?.renderer;\n return (\n renderer === ACTION_CHAT_UI_DATA_TABLE_RENDERER ||\n renderer === ACTION_CHAT_UI_DATA_CHART_RENDERER ||\n renderer === ACTION_CHAT_UI_DATA_INSIGHTS_RENDERER ||\n renderer === ACTION_CHAT_UI_DATA_WIDGET_RENDERER\n );\n}\n\nexport function resolveBuiltinActionChatRenderer(\n context: ToolRendererContext,\n): ToolRendererComponent | null {\n if (\n isBuiltinDataWidgetActionRenderer(context) &&\n normalizeActionDataWidgetResult(context)\n ) {\n return BuiltinDataWidgetRenderer;\n }\n return null;\n}\n\nexport function resolveBuiltinFallbackToolRenderer(\n context: ToolRendererContext,\n): ToolRendererComponent | null {\n return normalizeActionDataWidgetResult(context) !== null\n ? BuiltinDataWidgetRenderer\n : null;\n}\n\nfor (const [id, renderer] of [\n [\"core.data-table\", ACTION_CHAT_UI_DATA_TABLE_RENDERER],\n [\"core.data-chart\", ACTION_CHAT_UI_DATA_CHART_RENDERER],\n [\"core.data-insights\", ACTION_CHAT_UI_DATA_INSIGHTS_RENDERER],\n [\"core.data-widget\", ACTION_CHAT_UI_DATA_WIDGET_RENDERER],\n] as const) {\n registerReservedActionChatRenderer({\n id,\n renderer,\n Component: BuiltinDataWidgetRenderer,\n });\n}\n\nregisterReservedFallbackToolRenderer({\n id: \"core.data-widgets\",\n match: (context) => normalizeActionDataWidgetResult(context) !== null,\n Component: BuiltinDataWidgetRenderer,\n});\n"]}
@@ -8,7 +8,7 @@ import { cn } from "../utils.js";
8
8
  * all render this same frame so the composer does not drift across products.
9
9
  */
10
10
  export function AgentComposerFrame({ children, className, rootClassName, style, rootStyle, layoutVariant = "default", onClick, }) {
11
- return (_jsx("div", { "data-agent-composer-variant": layoutVariant, "data-agent-composer-slot": "area", className: cn("agent-composer-area shrink-0 px-3 py-2", layoutVariant !== "default" && `agent-composer-area--${layoutVariant}`, className), style: style, onClick: onClick, children: _jsx(ComposerPrimitive.Root, { "data-agent-composer-variant": layoutVariant, "data-agent-composer-slot": "root", className: cn("agent-composer-root flex flex-col rounded-lg border border-input bg-background focus-within:ring-1 focus-within:ring-ring", layoutVariant !== "default" &&
11
+ return (_jsx("div", { "data-agent-composer-variant": layoutVariant, "data-agent-composer-slot": "area", className: cn("agent-composer-area shrink-0 px-3 py-2", layoutVariant !== "default" && `agent-composer-area--${layoutVariant}`, className), style: style, onClick: onClick, children: _jsx(ComposerPrimitive.Root, { "data-agent-composer-variant": layoutVariant, "data-agent-composer-slot": "root", className: cn("agent-composer-root flex flex-col rounded-lg border border-input bg-muted/45 transition-colors focus-within:border-ring", layoutVariant !== "default" &&
12
12
  `agent-composer-root--${layoutVariant}`, rootClassName), style: rootStyle, children: children }) }));
13
13
  }
14
14
  //# sourceMappingURL=AgentComposerFrame.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentComposerFrame.js","sourceRoot":"","sources":["../../../src/client/composer/AgentComposerFrame.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAajC;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,QAAQ,EACR,SAAS,EACT,aAAa,EACb,KAAK,EACL,SAAS,EACT,aAAa,GAAG,SAAS,EACzB,OAAO,GACiB;IACxB,OAAO,CACL,6CAC+B,aAAa,8BACjB,MAAM,EAC/B,SAAS,EAAE,EAAE,CACX,wCAAwC,EACxC,aAAa,KAAK,SAAS,IAAI,wBAAwB,aAAa,EAAE,EACtE,SAAS,CACV,EACD,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,YAEhB,KAAC,iBAAiB,CAAC,IAAI,mCACQ,aAAa,8BACjB,MAAM,EAC/B,SAAS,EAAE,EAAE,CACX,2HAA2H,EAC3H,aAAa,KAAK,SAAS;gBACzB,wBAAwB,aAAa,EAAE,EACzC,aAAa,CACd,EACD,KAAK,EAAE,SAAS,YAEf,QAAQ,GACc,GACrB,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { ComposerPrimitive } from \"@assistant-ui/react\";\nimport type React from \"react\";\nimport { cn } from \"../utils.js\";\nimport type { AgentComposerLayoutVariant } from \"./types.js\";\n\nexport interface AgentComposerFrameProps {\n children: React.ReactNode;\n className?: string;\n rootClassName?: string;\n style?: React.CSSProperties;\n rootStyle?: React.CSSProperties;\n layoutVariant?: AgentComposerLayoutVariant;\n onClick?: React.MouseEventHandler<HTMLDivElement>;\n}\n\n/**\n * The single visual shell for agent chat composition.\n *\n * AssistantChat, PromptComposer, and host surfaces such as Agent-Native Code\n * all render this same frame so the composer does not drift across products.\n */\nexport function AgentComposerFrame({\n children,\n className,\n rootClassName,\n style,\n rootStyle,\n layoutVariant = \"default\",\n onClick,\n}: AgentComposerFrameProps) {\n return (\n <div\n data-agent-composer-variant={layoutVariant}\n data-agent-composer-slot=\"area\"\n className={cn(\n \"agent-composer-area shrink-0 px-3 py-2\",\n layoutVariant !== \"default\" && `agent-composer-area--${layoutVariant}`,\n className,\n )}\n style={style}\n onClick={onClick}\n >\n <ComposerPrimitive.Root\n data-agent-composer-variant={layoutVariant}\n data-agent-composer-slot=\"root\"\n className={cn(\n \"agent-composer-root flex flex-col rounded-lg border border-input bg-background focus-within:ring-1 focus-within:ring-ring\",\n layoutVariant !== \"default\" &&\n `agent-composer-root--${layoutVariant}`,\n rootClassName,\n )}\n style={rootStyle}\n >\n {children}\n </ComposerPrimitive.Root>\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"AgentComposerFrame.js","sourceRoot":"","sources":["../../../src/client/composer/AgentComposerFrame.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAajC;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,QAAQ,EACR,SAAS,EACT,aAAa,EACb,KAAK,EACL,SAAS,EACT,aAAa,GAAG,SAAS,EACzB,OAAO,GACiB;IACxB,OAAO,CACL,6CAC+B,aAAa,8BACjB,MAAM,EAC/B,SAAS,EAAE,EAAE,CACX,wCAAwC,EACxC,aAAa,KAAK,SAAS,IAAI,wBAAwB,aAAa,EAAE,EACtE,SAAS,CACV,EACD,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,YAEhB,KAAC,iBAAiB,CAAC,IAAI,mCACQ,aAAa,8BACjB,MAAM,EAC/B,SAAS,EAAE,EAAE,CACX,yHAAyH,EACzH,aAAa,KAAK,SAAS;gBACzB,wBAAwB,aAAa,EAAE,EACzC,aAAa,CACd,EACD,KAAK,EAAE,SAAS,YAEf,QAAQ,GACc,GACrB,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { ComposerPrimitive } from \"@assistant-ui/react\";\nimport type React from \"react\";\nimport { cn } from \"../utils.js\";\nimport type { AgentComposerLayoutVariant } from \"./types.js\";\n\nexport interface AgentComposerFrameProps {\n children: React.ReactNode;\n className?: string;\n rootClassName?: string;\n style?: React.CSSProperties;\n rootStyle?: React.CSSProperties;\n layoutVariant?: AgentComposerLayoutVariant;\n onClick?: React.MouseEventHandler<HTMLDivElement>;\n}\n\n/**\n * The single visual shell for agent chat composition.\n *\n * AssistantChat, PromptComposer, and host surfaces such as Agent-Native Code\n * all render this same frame so the composer does not drift across products.\n */\nexport function AgentComposerFrame({\n children,\n className,\n rootClassName,\n style,\n rootStyle,\n layoutVariant = \"default\",\n onClick,\n}: AgentComposerFrameProps) {\n return (\n <div\n data-agent-composer-variant={layoutVariant}\n data-agent-composer-slot=\"area\"\n className={cn(\n \"agent-composer-area shrink-0 px-3 py-2\",\n layoutVariant !== \"default\" && `agent-composer-area--${layoutVariant}`,\n className,\n )}\n style={style}\n onClick={onClick}\n >\n <ComposerPrimitive.Root\n data-agent-composer-variant={layoutVariant}\n data-agent-composer-slot=\"root\"\n className={cn(\n \"agent-composer-root flex flex-col rounded-lg border border-input bg-muted/45 transition-colors focus-within:border-ring\",\n layoutVariant !== \"default\" &&\n `agent-composer-root--${layoutVariant}`,\n rootClassName,\n )}\n style={rootStyle}\n >\n {children}\n </ComposerPrimitive.Root>\n </div>\n );\n}\n"]}
@@ -153,6 +153,23 @@ export interface AgentChatPluginOptions {
153
153
  * leave this off.
154
154
  */
155
155
  leanPrompt?: boolean;
156
+ /**
157
+ * Skip auto-injecting the workspace files/skills/agents inventory on the
158
+ * first message of a conversation while keeping the normal prompt, resources,
159
+ * and tool surface. Use this for domain-focused apps where broad workspace
160
+ * inventory is mostly latency/noise unless the user explicitly references it.
161
+ *
162
+ * `leanPrompt: true` implies this.
163
+ */
164
+ skipFilesContext?: boolean;
165
+ /**
166
+ * Initial native tool schemas to send to the LLM provider. When set, the
167
+ * agent starts with only these tools plus `tool-search`; the live registry
168
+ * remains searchable, and matching schemas from `tool-search` results are
169
+ * loaded into the next model request. Use this for domain-focused apps that
170
+ * have a few common actions and many rare framework utilities.
171
+ */
172
+ initialToolNames?: string[];
156
173
  /**
157
174
  * Use a compact system prompt with on-demand context loading. The system
158
175
  * prompt includes essential behavioral rules and action signatures, but
@@ -1 +1 @@
1
- {"version":3,"file":"agent-chat-plugin.d.ts","sourceRoot":"","sources":["../../src/server/agent-chat-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-chat-plugin.d.ts","sourceRoot":"","sources":["../../src/server/agent-chat-plugin.ts"],"names":[],"mappings":"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"}
@@ -2530,6 +2530,7 @@ export function createAgentChatPlugin(options) {
2530
2530
  const refreshScreenTool = createRefreshScreenEntry();
2531
2531
  const frameworkContextTool = createFrameworkContextEntry();
2532
2532
  const leanPrompt = options?.leanPrompt === true;
2533
+ const skipFilesContext = leanPrompt || options?.skipFilesContext === true;
2533
2534
  const lazyContext = options?.lazyContext !== false && !leanPrompt;
2534
2535
  const urlTools = createUrlTools();
2535
2536
  const engineScripts = await createAgentEngineScriptEntries(options?.appId);
@@ -4067,7 +4068,8 @@ Non-code requests are still fine on this surface: read data, navigate the UI, su
4067
4068
  message,
4068
4069
  };
4069
4070
  },
4070
- skipFilesContext: leanPrompt,
4071
+ skipFilesContext,
4072
+ initialToolNames: options?.initialToolNames,
4071
4073
  ...(options?.toolLimits ? { toolLimits: options.toolLimits } : {}),
4072
4074
  onEngineResolved: (engine, model) => {
4073
4075
  const runCtx = ensureRequestRunContext();
@@ -4108,6 +4110,7 @@ Non-code requests are still fine on this surface: read data, navigate the UI, su
4108
4110
  finalResponseGuard: options?.finalResponseGuard,
4109
4111
  prepareRequest: options?.prepareRequest,
4110
4112
  skipFilesContext: true,
4113
+ initialToolNames: options?.initialToolNames,
4111
4114
  onEngineResolved: (engine, model) => {
4112
4115
  const runCtx = ensureRequestRunContext();
4113
4116
  if (runCtx) {
@@ -4219,7 +4222,8 @@ Non-code requests are still fine on this surface: read data, navigate the UI, su
4219
4222
  runSoftTimeoutMs: options?.runSoftTimeoutMs,
4220
4223
  finalResponseGuard: options?.finalResponseGuard,
4221
4224
  prepareRequest: options?.prepareRequest,
4222
- skipFilesContext: leanPrompt,
4225
+ skipFilesContext,
4226
+ initialToolNames: options?.initialToolNames,
4223
4227
  ...(options?.toolLimits ? { toolLimits: options.toolLimits } : {}),
4224
4228
  onEngineResolved: (engine, model) => {
4225
4229
  const runCtx = ensureRequestRunContext();