@agent-native/core 0.55.0 → 0.56.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/dist/action-ui.d.ts +17 -0
- package/dist/action-ui.d.ts.map +1 -0
- package/dist/action-ui.js +23 -0
- package/dist/action-ui.js.map +1 -0
- package/dist/action.d.ts +8 -1
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js +3 -0
- package/dist/action.js.map +1 -1
- package/dist/agent/production-agent.d.ts +2 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +7 -1
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/thread-data-builder.d.ts +4 -0
- package/dist/agent/thread-data-builder.d.ts.map +1 -1
- package/dist/agent/thread-data-builder.js +4 -0
- package/dist/agent/thread-data-builder.js.map +1 -1
- package/dist/agent/types.d.ts +2 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +6 -4
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/chat/index.d.ts +5 -3
- package/dist/client/chat/index.d.ts.map +1 -1
- package/dist/client/chat/index.js +4 -3
- package/dist/client/chat/index.js.map +1 -1
- package/dist/client/chat/run-recovery.d.ts.map +1 -1
- package/dist/client/chat/run-recovery.js +9 -5
- package/dist/client/chat/run-recovery.js.map +1 -1
- package/dist/client/chat/runtime.d.ts +354 -0
- package/dist/client/chat/runtime.d.ts.map +1 -0
- package/dist/client/chat/runtime.js +2 -0
- package/dist/client/chat/runtime.js.map +1 -0
- package/dist/client/chat/tool-call-display.d.ts +4 -1
- package/dist/client/chat/tool-call-display.d.ts.map +1 -1
- package/dist/client/chat/tool-call-display.js +6 -5
- package/dist/client/chat/tool-call-display.js.map +1 -1
- package/dist/client/chat/tool-render-registry.d.ts +11 -0
- package/dist/client/chat/tool-render-registry.d.ts.map +1 -1
- package/dist/client/chat/tool-render-registry.js +47 -1
- package/dist/client/chat/tool-render-registry.js.map +1 -1
- package/dist/client/chat/widgets/builtin-tool-renderers.js +73 -18
- package/dist/client/chat/widgets/builtin-tool-renderers.js.map +1 -1
- package/dist/client/chat/widgets/data-widget-types.d.ts +1 -51
- package/dist/client/chat/widgets/data-widget-types.d.ts.map +1 -1
- package/dist/client/chat/widgets/data-widget-types.js +1 -92
- package/dist/client/chat/widgets/data-widget-types.js.map +1 -1
- package/dist/client/chat-view-transition.d.ts +12 -0
- package/dist/client/chat-view-transition.d.ts.map +1 -1
- package/dist/client/chat-view-transition.js +16 -0
- package/dist/client/chat-view-transition.js.map +1 -1
- package/dist/client/index.d.ts +5 -3
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +4 -3
- package/dist/client/index.js.map +1 -1
- package/dist/client/route-state.d.ts.map +1 -1
- package/dist/client/route-state.js +2 -15
- package/dist/client/route-state.js.map +1 -1
- package/dist/client/sse-event-processor.d.ts +3 -0
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +2 -0
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/data-widgets/index.d.ts +326 -0
- package/dist/data-widgets/index.d.ts.map +1 -0
- package/dist/data-widgets/index.js +232 -0
- package/dist/data-widgets/index.js.map +1 -0
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +14 -0
- package/dist/deploy/build.js.map +1 -1
- package/dist/index.browser.d.ts +2 -0
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +2 -0
- package/dist/index.browser.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/provider-api/corpus-jobs.d.ts +160 -0
- package/dist/provider-api/corpus-jobs.d.ts.map +1 -1
- package/dist/provider-api/corpus-jobs.js +44 -0
- package/dist/provider-api/corpus-jobs.js.map +1 -1
- package/dist/provider-api/index.d.ts +39 -0
- package/dist/provider-api/index.d.ts.map +1 -1
- package/dist/provider-api/index.js +53 -0
- package/dist/provider-api/index.js.map +1 -1
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +5 -0
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +5 -0
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/styles/agent-native.css +9 -2
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +1 -0
- package/dist/vite/client.js.map +1 -1
- package/docs/content/actions.md +52 -0
- package/docs/content/components.md +24 -1
- package/docs/content/drop-in-agent.md +9 -2
- package/docs/content/faq.md +5 -4
- package/docs/content/getting-started.md +39 -88
- package/docs/content/key-concepts.md +22 -22
- package/docs/content/mcp-apps.md +1 -1
- package/docs/content/native-chat-ui.md +210 -0
- package/docs/content/what-is-agent-native.md +2 -2
- package/package.json +5 -2
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const DATA_TABLE_WIDGET = "data-table";
|
|
3
|
+
export declare const DATA_CHART_WIDGET = "data-chart";
|
|
4
|
+
export declare const DATA_INSIGHTS_WIDGET = "data-insights";
|
|
5
|
+
export type DataWidgetKind = typeof DATA_TABLE_WIDGET | typeof DATA_CHART_WIDGET | typeof DATA_INSIGHTS_WIDGET;
|
|
6
|
+
export interface DataTableColumn {
|
|
7
|
+
key: string;
|
|
8
|
+
label: string;
|
|
9
|
+
align?: "left" | "right";
|
|
10
|
+
}
|
|
11
|
+
export interface DataTableWidget {
|
|
12
|
+
title?: string;
|
|
13
|
+
columns: DataTableColumn[];
|
|
14
|
+
rows: Array<Record<string, unknown>>;
|
|
15
|
+
totalRows?: number;
|
|
16
|
+
sampledRows?: number;
|
|
17
|
+
truncated?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface DataChartSeriesDefinition {
|
|
20
|
+
key: string;
|
|
21
|
+
label: string;
|
|
22
|
+
color?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface DataChartWidget {
|
|
25
|
+
type: "bar" | "line" | "area";
|
|
26
|
+
title?: string;
|
|
27
|
+
xKey: string;
|
|
28
|
+
series: DataChartSeriesDefinition[];
|
|
29
|
+
data: Array<Record<string, unknown>>;
|
|
30
|
+
sampled?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface DataWidgetDisplay {
|
|
33
|
+
title?: string;
|
|
34
|
+
description?: string;
|
|
35
|
+
primaryAction?: {
|
|
36
|
+
label: string;
|
|
37
|
+
href: string;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export interface DataWidgetResultMetadata {
|
|
41
|
+
widgetId?: string;
|
|
42
|
+
title?: string;
|
|
43
|
+
summary?: Record<string, unknown>;
|
|
44
|
+
display?: DataWidgetDisplay;
|
|
45
|
+
}
|
|
46
|
+
export interface DataTableWidgetResultInput extends DataWidgetResultMetadata {
|
|
47
|
+
table: DataTableWidget;
|
|
48
|
+
}
|
|
49
|
+
export interface DataChartWidgetResultInput extends DataWidgetResultMetadata {
|
|
50
|
+
chartSeries: DataChartWidget;
|
|
51
|
+
}
|
|
52
|
+
export type DataInsightsWidgetResultInput = DataWidgetResultMetadata & ({
|
|
53
|
+
table: DataTableWidget;
|
|
54
|
+
chartSeries?: DataChartWidget;
|
|
55
|
+
} | {
|
|
56
|
+
table?: DataTableWidget;
|
|
57
|
+
chartSeries: DataChartWidget;
|
|
58
|
+
});
|
|
59
|
+
export type DataTableWidgetResult<Input extends DataTableWidgetResultInput = DataTableWidgetResultInput> = Omit<Input, "widget" | "chartSeries"> & {
|
|
60
|
+
widget: typeof DATA_TABLE_WIDGET;
|
|
61
|
+
table: Input["table"];
|
|
62
|
+
chartSeries?: never;
|
|
63
|
+
};
|
|
64
|
+
export type DataChartWidgetResult<Input extends DataChartWidgetResultInput = DataChartWidgetResultInput> = Omit<Input, "widget" | "table"> & {
|
|
65
|
+
widget: typeof DATA_CHART_WIDGET;
|
|
66
|
+
table?: never;
|
|
67
|
+
chartSeries: Input["chartSeries"];
|
|
68
|
+
};
|
|
69
|
+
export type DataInsightsWidgetResult<Input extends DataInsightsWidgetResultInput = DataInsightsWidgetResultInput> = Omit<Input, "widget"> & {
|
|
70
|
+
widget: typeof DATA_INSIGHTS_WIDGET;
|
|
71
|
+
};
|
|
72
|
+
export type DataWidgetResult = DataTableWidgetResult | DataChartWidgetResult | DataInsightsWidgetResult;
|
|
73
|
+
export declare function normalizeDataWidgetKind(value: unknown): DataWidgetKind | null;
|
|
74
|
+
export declare function isDataTableWidget(value: unknown): value is DataTableWidget;
|
|
75
|
+
export declare function isDataChartWidget(value: unknown): value is DataChartWidget;
|
|
76
|
+
export declare function createDataTableWidgetResult<const Input extends DataTableWidgetResultInput>(input: Input & {
|
|
77
|
+
widget?: never;
|
|
78
|
+
chartSeries?: never;
|
|
79
|
+
}): DataTableWidgetResult<Input>;
|
|
80
|
+
export declare function createDataChartWidgetResult<const Input extends DataChartWidgetResultInput>(input: Input & {
|
|
81
|
+
widget?: never;
|
|
82
|
+
table?: never;
|
|
83
|
+
}): DataChartWidgetResult<Input>;
|
|
84
|
+
export declare function createDataInsightsWidgetResult<const Input extends DataInsightsWidgetResultInput>(input: Input & {
|
|
85
|
+
widget?: never;
|
|
86
|
+
}): DataInsightsWidgetResult<Input>;
|
|
87
|
+
export declare function normalizeDataWidgetResult(value: unknown): DataWidgetResult | null;
|
|
88
|
+
export declare function isDataWidgetResult(value: unknown): value is DataWidgetResult;
|
|
89
|
+
export declare const dataTableWidgetSchema: z.ZodObject<{
|
|
90
|
+
title: z.ZodOptional<z.ZodString>;
|
|
91
|
+
columns: z.ZodArray<z.ZodObject<{
|
|
92
|
+
key: z.ZodString;
|
|
93
|
+
label: z.ZodString;
|
|
94
|
+
align: z.ZodOptional<z.ZodEnum<{
|
|
95
|
+
left: "left";
|
|
96
|
+
right: "right";
|
|
97
|
+
}>>;
|
|
98
|
+
}, z.core.$loose>>;
|
|
99
|
+
rows: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
100
|
+
totalRows: z.ZodOptional<z.ZodNumber>;
|
|
101
|
+
sampledRows: z.ZodOptional<z.ZodNumber>;
|
|
102
|
+
truncated: z.ZodOptional<z.ZodBoolean>;
|
|
103
|
+
}, z.core.$loose>;
|
|
104
|
+
export declare const dataChartWidgetSchema: z.ZodObject<{
|
|
105
|
+
type: z.ZodEnum<{
|
|
106
|
+
area: "area";
|
|
107
|
+
bar: "bar";
|
|
108
|
+
line: "line";
|
|
109
|
+
}>;
|
|
110
|
+
title: z.ZodOptional<z.ZodString>;
|
|
111
|
+
xKey: z.ZodString;
|
|
112
|
+
series: z.ZodArray<z.ZodObject<{
|
|
113
|
+
key: z.ZodString;
|
|
114
|
+
label: z.ZodString;
|
|
115
|
+
color: z.ZodOptional<z.ZodString>;
|
|
116
|
+
}, z.core.$loose>>;
|
|
117
|
+
data: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
118
|
+
sampled: z.ZodOptional<z.ZodBoolean>;
|
|
119
|
+
}, z.core.$loose>;
|
|
120
|
+
export declare const dataTableWidgetResultSchema: z.ZodObject<{
|
|
121
|
+
widgetId: z.ZodOptional<z.ZodString>;
|
|
122
|
+
title: z.ZodOptional<z.ZodString>;
|
|
123
|
+
summary: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
124
|
+
display: z.ZodOptional<z.ZodObject<{
|
|
125
|
+
title: z.ZodOptional<z.ZodString>;
|
|
126
|
+
description: z.ZodOptional<z.ZodString>;
|
|
127
|
+
primaryAction: z.ZodOptional<z.ZodObject<{
|
|
128
|
+
label: z.ZodString;
|
|
129
|
+
href: z.ZodString;
|
|
130
|
+
}, z.core.$loose>>;
|
|
131
|
+
}, z.core.$loose>>;
|
|
132
|
+
widget: z.ZodLiteral<"data-table">;
|
|
133
|
+
table: z.ZodObject<{
|
|
134
|
+
title: z.ZodOptional<z.ZodString>;
|
|
135
|
+
columns: z.ZodArray<z.ZodObject<{
|
|
136
|
+
key: z.ZodString;
|
|
137
|
+
label: z.ZodString;
|
|
138
|
+
align: z.ZodOptional<z.ZodEnum<{
|
|
139
|
+
left: "left";
|
|
140
|
+
right: "right";
|
|
141
|
+
}>>;
|
|
142
|
+
}, z.core.$loose>>;
|
|
143
|
+
rows: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
144
|
+
totalRows: z.ZodOptional<z.ZodNumber>;
|
|
145
|
+
sampledRows: z.ZodOptional<z.ZodNumber>;
|
|
146
|
+
truncated: z.ZodOptional<z.ZodBoolean>;
|
|
147
|
+
}, z.core.$loose>;
|
|
148
|
+
}, z.core.$loose>;
|
|
149
|
+
export declare const dataChartWidgetResultSchema: z.ZodObject<{
|
|
150
|
+
widgetId: z.ZodOptional<z.ZodString>;
|
|
151
|
+
title: z.ZodOptional<z.ZodString>;
|
|
152
|
+
summary: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
153
|
+
display: z.ZodOptional<z.ZodObject<{
|
|
154
|
+
title: z.ZodOptional<z.ZodString>;
|
|
155
|
+
description: z.ZodOptional<z.ZodString>;
|
|
156
|
+
primaryAction: z.ZodOptional<z.ZodObject<{
|
|
157
|
+
label: z.ZodString;
|
|
158
|
+
href: z.ZodString;
|
|
159
|
+
}, z.core.$loose>>;
|
|
160
|
+
}, z.core.$loose>>;
|
|
161
|
+
widget: z.ZodLiteral<"data-chart">;
|
|
162
|
+
chartSeries: z.ZodObject<{
|
|
163
|
+
type: z.ZodEnum<{
|
|
164
|
+
area: "area";
|
|
165
|
+
bar: "bar";
|
|
166
|
+
line: "line";
|
|
167
|
+
}>;
|
|
168
|
+
title: z.ZodOptional<z.ZodString>;
|
|
169
|
+
xKey: z.ZodString;
|
|
170
|
+
series: z.ZodArray<z.ZodObject<{
|
|
171
|
+
key: z.ZodString;
|
|
172
|
+
label: z.ZodString;
|
|
173
|
+
color: z.ZodOptional<z.ZodString>;
|
|
174
|
+
}, z.core.$loose>>;
|
|
175
|
+
data: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
176
|
+
sampled: z.ZodOptional<z.ZodBoolean>;
|
|
177
|
+
}, z.core.$loose>;
|
|
178
|
+
}, z.core.$loose>;
|
|
179
|
+
export declare const dataInsightsWidgetResultSchema: z.ZodObject<{
|
|
180
|
+
widgetId: z.ZodOptional<z.ZodString>;
|
|
181
|
+
title: z.ZodOptional<z.ZodString>;
|
|
182
|
+
summary: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
183
|
+
display: z.ZodOptional<z.ZodObject<{
|
|
184
|
+
title: z.ZodOptional<z.ZodString>;
|
|
185
|
+
description: z.ZodOptional<z.ZodString>;
|
|
186
|
+
primaryAction: z.ZodOptional<z.ZodObject<{
|
|
187
|
+
label: z.ZodString;
|
|
188
|
+
href: z.ZodString;
|
|
189
|
+
}, z.core.$loose>>;
|
|
190
|
+
}, z.core.$loose>>;
|
|
191
|
+
widget: z.ZodLiteral<"data-insights">;
|
|
192
|
+
table: z.ZodOptional<z.ZodObject<{
|
|
193
|
+
title: z.ZodOptional<z.ZodString>;
|
|
194
|
+
columns: z.ZodArray<z.ZodObject<{
|
|
195
|
+
key: z.ZodString;
|
|
196
|
+
label: z.ZodString;
|
|
197
|
+
align: z.ZodOptional<z.ZodEnum<{
|
|
198
|
+
left: "left";
|
|
199
|
+
right: "right";
|
|
200
|
+
}>>;
|
|
201
|
+
}, z.core.$loose>>;
|
|
202
|
+
rows: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
203
|
+
totalRows: z.ZodOptional<z.ZodNumber>;
|
|
204
|
+
sampledRows: z.ZodOptional<z.ZodNumber>;
|
|
205
|
+
truncated: z.ZodOptional<z.ZodBoolean>;
|
|
206
|
+
}, z.core.$loose>>;
|
|
207
|
+
chartSeries: z.ZodOptional<z.ZodObject<{
|
|
208
|
+
type: z.ZodEnum<{
|
|
209
|
+
area: "area";
|
|
210
|
+
bar: "bar";
|
|
211
|
+
line: "line";
|
|
212
|
+
}>;
|
|
213
|
+
title: z.ZodOptional<z.ZodString>;
|
|
214
|
+
xKey: z.ZodString;
|
|
215
|
+
series: z.ZodArray<z.ZodObject<{
|
|
216
|
+
key: z.ZodString;
|
|
217
|
+
label: z.ZodString;
|
|
218
|
+
color: z.ZodOptional<z.ZodString>;
|
|
219
|
+
}, z.core.$loose>>;
|
|
220
|
+
data: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
221
|
+
sampled: z.ZodOptional<z.ZodBoolean>;
|
|
222
|
+
}, z.core.$loose>>;
|
|
223
|
+
}, z.core.$loose>;
|
|
224
|
+
export declare const dataWidgetResultSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
225
|
+
widgetId: z.ZodOptional<z.ZodString>;
|
|
226
|
+
title: z.ZodOptional<z.ZodString>;
|
|
227
|
+
summary: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
228
|
+
display: z.ZodOptional<z.ZodObject<{
|
|
229
|
+
title: z.ZodOptional<z.ZodString>;
|
|
230
|
+
description: z.ZodOptional<z.ZodString>;
|
|
231
|
+
primaryAction: z.ZodOptional<z.ZodObject<{
|
|
232
|
+
label: z.ZodString;
|
|
233
|
+
href: z.ZodString;
|
|
234
|
+
}, z.core.$loose>>;
|
|
235
|
+
}, z.core.$loose>>;
|
|
236
|
+
widget: z.ZodLiteral<"data-table">;
|
|
237
|
+
table: z.ZodObject<{
|
|
238
|
+
title: z.ZodOptional<z.ZodString>;
|
|
239
|
+
columns: z.ZodArray<z.ZodObject<{
|
|
240
|
+
key: z.ZodString;
|
|
241
|
+
label: z.ZodString;
|
|
242
|
+
align: z.ZodOptional<z.ZodEnum<{
|
|
243
|
+
left: "left";
|
|
244
|
+
right: "right";
|
|
245
|
+
}>>;
|
|
246
|
+
}, z.core.$loose>>;
|
|
247
|
+
rows: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
248
|
+
totalRows: z.ZodOptional<z.ZodNumber>;
|
|
249
|
+
sampledRows: z.ZodOptional<z.ZodNumber>;
|
|
250
|
+
truncated: z.ZodOptional<z.ZodBoolean>;
|
|
251
|
+
}, z.core.$loose>;
|
|
252
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
253
|
+
widgetId: z.ZodOptional<z.ZodString>;
|
|
254
|
+
title: z.ZodOptional<z.ZodString>;
|
|
255
|
+
summary: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
256
|
+
display: z.ZodOptional<z.ZodObject<{
|
|
257
|
+
title: z.ZodOptional<z.ZodString>;
|
|
258
|
+
description: z.ZodOptional<z.ZodString>;
|
|
259
|
+
primaryAction: z.ZodOptional<z.ZodObject<{
|
|
260
|
+
label: z.ZodString;
|
|
261
|
+
href: z.ZodString;
|
|
262
|
+
}, z.core.$loose>>;
|
|
263
|
+
}, z.core.$loose>>;
|
|
264
|
+
widget: z.ZodLiteral<"data-chart">;
|
|
265
|
+
chartSeries: z.ZodObject<{
|
|
266
|
+
type: z.ZodEnum<{
|
|
267
|
+
area: "area";
|
|
268
|
+
bar: "bar";
|
|
269
|
+
line: "line";
|
|
270
|
+
}>;
|
|
271
|
+
title: z.ZodOptional<z.ZodString>;
|
|
272
|
+
xKey: z.ZodString;
|
|
273
|
+
series: z.ZodArray<z.ZodObject<{
|
|
274
|
+
key: z.ZodString;
|
|
275
|
+
label: z.ZodString;
|
|
276
|
+
color: z.ZodOptional<z.ZodString>;
|
|
277
|
+
}, z.core.$loose>>;
|
|
278
|
+
data: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
279
|
+
sampled: z.ZodOptional<z.ZodBoolean>;
|
|
280
|
+
}, z.core.$loose>;
|
|
281
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
282
|
+
widgetId: z.ZodOptional<z.ZodString>;
|
|
283
|
+
title: z.ZodOptional<z.ZodString>;
|
|
284
|
+
summary: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
285
|
+
display: z.ZodOptional<z.ZodObject<{
|
|
286
|
+
title: z.ZodOptional<z.ZodString>;
|
|
287
|
+
description: z.ZodOptional<z.ZodString>;
|
|
288
|
+
primaryAction: z.ZodOptional<z.ZodObject<{
|
|
289
|
+
label: z.ZodString;
|
|
290
|
+
href: z.ZodString;
|
|
291
|
+
}, z.core.$loose>>;
|
|
292
|
+
}, z.core.$loose>>;
|
|
293
|
+
widget: z.ZodLiteral<"data-insights">;
|
|
294
|
+
table: z.ZodOptional<z.ZodObject<{
|
|
295
|
+
title: z.ZodOptional<z.ZodString>;
|
|
296
|
+
columns: z.ZodArray<z.ZodObject<{
|
|
297
|
+
key: z.ZodString;
|
|
298
|
+
label: z.ZodString;
|
|
299
|
+
align: z.ZodOptional<z.ZodEnum<{
|
|
300
|
+
left: "left";
|
|
301
|
+
right: "right";
|
|
302
|
+
}>>;
|
|
303
|
+
}, z.core.$loose>>;
|
|
304
|
+
rows: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
305
|
+
totalRows: z.ZodOptional<z.ZodNumber>;
|
|
306
|
+
sampledRows: z.ZodOptional<z.ZodNumber>;
|
|
307
|
+
truncated: z.ZodOptional<z.ZodBoolean>;
|
|
308
|
+
}, z.core.$loose>>;
|
|
309
|
+
chartSeries: z.ZodOptional<z.ZodObject<{
|
|
310
|
+
type: z.ZodEnum<{
|
|
311
|
+
area: "area";
|
|
312
|
+
bar: "bar";
|
|
313
|
+
line: "line";
|
|
314
|
+
}>;
|
|
315
|
+
title: z.ZodOptional<z.ZodString>;
|
|
316
|
+
xKey: z.ZodString;
|
|
317
|
+
series: z.ZodArray<z.ZodObject<{
|
|
318
|
+
key: z.ZodString;
|
|
319
|
+
label: z.ZodString;
|
|
320
|
+
color: z.ZodOptional<z.ZodString>;
|
|
321
|
+
}, z.core.$loose>>;
|
|
322
|
+
data: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
323
|
+
sampled: z.ZodOptional<z.ZodBoolean>;
|
|
324
|
+
}, z.core.$loose>>;
|
|
325
|
+
}, z.core.$loose>]>;
|
|
326
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data-widgets/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const DATA_TABLE_WIDGET = "data-table";
|
|
3
|
+
export const DATA_CHART_WIDGET = "data-chart";
|
|
4
|
+
export const DATA_INSIGHTS_WIDGET = "data-insights";
|
|
5
|
+
const LEGACY_DATA_WIDGET_KINDS = {
|
|
6
|
+
"data-table.v1": DATA_TABLE_WIDGET,
|
|
7
|
+
"data-chart.v1": DATA_CHART_WIDGET,
|
|
8
|
+
"data-insights.v1": DATA_INSIGHTS_WIDGET,
|
|
9
|
+
};
|
|
10
|
+
function isRecord(value) {
|
|
11
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
12
|
+
}
|
|
13
|
+
function isString(value) {
|
|
14
|
+
return typeof value === "string" && value.length > 0;
|
|
15
|
+
}
|
|
16
|
+
export function normalizeDataWidgetKind(value) {
|
|
17
|
+
if (value === DATA_TABLE_WIDGET)
|
|
18
|
+
return DATA_TABLE_WIDGET;
|
|
19
|
+
if (value === DATA_CHART_WIDGET)
|
|
20
|
+
return DATA_CHART_WIDGET;
|
|
21
|
+
if (value === DATA_INSIGHTS_WIDGET)
|
|
22
|
+
return DATA_INSIGHTS_WIDGET;
|
|
23
|
+
return isString(value) ? (LEGACY_DATA_WIDGET_KINDS[value] ?? null) : null;
|
|
24
|
+
}
|
|
25
|
+
export function isDataTableWidget(value) {
|
|
26
|
+
if (!isRecord(value))
|
|
27
|
+
return false;
|
|
28
|
+
return (Array.isArray(value.columns) &&
|
|
29
|
+
value.columns.every((column) => isRecord(column) &&
|
|
30
|
+
isString(column.key) &&
|
|
31
|
+
isString(column.label) &&
|
|
32
|
+
(column.align === undefined ||
|
|
33
|
+
column.align === "left" ||
|
|
34
|
+
column.align === "right")) &&
|
|
35
|
+
Array.isArray(value.rows) &&
|
|
36
|
+
value.rows.every(isRecord));
|
|
37
|
+
}
|
|
38
|
+
export function isDataChartWidget(value) {
|
|
39
|
+
if (!isRecord(value))
|
|
40
|
+
return false;
|
|
41
|
+
return ((value.type === "bar" || value.type === "line" || value.type === "area") &&
|
|
42
|
+
isString(value.xKey) &&
|
|
43
|
+
Array.isArray(value.series) &&
|
|
44
|
+
value.series.every((series) => isRecord(series) &&
|
|
45
|
+
isString(series.key) &&
|
|
46
|
+
isString(series.label) &&
|
|
47
|
+
(series.color === undefined || typeof series.color === "string")) &&
|
|
48
|
+
Array.isArray(value.data) &&
|
|
49
|
+
value.data.every(isRecord));
|
|
50
|
+
}
|
|
51
|
+
function isPrimaryAction(value) {
|
|
52
|
+
return isRecord(value) && isString(value.label) && isString(value.href);
|
|
53
|
+
}
|
|
54
|
+
function normalizeDisplay(value) {
|
|
55
|
+
if (!isRecord(value))
|
|
56
|
+
return undefined;
|
|
57
|
+
return {
|
|
58
|
+
title: typeof value.title === "string" ? value.title : undefined,
|
|
59
|
+
description: typeof value.description === "string" ? value.description : undefined,
|
|
60
|
+
primaryAction: isPrimaryAction(value.primaryAction)
|
|
61
|
+
? value.primaryAction
|
|
62
|
+
: undefined,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function assertDataTableWidget(table) {
|
|
66
|
+
if (!isDataTableWidget(table)) {
|
|
67
|
+
throw new Error("Invalid data-table widget payload");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function assertDataChartWidget(chart) {
|
|
71
|
+
if (!isDataChartWidget(chart)) {
|
|
72
|
+
throw new Error("Invalid data-chart widget payload");
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export function createDataTableWidgetResult(input) {
|
|
76
|
+
assertDataTableWidget(input.table);
|
|
77
|
+
return {
|
|
78
|
+
...input,
|
|
79
|
+
widget: DATA_TABLE_WIDGET,
|
|
80
|
+
table: input.table,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export function createDataChartWidgetResult(input) {
|
|
84
|
+
assertDataChartWidget(input.chartSeries);
|
|
85
|
+
return {
|
|
86
|
+
...input,
|
|
87
|
+
widget: DATA_CHART_WIDGET,
|
|
88
|
+
chartSeries: input.chartSeries,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export function createDataInsightsWidgetResult(input) {
|
|
92
|
+
if (input.table !== undefined)
|
|
93
|
+
assertDataTableWidget(input.table);
|
|
94
|
+
if (input.chartSeries !== undefined)
|
|
95
|
+
assertDataChartWidget(input.chartSeries);
|
|
96
|
+
if (input.table === undefined && input.chartSeries === undefined) {
|
|
97
|
+
throw new Error("data-insights widgets require table or chartSeries");
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
...input,
|
|
101
|
+
widget: DATA_INSIGHTS_WIDGET,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
export function normalizeDataWidgetResult(value) {
|
|
105
|
+
if (!isRecord(value))
|
|
106
|
+
return null;
|
|
107
|
+
const widget = normalizeDataWidgetKind(value.widget);
|
|
108
|
+
if (!widget)
|
|
109
|
+
return null;
|
|
110
|
+
const table = isDataTableWidget(value.table) ? value.table : undefined;
|
|
111
|
+
const chartSeries = isDataChartWidget(value.chartSeries)
|
|
112
|
+
? value.chartSeries
|
|
113
|
+
: undefined;
|
|
114
|
+
const base = {
|
|
115
|
+
widgetId: typeof value.widgetId === "string" ? value.widgetId : undefined,
|
|
116
|
+
title: typeof value.title === "string" ? value.title : undefined,
|
|
117
|
+
summary: isRecord(value.summary) ? value.summary : undefined,
|
|
118
|
+
display: normalizeDisplay(value.display),
|
|
119
|
+
};
|
|
120
|
+
if (widget === DATA_TABLE_WIDGET) {
|
|
121
|
+
if (!table)
|
|
122
|
+
return null;
|
|
123
|
+
return {
|
|
124
|
+
...base,
|
|
125
|
+
widget: DATA_TABLE_WIDGET,
|
|
126
|
+
table,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
if (widget === DATA_CHART_WIDGET) {
|
|
130
|
+
if (!chartSeries)
|
|
131
|
+
return null;
|
|
132
|
+
return {
|
|
133
|
+
...base,
|
|
134
|
+
widget: DATA_CHART_WIDGET,
|
|
135
|
+
chartSeries,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
if (!table && !chartSeries)
|
|
139
|
+
return null;
|
|
140
|
+
return {
|
|
141
|
+
...base,
|
|
142
|
+
widget: DATA_INSIGHTS_WIDGET,
|
|
143
|
+
...(table ? { table } : {}),
|
|
144
|
+
...(chartSeries ? { chartSeries } : {}),
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
export function isDataWidgetResult(value) {
|
|
148
|
+
return normalizeDataWidgetResult(value) !== null;
|
|
149
|
+
}
|
|
150
|
+
const dataTableColumnSchema = z
|
|
151
|
+
.object({
|
|
152
|
+
key: z.string().min(1),
|
|
153
|
+
label: z.string().min(1),
|
|
154
|
+
align: z.enum(["left", "right"]).optional(),
|
|
155
|
+
})
|
|
156
|
+
.passthrough();
|
|
157
|
+
export const dataTableWidgetSchema = z
|
|
158
|
+
.object({
|
|
159
|
+
title: z.string().optional(),
|
|
160
|
+
columns: z.array(dataTableColumnSchema).min(1),
|
|
161
|
+
rows: z.array(z.record(z.string(), z.unknown())),
|
|
162
|
+
totalRows: z.number().optional(),
|
|
163
|
+
sampledRows: z.number().optional(),
|
|
164
|
+
truncated: z.boolean().optional(),
|
|
165
|
+
})
|
|
166
|
+
.passthrough();
|
|
167
|
+
const dataChartSeriesDefinitionSchema = z
|
|
168
|
+
.object({
|
|
169
|
+
key: z.string().min(1),
|
|
170
|
+
label: z.string().min(1),
|
|
171
|
+
color: z.string().optional(),
|
|
172
|
+
})
|
|
173
|
+
.passthrough();
|
|
174
|
+
export const dataChartWidgetSchema = z
|
|
175
|
+
.object({
|
|
176
|
+
type: z.enum(["bar", "line", "area"]),
|
|
177
|
+
title: z.string().optional(),
|
|
178
|
+
xKey: z.string().min(1),
|
|
179
|
+
series: z.array(dataChartSeriesDefinitionSchema).min(1),
|
|
180
|
+
data: z.array(z.record(z.string(), z.unknown())),
|
|
181
|
+
sampled: z.boolean().optional(),
|
|
182
|
+
})
|
|
183
|
+
.passthrough();
|
|
184
|
+
const primaryActionSchema = z
|
|
185
|
+
.object({
|
|
186
|
+
label: z.string().min(1),
|
|
187
|
+
href: z.string().min(1),
|
|
188
|
+
})
|
|
189
|
+
.passthrough();
|
|
190
|
+
const dataWidgetDisplaySchema = z
|
|
191
|
+
.object({
|
|
192
|
+
title: z.string().optional(),
|
|
193
|
+
description: z.string().optional(),
|
|
194
|
+
primaryAction: primaryActionSchema.optional(),
|
|
195
|
+
})
|
|
196
|
+
.passthrough();
|
|
197
|
+
const dataWidgetBaseSchema = z
|
|
198
|
+
.object({
|
|
199
|
+
widgetId: z.string().optional(),
|
|
200
|
+
title: z.string().optional(),
|
|
201
|
+
summary: z.record(z.string(), z.unknown()).optional(),
|
|
202
|
+
display: dataWidgetDisplaySchema.optional(),
|
|
203
|
+
})
|
|
204
|
+
.passthrough();
|
|
205
|
+
export const dataTableWidgetResultSchema = dataWidgetBaseSchema
|
|
206
|
+
.extend({
|
|
207
|
+
widget: z.literal(DATA_TABLE_WIDGET),
|
|
208
|
+
table: dataTableWidgetSchema,
|
|
209
|
+
})
|
|
210
|
+
.passthrough();
|
|
211
|
+
export const dataChartWidgetResultSchema = dataWidgetBaseSchema
|
|
212
|
+
.extend({
|
|
213
|
+
widget: z.literal(DATA_CHART_WIDGET),
|
|
214
|
+
chartSeries: dataChartWidgetSchema,
|
|
215
|
+
})
|
|
216
|
+
.passthrough();
|
|
217
|
+
export const dataInsightsWidgetResultSchema = dataWidgetBaseSchema
|
|
218
|
+
.extend({
|
|
219
|
+
widget: z.literal(DATA_INSIGHTS_WIDGET),
|
|
220
|
+
table: dataTableWidgetSchema.optional(),
|
|
221
|
+
chartSeries: dataChartWidgetSchema.optional(),
|
|
222
|
+
})
|
|
223
|
+
.passthrough()
|
|
224
|
+
.refine((value) => value.table || value.chartSeries, {
|
|
225
|
+
message: "data-insights widgets require table or chartSeries",
|
|
226
|
+
});
|
|
227
|
+
export const dataWidgetResultSchema = z.union([
|
|
228
|
+
dataTableWidgetResultSchema,
|
|
229
|
+
dataChartWidgetResultSchema,
|
|
230
|
+
dataInsightsWidgetResultSchema,
|
|
231
|
+
]);
|
|
232
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data-widgets/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\";\n\nexport const DATA_TABLE_WIDGET = \"data-table\";\nexport const DATA_CHART_WIDGET = \"data-chart\";\nexport const DATA_INSIGHTS_WIDGET = \"data-insights\";\n\nexport type DataWidgetKind =\n | typeof DATA_TABLE_WIDGET\n | typeof DATA_CHART_WIDGET\n | typeof DATA_INSIGHTS_WIDGET;\n\nexport interface DataTableColumn {\n key: string;\n label: string;\n align?: \"left\" | \"right\";\n}\n\nexport interface DataTableWidget {\n title?: string;\n columns: DataTableColumn[];\n rows: Array<Record<string, unknown>>;\n totalRows?: number;\n sampledRows?: number;\n truncated?: boolean;\n}\n\nexport interface DataChartSeriesDefinition {\n key: string;\n label: string;\n color?: string;\n}\n\nexport interface DataChartWidget {\n type: \"bar\" | \"line\" | \"area\";\n title?: string;\n xKey: string;\n series: DataChartSeriesDefinition[];\n data: Array<Record<string, unknown>>;\n sampled?: boolean;\n}\n\nexport interface DataWidgetDisplay {\n title?: string;\n description?: string;\n primaryAction?: {\n label: string;\n href: string;\n };\n}\n\nexport interface DataWidgetResultMetadata {\n widgetId?: string;\n title?: string;\n summary?: Record<string, unknown>;\n display?: DataWidgetDisplay;\n}\n\nexport interface DataTableWidgetResultInput extends DataWidgetResultMetadata {\n table: DataTableWidget;\n}\n\nexport interface DataChartWidgetResultInput extends DataWidgetResultMetadata {\n chartSeries: DataChartWidget;\n}\n\nexport type DataInsightsWidgetResultInput = DataWidgetResultMetadata &\n (\n | {\n table: DataTableWidget;\n chartSeries?: DataChartWidget;\n }\n | {\n table?: DataTableWidget;\n chartSeries: DataChartWidget;\n }\n );\n\nexport type DataTableWidgetResult<\n Input extends DataTableWidgetResultInput = DataTableWidgetResultInput,\n> = Omit<Input, \"widget\" | \"chartSeries\"> & {\n widget: typeof DATA_TABLE_WIDGET;\n table: Input[\"table\"];\n chartSeries?: never;\n};\n\nexport type DataChartWidgetResult<\n Input extends DataChartWidgetResultInput = DataChartWidgetResultInput,\n> = Omit<Input, \"widget\" | \"table\"> & {\n widget: typeof DATA_CHART_WIDGET;\n table?: never;\n chartSeries: Input[\"chartSeries\"];\n};\n\nexport type DataInsightsWidgetResult<\n Input extends DataInsightsWidgetResultInput = DataInsightsWidgetResultInput,\n> = Omit<Input, \"widget\"> & {\n widget: typeof DATA_INSIGHTS_WIDGET;\n};\n\nexport type DataWidgetResult =\n | DataTableWidgetResult\n | DataChartWidgetResult\n | DataInsightsWidgetResult;\n\nconst LEGACY_DATA_WIDGET_KINDS: Record<string, DataWidgetKind> = {\n \"data-table.v1\": DATA_TABLE_WIDGET,\n \"data-chart.v1\": DATA_CHART_WIDGET,\n \"data-insights.v1\": DATA_INSIGHTS_WIDGET,\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === \"string\" && value.length > 0;\n}\n\nexport function normalizeDataWidgetKind(value: unknown): DataWidgetKind | null {\n if (value === DATA_TABLE_WIDGET) return DATA_TABLE_WIDGET;\n if (value === DATA_CHART_WIDGET) return DATA_CHART_WIDGET;\n if (value === DATA_INSIGHTS_WIDGET) return DATA_INSIGHTS_WIDGET;\n return isString(value) ? (LEGACY_DATA_WIDGET_KINDS[value] ?? null) : null;\n}\n\nexport function isDataTableWidget(value: unknown): value is DataTableWidget {\n if (!isRecord(value)) return false;\n return (\n Array.isArray(value.columns) &&\n value.columns.every(\n (column) =>\n isRecord(column) &&\n isString(column.key) &&\n isString(column.label) &&\n (column.align === undefined ||\n column.align === \"left\" ||\n column.align === \"right\"),\n ) &&\n Array.isArray(value.rows) &&\n value.rows.every(isRecord)\n );\n}\n\nexport function isDataChartWidget(value: unknown): value is DataChartWidget {\n if (!isRecord(value)) return false;\n return (\n (value.type === \"bar\" || value.type === \"line\" || value.type === \"area\") &&\n isString(value.xKey) &&\n Array.isArray(value.series) &&\n value.series.every(\n (series) =>\n isRecord(series) &&\n isString(series.key) &&\n isString(series.label) &&\n (series.color === undefined || typeof series.color === \"string\"),\n ) &&\n Array.isArray(value.data) &&\n value.data.every(isRecord)\n );\n}\n\nfunction isPrimaryAction(\n value: unknown,\n): value is NonNullable<DataWidgetDisplay[\"primaryAction\"]> {\n return isRecord(value) && isString(value.label) && isString(value.href);\n}\n\nfunction normalizeDisplay(value: unknown): DataWidgetDisplay | undefined {\n if (!isRecord(value)) return undefined;\n return {\n title: typeof value.title === \"string\" ? value.title : undefined,\n description:\n typeof value.description === \"string\" ? value.description : undefined,\n primaryAction: isPrimaryAction(value.primaryAction)\n ? value.primaryAction\n : undefined,\n };\n}\n\nfunction assertDataTableWidget(\n table: unknown,\n): asserts table is DataTableWidget {\n if (!isDataTableWidget(table)) {\n throw new Error(\"Invalid data-table widget payload\");\n }\n}\n\nfunction assertDataChartWidget(\n chart: unknown,\n): asserts chart is DataChartWidget {\n if (!isDataChartWidget(chart)) {\n throw new Error(\"Invalid data-chart widget payload\");\n }\n}\n\nexport function createDataTableWidgetResult<\n const Input extends DataTableWidgetResultInput,\n>(\n input: Input & { widget?: never; chartSeries?: never },\n): DataTableWidgetResult<Input> {\n assertDataTableWidget(input.table);\n return {\n ...input,\n widget: DATA_TABLE_WIDGET,\n table: input.table,\n } as DataTableWidgetResult<Input>;\n}\n\nexport function createDataChartWidgetResult<\n const Input extends DataChartWidgetResultInput,\n>(\n input: Input & { widget?: never; table?: never },\n): DataChartWidgetResult<Input> {\n assertDataChartWidget(input.chartSeries);\n return {\n ...input,\n widget: DATA_CHART_WIDGET,\n chartSeries: input.chartSeries,\n } as DataChartWidgetResult<Input>;\n}\n\nexport function createDataInsightsWidgetResult<\n const Input extends DataInsightsWidgetResultInput,\n>(input: Input & { widget?: never }): DataInsightsWidgetResult<Input> {\n if (input.table !== undefined) assertDataTableWidget(input.table);\n if (input.chartSeries !== undefined) assertDataChartWidget(input.chartSeries);\n if (input.table === undefined && input.chartSeries === undefined) {\n throw new Error(\"data-insights widgets require table or chartSeries\");\n }\n return {\n ...input,\n widget: DATA_INSIGHTS_WIDGET,\n } as DataInsightsWidgetResult<Input>;\n}\n\nexport function normalizeDataWidgetResult(\n value: unknown,\n): DataWidgetResult | null {\n if (!isRecord(value)) return null;\n const widget = normalizeDataWidgetKind(value.widget);\n if (!widget) return null;\n\n const table = isDataTableWidget(value.table) ? value.table : undefined;\n const chartSeries = isDataChartWidget(value.chartSeries)\n ? value.chartSeries\n : undefined;\n const base = {\n widgetId: typeof value.widgetId === \"string\" ? value.widgetId : undefined,\n title: typeof value.title === \"string\" ? value.title : undefined,\n summary: isRecord(value.summary) ? value.summary : undefined,\n display: normalizeDisplay(value.display),\n };\n\n if (widget === DATA_TABLE_WIDGET) {\n if (!table) return null;\n return {\n ...base,\n widget: DATA_TABLE_WIDGET,\n table,\n };\n }\n\n if (widget === DATA_CHART_WIDGET) {\n if (!chartSeries) return null;\n return {\n ...base,\n widget: DATA_CHART_WIDGET,\n chartSeries,\n };\n }\n\n if (!table && !chartSeries) return null;\n return {\n ...base,\n widget: DATA_INSIGHTS_WIDGET,\n ...(table ? { table } : {}),\n ...(chartSeries ? { chartSeries } : {}),\n };\n}\n\nexport function isDataWidgetResult(value: unknown): value is DataWidgetResult {\n return normalizeDataWidgetResult(value) !== null;\n}\n\nconst dataTableColumnSchema = z\n .object({\n key: z.string().min(1),\n label: z.string().min(1),\n align: z.enum([\"left\", \"right\"]).optional(),\n })\n .passthrough();\n\nexport const dataTableWidgetSchema = z\n .object({\n title: z.string().optional(),\n columns: z.array(dataTableColumnSchema).min(1),\n rows: z.array(z.record(z.string(), z.unknown())),\n totalRows: z.number().optional(),\n sampledRows: z.number().optional(),\n truncated: z.boolean().optional(),\n })\n .passthrough();\n\nconst dataChartSeriesDefinitionSchema = z\n .object({\n key: z.string().min(1),\n label: z.string().min(1),\n color: z.string().optional(),\n })\n .passthrough();\n\nexport const dataChartWidgetSchema = z\n .object({\n type: z.enum([\"bar\", \"line\", \"area\"]),\n title: z.string().optional(),\n xKey: z.string().min(1),\n series: z.array(dataChartSeriesDefinitionSchema).min(1),\n data: z.array(z.record(z.string(), z.unknown())),\n sampled: z.boolean().optional(),\n })\n .passthrough();\n\nconst primaryActionSchema = z\n .object({\n label: z.string().min(1),\n href: z.string().min(1),\n })\n .passthrough();\n\nconst dataWidgetDisplaySchema = z\n .object({\n title: z.string().optional(),\n description: z.string().optional(),\n primaryAction: primaryActionSchema.optional(),\n })\n .passthrough();\n\nconst dataWidgetBaseSchema = z\n .object({\n widgetId: z.string().optional(),\n title: z.string().optional(),\n summary: z.record(z.string(), z.unknown()).optional(),\n display: dataWidgetDisplaySchema.optional(),\n })\n .passthrough();\n\nexport const dataTableWidgetResultSchema = dataWidgetBaseSchema\n .extend({\n widget: z.literal(DATA_TABLE_WIDGET),\n table: dataTableWidgetSchema,\n })\n .passthrough();\n\nexport const dataChartWidgetResultSchema = dataWidgetBaseSchema\n .extend({\n widget: z.literal(DATA_CHART_WIDGET),\n chartSeries: dataChartWidgetSchema,\n })\n .passthrough();\n\nexport const dataInsightsWidgetResultSchema = dataWidgetBaseSchema\n .extend({\n widget: z.literal(DATA_INSIGHTS_WIDGET),\n table: dataTableWidgetSchema.optional(),\n chartSeries: dataChartWidgetSchema.optional(),\n })\n .passthrough()\n .refine((value) => value.table || value.chartSeries, {\n message: \"data-insights widgets require table or chartSeries\",\n });\n\nexport const dataWidgetResultSchema = z.union([\n dataTableWidgetResultSchema,\n dataChartWidgetResultSchema,\n dataInsightsWidgetResultSchema,\n]);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/deploy/build.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAML,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AA2B7B,eAAO,MAAM,6BAA6B,UAiBzC,CAAC;AAuBF,wBAAgB,wCAAwC,CACtD,WAAW,EAAE,MAAM,EAAE,GACpB,MAAM,CAaR;AAgBD,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAAC;AAgBvE,wBAAgB,yCAAyC,CACvD,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,WAAW,SAAK,GACf,IAAI,CAQN;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,EAAE,EACzB,WAAW,EAAE,MAAM,EAAE,EACrB,kBAAkB,GAAE,MAAM,EAAO,EACjC,OAAO,GAAE,gBAAgB,EAAO,EAChC,aAAa,GAAE,oBAAoB,GAAG,IAAW,EACjD,mBAAmB,GAAE,MAAM,EAAO,EAClC,gBAAgB,SAAmC,GAClD,MAAM,CAskBR;
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/deploy/build.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAML,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AA2B7B,eAAO,MAAM,6BAA6B,UAiBzC,CAAC;AAuBF,wBAAgB,wCAAwC,CACtD,WAAW,EAAE,MAAM,EAAE,GACpB,MAAM,CAaR;AAgBD,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAAC;AAgBvE,wBAAgB,yCAAyC,CACvD,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,WAAW,SAAK,GACf,IAAI,CAQN;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,EAAE,EACzB,WAAW,EAAE,MAAM,EAAE,EACrB,kBAAkB,GAAE,MAAM,EAAO,EACjC,OAAO,GAAE,gBAAgB,EAAO,EAChC,aAAa,GAAE,oBAAoB,GAAG,IAAW,EACjD,mBAAmB,GAAE,MAAM,EAAO,EAClC,gBAAgB,SAAmC,GAClD,MAAM,CAskBR;AAyXD,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C;AAkHD,wBAAgB,OAAO,CACrB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,iBAAiB,cAAoB,QAoCtC;AAuBD,KAAK,0BAA0B,GAAG,OAAO,GAAG,KAAK,CAAC;AAQlD,wBAAgB,qCAAqC,CACnD,YAAY,GAAE,MAAM,CAAC,QAA2B,EAChD,QAAQ,GAAE,MAAM,CAAC,YAA2B,EAC5C,UAAU,GAAE,0BAA0B,GAAG,IAAgD,GACxF,OAAO,CAOT;AAqED,wBAAgB,gCAAgC,CAC9C,gBAAgB,EAAE,MAAM,EAAE,GACzB,MAAM,GAAG,IAAI,CA8Bf;AAED,wBAAgB,0BAA0B,CACxC,gBAAgB,EAAE,MAAM,EAAE,GACzB,KAAK,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAqCpD;AAkND;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,gBAAgB,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
|
package/dist/deploy/build.js
CHANGED
|
@@ -726,6 +726,19 @@ async function buildCloudflarePages() {
|
|
|
726
726
|
// Create a require shim so CJS require("fs") calls resolve via ESM imports.
|
|
727
727
|
// This is injected via esbuild --inject to replace its broken __require shim.
|
|
728
728
|
fs.writeFileSync(path.join(tmpDir, "_require-shim.js"), generateRequireShim());
|
|
729
|
+
const nitroServerAssetsStub = path.join(tmpDir, "_nitro-server-assets-stub.js");
|
|
730
|
+
fs.writeFileSync(nitroServerAssetsStub, [
|
|
731
|
+
"const empty = async () => undefined;",
|
|
732
|
+
"export const assets = {",
|
|
733
|
+
" getItem: empty,",
|
|
734
|
+
" getItemRaw: empty,",
|
|
735
|
+
" getKeys: async () => [],",
|
|
736
|
+
" getMeta: async () => undefined,",
|
|
737
|
+
" hasItem: async () => false,",
|
|
738
|
+
"};",
|
|
739
|
+
"export default assets;",
|
|
740
|
+
"",
|
|
741
|
+
].join("\n"));
|
|
729
742
|
// Create stub modules for native/Node-only deps that can't run on Workers.
|
|
730
743
|
// These get resolved by esbuild instead of the real modules, avoiding bundling
|
|
731
744
|
// native code that would fail on the Workers runtime.
|
|
@@ -798,6 +811,7 @@ async function buildCloudflarePages() {
|
|
|
798
811
|
"--conditions=workerd,worker,import",
|
|
799
812
|
// The ssr-handler imports a virtual module that only exists at dev time
|
|
800
813
|
"--external:virtual:react-router/server-build",
|
|
814
|
+
`--alias:#nitro/virtual/server-assets=${nitroServerAssetsStub}`,
|
|
801
815
|
// Banner: override the __require shim that esbuild generates for CJS modules.
|
|
802
816
|
// This provides a real require() backed by ESM imports of node builtins.
|
|
803
817
|
// Without this, CF Workers rejects the bundle because esbuild's default
|