@voyant-travel/max-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1141 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * `@repo/agent-cards` — the shared contract for the structured "cards" the Max
4
+ * agent embed renders as rich widgets.
5
+ *
6
+ * A card is an additive, display-ready payload attached to a tool result under
7
+ * the `card` key. The backend (`@repo/agent-core`'s `buildCardForTool`) maps raw
8
+ * upstream JSON into a card; the agent-app frontend renders it via a widget
9
+ * registry. Everything here is pure zod + TS — no env, no upstream coupling — so
10
+ * both sides import the same source of truth.
11
+ *
12
+ * Two tiers:
13
+ * - Bespoke kinds (`booking`, `customer`, `itinerary`, …) for the common
14
+ * operations, hand-tuned in the UI.
15
+ * - A `dynamic` kind = a list of LLM-safe presentation `Block`s, emitted by the
16
+ * `present_view` tool, for the long tail of ad-hoc views.
17
+ *
18
+ * Cards carry display-ready strings (the backend pre-formats money/dates with the
19
+ * operator's locale) plus ids for actions — the frontend stays presentational.
20
+ */
21
+ /** Semantic colour for badges/statuses. The UI maps these to design tokens. */
22
+ export declare const ToneSchema: z.ZodEnum<{
23
+ default: "default";
24
+ success: "success";
25
+ warning: "warning";
26
+ danger: "danger";
27
+ info: "info";
28
+ brand: "brand";
29
+ }>;
30
+ export type Tone = z.infer<typeof ToneSchema>;
31
+ export declare const BadgeSchema: z.ZodObject<{
32
+ label: z.ZodString;
33
+ tone: z.ZodOptional<z.ZodEnum<{
34
+ default: "default";
35
+ success: "success";
36
+ warning: "warning";
37
+ danger: "danger";
38
+ info: "info";
39
+ brand: "brand";
40
+ }>>;
41
+ }, z.core.$strip>;
42
+ export type Badge = z.infer<typeof BadgeSchema>;
43
+ /**
44
+ * What an actionable element does when clicked.
45
+ * - `open` → open a URL in a new tab (deep links into admin / storefront).
46
+ * - `prompt` → send a natural-language message to Max, so the model performs
47
+ * the next tool call and the existing approval card confirms any
48
+ * write. This powers "Publish", "Send offer", "Rebook", etc.
49
+ * without any new endpoints.
50
+ */
51
+ export declare const CardActionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
52
+ kind: z.ZodLiteral<"open">;
53
+ label: z.ZodOptional<z.ZodString>;
54
+ url: z.ZodString;
55
+ }, z.core.$strip>, z.ZodObject<{
56
+ kind: z.ZodLiteral<"prompt">;
57
+ label: z.ZodString;
58
+ prompt: z.ZodString;
59
+ tone: z.ZodOptional<z.ZodEnum<{
60
+ default: "default";
61
+ success: "success";
62
+ warning: "warning";
63
+ danger: "danger";
64
+ info: "info";
65
+ brand: "brand";
66
+ }>>;
67
+ }, z.core.$strip>], "kind">;
68
+ export type CardAction = z.infer<typeof CardActionSchema>;
69
+ /** Coarse condition buckets the weather widget maps to lucide icons (no fetch). */
70
+ export declare const WeatherIconSchema: z.ZodEnum<{
71
+ clear: "clear";
72
+ "partly-cloudy": "partly-cloudy";
73
+ cloudy: "cloudy";
74
+ rain: "rain";
75
+ drizzle: "drizzle";
76
+ thunderstorm: "thunderstorm";
77
+ snow: "snow";
78
+ mist: "mist";
79
+ wind: "wind";
80
+ }>;
81
+ export type WeatherIconName = z.infer<typeof WeatherIconSchema>;
82
+ export declare const BlockSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
83
+ type: z.ZodLiteral<"heading">;
84
+ text: z.ZodString;
85
+ level: z.ZodOptional<z.ZodNumber>;
86
+ }, z.core.$strip>, z.ZodObject<{
87
+ type: z.ZodLiteral<"text">;
88
+ text: z.ZodString;
89
+ muted: z.ZodOptional<z.ZodBoolean>;
90
+ }, z.core.$strip>, z.ZodObject<{
91
+ type: z.ZodLiteral<"statTiles">;
92
+ tiles: z.ZodArray<z.ZodObject<{
93
+ label: z.ZodString;
94
+ value: z.ZodString;
95
+ hint: z.ZodOptional<z.ZodString>;
96
+ }, z.core.$strip>>;
97
+ }, z.core.$strip>, z.ZodObject<{
98
+ type: z.ZodLiteral<"keyValues">;
99
+ items: z.ZodArray<z.ZodObject<{
100
+ label: z.ZodString;
101
+ value: z.ZodString;
102
+ }, z.core.$strip>>;
103
+ }, z.core.$strip>, z.ZodObject<{
104
+ type: z.ZodLiteral<"badges">;
105
+ items: z.ZodArray<z.ZodObject<{
106
+ label: z.ZodString;
107
+ tone: z.ZodOptional<z.ZodEnum<{
108
+ default: "default";
109
+ success: "success";
110
+ warning: "warning";
111
+ danger: "danger";
112
+ info: "info";
113
+ brand: "brand";
114
+ }>>;
115
+ }, z.core.$strip>>;
116
+ }, z.core.$strip>, z.ZodObject<{
117
+ type: z.ZodLiteral<"image">;
118
+ url: z.ZodString;
119
+ alt: z.ZodOptional<z.ZodString>;
120
+ caption: z.ZodOptional<z.ZodString>;
121
+ }, z.core.$strip>, z.ZodObject<{
122
+ type: z.ZodLiteral<"timeline">;
123
+ items: z.ZodArray<z.ZodObject<{
124
+ title: z.ZodString;
125
+ date: z.ZodOptional<z.ZodString>;
126
+ amount: z.ZodOptional<z.ZodString>;
127
+ status: z.ZodOptional<z.ZodObject<{
128
+ label: z.ZodString;
129
+ tone: z.ZodOptional<z.ZodEnum<{
130
+ default: "default";
131
+ success: "success";
132
+ warning: "warning";
133
+ danger: "danger";
134
+ info: "info";
135
+ brand: "brand";
136
+ }>>;
137
+ }, z.core.$strip>>;
138
+ description: z.ZodOptional<z.ZodString>;
139
+ action: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
140
+ kind: z.ZodLiteral<"open">;
141
+ label: z.ZodOptional<z.ZodString>;
142
+ url: z.ZodString;
143
+ }, z.core.$strip>, z.ZodObject<{
144
+ kind: z.ZodLiteral<"prompt">;
145
+ label: z.ZodString;
146
+ prompt: z.ZodString;
147
+ tone: z.ZodOptional<z.ZodEnum<{
148
+ default: "default";
149
+ success: "success";
150
+ warning: "warning";
151
+ danger: "danger";
152
+ info: "info";
153
+ brand: "brand";
154
+ }>>;
155
+ }, z.core.$strip>], "kind">>;
156
+ }, z.core.$strip>>;
157
+ }, z.core.$strip>, z.ZodObject<{
158
+ type: z.ZodLiteral<"table">;
159
+ columns: z.ZodArray<z.ZodString>;
160
+ rows: z.ZodArray<z.ZodArray<z.ZodString>>;
161
+ }, z.core.$strip>, z.ZodObject<{
162
+ type: z.ZodLiteral<"list">;
163
+ ordered: z.ZodOptional<z.ZodBoolean>;
164
+ items: z.ZodArray<z.ZodString>;
165
+ }, z.core.$strip>, z.ZodObject<{
166
+ type: z.ZodLiteral<"divider">;
167
+ }, z.core.$strip>, z.ZodObject<{
168
+ type: z.ZodLiteral<"button">;
169
+ action: z.ZodDiscriminatedUnion<[z.ZodObject<{
170
+ kind: z.ZodLiteral<"open">;
171
+ label: z.ZodOptional<z.ZodString>;
172
+ url: z.ZodString;
173
+ }, z.core.$strip>, z.ZodObject<{
174
+ kind: z.ZodLiteral<"prompt">;
175
+ label: z.ZodString;
176
+ prompt: z.ZodString;
177
+ tone: z.ZodOptional<z.ZodEnum<{
178
+ default: "default";
179
+ success: "success";
180
+ warning: "warning";
181
+ danger: "danger";
182
+ info: "info";
183
+ brand: "brand";
184
+ }>>;
185
+ }, z.core.$strip>], "kind">;
186
+ }, z.core.$strip>], "type">;
187
+ export type Block = z.infer<typeof BlockSchema>;
188
+ export declare const DynamicCardSchema: z.ZodObject<{
189
+ kind: z.ZodLiteral<"dynamic">;
190
+ title: z.ZodOptional<z.ZodString>;
191
+ blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
192
+ type: z.ZodLiteral<"heading">;
193
+ text: z.ZodString;
194
+ level: z.ZodOptional<z.ZodNumber>;
195
+ }, z.core.$strip>, z.ZodObject<{
196
+ type: z.ZodLiteral<"text">;
197
+ text: z.ZodString;
198
+ muted: z.ZodOptional<z.ZodBoolean>;
199
+ }, z.core.$strip>, z.ZodObject<{
200
+ type: z.ZodLiteral<"statTiles">;
201
+ tiles: z.ZodArray<z.ZodObject<{
202
+ label: z.ZodString;
203
+ value: z.ZodString;
204
+ hint: z.ZodOptional<z.ZodString>;
205
+ }, z.core.$strip>>;
206
+ }, z.core.$strip>, z.ZodObject<{
207
+ type: z.ZodLiteral<"keyValues">;
208
+ items: z.ZodArray<z.ZodObject<{
209
+ label: z.ZodString;
210
+ value: z.ZodString;
211
+ }, z.core.$strip>>;
212
+ }, z.core.$strip>, z.ZodObject<{
213
+ type: z.ZodLiteral<"badges">;
214
+ items: z.ZodArray<z.ZodObject<{
215
+ label: z.ZodString;
216
+ tone: z.ZodOptional<z.ZodEnum<{
217
+ default: "default";
218
+ success: "success";
219
+ warning: "warning";
220
+ danger: "danger";
221
+ info: "info";
222
+ brand: "brand";
223
+ }>>;
224
+ }, z.core.$strip>>;
225
+ }, z.core.$strip>, z.ZodObject<{
226
+ type: z.ZodLiteral<"image">;
227
+ url: z.ZodString;
228
+ alt: z.ZodOptional<z.ZodString>;
229
+ caption: z.ZodOptional<z.ZodString>;
230
+ }, z.core.$strip>, z.ZodObject<{
231
+ type: z.ZodLiteral<"timeline">;
232
+ items: z.ZodArray<z.ZodObject<{
233
+ title: z.ZodString;
234
+ date: z.ZodOptional<z.ZodString>;
235
+ amount: z.ZodOptional<z.ZodString>;
236
+ status: z.ZodOptional<z.ZodObject<{
237
+ label: z.ZodString;
238
+ tone: z.ZodOptional<z.ZodEnum<{
239
+ default: "default";
240
+ success: "success";
241
+ warning: "warning";
242
+ danger: "danger";
243
+ info: "info";
244
+ brand: "brand";
245
+ }>>;
246
+ }, z.core.$strip>>;
247
+ description: z.ZodOptional<z.ZodString>;
248
+ action: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
249
+ kind: z.ZodLiteral<"open">;
250
+ label: z.ZodOptional<z.ZodString>;
251
+ url: z.ZodString;
252
+ }, z.core.$strip>, z.ZodObject<{
253
+ kind: z.ZodLiteral<"prompt">;
254
+ label: z.ZodString;
255
+ prompt: z.ZodString;
256
+ tone: z.ZodOptional<z.ZodEnum<{
257
+ default: "default";
258
+ success: "success";
259
+ warning: "warning";
260
+ danger: "danger";
261
+ info: "info";
262
+ brand: "brand";
263
+ }>>;
264
+ }, z.core.$strip>], "kind">>;
265
+ }, z.core.$strip>>;
266
+ }, z.core.$strip>, z.ZodObject<{
267
+ type: z.ZodLiteral<"table">;
268
+ columns: z.ZodArray<z.ZodString>;
269
+ rows: z.ZodArray<z.ZodArray<z.ZodString>>;
270
+ }, z.core.$strip>, z.ZodObject<{
271
+ type: z.ZodLiteral<"list">;
272
+ ordered: z.ZodOptional<z.ZodBoolean>;
273
+ items: z.ZodArray<z.ZodString>;
274
+ }, z.core.$strip>, z.ZodObject<{
275
+ type: z.ZodLiteral<"divider">;
276
+ }, z.core.$strip>, z.ZodObject<{
277
+ type: z.ZodLiteral<"button">;
278
+ action: z.ZodDiscriminatedUnion<[z.ZodObject<{
279
+ kind: z.ZodLiteral<"open">;
280
+ label: z.ZodOptional<z.ZodString>;
281
+ url: z.ZodString;
282
+ }, z.core.$strip>, z.ZodObject<{
283
+ kind: z.ZodLiteral<"prompt">;
284
+ label: z.ZodString;
285
+ prompt: z.ZodString;
286
+ tone: z.ZodOptional<z.ZodEnum<{
287
+ default: "default";
288
+ success: "success";
289
+ warning: "warning";
290
+ danger: "danger";
291
+ info: "info";
292
+ brand: "brand";
293
+ }>>;
294
+ }, z.core.$strip>], "kind">;
295
+ }, z.core.$strip>], "type">>;
296
+ }, z.core.$strip>;
297
+ export type DynamicCard = z.infer<typeof DynamicCardSchema>;
298
+ /** Input schema for the `present_view` tool (the dynamic card without `kind`). */
299
+ export declare const PresentViewInputSchema: z.ZodObject<{
300
+ title: z.ZodOptional<z.ZodString>;
301
+ blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
302
+ type: z.ZodLiteral<"heading">;
303
+ text: z.ZodString;
304
+ level: z.ZodOptional<z.ZodNumber>;
305
+ }, z.core.$strip>, z.ZodObject<{
306
+ type: z.ZodLiteral<"text">;
307
+ text: z.ZodString;
308
+ muted: z.ZodOptional<z.ZodBoolean>;
309
+ }, z.core.$strip>, z.ZodObject<{
310
+ type: z.ZodLiteral<"statTiles">;
311
+ tiles: z.ZodArray<z.ZodObject<{
312
+ label: z.ZodString;
313
+ value: z.ZodString;
314
+ hint: z.ZodOptional<z.ZodString>;
315
+ }, z.core.$strip>>;
316
+ }, z.core.$strip>, z.ZodObject<{
317
+ type: z.ZodLiteral<"keyValues">;
318
+ items: z.ZodArray<z.ZodObject<{
319
+ label: z.ZodString;
320
+ value: z.ZodString;
321
+ }, z.core.$strip>>;
322
+ }, z.core.$strip>, z.ZodObject<{
323
+ type: z.ZodLiteral<"badges">;
324
+ items: z.ZodArray<z.ZodObject<{
325
+ label: z.ZodString;
326
+ tone: z.ZodOptional<z.ZodEnum<{
327
+ default: "default";
328
+ success: "success";
329
+ warning: "warning";
330
+ danger: "danger";
331
+ info: "info";
332
+ brand: "brand";
333
+ }>>;
334
+ }, z.core.$strip>>;
335
+ }, z.core.$strip>, z.ZodObject<{
336
+ type: z.ZodLiteral<"image">;
337
+ url: z.ZodString;
338
+ alt: z.ZodOptional<z.ZodString>;
339
+ caption: z.ZodOptional<z.ZodString>;
340
+ }, z.core.$strip>, z.ZodObject<{
341
+ type: z.ZodLiteral<"timeline">;
342
+ items: z.ZodArray<z.ZodObject<{
343
+ title: z.ZodString;
344
+ date: z.ZodOptional<z.ZodString>;
345
+ amount: z.ZodOptional<z.ZodString>;
346
+ status: z.ZodOptional<z.ZodObject<{
347
+ label: z.ZodString;
348
+ tone: z.ZodOptional<z.ZodEnum<{
349
+ default: "default";
350
+ success: "success";
351
+ warning: "warning";
352
+ danger: "danger";
353
+ info: "info";
354
+ brand: "brand";
355
+ }>>;
356
+ }, z.core.$strip>>;
357
+ description: z.ZodOptional<z.ZodString>;
358
+ action: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
359
+ kind: z.ZodLiteral<"open">;
360
+ label: z.ZodOptional<z.ZodString>;
361
+ url: z.ZodString;
362
+ }, z.core.$strip>, z.ZodObject<{
363
+ kind: z.ZodLiteral<"prompt">;
364
+ label: z.ZodString;
365
+ prompt: z.ZodString;
366
+ tone: z.ZodOptional<z.ZodEnum<{
367
+ default: "default";
368
+ success: "success";
369
+ warning: "warning";
370
+ danger: "danger";
371
+ info: "info";
372
+ brand: "brand";
373
+ }>>;
374
+ }, z.core.$strip>], "kind">>;
375
+ }, z.core.$strip>>;
376
+ }, z.core.$strip>, z.ZodObject<{
377
+ type: z.ZodLiteral<"table">;
378
+ columns: z.ZodArray<z.ZodString>;
379
+ rows: z.ZodArray<z.ZodArray<z.ZodString>>;
380
+ }, z.core.$strip>, z.ZodObject<{
381
+ type: z.ZodLiteral<"list">;
382
+ ordered: z.ZodOptional<z.ZodBoolean>;
383
+ items: z.ZodArray<z.ZodString>;
384
+ }, z.core.$strip>, z.ZodObject<{
385
+ type: z.ZodLiteral<"divider">;
386
+ }, z.core.$strip>, z.ZodObject<{
387
+ type: z.ZodLiteral<"button">;
388
+ action: z.ZodDiscriminatedUnion<[z.ZodObject<{
389
+ kind: z.ZodLiteral<"open">;
390
+ label: z.ZodOptional<z.ZodString>;
391
+ url: z.ZodString;
392
+ }, z.core.$strip>, z.ZodObject<{
393
+ kind: z.ZodLiteral<"prompt">;
394
+ label: z.ZodString;
395
+ prompt: z.ZodString;
396
+ tone: z.ZodOptional<z.ZodEnum<{
397
+ default: "default";
398
+ success: "success";
399
+ warning: "warning";
400
+ danger: "danger";
401
+ info: "info";
402
+ brand: "brand";
403
+ }>>;
404
+ }, z.core.$strip>], "kind">;
405
+ }, z.core.$strip>], "type">>;
406
+ }, z.core.$strip>;
407
+ export type PresentViewInput = z.infer<typeof PresentViewInputSchema>;
408
+ export declare const AgentCardSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
409
+ kind: z.ZodLiteral<"customer">;
410
+ name: z.ZodString;
411
+ email: z.ZodOptional<z.ZodString>;
412
+ phone: z.ZodOptional<z.ZodString>;
413
+ avatarUrl: z.ZodOptional<z.ZodString>;
414
+ jobTitle: z.ZodOptional<z.ZodString>;
415
+ status: z.ZodOptional<z.ZodObject<{
416
+ label: z.ZodString;
417
+ tone: z.ZodOptional<z.ZodEnum<{
418
+ default: "default";
419
+ success: "success";
420
+ warning: "warning";
421
+ danger: "danger";
422
+ info: "info";
423
+ brand: "brand";
424
+ }>>;
425
+ }, z.core.$strip>>;
426
+ segment: z.ZodOptional<z.ZodString>;
427
+ lifetimeValue: z.ZodOptional<z.ZodString>;
428
+ stats: z.ZodOptional<z.ZodArray<z.ZodObject<{
429
+ label: z.ZodString;
430
+ value: z.ZodString;
431
+ hint: z.ZodOptional<z.ZodString>;
432
+ }, z.core.$strip>>>;
433
+ timeline: z.ZodOptional<z.ZodArray<z.ZodObject<{
434
+ title: z.ZodString;
435
+ date: z.ZodOptional<z.ZodString>;
436
+ amount: z.ZodOptional<z.ZodString>;
437
+ status: z.ZodOptional<z.ZodObject<{
438
+ label: z.ZodString;
439
+ tone: z.ZodOptional<z.ZodEnum<{
440
+ default: "default";
441
+ success: "success";
442
+ warning: "warning";
443
+ danger: "danger";
444
+ info: "info";
445
+ brand: "brand";
446
+ }>>;
447
+ }, z.core.$strip>>;
448
+ description: z.ZodOptional<z.ZodString>;
449
+ action: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
450
+ kind: z.ZodLiteral<"open">;
451
+ label: z.ZodOptional<z.ZodString>;
452
+ url: z.ZodString;
453
+ }, z.core.$strip>, z.ZodObject<{
454
+ kind: z.ZodLiteral<"prompt">;
455
+ label: z.ZodString;
456
+ prompt: z.ZodString;
457
+ tone: z.ZodOptional<z.ZodEnum<{
458
+ default: "default";
459
+ success: "success";
460
+ warning: "warning";
461
+ danger: "danger";
462
+ info: "info";
463
+ brand: "brand";
464
+ }>>;
465
+ }, z.core.$strip>], "kind">>;
466
+ }, z.core.$strip>>>;
467
+ note: z.ZodOptional<z.ZodString>;
468
+ actions: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
469
+ kind: z.ZodLiteral<"open">;
470
+ label: z.ZodOptional<z.ZodString>;
471
+ url: z.ZodString;
472
+ }, z.core.$strip>, z.ZodObject<{
473
+ kind: z.ZodLiteral<"prompt">;
474
+ label: z.ZodString;
475
+ prompt: z.ZodString;
476
+ tone: z.ZodOptional<z.ZodEnum<{
477
+ default: "default";
478
+ success: "success";
479
+ warning: "warning";
480
+ danger: "danger";
481
+ info: "info";
482
+ brand: "brand";
483
+ }>>;
484
+ }, z.core.$strip>], "kind">>>;
485
+ }, z.core.$strip>, z.ZodObject<{
486
+ kind: z.ZodLiteral<"booking">;
487
+ title: z.ZodString;
488
+ reference: z.ZodOptional<z.ZodString>;
489
+ customer: z.ZodOptional<z.ZodString>;
490
+ status: z.ZodOptional<z.ZodObject<{
491
+ label: z.ZodString;
492
+ tone: z.ZodOptional<z.ZodEnum<{
493
+ default: "default";
494
+ success: "success";
495
+ warning: "warning";
496
+ danger: "danger";
497
+ info: "info";
498
+ brand: "brand";
499
+ }>>;
500
+ }, z.core.$strip>>;
501
+ dateRange: z.ZodOptional<z.ZodString>;
502
+ travelers: z.ZodOptional<z.ZodString>;
503
+ total: z.ZodOptional<z.ZodString>;
504
+ rows: z.ZodOptional<z.ZodArray<z.ZodObject<{
505
+ label: z.ZodString;
506
+ value: z.ZodString;
507
+ }, z.core.$strip>>>;
508
+ actions: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
509
+ kind: z.ZodLiteral<"open">;
510
+ label: z.ZodOptional<z.ZodString>;
511
+ url: z.ZodString;
512
+ }, z.core.$strip>, z.ZodObject<{
513
+ kind: z.ZodLiteral<"prompt">;
514
+ label: z.ZodString;
515
+ prompt: z.ZodString;
516
+ tone: z.ZodOptional<z.ZodEnum<{
517
+ default: "default";
518
+ success: "success";
519
+ warning: "warning";
520
+ danger: "danger";
521
+ info: "info";
522
+ brand: "brand";
523
+ }>>;
524
+ }, z.core.$strip>], "kind">>>;
525
+ }, z.core.$strip>, z.ZodObject<{
526
+ kind: z.ZodLiteral<"bookingList">;
527
+ title: z.ZodOptional<z.ZodString>;
528
+ total: z.ZodOptional<z.ZodNumber>;
529
+ items: z.ZodArray<z.ZodObject<{
530
+ title: z.ZodString;
531
+ subtitle: z.ZodOptional<z.ZodString>;
532
+ date: z.ZodOptional<z.ZodString>;
533
+ amount: z.ZodOptional<z.ZodString>;
534
+ status: z.ZodOptional<z.ZodObject<{
535
+ label: z.ZodString;
536
+ tone: z.ZodOptional<z.ZodEnum<{
537
+ default: "default";
538
+ success: "success";
539
+ warning: "warning";
540
+ danger: "danger";
541
+ info: "info";
542
+ brand: "brand";
543
+ }>>;
544
+ }, z.core.$strip>>;
545
+ action: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
546
+ kind: z.ZodLiteral<"open">;
547
+ label: z.ZodOptional<z.ZodString>;
548
+ url: z.ZodString;
549
+ }, z.core.$strip>, z.ZodObject<{
550
+ kind: z.ZodLiteral<"prompt">;
551
+ label: z.ZodString;
552
+ prompt: z.ZodString;
553
+ tone: z.ZodOptional<z.ZodEnum<{
554
+ default: "default";
555
+ success: "success";
556
+ warning: "warning";
557
+ danger: "danger";
558
+ info: "info";
559
+ brand: "brand";
560
+ }>>;
561
+ }, z.core.$strip>], "kind">>;
562
+ }, z.core.$strip>>;
563
+ actions: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
564
+ kind: z.ZodLiteral<"open">;
565
+ label: z.ZodOptional<z.ZodString>;
566
+ url: z.ZodString;
567
+ }, z.core.$strip>, z.ZodObject<{
568
+ kind: z.ZodLiteral<"prompt">;
569
+ label: z.ZodString;
570
+ prompt: z.ZodString;
571
+ tone: z.ZodOptional<z.ZodEnum<{
572
+ default: "default";
573
+ success: "success";
574
+ warning: "warning";
575
+ danger: "danger";
576
+ info: "info";
577
+ brand: "brand";
578
+ }>>;
579
+ }, z.core.$strip>], "kind">>>;
580
+ }, z.core.$strip>, z.ZodObject<{
581
+ kind: z.ZodLiteral<"peopleList">;
582
+ title: z.ZodOptional<z.ZodString>;
583
+ total: z.ZodOptional<z.ZodNumber>;
584
+ items: z.ZodArray<z.ZodObject<{
585
+ name: z.ZodString;
586
+ subtitle: z.ZodOptional<z.ZodString>;
587
+ email: z.ZodOptional<z.ZodString>;
588
+ phone: z.ZodOptional<z.ZodString>;
589
+ action: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
590
+ kind: z.ZodLiteral<"open">;
591
+ label: z.ZodOptional<z.ZodString>;
592
+ url: z.ZodString;
593
+ }, z.core.$strip>, z.ZodObject<{
594
+ kind: z.ZodLiteral<"prompt">;
595
+ label: z.ZodString;
596
+ prompt: z.ZodString;
597
+ tone: z.ZodOptional<z.ZodEnum<{
598
+ default: "default";
599
+ success: "success";
600
+ warning: "warning";
601
+ danger: "danger";
602
+ info: "info";
603
+ brand: "brand";
604
+ }>>;
605
+ }, z.core.$strip>], "kind">>;
606
+ }, z.core.$strip>>;
607
+ }, z.core.$strip>, z.ZodObject<{
608
+ kind: z.ZodLiteral<"product">;
609
+ title: z.ZodString;
610
+ imageUrl: z.ZodOptional<z.ZodString>;
611
+ priceDisplay: z.ZodOptional<z.ZodString>;
612
+ location: z.ZodOptional<z.ZodString>;
613
+ summary: z.ZodOptional<z.ZodString>;
614
+ badges: z.ZodOptional<z.ZodArray<z.ZodObject<{
615
+ label: z.ZodString;
616
+ tone: z.ZodOptional<z.ZodEnum<{
617
+ default: "default";
618
+ success: "success";
619
+ warning: "warning";
620
+ danger: "danger";
621
+ info: "info";
622
+ brand: "brand";
623
+ }>>;
624
+ }, z.core.$strip>>>;
625
+ rows: z.ZodOptional<z.ZodArray<z.ZodObject<{
626
+ label: z.ZodString;
627
+ value: z.ZodString;
628
+ }, z.core.$strip>>>;
629
+ actions: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
630
+ kind: z.ZodLiteral<"open">;
631
+ label: z.ZodOptional<z.ZodString>;
632
+ url: z.ZodString;
633
+ }, z.core.$strip>, z.ZodObject<{
634
+ kind: z.ZodLiteral<"prompt">;
635
+ label: z.ZodString;
636
+ prompt: z.ZodString;
637
+ tone: z.ZodOptional<z.ZodEnum<{
638
+ default: "default";
639
+ success: "success";
640
+ warning: "warning";
641
+ danger: "danger";
642
+ info: "info";
643
+ brand: "brand";
644
+ }>>;
645
+ }, z.core.$strip>], "kind">>>;
646
+ }, z.core.$strip>, z.ZodObject<{
647
+ kind: z.ZodLiteral<"productList">;
648
+ title: z.ZodOptional<z.ZodString>;
649
+ total: z.ZodOptional<z.ZodNumber>;
650
+ items: z.ZodArray<z.ZodObject<{
651
+ title: z.ZodString;
652
+ imageUrl: z.ZodOptional<z.ZodString>;
653
+ priceDisplay: z.ZodOptional<z.ZodString>;
654
+ subtitle: z.ZodOptional<z.ZodString>;
655
+ action: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
656
+ kind: z.ZodLiteral<"open">;
657
+ label: z.ZodOptional<z.ZodString>;
658
+ url: z.ZodString;
659
+ }, z.core.$strip>, z.ZodObject<{
660
+ kind: z.ZodLiteral<"prompt">;
661
+ label: z.ZodString;
662
+ prompt: z.ZodString;
663
+ tone: z.ZodOptional<z.ZodEnum<{
664
+ default: "default";
665
+ success: "success";
666
+ warning: "warning";
667
+ danger: "danger";
668
+ info: "info";
669
+ brand: "brand";
670
+ }>>;
671
+ }, z.core.$strip>], "kind">>;
672
+ }, z.core.$strip>>;
673
+ }, z.core.$strip>, z.ZodObject<{
674
+ kind: z.ZodLiteral<"itinerary">;
675
+ title: z.ZodString;
676
+ dateRange: z.ZodOptional<z.ZodString>;
677
+ heroImageUrl: z.ZodOptional<z.ZodString>;
678
+ status: z.ZodOptional<z.ZodObject<{
679
+ label: z.ZodString;
680
+ tone: z.ZodOptional<z.ZodEnum<{
681
+ default: "default";
682
+ success: "success";
683
+ warning: "warning";
684
+ danger: "danger";
685
+ info: "info";
686
+ brand: "brand";
687
+ }>>;
688
+ }, z.core.$strip>>;
689
+ summary: z.ZodOptional<z.ZodString>;
690
+ facts: z.ZodOptional<z.ZodArray<z.ZodObject<{
691
+ label: z.ZodString;
692
+ value: z.ZodString;
693
+ }, z.core.$strip>>>;
694
+ days: z.ZodArray<z.ZodObject<{
695
+ number: z.ZodOptional<z.ZodNumber>;
696
+ title: z.ZodString;
697
+ description: z.ZodOptional<z.ZodString>;
698
+ imageUrl: z.ZodOptional<z.ZodString>;
699
+ }, z.core.$strip>>;
700
+ actions: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
701
+ kind: z.ZodLiteral<"open">;
702
+ label: z.ZodOptional<z.ZodString>;
703
+ url: z.ZodString;
704
+ }, z.core.$strip>, z.ZodObject<{
705
+ kind: z.ZodLiteral<"prompt">;
706
+ label: z.ZodString;
707
+ prompt: z.ZodString;
708
+ tone: z.ZodOptional<z.ZodEnum<{
709
+ default: "default";
710
+ success: "success";
711
+ warning: "warning";
712
+ danger: "danger";
713
+ info: "info";
714
+ brand: "brand";
715
+ }>>;
716
+ }, z.core.$strip>], "kind">>>;
717
+ }, z.core.$strip>, z.ZodObject<{
718
+ kind: z.ZodLiteral<"offer">;
719
+ title: z.ZodString;
720
+ imageUrl: z.ZodOptional<z.ZodString>;
721
+ priceDisplay: z.ZodOptional<z.ZodString>;
722
+ summary: z.ZodOptional<z.ZodString>;
723
+ link: z.ZodOptional<z.ZodObject<{
724
+ label: z.ZodString;
725
+ url: z.ZodString;
726
+ }, z.core.$strip>>;
727
+ booked: z.ZodOptional<z.ZodObject<{
728
+ label: z.ZodString;
729
+ total: z.ZodOptional<z.ZodString>;
730
+ }, z.core.$strip>>;
731
+ actions: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
732
+ kind: z.ZodLiteral<"open">;
733
+ label: z.ZodOptional<z.ZodString>;
734
+ url: z.ZodString;
735
+ }, z.core.$strip>, z.ZodObject<{
736
+ kind: z.ZodLiteral<"prompt">;
737
+ label: z.ZodString;
738
+ prompt: z.ZodString;
739
+ tone: z.ZodOptional<z.ZodEnum<{
740
+ default: "default";
741
+ success: "success";
742
+ warning: "warning";
743
+ danger: "danger";
744
+ info: "info";
745
+ brand: "brand";
746
+ }>>;
747
+ }, z.core.$strip>], "kind">>>;
748
+ }, z.core.$strip>, z.ZodObject<{
749
+ kind: z.ZodLiteral<"departureList">;
750
+ productTitle: z.ZodOptional<z.ZodString>;
751
+ items: z.ZodArray<z.ZodObject<{
752
+ date: z.ZodString;
753
+ priceDisplay: z.ZodOptional<z.ZodString>;
754
+ seats: z.ZodOptional<z.ZodString>;
755
+ status: z.ZodOptional<z.ZodObject<{
756
+ label: z.ZodString;
757
+ tone: z.ZodOptional<z.ZodEnum<{
758
+ default: "default";
759
+ success: "success";
760
+ warning: "warning";
761
+ danger: "danger";
762
+ info: "info";
763
+ brand: "brand";
764
+ }>>;
765
+ }, z.core.$strip>>;
766
+ action: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
767
+ kind: z.ZodLiteral<"open">;
768
+ label: z.ZodOptional<z.ZodString>;
769
+ url: z.ZodString;
770
+ }, z.core.$strip>, z.ZodObject<{
771
+ kind: z.ZodLiteral<"prompt">;
772
+ label: z.ZodString;
773
+ prompt: z.ZodString;
774
+ tone: z.ZodOptional<z.ZodEnum<{
775
+ default: "default";
776
+ success: "success";
777
+ warning: "warning";
778
+ danger: "danger";
779
+ info: "info";
780
+ brand: "brand";
781
+ }>>;
782
+ }, z.core.$strip>], "kind">>;
783
+ }, z.core.$strip>>;
784
+ actions: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
785
+ kind: z.ZodLiteral<"open">;
786
+ label: z.ZodOptional<z.ZodString>;
787
+ url: z.ZodString;
788
+ }, z.core.$strip>, z.ZodObject<{
789
+ kind: z.ZodLiteral<"prompt">;
790
+ label: z.ZodString;
791
+ prompt: z.ZodString;
792
+ tone: z.ZodOptional<z.ZodEnum<{
793
+ default: "default";
794
+ success: "success";
795
+ warning: "warning";
796
+ danger: "danger";
797
+ info: "info";
798
+ brand: "brand";
799
+ }>>;
800
+ }, z.core.$strip>], "kind">>>;
801
+ }, z.core.$strip>, z.ZodObject<{
802
+ kind: z.ZodLiteral<"invoice">;
803
+ number: z.ZodString;
804
+ docType: z.ZodOptional<z.ZodString>;
805
+ status: z.ZodOptional<z.ZodObject<{
806
+ label: z.ZodString;
807
+ tone: z.ZodOptional<z.ZodEnum<{
808
+ default: "default";
809
+ success: "success";
810
+ warning: "warning";
811
+ danger: "danger";
812
+ info: "info";
813
+ brand: "brand";
814
+ }>>;
815
+ }, z.core.$strip>>;
816
+ total: z.ZodOptional<z.ZodString>;
817
+ customer: z.ZodOptional<z.ZodString>;
818
+ issuedDate: z.ZodOptional<z.ZodString>;
819
+ dueDate: z.ZodOptional<z.ZodString>;
820
+ rows: z.ZodOptional<z.ZodArray<z.ZodObject<{
821
+ label: z.ZodString;
822
+ value: z.ZodString;
823
+ }, z.core.$strip>>>;
824
+ actions: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
825
+ kind: z.ZodLiteral<"open">;
826
+ label: z.ZodOptional<z.ZodString>;
827
+ url: z.ZodString;
828
+ }, z.core.$strip>, z.ZodObject<{
829
+ kind: z.ZodLiteral<"prompt">;
830
+ label: z.ZodString;
831
+ prompt: z.ZodString;
832
+ tone: z.ZodOptional<z.ZodEnum<{
833
+ default: "default";
834
+ success: "success";
835
+ warning: "warning";
836
+ danger: "danger";
837
+ info: "info";
838
+ brand: "brand";
839
+ }>>;
840
+ }, z.core.$strip>], "kind">>>;
841
+ }, z.core.$strip>, z.ZodObject<{
842
+ kind: z.ZodLiteral<"invoiceList">;
843
+ title: z.ZodOptional<z.ZodString>;
844
+ total: z.ZodOptional<z.ZodNumber>;
845
+ items: z.ZodArray<z.ZodObject<{
846
+ number: z.ZodString;
847
+ subtitle: z.ZodOptional<z.ZodString>;
848
+ amount: z.ZodOptional<z.ZodString>;
849
+ status: z.ZodOptional<z.ZodObject<{
850
+ label: z.ZodString;
851
+ tone: z.ZodOptional<z.ZodEnum<{
852
+ default: "default";
853
+ success: "success";
854
+ warning: "warning";
855
+ danger: "danger";
856
+ info: "info";
857
+ brand: "brand";
858
+ }>>;
859
+ }, z.core.$strip>>;
860
+ date: z.ZodOptional<z.ZodString>;
861
+ action: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
862
+ kind: z.ZodLiteral<"open">;
863
+ label: z.ZodOptional<z.ZodString>;
864
+ url: z.ZodString;
865
+ }, z.core.$strip>, z.ZodObject<{
866
+ kind: z.ZodLiteral<"prompt">;
867
+ label: z.ZodString;
868
+ prompt: z.ZodString;
869
+ tone: z.ZodOptional<z.ZodEnum<{
870
+ default: "default";
871
+ success: "success";
872
+ warning: "warning";
873
+ danger: "danger";
874
+ info: "info";
875
+ brand: "brand";
876
+ }>>;
877
+ }, z.core.$strip>], "kind">>;
878
+ }, z.core.$strip>>;
879
+ }, z.core.$strip>, z.ZodObject<{
880
+ kind: z.ZodLiteral<"imageGrid">;
881
+ title: z.ZodOptional<z.ZodString>;
882
+ images: z.ZodArray<z.ZodObject<{
883
+ url: z.ZodString;
884
+ thumbUrl: z.ZodOptional<z.ZodString>;
885
+ alt: z.ZodOptional<z.ZodString>;
886
+ credit: z.ZodOptional<z.ZodString>;
887
+ link: z.ZodOptional<z.ZodString>;
888
+ }, z.core.$strip>>;
889
+ note: z.ZodOptional<z.ZodString>;
890
+ }, z.core.$strip>, z.ZodObject<{
891
+ kind: z.ZodLiteral<"weather">;
892
+ location: z.ZodString;
893
+ current: z.ZodObject<{
894
+ tempDisplay: z.ZodString;
895
+ feelsLikeDisplay: z.ZodOptional<z.ZodString>;
896
+ description: z.ZodOptional<z.ZodString>;
897
+ icon: z.ZodOptional<z.ZodEnum<{
898
+ clear: "clear";
899
+ "partly-cloudy": "partly-cloudy";
900
+ cloudy: "cloudy";
901
+ rain: "rain";
902
+ drizzle: "drizzle";
903
+ thunderstorm: "thunderstorm";
904
+ snow: "snow";
905
+ mist: "mist";
906
+ wind: "wind";
907
+ }>>;
908
+ humidityDisplay: z.ZodOptional<z.ZodString>;
909
+ windDisplay: z.ZodOptional<z.ZodString>;
910
+ }, z.core.$strip>;
911
+ hourly: z.ZodOptional<z.ZodArray<z.ZodObject<{
912
+ time: z.ZodString;
913
+ tempDisplay: z.ZodString;
914
+ icon: z.ZodOptional<z.ZodEnum<{
915
+ clear: "clear";
916
+ "partly-cloudy": "partly-cloudy";
917
+ cloudy: "cloudy";
918
+ rain: "rain";
919
+ drizzle: "drizzle";
920
+ thunderstorm: "thunderstorm";
921
+ snow: "snow";
922
+ mist: "mist";
923
+ wind: "wind";
924
+ }>>;
925
+ popDisplay: z.ZodOptional<z.ZodString>;
926
+ }, z.core.$strip>>>;
927
+ daily: z.ZodOptional<z.ZodArray<z.ZodObject<{
928
+ day: z.ZodString;
929
+ hiDisplay: z.ZodString;
930
+ loDisplay: z.ZodOptional<z.ZodString>;
931
+ icon: z.ZodOptional<z.ZodEnum<{
932
+ clear: "clear";
933
+ "partly-cloudy": "partly-cloudy";
934
+ cloudy: "cloudy";
935
+ rain: "rain";
936
+ drizzle: "drizzle";
937
+ thunderstorm: "thunderstorm";
938
+ snow: "snow";
939
+ mist: "mist";
940
+ wind: "wind";
941
+ }>>;
942
+ popDisplay: z.ZodOptional<z.ZodString>;
943
+ }, z.core.$strip>>>;
944
+ alerts: z.ZodOptional<z.ZodArray<z.ZodObject<{
945
+ event: z.ZodString;
946
+ detail: z.ZodOptional<z.ZodString>;
947
+ }, z.core.$strip>>>;
948
+ localTime: z.ZodOptional<z.ZodString>;
949
+ }, z.core.$strip>, z.ZodObject<{
950
+ kind: z.ZodLiteral<"airQuality">;
951
+ location: z.ZodString;
952
+ aqi: z.ZodOptional<z.ZodObject<{
953
+ label: z.ZodString;
954
+ value: z.ZodOptional<z.ZodString>;
955
+ color: z.ZodOptional<z.ZodString>;
956
+ dominant: z.ZodOptional<z.ZodString>;
957
+ }, z.core.$strip>>;
958
+ pollen: z.ZodOptional<z.ZodArray<z.ZodObject<{
959
+ type: z.ZodString;
960
+ level: z.ZodOptional<z.ZodString>;
961
+ }, z.core.$strip>>>;
962
+ coord: z.ZodOptional<z.ZodObject<{
963
+ lat: z.ZodNumber;
964
+ lng: z.ZodNumber;
965
+ }, z.core.$strip>>;
966
+ }, z.core.$strip>, z.ZodObject<{
967
+ kind: z.ZodLiteral<"map">;
968
+ center: z.ZodObject<{
969
+ lat: z.ZodNumber;
970
+ lng: z.ZodNumber;
971
+ }, z.core.$strip>;
972
+ zoom: z.ZodOptional<z.ZodNumber>;
973
+ markers: z.ZodOptional<z.ZodArray<z.ZodObject<{
974
+ lat: z.ZodNumber;
975
+ lng: z.ZodNumber;
976
+ label: z.ZodOptional<z.ZodString>;
977
+ title: z.ZodOptional<z.ZodString>;
978
+ }, z.core.$strip>>>;
979
+ label: z.ZodOptional<z.ZodString>;
980
+ }, z.core.$strip>, z.ZodObject<{
981
+ kind: z.ZodLiteral<"itineraryPlan">;
982
+ title: z.ZodString;
983
+ subtitle: z.ZodOptional<z.ZodString>;
984
+ stops: z.ZodArray<z.ZodObject<{
985
+ time: z.ZodOptional<z.ZodString>;
986
+ title: z.ZodString;
987
+ description: z.ZodOptional<z.ZodString>;
988
+ location: z.ZodOptional<z.ZodString>;
989
+ link: z.ZodOptional<z.ZodObject<{
990
+ label: z.ZodString;
991
+ url: z.ZodString;
992
+ }, z.core.$strip>>;
993
+ marker: z.ZodOptional<z.ZodNumber>;
994
+ }, z.core.$strip>>;
995
+ map: z.ZodOptional<z.ZodObject<{
996
+ center: z.ZodObject<{
997
+ lat: z.ZodNumber;
998
+ lng: z.ZodNumber;
999
+ }, z.core.$strip>;
1000
+ markers: z.ZodArray<z.ZodObject<{
1001
+ lat: z.ZodNumber;
1002
+ lng: z.ZodNumber;
1003
+ label: z.ZodOptional<z.ZodString>;
1004
+ title: z.ZodOptional<z.ZodString>;
1005
+ }, z.core.$strip>>;
1006
+ }, z.core.$strip>>;
1007
+ }, z.core.$strip>, z.ZodObject<{
1008
+ kind: z.ZodLiteral<"addressCheck">;
1009
+ formattedAddress: z.ZodOptional<z.ZodString>;
1010
+ status: z.ZodObject<{
1011
+ label: z.ZodString;
1012
+ tone: z.ZodOptional<z.ZodEnum<{
1013
+ default: "default";
1014
+ success: "success";
1015
+ warning: "warning";
1016
+ danger: "danger";
1017
+ info: "info";
1018
+ brand: "brand";
1019
+ }>>;
1020
+ }, z.core.$strip>;
1021
+ unconfirmed: z.ZodOptional<z.ZodArray<z.ZodString>>;
1022
+ }, z.core.$strip>, z.ZodObject<{
1023
+ kind: z.ZodLiteral<"dynamic">;
1024
+ title: z.ZodOptional<z.ZodString>;
1025
+ blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1026
+ type: z.ZodLiteral<"heading">;
1027
+ text: z.ZodString;
1028
+ level: z.ZodOptional<z.ZodNumber>;
1029
+ }, z.core.$strip>, z.ZodObject<{
1030
+ type: z.ZodLiteral<"text">;
1031
+ text: z.ZodString;
1032
+ muted: z.ZodOptional<z.ZodBoolean>;
1033
+ }, z.core.$strip>, z.ZodObject<{
1034
+ type: z.ZodLiteral<"statTiles">;
1035
+ tiles: z.ZodArray<z.ZodObject<{
1036
+ label: z.ZodString;
1037
+ value: z.ZodString;
1038
+ hint: z.ZodOptional<z.ZodString>;
1039
+ }, z.core.$strip>>;
1040
+ }, z.core.$strip>, z.ZodObject<{
1041
+ type: z.ZodLiteral<"keyValues">;
1042
+ items: z.ZodArray<z.ZodObject<{
1043
+ label: z.ZodString;
1044
+ value: z.ZodString;
1045
+ }, z.core.$strip>>;
1046
+ }, z.core.$strip>, z.ZodObject<{
1047
+ type: z.ZodLiteral<"badges">;
1048
+ items: z.ZodArray<z.ZodObject<{
1049
+ label: z.ZodString;
1050
+ tone: z.ZodOptional<z.ZodEnum<{
1051
+ default: "default";
1052
+ success: "success";
1053
+ warning: "warning";
1054
+ danger: "danger";
1055
+ info: "info";
1056
+ brand: "brand";
1057
+ }>>;
1058
+ }, z.core.$strip>>;
1059
+ }, z.core.$strip>, z.ZodObject<{
1060
+ type: z.ZodLiteral<"image">;
1061
+ url: z.ZodString;
1062
+ alt: z.ZodOptional<z.ZodString>;
1063
+ caption: z.ZodOptional<z.ZodString>;
1064
+ }, z.core.$strip>, z.ZodObject<{
1065
+ type: z.ZodLiteral<"timeline">;
1066
+ items: z.ZodArray<z.ZodObject<{
1067
+ title: z.ZodString;
1068
+ date: z.ZodOptional<z.ZodString>;
1069
+ amount: z.ZodOptional<z.ZodString>;
1070
+ status: z.ZodOptional<z.ZodObject<{
1071
+ label: z.ZodString;
1072
+ tone: z.ZodOptional<z.ZodEnum<{
1073
+ default: "default";
1074
+ success: "success";
1075
+ warning: "warning";
1076
+ danger: "danger";
1077
+ info: "info";
1078
+ brand: "brand";
1079
+ }>>;
1080
+ }, z.core.$strip>>;
1081
+ description: z.ZodOptional<z.ZodString>;
1082
+ action: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1083
+ kind: z.ZodLiteral<"open">;
1084
+ label: z.ZodOptional<z.ZodString>;
1085
+ url: z.ZodString;
1086
+ }, z.core.$strip>, z.ZodObject<{
1087
+ kind: z.ZodLiteral<"prompt">;
1088
+ label: z.ZodString;
1089
+ prompt: z.ZodString;
1090
+ tone: z.ZodOptional<z.ZodEnum<{
1091
+ default: "default";
1092
+ success: "success";
1093
+ warning: "warning";
1094
+ danger: "danger";
1095
+ info: "info";
1096
+ brand: "brand";
1097
+ }>>;
1098
+ }, z.core.$strip>], "kind">>;
1099
+ }, z.core.$strip>>;
1100
+ }, z.core.$strip>, z.ZodObject<{
1101
+ type: z.ZodLiteral<"table">;
1102
+ columns: z.ZodArray<z.ZodString>;
1103
+ rows: z.ZodArray<z.ZodArray<z.ZodString>>;
1104
+ }, z.core.$strip>, z.ZodObject<{
1105
+ type: z.ZodLiteral<"list">;
1106
+ ordered: z.ZodOptional<z.ZodBoolean>;
1107
+ items: z.ZodArray<z.ZodString>;
1108
+ }, z.core.$strip>, z.ZodObject<{
1109
+ type: z.ZodLiteral<"divider">;
1110
+ }, z.core.$strip>, z.ZodObject<{
1111
+ type: z.ZodLiteral<"button">;
1112
+ action: z.ZodDiscriminatedUnion<[z.ZodObject<{
1113
+ kind: z.ZodLiteral<"open">;
1114
+ label: z.ZodOptional<z.ZodString>;
1115
+ url: z.ZodString;
1116
+ }, z.core.$strip>, z.ZodObject<{
1117
+ kind: z.ZodLiteral<"prompt">;
1118
+ label: z.ZodString;
1119
+ prompt: z.ZodString;
1120
+ tone: z.ZodOptional<z.ZodEnum<{
1121
+ default: "default";
1122
+ success: "success";
1123
+ warning: "warning";
1124
+ danger: "danger";
1125
+ info: "info";
1126
+ brand: "brand";
1127
+ }>>;
1128
+ }, z.core.$strip>], "kind">;
1129
+ }, z.core.$strip>], "type">>;
1130
+ }, z.core.$strip>], "kind">;
1131
+ export type AgentCard = z.infer<typeof AgentCardSchema>;
1132
+ export type AgentCardKind = AgentCard["kind"];
1133
+ /** Validate a standalone card object. Returns null when it doesn't match. */
1134
+ export declare function parseCard(value: unknown): AgentCard | null;
1135
+ /**
1136
+ * Pull a card off a tool output (`{ ...result, card }`) and validate it.
1137
+ * The frontend calls this on `part.output`; returns null for outputs with no
1138
+ * (or a malformed) card so the caller falls back to the plain status row.
1139
+ */
1140
+ export declare function extractCard(toolOutput: unknown): AgentCard | null;
1141
+ //# sourceMappingURL=cards.d.ts.map