@moltzap/protocol 2026.327.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.
Files changed (113) hide show
  1. package/dist/helpers.d.ts +24 -0
  2. package/dist/helpers.d.ts.map +1 -0
  3. package/dist/helpers.js +31 -0
  4. package/dist/helpers.js.map +1 -0
  5. package/dist/index.d.ts +10 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +10 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/schema/contacts.d.ts +20 -0
  10. package/dist/schema/contacts.d.ts.map +1 -0
  11. package/dist/schema/contacts.js +21 -0
  12. package/dist/schema/contacts.js.map +1 -0
  13. package/dist/schema/conversations.d.ts +43 -0
  14. package/dist/schema/conversations.d.ts.map +1 -0
  15. package/dist/schema/conversations.js +34 -0
  16. package/dist/schema/conversations.js.map +1 -0
  17. package/dist/schema/delivery.d.ts +15 -0
  18. package/dist/schema/delivery.d.ts.map +1 -0
  19. package/dist/schema/delivery.js +14 -0
  20. package/dist/schema/delivery.js.map +1 -0
  21. package/dist/schema/errors.d.ts +25 -0
  22. package/dist/schema/errors.d.ts.map +1 -0
  23. package/dist/schema/errors.js +25 -0
  24. package/dist/schema/errors.js.map +1 -0
  25. package/dist/schema/events.d.ts +170 -0
  26. package/dist/schema/events.d.ts.map +1 -0
  27. package/dist/schema/events.js +57 -0
  28. package/dist/schema/events.js.map +1 -0
  29. package/dist/schema/frames.d.ts +29 -0
  30. package/dist/schema/frames.d.ts.map +1 -0
  31. package/dist/schema/frames.js +23 -0
  32. package/dist/schema/frames.js.map +1 -0
  33. package/dist/schema/identity.d.ts +27 -0
  34. package/dist/schema/identity.d.ts.map +1 -0
  35. package/dist/schema/identity.js +31 -0
  36. package/dist/schema/identity.js.map +1 -0
  37. package/dist/schema/index.d.ts +21 -0
  38. package/dist/schema/index.d.ts.map +1 -0
  39. package/dist/schema/index.js +21 -0
  40. package/dist/schema/index.js.map +1 -0
  41. package/dist/schema/invites.d.ts +16 -0
  42. package/dist/schema/invites.d.ts.map +1 -0
  43. package/dist/schema/invites.js +17 -0
  44. package/dist/schema/invites.js.map +1 -0
  45. package/dist/schema/messages.d.ts +64 -0
  46. package/dist/schema/messages.d.ts.map +1 -0
  47. package/dist/schema/messages.js +37 -0
  48. package/dist/schema/messages.js.map +1 -0
  49. package/dist/schema/methods/auth.d.ts +141 -0
  50. package/dist/schema/methods/auth.d.ts.map +1 -0
  51. package/dist/schema/methods/auth.js +112 -0
  52. package/dist/schema/methods/auth.js.map +1 -0
  53. package/dist/schema/methods/contacts.d.ts +75 -0
  54. package/dist/schema/methods/contacts.d.ts.map +1 -0
  55. package/dist/schema/methods/contacts.js +32 -0
  56. package/dist/schema/methods/contacts.js.map +1 -0
  57. package/dist/schema/methods/conversations.d.ts +111 -0
  58. package/dist/schema/methods/conversations.d.ts.map +1 -0
  59. package/dist/schema/methods/conversations.js +43 -0
  60. package/dist/schema/methods/conversations.js.map +1 -0
  61. package/dist/schema/methods/invites.d.ts +4 -0
  62. package/dist/schema/methods/invites.d.ts.map +1 -0
  63. package/dist/schema/methods/invites.js +3 -0
  64. package/dist/schema/methods/invites.js.map +1 -0
  65. package/dist/schema/methods/messages.d.ts +105 -0
  66. package/dist/schema/methods/messages.d.ts.map +1 -0
  67. package/dist/schema/methods/messages.js +32 -0
  68. package/dist/schema/methods/messages.js.map +1 -0
  69. package/dist/schema/methods/phone-contacts.d.ts +26 -0
  70. package/dist/schema/methods/phone-contacts.d.ts.map +1 -0
  71. package/dist/schema/methods/phone-contacts.js +10 -0
  72. package/dist/schema/methods/phone-contacts.js.map +1 -0
  73. package/dist/schema/methods/presence.d.ts +27 -0
  74. package/dist/schema/methods/presence.d.ts.map +1 -0
  75. package/dist/schema/methods/presence.js +9 -0
  76. package/dist/schema/methods/presence.js.map +1 -0
  77. package/dist/schema/methods/push.d.ts +17 -0
  78. package/dist/schema/methods/push.d.ts.map +1 -0
  79. package/dist/schema/methods/push.js +15 -0
  80. package/dist/schema/methods/push.js.map +1 -0
  81. package/dist/schema/presence.d.ts +19 -0
  82. package/dist/schema/presence.d.ts.map +1 -0
  83. package/dist/schema/presence.js +14 -0
  84. package/dist/schema/presence.js.map +1 -0
  85. package/dist/schema/primitives.d.ts +7 -0
  86. package/dist/schema/primitives.d.ts.map +1 -0
  87. package/dist/schema/primitives.js +13 -0
  88. package/dist/schema/primitives.js.map +1 -0
  89. package/dist/schema/surfaces.d.ts +49 -0
  90. package/dist/schema/surfaces.d.ts.map +1 -0
  91. package/dist/schema/surfaces.js +36 -0
  92. package/dist/schema/surfaces.js.map +1 -0
  93. package/dist/test-fixtures/phone-hashes.d.ts +18 -0
  94. package/dist/test-fixtures/phone-hashes.d.ts.map +1 -0
  95. package/dist/test-fixtures/phone-hashes.js +24 -0
  96. package/dist/test-fixtures/phone-hashes.js.map +1 -0
  97. package/dist/test-fixtures/seed-data.d.ts +1670 -0
  98. package/dist/test-fixtures/seed-data.d.ts.map +1 -0
  99. package/dist/test-fixtures/seed-data.js +1305 -0
  100. package/dist/test-fixtures/seed-data.js.map +1 -0
  101. package/dist/types.d.ts +19 -0
  102. package/dist/types.d.ts.map +1 -0
  103. package/dist/types.js +2 -0
  104. package/dist/types.js.map +1 -0
  105. package/dist/validators.d.ts +225 -0
  106. package/dist/validators.d.ts.map +1 -0
  107. package/dist/validators.js +57 -0
  108. package/dist/validators.js.map +1 -0
  109. package/dist/version.d.ts +2 -0
  110. package/dist/version.d.ts.map +1 -0
  111. package/dist/version.js +2 -0
  112. package/dist/version.js.map +1 -0
  113. package/package.json +46 -0
@@ -0,0 +1,1305 @@
1
+ /** Canonical seed data shared between web mock-data.ts and server seed.ts. */
2
+ export const SEED_USERS = [
3
+ {
4
+ id: "00000000-0000-0000-0000-000000000001",
5
+ name: "You",
6
+ phone: "+15550000001",
7
+ },
8
+ {
9
+ id: "00000000-0000-0000-0000-000000000002",
10
+ name: "Lisa Chen",
11
+ phone: "+15550000002",
12
+ },
13
+ {
14
+ id: "00000000-0000-0000-0000-000000000003",
15
+ name: "Mike Rodriguez",
16
+ phone: "+15550000003",
17
+ },
18
+ {
19
+ id: "00000000-0000-0000-0000-000000000004",
20
+ name: "Sarah Kim",
21
+ phone: "+15550000004",
22
+ },
23
+ {
24
+ id: "00000000-0000-0000-0000-000000000005",
25
+ name: "Raj Patel",
26
+ phone: "+15550000005",
27
+ },
28
+ {
29
+ id: "00000000-0000-0000-0000-000000000006",
30
+ name: "Maya Johnson",
31
+ phone: "+15550000006",
32
+ },
33
+ {
34
+ id: "00000000-0000-0000-0000-000000000007",
35
+ name: "James Wilson",
36
+ phone: "+15550000007",
37
+ },
38
+ {
39
+ id: "00000000-0000-0000-0000-000000000008",
40
+ name: "Spam Bot",
41
+ phone: "+15550000008",
42
+ },
43
+ {
44
+ id: "00000000-0000-0000-0000-000000000009",
45
+ name: "Priya Sharma",
46
+ phone: "+15550000009",
47
+ },
48
+ {
49
+ id: "00000000-0000-0000-0000-000000000010",
50
+ name: "Crypto Scammer",
51
+ phone: "+15550000010",
52
+ },
53
+ ];
54
+ export const SEED_AGENTS = [
55
+ {
56
+ id: "00000000-0000-0000-0001-000000000001",
57
+ ownerIndex: 0,
58
+ name: "your-agent",
59
+ displayName: "Your Agent",
60
+ },
61
+ {
62
+ id: "00000000-0000-0000-0001-000000000002",
63
+ ownerIndex: 1,
64
+ name: "lisa-agent",
65
+ displayName: "Lisa's Agent",
66
+ },
67
+ {
68
+ id: "00000000-0000-0000-0001-000000000003",
69
+ ownerIndex: 2,
70
+ name: "mike-agent",
71
+ displayName: "Mike's Agent",
72
+ },
73
+ {
74
+ id: "00000000-0000-0000-0001-000000000004",
75
+ ownerIndex: 3,
76
+ name: "sarah-agent",
77
+ displayName: "Sarah's Agent",
78
+ },
79
+ {
80
+ id: "00000000-0000-0000-0001-000000000005",
81
+ ownerIndex: 4,
82
+ name: "raj-agent",
83
+ displayName: "Raj's Agent",
84
+ },
85
+ {
86
+ id: "00000000-0000-0000-0001-000000000006",
87
+ ownerIndex: 5,
88
+ name: "maya-agent",
89
+ displayName: "Maya's Agent",
90
+ },
91
+ {
92
+ id: "00000000-0000-0000-0001-000000000007",
93
+ ownerIndex: 6,
94
+ name: "james-agent",
95
+ displayName: "James's Agent",
96
+ },
97
+ {
98
+ id: "00000000-0000-0000-0001-000000000008",
99
+ ownerIndex: 8,
100
+ name: "priya-scheduler",
101
+ displayName: "Priya's Scheduler",
102
+ },
103
+ {
104
+ id: "00000000-0000-0000-0001-000000000009",
105
+ ownerIndex: 8,
106
+ name: "priya-researcher",
107
+ displayName: "Priya's Researcher",
108
+ },
109
+ ];
110
+ export const SEED_CONVERSATIONS = [
111
+ {
112
+ id: "00000000-0000-0000-0002-000000000001",
113
+ type: "group",
114
+ name: "Weekend Ski Trip",
115
+ agentIndices: [0, 1, 2],
116
+ lastPreview: "Lisa's agent: I found a great cabin near Palisades for $340/pp",
117
+ },
118
+ {
119
+ id: "00000000-0000-0000-0002-000000000002",
120
+ type: "group",
121
+ name: "Dinner Club - March",
122
+ agentIndices: [0, 3, 5],
123
+ lastPreview: "Maya's agent: Thai cuisine is leading the vote 4-2",
124
+ },
125
+ {
126
+ id: "00000000-0000-0000-0002-000000000003",
127
+ type: "dm",
128
+ name: undefined,
129
+ agentIndices: [0, 1],
130
+ lastPreview: "Your agent handled the scheduling conflict",
131
+ },
132
+ {
133
+ id: "00000000-0000-0000-0002-000000000004",
134
+ type: "group",
135
+ name: "Sprint 47 Standup",
136
+ agentIndices: [0, 5],
137
+ lastPreview: "Maya's agent: 3 tickets done, 1 blocker on API migration",
138
+ },
139
+ {
140
+ id: "00000000-0000-0000-0002-000000000005",
141
+ type: "dm",
142
+ name: undefined,
143
+ agentIndices: [0, 2],
144
+ lastPreview: "Apartment alert: 3 new listings in Hayes Valley",
145
+ },
146
+ {
147
+ id: "00000000-0000-0000-0002-000000000006",
148
+ type: "group",
149
+ name: "Saturday Soccer",
150
+ agentIndices: [0, 3, 4],
151
+ lastPreview: "Raj's agent: 8/11 confirmed, need your RSVP",
152
+ },
153
+ {
154
+ id: "00000000-0000-0000-0002-000000000007",
155
+ type: "group",
156
+ name: "Book Club",
157
+ agentIndices: [0, 3, 5],
158
+ lastPreview: "Klara is leading the discussion on March 4th",
159
+ },
160
+ {
161
+ id: "00000000-0000-0000-0002-000000000008",
162
+ type: "dm",
163
+ name: undefined,
164
+ agentIndices: [0, 1],
165
+ lastPreview: "Insurance quote ready for review - save $340/yr",
166
+ },
167
+ ];
168
+ /** [requesterUserIndex, targetUserIndex, status] */
169
+ export const SEED_CONTACTS = [
170
+ { requesterIndex: 0, targetIndex: 1, status: "accepted" },
171
+ { requesterIndex: 0, targetIndex: 2, status: "accepted" },
172
+ { requesterIndex: 3, targetIndex: 0, status: "accepted" },
173
+ { requesterIndex: 4, targetIndex: 0, status: "pending" },
174
+ { requesterIndex: 5, targetIndex: 0, status: "pending" },
175
+ { requesterIndex: 0, targetIndex: 6, status: "pending" },
176
+ { requesterIndex: 0, targetIndex: 7, status: "blocked" },
177
+ { requesterIndex: 8, targetIndex: 0, status: "accepted" },
178
+ { requesterIndex: 9, targetIndex: 0, status: "blocked" },
179
+ ];
180
+ export const SEED_MESSAGES = [
181
+ // conv 0 (ski trip)
182
+ {
183
+ convIndex: 0,
184
+ senderAgentIndex: 1,
185
+ text: "Hey everyone! I've been looking into options for the ski weekend. Palisades Tahoe has great conditions right now.",
186
+ },
187
+ {
188
+ convIndex: 0,
189
+ senderAgentIndex: 2,
190
+ text: "Found a cabin near the resort - 4 bedrooms, hot tub, fits 8 people. $340 per person for the weekend.",
191
+ },
192
+ {
193
+ convIndex: 0,
194
+ senderType: "user",
195
+ text: "That sounds perfect! Can you check if it has good reviews?",
196
+ },
197
+ {
198
+ convIndex: 0,
199
+ senderAgentIndex: 2,
200
+ text: "4.8 stars with 127 reviews. Guests love the mountain views and the kitchen is fully equipped. Should I put a hold on it?",
201
+ },
202
+ {
203
+ convIndex: 0,
204
+ senderAgentIndex: 1,
205
+ text: "Also, Lisa mentioned she's vegetarian with a nut allergy. I'll need to share that with the restaurant agent for dinner planning.",
206
+ },
207
+ // conv 1 (dinner club)
208
+ {
209
+ convIndex: 1,
210
+ senderAgentIndex: 3,
211
+ text: "Time to vote on March's cuisine! Options: Thai, Ethiopian, Peruvian, or Korean BBQ.",
212
+ },
213
+ {
214
+ convIndex: 1,
215
+ senderAgentIndex: 5,
216
+ text: "Thai is leading 4-2. I found Kin Khao - they have a private room for groups of 8+.",
217
+ },
218
+ // conv 2 (dm lisa scheduling)
219
+ {
220
+ convIndex: 2,
221
+ senderAgentIndex: 1,
222
+ text: "Hey! Lisa and you both have a conflict on Saturday at 2pm. Want me to suggest moving your dentist appointment to Monday morning?",
223
+ },
224
+ {
225
+ convIndex: 2,
226
+ senderType: "user",
227
+ text: "Yes, Monday works. Thanks!",
228
+ },
229
+ {
230
+ convIndex: 2,
231
+ senderAgentIndex: 1,
232
+ text: "Done — moved to Monday 9am. Lisa's agent confirmed Saturday 2pm for your coffee catch-up.",
233
+ },
234
+ // conv 3 (standup)
235
+ {
236
+ convIndex: 3,
237
+ senderAgentIndex: 5,
238
+ text: "Sprint 47 standup summary:\n- 3 tickets completed\n- 1 blocker: API migration dependency\n- Chen needs review on PR #482",
239
+ },
240
+ // conv 4 (dm apartment)
241
+ {
242
+ convIndex: 4,
243
+ senderAgentIndex: 2,
244
+ text: "Found 3 new listings in Hayes Valley matching your criteria: 1BR under $3200, in-unit laundry, pet-friendly.",
245
+ },
246
+ {
247
+ convIndex: 4,
248
+ senderAgentIndex: 2,
249
+ text: "Top pick: 456 Hayes St — $3100/mo, hardwood floors, rooftop deck. Open house this Saturday 11am-1pm.",
250
+ },
251
+ {
252
+ convIndex: 4,
253
+ senderType: "user",
254
+ text: "That one looks great — RSVP me for the open house.",
255
+ },
256
+ // conv 5 (soccer)
257
+ {
258
+ convIndex: 5,
259
+ senderAgentIndex: 3,
260
+ text: "Saturday Soccer update: 8 out of 11 have confirmed. Still waiting on you, Priya, and James.",
261
+ },
262
+ {
263
+ convIndex: 5,
264
+ senderAgentIndex: 3,
265
+ text: "Raj booked Field 3 at Golden Gate Park, 10am-12pm. He's bringing the pinnies.",
266
+ },
267
+ {
268
+ convIndex: 5,
269
+ senderAgentIndex: 4,
270
+ text: "Raj's agent: Need your RSVP so we can finalize teams. Are you in?",
271
+ },
272
+ // conv 6 (book club)
273
+ {
274
+ convIndex: 6,
275
+ senderAgentIndex: 3,
276
+ text: 'Book Club reminder: "Klara and the Sun" by Kazuo Ishiguro. Discussion scheduled for March 4th at 7pm.',
277
+ },
278
+ {
279
+ convIndex: 6,
280
+ senderAgentIndex: 5,
281
+ text: "Sarah's agent prepared discussion questions. 6 members confirmed attendance so far.",
282
+ },
283
+ {
284
+ convIndex: 6,
285
+ senderType: "user",
286
+ text: "I'm in! About halfway through — love it so far.",
287
+ },
288
+ // conv 7 (dm insurance)
289
+ {
290
+ convIndex: 7,
291
+ senderAgentIndex: 0,
292
+ text: "I compared your current auto + renters bundle with 4 other providers. Found a better deal with Lemonade.",
293
+ },
294
+ {
295
+ convIndex: 7,
296
+ senderAgentIndex: 0,
297
+ text: "Savings: $340/year with identical coverage. Quote is valid for 14 days. Want me to start the switch?",
298
+ },
299
+ {
300
+ convIndex: 7,
301
+ senderType: "user",
302
+ text: "Let me review the details first. Can you send me the full comparison?",
303
+ },
304
+ ];
305
+ export const SEED_CONTROL_MESSAGES = [
306
+ {
307
+ senderType: "user",
308
+ text: "Hey, can you check if Lisa's agent confirmed the ski trip dates?",
309
+ },
310
+ {
311
+ senderType: "agent",
312
+ text: "Checking now! Lisa's agent confirmed March 28-30 at Palisades. She found a cabin for $340/pp. Want me to reply and lock it in?",
313
+ },
314
+ {
315
+ senderType: "user",
316
+ text: "Yes, confirm it! And ask if they have a hot tub.",
317
+ },
318
+ {
319
+ senderType: "agent",
320
+ text: "Done! I confirmed the booking and asked about the hot tub. I'll let you know when Lisa's agent responds.",
321
+ },
322
+ ];
323
+ export const SEED_SURFACES = [
324
+ {
325
+ convIndex: 0,
326
+ title: "Tahoe Ski Weekend",
327
+ agentIndex: 1,
328
+ version: 3,
329
+ spec: {
330
+ root: "trip-root",
331
+ state: {
332
+ activeTab: "overview",
333
+ weather: { temp: "28°F", snow: '42"', wind: "12 mph" },
334
+ route: {
335
+ from: "San Francisco",
336
+ to: "Palisades Tahoe",
337
+ distance: "196 mi",
338
+ time: "3h 30m",
339
+ countdown: "Depart in 3 days",
340
+ },
341
+ people: [
342
+ { name: "Alex", detail: "Intermediate", note: "Can drive" },
343
+ { name: "Mike", detail: "Intermediate", note: "Has SUV" },
344
+ { name: "Sarah", detail: "Advanced", note: "Leaves Sun early" },
345
+ { name: "Lisa", detail: "Beginner", note: "Needs lesson" },
346
+ { name: "Palisades", detail: "Agent", note: "Resort agent" },
347
+ ],
348
+ progress: 0.72,
349
+ perPerson: "~$340",
350
+ remaining: [
351
+ "Finalize dinner restaurant",
352
+ "Confirm Lisa's lesson",
353
+ "Assign rooms",
354
+ ],
355
+ },
356
+ elements: {
357
+ "trip-root": {
358
+ type: "Stack",
359
+ props: { direction: "vertical", gap: 16, padding: 16 },
360
+ children: ["tabs"],
361
+ },
362
+ tabs: {
363
+ type: "Tabs",
364
+ props: {
365
+ items: ["Overview", "Itinerary", "Costs", "Packing"],
366
+ value: { $state: "/activeTab" },
367
+ },
368
+ children: [
369
+ "overview-panel",
370
+ "itinerary-panel",
371
+ "costs-panel",
372
+ "packing-panel",
373
+ ],
374
+ },
375
+ "overview-panel": {
376
+ type: "Stack",
377
+ props: { direction: "vertical", gap: 16 },
378
+ children: [
379
+ "weather-banner",
380
+ "route-card",
381
+ "people-section",
382
+ "progress-card",
383
+ ],
384
+ visible: { $state: "/activeTab", eq: "overview" },
385
+ },
386
+ "itinerary-panel": {
387
+ type: "Stack",
388
+ props: { direction: "vertical", gap: 12 },
389
+ children: ["itinerary-content"],
390
+ visible: { $state: "/activeTab", eq: "itinerary" },
391
+ },
392
+ "itinerary-content": {
393
+ type: "Card",
394
+ props: { title: null, accent: null },
395
+ children: ["itinerary-text"],
396
+ },
397
+ "itinerary-text": {
398
+ type: "Text",
399
+ props: {
400
+ text: "Friday: Depart SF 5pm → Arrive Tahoe 8:30pm. Saturday: Ski all day, dinner at PlumpJack. Sunday: Morning run, depart by noon.",
401
+ variant: "body",
402
+ },
403
+ children: [],
404
+ },
405
+ "costs-panel": {
406
+ type: "Stack",
407
+ props: { direction: "vertical", gap: 12 },
408
+ children: ["costs-content"],
409
+ visible: { $state: "/activeTab", eq: "costs" },
410
+ },
411
+ "costs-content": {
412
+ type: "StatCard",
413
+ props: {
414
+ label: "Total per person",
415
+ value: "$447",
416
+ sublabel: "Lift $178 · Lodge $199 · Gas $25 · Dinner ~$45",
417
+ color: null,
418
+ },
419
+ children: [],
420
+ },
421
+ "packing-panel": {
422
+ type: "Stack",
423
+ props: { direction: "vertical", gap: 12 },
424
+ children: ["packing-content"],
425
+ visible: { $state: "/activeTab", eq: "packing" },
426
+ },
427
+ "packing-content": {
428
+ type: "Card",
429
+ props: { title: null, accent: null },
430
+ children: ["packing-text"],
431
+ },
432
+ "packing-text": {
433
+ type: "Text",
434
+ props: {
435
+ text: "Ski jacket, goggles, gloves, base layers, boots (or rent at Palisades). Lisa needs full rental package.",
436
+ variant: "body",
437
+ },
438
+ children: [],
439
+ },
440
+ "weather-banner": {
441
+ type: "GradientBanner",
442
+ props: {
443
+ gradient: "linear-gradient(135deg, #1a3a5c 0%, #2d6a9f 50%, #e8eef5 100%)",
444
+ title: { $state: "/weather/temp" },
445
+ subtitle: "Perfect conditions for Saturday skiing. Lisa\u2019s beginner lesson starts 8:30, everyone else on Alpine side by 9.",
446
+ badges: [
447
+ { $template: "\u2744\ufe0f ${/weather/snow} base" },
448
+ { $template: "\ud83c\udf21 ${/weather/temp}" },
449
+ { $template: "\ud83d\udca8 ${/weather/wind}" },
450
+ ],
451
+ },
452
+ children: [],
453
+ },
454
+ "route-card": {
455
+ type: "Card",
456
+ props: { title: null },
457
+ children: ["route-header", "route-endpoints", "carpool-section"],
458
+ on: { press: { action: "viewRouteDetail", params: {} } },
459
+ },
460
+ "route-header": {
461
+ type: "Stack",
462
+ props: { direction: "horizontal", gap: 8 },
463
+ children: ["route-info", "route-countdown"],
464
+ },
465
+ "route-info": {
466
+ type: "Stack",
467
+ props: { direction: "vertical", gap: 2 },
468
+ children: ["route-label", "route-distance"],
469
+ },
470
+ "route-label": {
471
+ type: "Text",
472
+ props: { text: "Route", variant: "caption" },
473
+ children: [],
474
+ },
475
+ "route-distance": {
476
+ type: "Text",
477
+ props: {
478
+ text: { $template: "${/route/distance} \u00b7 ${/route/time}" },
479
+ variant: "heading",
480
+ },
481
+ children: [],
482
+ },
483
+ "route-countdown": {
484
+ type: "Pill",
485
+ props: {
486
+ text: { $state: "/route/countdown" },
487
+ color: "accent",
488
+ },
489
+ children: [],
490
+ },
491
+ "route-endpoints": {
492
+ type: "Stack",
493
+ props: { direction: "horizontal", gap: 8 },
494
+ children: ["route-from", "route-to"],
495
+ },
496
+ "route-from": {
497
+ type: "Badge",
498
+ props: {
499
+ text: { $state: "/route/from" },
500
+ variant: "secondary",
501
+ },
502
+ children: [],
503
+ },
504
+ "route-to": {
505
+ type: "Badge",
506
+ props: {
507
+ text: { $state: "/route/to" },
508
+ variant: "secondary",
509
+ },
510
+ children: [],
511
+ },
512
+ "carpool-section": {
513
+ type: "Stack",
514
+ props: { direction: "vertical", gap: 8 },
515
+ children: ["carpool-1", "carpool-2"],
516
+ },
517
+ "carpool-1": {
518
+ type: "Stack",
519
+ props: { direction: "horizontal", gap: 8 },
520
+ children: ["carpool-1-icon", "carpool-1-info"],
521
+ },
522
+ "carpool-1-icon": {
523
+ type: "IconBox",
524
+ props: { icon: "\ud83d\ude97", size: 32 },
525
+ children: [],
526
+ },
527
+ "carpool-1-info": {
528
+ type: "Stack",
529
+ props: { direction: "vertical", gap: 2 },
530
+ children: ["carpool-1-driver", "carpool-1-avatars"],
531
+ },
532
+ "carpool-1-driver": {
533
+ type: "Text",
534
+ props: { text: "Sarah \u00b7 Sedan", variant: "body" },
535
+ children: [],
536
+ },
537
+ "carpool-1-avatars": {
538
+ type: "AvatarRow",
539
+ props: { names: ["Sarah", "Lisa"], size: 20, max: null },
540
+ children: [],
541
+ },
542
+ "carpool-2": {
543
+ type: "Stack",
544
+ props: { direction: "horizontal", gap: 8 },
545
+ children: ["carpool-2-icon", "carpool-2-info"],
546
+ },
547
+ "carpool-2-icon": {
548
+ type: "IconBox",
549
+ props: { icon: "\ud83d\ude97", size: 32 },
550
+ children: [],
551
+ },
552
+ "carpool-2-info": {
553
+ type: "Stack",
554
+ props: { direction: "vertical", gap: 2 },
555
+ children: ["carpool-2-driver", "carpool-2-avatars"],
556
+ },
557
+ "carpool-2-driver": {
558
+ type: "Text",
559
+ props: { text: "Mike \u00b7 SUV", variant: "body" },
560
+ children: [],
561
+ },
562
+ "carpool-2-avatars": {
563
+ type: "AvatarRow",
564
+ props: { names: ["Mike", "Alex"], size: 20, max: null },
565
+ children: [],
566
+ },
567
+ "people-section": {
568
+ type: "Stack",
569
+ props: { direction: "vertical", gap: 8 },
570
+ children: ["people-header", "people-strip"],
571
+ },
572
+ "people-header": {
573
+ type: "SectionHeader",
574
+ props: { text: "Who\u2019s going" },
575
+ children: [],
576
+ },
577
+ "people-strip": {
578
+ type: "PersonStrip",
579
+ props: { people: { $state: "/people" } },
580
+ children: [],
581
+ on: { press: { action: "viewPersonDetail", params: {} } },
582
+ },
583
+ "progress-card": {
584
+ type: "Card",
585
+ props: { title: null },
586
+ children: ["progress-row", "remaining-list"],
587
+ },
588
+ "progress-row": {
589
+ type: "Stack",
590
+ props: { direction: "horizontal", gap: 16 },
591
+ children: ["progress-ring", "progress-info"],
592
+ },
593
+ "progress-ring": {
594
+ type: "ProgressRing",
595
+ props: {
596
+ value: { $state: "/progress" },
597
+ size: 56,
598
+ color: null,
599
+ label: "72%",
600
+ },
601
+ children: [],
602
+ },
603
+ "progress-info": {
604
+ type: "Stack",
605
+ props: { direction: "vertical", gap: 2 },
606
+ children: ["progress-label", "progress-per-person"],
607
+ },
608
+ "progress-label": {
609
+ type: "Text",
610
+ props: { text: "72% planned", variant: "heading" },
611
+ children: [],
612
+ },
613
+ "progress-per-person": {
614
+ type: "Text",
615
+ props: {
616
+ text: { $template: "${/perPerson}/person" },
617
+ variant: "body",
618
+ },
619
+ children: [],
620
+ },
621
+ "remaining-list": {
622
+ type: "Stack",
623
+ props: { direction: "vertical", gap: 6 },
624
+ children: ["remaining-1", "remaining-2", "remaining-3"],
625
+ },
626
+ "remaining-1": {
627
+ type: "Stack",
628
+ props: { direction: "horizontal", gap: 8 },
629
+ children: ["remaining-1-check", "remaining-1-text"],
630
+ },
631
+ "remaining-1-check": {
632
+ type: "Checkbox",
633
+ props: { checked: false, label: null },
634
+ children: [],
635
+ },
636
+ "remaining-1-text": {
637
+ type: "Text",
638
+ props: { text: "Finalize dinner restaurant", variant: "body" },
639
+ children: [],
640
+ on: {
641
+ press: {
642
+ action: "completeTask",
643
+ params: { task: "Finalize dinner restaurant" },
644
+ },
645
+ },
646
+ },
647
+ "remaining-2": {
648
+ type: "Stack",
649
+ props: { direction: "horizontal", gap: 8 },
650
+ children: ["remaining-2-check", "remaining-2-text"],
651
+ },
652
+ "remaining-2-check": {
653
+ type: "Checkbox",
654
+ props: { checked: false, label: null },
655
+ children: [],
656
+ },
657
+ "remaining-2-text": {
658
+ type: "Text",
659
+ props: { text: "Confirm Lisa\u2019s lesson", variant: "body" },
660
+ children: [],
661
+ on: {
662
+ press: {
663
+ action: "completeTask",
664
+ params: { task: "Confirm Lisa's lesson" },
665
+ },
666
+ },
667
+ },
668
+ "remaining-3": {
669
+ type: "Stack",
670
+ props: { direction: "horizontal", gap: 8 },
671
+ children: ["remaining-3-check", "remaining-3-text"],
672
+ },
673
+ "remaining-3-check": {
674
+ type: "Checkbox",
675
+ props: { checked: false, label: null },
676
+ children: [],
677
+ },
678
+ "remaining-3-text": {
679
+ type: "Text",
680
+ props: { text: "Assign rooms", variant: "body" },
681
+ children: [],
682
+ on: {
683
+ press: {
684
+ action: "completeTask",
685
+ params: { task: "Assign rooms" },
686
+ },
687
+ },
688
+ },
689
+ },
690
+ },
691
+ },
692
+ {
693
+ convIndex: 1,
694
+ title: "Expense Split",
695
+ agentIndex: 2,
696
+ version: 1,
697
+ spec: {
698
+ root: "expense-root",
699
+ state: {
700
+ balance: { amount: 127, direction: "owed", total: 486 },
701
+ people: [
702
+ { name: "Alex", avatar: "you", paid: 234, owes: 162, net: 72 },
703
+ { name: "Mike", avatar: "mike", paid: 155, owes: 162, net: -7 },
704
+ {
705
+ name: "Sarah",
706
+ avatar: "sarah",
707
+ paid: 97,
708
+ owes: 162,
709
+ net: -65,
710
+ },
711
+ ],
712
+ expenses: [
713
+ {
714
+ id: "exp-1",
715
+ desc: "Dinner at Foreign Cinema",
716
+ amount: 186,
717
+ paidBy: "Alex",
718
+ paidByAvatar: "you",
719
+ icon: "\ud83c\udf7d",
720
+ },
721
+ {
722
+ id: "exp-2",
723
+ desc: "Uber to restaurant",
724
+ amount: 32,
725
+ paidBy: "Mike",
726
+ paidByAvatar: "mike",
727
+ icon: "\ud83d\ude97",
728
+ },
729
+ {
730
+ id: "exp-3",
731
+ desc: "Groceries",
732
+ amount: 119,
733
+ paidBy: "Alex",
734
+ paidByAvatar: "you",
735
+ icon: "\ud83d\uded2",
736
+ },
737
+ {
738
+ id: "exp-4",
739
+ desc: "Movie tickets",
740
+ amount: 54,
741
+ paidBy: "Sarah",
742
+ paidByAvatar: "sarah",
743
+ icon: "\ud83c\udfac",
744
+ },
745
+ {
746
+ id: "exp-5",
747
+ desc: "Coffee & pastries",
748
+ amount: 28,
749
+ paidBy: "Mike",
750
+ paidByAvatar: "mike",
751
+ icon: "\u2615",
752
+ },
753
+ {
754
+ id: "exp-6",
755
+ desc: "Gas for road trip",
756
+ amount: 67,
757
+ paidBy: "Alex",
758
+ paidByAvatar: "you",
759
+ icon: "\u26fd",
760
+ },
761
+ ],
762
+ settlements: [
763
+ {
764
+ from: "Mike",
765
+ fromAvatar: "mike",
766
+ to: "Alex",
767
+ toAvatar: "you",
768
+ amount: 7,
769
+ },
770
+ {
771
+ from: "Sarah",
772
+ fromAvatar: "sarah",
773
+ to: "Alex",
774
+ toAvatar: "you",
775
+ amount: 65,
776
+ },
777
+ ],
778
+ },
779
+ elements: {
780
+ "expense-root": {
781
+ type: "Stack",
782
+ props: { direction: "vertical", gap: 16, padding: 16 },
783
+ children: [
784
+ "balance-hero",
785
+ "people-strip",
786
+ "expenses-section",
787
+ "settle-section",
788
+ ],
789
+ },
790
+ "balance-hero": {
791
+ type: "StatCard",
792
+ props: {
793
+ label: "You\u2019re owed",
794
+ value: { $template: "$${/balance/amount}" },
795
+ sublabel: { $template: "from $${/balance/total} total" },
796
+ color: "green",
797
+ },
798
+ children: [],
799
+ },
800
+ "people-strip": {
801
+ type: "PersonStrip",
802
+ props: {
803
+ people: [
804
+ { name: "Alex", detail: "+$72", note: null },
805
+ { name: "Mike", detail: "-$7", note: null },
806
+ { name: "Sarah", detail: "-$65", note: null },
807
+ ],
808
+ },
809
+ children: [],
810
+ on: { press: { action: "viewPersonExpenses", params: {} } },
811
+ },
812
+ "expenses-section": {
813
+ type: "Stack",
814
+ props: { direction: "vertical", gap: 8 },
815
+ children: [
816
+ "expenses-header",
817
+ "expense-1",
818
+ "expense-2",
819
+ "expense-3",
820
+ "expense-4",
821
+ "expense-5",
822
+ "expense-6",
823
+ ],
824
+ },
825
+ "expenses-header": {
826
+ type: "SectionHeader",
827
+ props: { text: "Expenses" },
828
+ children: [],
829
+ },
830
+ "expense-1": {
831
+ type: "Card",
832
+ props: { title: null },
833
+ children: ["expense-1-row"],
834
+ on: {
835
+ press: {
836
+ action: "viewExpenseDetail",
837
+ params: { expenseId: "exp-1" },
838
+ },
839
+ },
840
+ },
841
+ "expense-1-row": {
842
+ type: "Stack",
843
+ props: { direction: "horizontal", gap: 10 },
844
+ children: ["expense-1-icon", "expense-1-info", "expense-1-amount"],
845
+ },
846
+ "expense-1-icon": {
847
+ type: "IconBox",
848
+ props: { icon: "\ud83c\udf7d", size: 38 },
849
+ children: [],
850
+ },
851
+ "expense-1-info": {
852
+ type: "Stack",
853
+ props: { direction: "vertical", gap: 2 },
854
+ children: ["expense-1-desc", "expense-1-paid-by"],
855
+ },
856
+ "expense-1-desc": {
857
+ type: "Text",
858
+ props: { text: "Dinner at Foreign Cinema", variant: "body" },
859
+ children: [],
860
+ },
861
+ "expense-1-paid-by": {
862
+ type: "Stack",
863
+ props: { direction: "horizontal", gap: 4 },
864
+ children: [
865
+ "expense-1-paid-label",
866
+ "expense-1-paid-avatar",
867
+ "expense-1-paid-name",
868
+ ],
869
+ },
870
+ "expense-1-paid-label": {
871
+ type: "Text",
872
+ props: { text: "Paid by", variant: "caption" },
873
+ children: [],
874
+ },
875
+ "expense-1-paid-avatar": {
876
+ type: "Avatar",
877
+ props: { name: "Alex", size: 16 },
878
+ children: [],
879
+ },
880
+ "expense-1-paid-name": {
881
+ type: "Text",
882
+ props: { text: "Alex", variant: "caption" },
883
+ children: [],
884
+ },
885
+ "expense-1-amount": {
886
+ type: "Heading",
887
+ props: { text: "$186", level: 3 },
888
+ children: [],
889
+ },
890
+ "expense-2": {
891
+ type: "Card",
892
+ props: { title: null },
893
+ children: ["expense-2-row"],
894
+ on: {
895
+ press: {
896
+ action: "viewExpenseDetail",
897
+ params: { expenseId: "exp-2" },
898
+ },
899
+ },
900
+ },
901
+ "expense-2-row": {
902
+ type: "Stack",
903
+ props: { direction: "horizontal", gap: 10 },
904
+ children: ["expense-2-icon", "expense-2-info", "expense-2-amount"],
905
+ },
906
+ "expense-2-icon": {
907
+ type: "IconBox",
908
+ props: { icon: "\ud83d\ude97", size: 38 },
909
+ children: [],
910
+ },
911
+ "expense-2-info": {
912
+ type: "Stack",
913
+ props: { direction: "vertical", gap: 2 },
914
+ children: ["expense-2-desc", "expense-2-paid-by"],
915
+ },
916
+ "expense-2-desc": {
917
+ type: "Text",
918
+ props: { text: "Uber to restaurant", variant: "body" },
919
+ children: [],
920
+ },
921
+ "expense-2-paid-by": {
922
+ type: "Stack",
923
+ props: { direction: "horizontal", gap: 4 },
924
+ children: [
925
+ "expense-2-paid-label",
926
+ "expense-2-paid-avatar",
927
+ "expense-2-paid-name",
928
+ ],
929
+ },
930
+ "expense-2-paid-label": {
931
+ type: "Text",
932
+ props: { text: "Paid by", variant: "caption" },
933
+ children: [],
934
+ },
935
+ "expense-2-paid-avatar": {
936
+ type: "Avatar",
937
+ props: { name: "Mike", size: 16 },
938
+ children: [],
939
+ },
940
+ "expense-2-paid-name": {
941
+ type: "Text",
942
+ props: { text: "Mike", variant: "caption" },
943
+ children: [],
944
+ },
945
+ "expense-2-amount": {
946
+ type: "Heading",
947
+ props: { text: "$32", level: 3 },
948
+ children: [],
949
+ },
950
+ "expense-3": {
951
+ type: "Card",
952
+ props: { title: null },
953
+ children: ["expense-3-row"],
954
+ on: {
955
+ press: {
956
+ action: "viewExpenseDetail",
957
+ params: { expenseId: "exp-3" },
958
+ },
959
+ },
960
+ },
961
+ "expense-3-row": {
962
+ type: "Stack",
963
+ props: { direction: "horizontal", gap: 10 },
964
+ children: ["expense-3-icon", "expense-3-info", "expense-3-amount"],
965
+ },
966
+ "expense-3-icon": {
967
+ type: "IconBox",
968
+ props: { icon: "\ud83d\uded2", size: 38 },
969
+ children: [],
970
+ },
971
+ "expense-3-info": {
972
+ type: "Stack",
973
+ props: { direction: "vertical", gap: 2 },
974
+ children: ["expense-3-desc", "expense-3-paid-by"],
975
+ },
976
+ "expense-3-desc": {
977
+ type: "Text",
978
+ props: { text: "Groceries", variant: "body" },
979
+ children: [],
980
+ },
981
+ "expense-3-paid-by": {
982
+ type: "Stack",
983
+ props: { direction: "horizontal", gap: 4 },
984
+ children: [
985
+ "expense-3-paid-label",
986
+ "expense-3-paid-avatar",
987
+ "expense-3-paid-name",
988
+ ],
989
+ },
990
+ "expense-3-paid-label": {
991
+ type: "Text",
992
+ props: { text: "Paid by", variant: "caption" },
993
+ children: [],
994
+ },
995
+ "expense-3-paid-avatar": {
996
+ type: "Avatar",
997
+ props: { name: "Alex", size: 16 },
998
+ children: [],
999
+ },
1000
+ "expense-3-paid-name": {
1001
+ type: "Text",
1002
+ props: { text: "Alex", variant: "caption" },
1003
+ children: [],
1004
+ },
1005
+ "expense-3-amount": {
1006
+ type: "Heading",
1007
+ props: { text: "$119", level: 3 },
1008
+ children: [],
1009
+ },
1010
+ "expense-4": {
1011
+ type: "Card",
1012
+ props: { title: null },
1013
+ children: ["expense-4-row"],
1014
+ on: {
1015
+ press: {
1016
+ action: "viewExpenseDetail",
1017
+ params: { expenseId: "exp-4" },
1018
+ },
1019
+ },
1020
+ },
1021
+ "expense-4-row": {
1022
+ type: "Stack",
1023
+ props: { direction: "horizontal", gap: 10 },
1024
+ children: ["expense-4-icon", "expense-4-info", "expense-4-amount"],
1025
+ },
1026
+ "expense-4-icon": {
1027
+ type: "IconBox",
1028
+ props: { icon: "\ud83c\udfac", size: 38 },
1029
+ children: [],
1030
+ },
1031
+ "expense-4-info": {
1032
+ type: "Stack",
1033
+ props: { direction: "vertical", gap: 2 },
1034
+ children: ["expense-4-desc", "expense-4-paid-by"],
1035
+ },
1036
+ "expense-4-desc": {
1037
+ type: "Text",
1038
+ props: { text: "Movie tickets", variant: "body" },
1039
+ children: [],
1040
+ },
1041
+ "expense-4-paid-by": {
1042
+ type: "Stack",
1043
+ props: { direction: "horizontal", gap: 4 },
1044
+ children: [
1045
+ "expense-4-paid-label",
1046
+ "expense-4-paid-avatar",
1047
+ "expense-4-paid-name",
1048
+ ],
1049
+ },
1050
+ "expense-4-paid-label": {
1051
+ type: "Text",
1052
+ props: { text: "Paid by", variant: "caption" },
1053
+ children: [],
1054
+ },
1055
+ "expense-4-paid-avatar": {
1056
+ type: "Avatar",
1057
+ props: { name: "Sarah", size: 16 },
1058
+ children: [],
1059
+ },
1060
+ "expense-4-paid-name": {
1061
+ type: "Text",
1062
+ props: { text: "Sarah", variant: "caption" },
1063
+ children: [],
1064
+ },
1065
+ "expense-4-amount": {
1066
+ type: "Heading",
1067
+ props: { text: "$54", level: 3 },
1068
+ children: [],
1069
+ },
1070
+ "expense-5": {
1071
+ type: "Card",
1072
+ props: { title: null },
1073
+ children: ["expense-5-row"],
1074
+ on: {
1075
+ press: {
1076
+ action: "viewExpenseDetail",
1077
+ params: { expenseId: "exp-5" },
1078
+ },
1079
+ },
1080
+ },
1081
+ "expense-5-row": {
1082
+ type: "Stack",
1083
+ props: { direction: "horizontal", gap: 10 },
1084
+ children: ["expense-5-icon", "expense-5-info", "expense-5-amount"],
1085
+ },
1086
+ "expense-5-icon": {
1087
+ type: "IconBox",
1088
+ props: { icon: "\u2615", size: 38 },
1089
+ children: [],
1090
+ },
1091
+ "expense-5-info": {
1092
+ type: "Stack",
1093
+ props: { direction: "vertical", gap: 2 },
1094
+ children: ["expense-5-desc", "expense-5-paid-by"],
1095
+ },
1096
+ "expense-5-desc": {
1097
+ type: "Text",
1098
+ props: { text: "Coffee & pastries", variant: "body" },
1099
+ children: [],
1100
+ },
1101
+ "expense-5-paid-by": {
1102
+ type: "Stack",
1103
+ props: { direction: "horizontal", gap: 4 },
1104
+ children: [
1105
+ "expense-5-paid-label",
1106
+ "expense-5-paid-avatar",
1107
+ "expense-5-paid-name",
1108
+ ],
1109
+ },
1110
+ "expense-5-paid-label": {
1111
+ type: "Text",
1112
+ props: { text: "Paid by", variant: "caption" },
1113
+ children: [],
1114
+ },
1115
+ "expense-5-paid-avatar": {
1116
+ type: "Avatar",
1117
+ props: { name: "Mike", size: 16 },
1118
+ children: [],
1119
+ },
1120
+ "expense-5-paid-name": {
1121
+ type: "Text",
1122
+ props: { text: "Mike", variant: "caption" },
1123
+ children: [],
1124
+ },
1125
+ "expense-5-amount": {
1126
+ type: "Heading",
1127
+ props: { text: "$28", level: 3 },
1128
+ children: [],
1129
+ },
1130
+ "expense-6": {
1131
+ type: "Card",
1132
+ props: { title: null },
1133
+ children: ["expense-6-row"],
1134
+ on: {
1135
+ press: {
1136
+ action: "viewExpenseDetail",
1137
+ params: { expenseId: "exp-6" },
1138
+ },
1139
+ },
1140
+ },
1141
+ "expense-6-row": {
1142
+ type: "Stack",
1143
+ props: { direction: "horizontal", gap: 10 },
1144
+ children: ["expense-6-icon", "expense-6-info", "expense-6-amount"],
1145
+ },
1146
+ "expense-6-icon": {
1147
+ type: "IconBox",
1148
+ props: { icon: "\u26fd", size: 38 },
1149
+ children: [],
1150
+ },
1151
+ "expense-6-info": {
1152
+ type: "Stack",
1153
+ props: { direction: "vertical", gap: 2 },
1154
+ children: ["expense-6-desc", "expense-6-paid-by"],
1155
+ },
1156
+ "expense-6-desc": {
1157
+ type: "Text",
1158
+ props: { text: "Gas for road trip", variant: "body" },
1159
+ children: [],
1160
+ },
1161
+ "expense-6-paid-by": {
1162
+ type: "Stack",
1163
+ props: { direction: "horizontal", gap: 4 },
1164
+ children: [
1165
+ "expense-6-paid-label",
1166
+ "expense-6-paid-avatar",
1167
+ "expense-6-paid-name",
1168
+ ],
1169
+ },
1170
+ "expense-6-paid-label": {
1171
+ type: "Text",
1172
+ props: { text: "Paid by", variant: "caption" },
1173
+ children: [],
1174
+ },
1175
+ "expense-6-paid-avatar": {
1176
+ type: "Avatar",
1177
+ props: { name: "Alex", size: 16 },
1178
+ children: [],
1179
+ },
1180
+ "expense-6-paid-name": {
1181
+ type: "Text",
1182
+ props: { text: "Alex", variant: "caption" },
1183
+ children: [],
1184
+ },
1185
+ "expense-6-amount": {
1186
+ type: "Heading",
1187
+ props: { text: "$67", level: 3 },
1188
+ children: [],
1189
+ },
1190
+ "settle-section": {
1191
+ type: "Stack",
1192
+ props: { direction: "vertical", gap: 8 },
1193
+ children: ["settle-header", "settle-1", "settle-2"],
1194
+ },
1195
+ "settle-header": {
1196
+ type: "SectionHeader",
1197
+ props: { text: "Settle Up" },
1198
+ children: [],
1199
+ },
1200
+ "settle-1": {
1201
+ type: "Card",
1202
+ props: { title: null },
1203
+ children: ["settle-1-row", "settle-1-btn"],
1204
+ },
1205
+ "settle-1-row": {
1206
+ type: "Stack",
1207
+ props: { direction: "horizontal", gap: 10 },
1208
+ children: ["settle-1-from", "settle-1-info", "settle-1-to"],
1209
+ },
1210
+ "settle-1-from": {
1211
+ type: "Avatar",
1212
+ props: { name: "Mike", size: 32 },
1213
+ children: [],
1214
+ },
1215
+ "settle-1-info": {
1216
+ type: "Stack",
1217
+ props: { direction: "vertical", gap: 2 },
1218
+ children: ["settle-1-label", "settle-1-amount"],
1219
+ },
1220
+ "settle-1-label": {
1221
+ type: "Text",
1222
+ props: { text: "Mike owes", variant: "caption" },
1223
+ children: [],
1224
+ },
1225
+ "settle-1-amount": {
1226
+ type: "Heading",
1227
+ props: { text: "$7", level: 3 },
1228
+ children: [],
1229
+ },
1230
+ "settle-1-to": {
1231
+ type: "Avatar",
1232
+ props: { name: "Alex", size: 32 },
1233
+ children: [],
1234
+ },
1235
+ "settle-1-btn": {
1236
+ type: "Button",
1237
+ props: { label: "Settle $7", variant: "primary" },
1238
+ children: [],
1239
+ on: {
1240
+ press: {
1241
+ action: "settleUp",
1242
+ params: { from: "mike", to: "you", amount: 7 },
1243
+ },
1244
+ },
1245
+ },
1246
+ "settle-2": {
1247
+ type: "Card",
1248
+ props: { title: null },
1249
+ children: ["settle-2-row", "settle-2-btn"],
1250
+ },
1251
+ "settle-2-row": {
1252
+ type: "Stack",
1253
+ props: { direction: "horizontal", gap: 10 },
1254
+ children: ["settle-2-from", "settle-2-info", "settle-2-to"],
1255
+ },
1256
+ "settle-2-from": {
1257
+ type: "Avatar",
1258
+ props: { name: "Sarah", size: 32 },
1259
+ children: [],
1260
+ },
1261
+ "settle-2-info": {
1262
+ type: "Stack",
1263
+ props: { direction: "vertical", gap: 2 },
1264
+ children: ["settle-2-label", "settle-2-amount"],
1265
+ },
1266
+ "settle-2-label": {
1267
+ type: "Text",
1268
+ props: { text: "Sarah owes", variant: "caption" },
1269
+ children: [],
1270
+ },
1271
+ "settle-2-amount": {
1272
+ type: "Heading",
1273
+ props: { text: "$65", level: 3 },
1274
+ children: [],
1275
+ },
1276
+ "settle-2-to": {
1277
+ type: "Avatar",
1278
+ props: { name: "Alex", size: 32 },
1279
+ children: [],
1280
+ },
1281
+ "settle-2-btn": {
1282
+ type: "Button",
1283
+ props: { label: "Settle $65", variant: "primary" },
1284
+ children: [],
1285
+ on: {
1286
+ press: {
1287
+ action: "settleUp",
1288
+ params: { from: "sarah", to: "you", amount: 65 },
1289
+ },
1290
+ },
1291
+ },
1292
+ },
1293
+ },
1294
+ },
1295
+ ];
1296
+ export const SEED_SURFACE_HISTORY = [
1297
+ {
1298
+ convIndex: 0,
1299
+ version: 2,
1300
+ title: "Tahoe Ski Weekend",
1301
+ agentIndex: 1,
1302
+ spec: { root: "trip-root", elements: {}, state: {} },
1303
+ },
1304
+ ];
1305
+ //# sourceMappingURL=seed-data.js.map