@avocadostudio-ai/shared 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.
Files changed (76) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +80 -0
  3. package/contract/operation.schema.json +752 -0
  4. package/dist/api-responses.d.ts +62 -0
  5. package/dist/api-responses.js +68 -0
  6. package/dist/block-manifest.d.ts +28 -0
  7. package/dist/block-manifest.js +247 -0
  8. package/dist/block-names.d.ts +19 -0
  9. package/dist/block-names.js +52 -0
  10. package/dist/blocks/_helpers.d.ts +14 -0
  11. package/dist/blocks/_helpers.js +26 -0
  12. package/dist/blocks/_registry.d.ts +116 -0
  13. package/dist/blocks/_registry.js +271 -0
  14. package/dist/blocks/banner.d.ts +1 -0
  15. package/dist/blocks/banner.js +34 -0
  16. package/dist/blocks/card-grid.d.ts +1 -0
  17. package/dist/blocks/card-grid.js +73 -0
  18. package/dist/blocks/card.d.ts +1 -0
  19. package/dist/blocks/card.js +37 -0
  20. package/dist/blocks/carousel.d.ts +1 -0
  21. package/dist/blocks/carousel.js +51 -0
  22. package/dist/blocks/cta.d.ts +1 -0
  23. package/dist/blocks/cta.js +35 -0
  24. package/dist/blocks/embed.d.ts +1 -0
  25. package/dist/blocks/embed.js +30 -0
  26. package/dist/blocks/faq-accordion.d.ts +1 -0
  27. package/dist/blocks/faq-accordion.js +30 -0
  28. package/dist/blocks/feature-grid.d.ts +1 -0
  29. package/dist/blocks/feature-grid.js +46 -0
  30. package/dist/blocks/footer.d.ts +1 -0
  31. package/dist/blocks/footer.js +31 -0
  32. package/dist/blocks/gallery.d.ts +1 -0
  33. package/dist/blocks/gallery.js +47 -0
  34. package/dist/blocks/hero.d.ts +1 -0
  35. package/dist/blocks/hero.js +48 -0
  36. package/dist/blocks/index.d.ts +3 -0
  37. package/dist/blocks/index.js +53 -0
  38. package/dist/blocks/quote.d.ts +1 -0
  39. package/dist/blocks/quote.js +32 -0
  40. package/dist/blocks/rich-text.d.ts +1 -0
  41. package/dist/blocks/rich-text.js +41 -0
  42. package/dist/blocks/site-header.d.ts +1 -0
  43. package/dist/blocks/site-header.js +48 -0
  44. package/dist/blocks/stats.d.ts +1 -0
  45. package/dist/blocks/stats.js +42 -0
  46. package/dist/blocks/table.d.ts +1 -0
  47. package/dist/blocks/table.js +37 -0
  48. package/dist/blocks/tabs.d.ts +1 -0
  49. package/dist/blocks/tabs.js +39 -0
  50. package/dist/blocks/testimonials.d.ts +1 -0
  51. package/dist/blocks/testimonials.js +45 -0
  52. package/dist/blocks/two-column.d.ts +1 -0
  53. package/dist/blocks/two-column.js +61 -0
  54. package/dist/blocks/video.d.ts +1 -0
  55. package/dist/blocks/video.js +33 -0
  56. package/dist/chat-events.d.ts +475 -0
  57. package/dist/chat-events.js +137 -0
  58. package/dist/demo-seed-content.d.ts +3 -0
  59. package/dist/demo-seed-content.js +1128 -0
  60. package/dist/draft-mode.d.ts +10 -0
  61. package/dist/draft-mode.js +29 -0
  62. package/dist/editable-path.d.ts +20 -0
  63. package/dist/editable-path.js +101 -0
  64. package/dist/index.d.ts +13 -0
  65. package/dist/index.js +26 -0
  66. package/dist/ops/builders.d.ts +62 -0
  67. package/dist/ops/builders.js +111 -0
  68. package/dist/ops/theme-tokens.d.ts +50 -0
  69. package/dist/ops/theme-tokens.js +73 -0
  70. package/dist/protocol.d.ts +7 -0
  71. package/dist/protocol.js +7 -0
  72. package/dist/publish-diff.d.ts +67 -0
  73. package/dist/publish-diff.js +9 -0
  74. package/dist/schemas.d.ts +321 -0
  75. package/dist/schemas.js +238 -0
  76. package/package.json +48 -0
@@ -0,0 +1,475 @@
1
+ import { z } from "zod";
2
+ export declare const chatStreamEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3
+ type: z.ZodLiteral<"status">;
4
+ message: z.ZodString;
5
+ }, z.core.$strip>, z.ZodObject<{
6
+ type: z.ZodLiteral<"heartbeat">;
7
+ stage: z.ZodString;
8
+ label: z.ZodString;
9
+ elapsedMs: z.ZodNumber;
10
+ }, z.core.$strip>, z.ZodObject<{
11
+ type: z.ZodLiteral<"token">;
12
+ text: z.ZodString;
13
+ }, z.core.$strip>, z.ZodObject<{
14
+ type: z.ZodLiteral<"field_draft">;
15
+ blockId: z.ZodString;
16
+ editablePath: z.ZodString;
17
+ value: z.ZodString;
18
+ pageSlug: z.ZodOptional<z.ZodString>;
19
+ }, z.core.$strip>, z.ZodObject<{
20
+ type: z.ZodLiteral<"summary_token">;
21
+ text: z.ZodString;
22
+ }, z.core.$strip>, z.ZodObject<{
23
+ type: z.ZodLiteral<"thinking_start">;
24
+ }, z.core.$strip>, z.ZodObject<{
25
+ type: z.ZodLiteral<"thinking_token">;
26
+ text: z.ZodString;
27
+ }, z.core.$strip>, z.ZodObject<{
28
+ type: z.ZodLiteral<"thinking_end">;
29
+ durationMs: z.ZodOptional<z.ZodNumber>;
30
+ }, z.core.$strip>, z.ZodObject<{
31
+ type: z.ZodLiteral<"changelog_entry">;
32
+ entry: z.ZodString;
33
+ }, z.core.$strip>, z.ZodObject<{
34
+ type: z.ZodLiteral<"op_candidate">;
35
+ index: z.ZodNumber;
36
+ op: z.ZodUnion<[z.ZodDiscriminatedUnion<[z.ZodObject<{
37
+ op: z.ZodLiteral<"create_page">;
38
+ page: z.ZodType<import("./schemas.ts").PageDoc, unknown, z.core.$ZodTypeInternals<import("./schemas.ts").PageDoc, unknown>>;
39
+ }, z.core.$strip>, z.ZodObject<{
40
+ op: z.ZodLiteral<"add_block">;
41
+ pageSlug: z.ZodString;
42
+ afterBlockId: z.ZodOptional<z.ZodString>;
43
+ block: z.ZodObject<{
44
+ id: z.ZodString;
45
+ props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
46
+ type: z.ZodString;
47
+ }, z.core.$strip>;
48
+ }, z.core.$strip>, z.ZodObject<{
49
+ op: z.ZodLiteral<"update_props">;
50
+ pageSlug: z.ZodString;
51
+ blockId: z.ZodString;
52
+ patch: z.ZodRecord<z.ZodString, z.ZodUnknown>;
53
+ }, z.core.$strip>, z.ZodObject<{
54
+ op: z.ZodLiteral<"remove_block">;
55
+ pageSlug: z.ZodString;
56
+ blockId: z.ZodString;
57
+ }, z.core.$strip>, z.ZodObject<{
58
+ op: z.ZodLiteral<"move_block">;
59
+ pageSlug: z.ZodString;
60
+ blockId: z.ZodString;
61
+ afterBlockId: z.ZodOptional<z.ZodString>;
62
+ }, z.core.$strip>, z.ZodObject<{
63
+ op: z.ZodLiteral<"duplicate_block">;
64
+ pageSlug: z.ZodString;
65
+ blockId: z.ZodString;
66
+ toPageSlug: z.ZodOptional<z.ZodString>;
67
+ newBlockId: z.ZodOptional<z.ZodString>;
68
+ afterBlockId: z.ZodOptional<z.ZodString>;
69
+ }, z.core.$strip>, z.ZodObject<{
70
+ op: z.ZodLiteral<"add_item">;
71
+ pageSlug: z.ZodString;
72
+ blockId: z.ZodString;
73
+ listKey: z.ZodString;
74
+ item: z.ZodRecord<z.ZodString, z.ZodUnknown>;
75
+ afterItemId: z.ZodOptional<z.ZodString>;
76
+ afterIndex: z.ZodOptional<z.ZodNumber>;
77
+ }, z.core.$strip>, z.ZodObject<{
78
+ op: z.ZodLiteral<"update_item">;
79
+ pageSlug: z.ZodString;
80
+ blockId: z.ZodString;
81
+ listKey: z.ZodString;
82
+ itemId: z.ZodOptional<z.ZodString>;
83
+ index: z.ZodOptional<z.ZodNumber>;
84
+ patch: z.ZodRecord<z.ZodString, z.ZodUnknown>;
85
+ }, z.core.$strip>, z.ZodObject<{
86
+ op: z.ZodLiteral<"remove_item">;
87
+ pageSlug: z.ZodString;
88
+ blockId: z.ZodString;
89
+ listKey: z.ZodString;
90
+ itemId: z.ZodOptional<z.ZodString>;
91
+ index: z.ZodOptional<z.ZodNumber>;
92
+ }, z.core.$strip>, z.ZodObject<{
93
+ op: z.ZodLiteral<"move_item">;
94
+ pageSlug: z.ZodString;
95
+ blockId: z.ZodString;
96
+ listKey: z.ZodString;
97
+ itemId: z.ZodOptional<z.ZodString>;
98
+ index: z.ZodOptional<z.ZodNumber>;
99
+ afterItemId: z.ZodOptional<z.ZodString>;
100
+ afterIndex: z.ZodOptional<z.ZodNumber>;
101
+ }, z.core.$strip>, z.ZodObject<{
102
+ op: z.ZodLiteral<"reorder_items">;
103
+ pageSlug: z.ZodString;
104
+ blockId: z.ZodString;
105
+ listKey: z.ZodString;
106
+ order: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
107
+ }, z.core.$strip>, z.ZodObject<{
108
+ op: z.ZodLiteral<"reorder_blocks">;
109
+ pageSlug: z.ZodString;
110
+ order: z.ZodArray<z.ZodString>;
111
+ }, z.core.$strip>, z.ZodObject<{
112
+ op: z.ZodLiteral<"rename_page">;
113
+ pageSlug: z.ZodString;
114
+ newPageSlug: z.ZodOptional<z.ZodString>;
115
+ newTitle: z.ZodOptional<z.ZodString>;
116
+ }, z.core.$strip>, z.ZodObject<{
117
+ op: z.ZodLiteral<"remove_page">;
118
+ pageSlug: z.ZodString;
119
+ }, z.core.$strip>, z.ZodObject<{
120
+ op: z.ZodLiteral<"move_page">;
121
+ pageSlug: z.ZodString;
122
+ afterPageSlug: z.ZodOptional<z.ZodString>;
123
+ }, z.core.$strip>, z.ZodObject<{
124
+ op: z.ZodLiteral<"duplicate_page">;
125
+ pageSlug: z.ZodString;
126
+ newPageSlug: z.ZodOptional<z.ZodString>;
127
+ newTitle: z.ZodOptional<z.ZodString>;
128
+ afterPageSlug: z.ZodOptional<z.ZodString>;
129
+ }, z.core.$strip>, z.ZodObject<{
130
+ op: z.ZodLiteral<"update_page_meta">;
131
+ pageSlug: z.ZodString;
132
+ patch: z.ZodObject<{
133
+ title: z.ZodOptional<z.ZodString>;
134
+ description: z.ZodOptional<z.ZodString>;
135
+ ogImage: z.ZodOptional<z.ZodString>;
136
+ }, z.core.$strip>;
137
+ }, z.core.$strip>, z.ZodObject<{
138
+ op: z.ZodLiteral<"update_site_config">;
139
+ patch: z.ZodObject<{
140
+ name: z.ZodOptional<z.ZodString>;
141
+ logo: z.ZodOptional<z.ZodString>;
142
+ navLabels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
143
+ navGroups: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
144
+ }, z.core.$strip>;
145
+ }, z.core.$strip>, z.ZodObject<{
146
+ op: z.ZodLiteral<"update_theme">;
147
+ patch: z.ZodObject<{
148
+ brandColor: z.ZodOptional<z.ZodString>;
149
+ accentColor: z.ZodOptional<z.ZodString>;
150
+ backgroundColor: z.ZodOptional<z.ZodString>;
151
+ surfaceColor: z.ZodOptional<z.ZodString>;
152
+ headingColor: z.ZodOptional<z.ZodString>;
153
+ textColor: z.ZodOptional<z.ZodString>;
154
+ mutedTextColor: z.ZodOptional<z.ZodString>;
155
+ headingFont: z.ZodOptional<z.ZodString>;
156
+ bodyFont: z.ZodOptional<z.ZodString>;
157
+ radius: z.ZodOptional<z.ZodString>;
158
+ }, z.core.$strip>;
159
+ cssVars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
160
+ }, z.core.$strip>], "op">, z.ZodObject<{}, z.core.$loose>]>;
161
+ }, z.core.$strip>, z.ZodObject<{
162
+ type: z.ZodLiteral<"op_skipped">;
163
+ index: z.ZodNumber;
164
+ total: z.ZodNumber;
165
+ op: z.ZodOptional<z.ZodUnion<[z.ZodDiscriminatedUnion<[z.ZodObject<{
166
+ op: z.ZodLiteral<"create_page">;
167
+ page: z.ZodType<import("./schemas.ts").PageDoc, unknown, z.core.$ZodTypeInternals<import("./schemas.ts").PageDoc, unknown>>;
168
+ }, z.core.$strip>, z.ZodObject<{
169
+ op: z.ZodLiteral<"add_block">;
170
+ pageSlug: z.ZodString;
171
+ afterBlockId: z.ZodOptional<z.ZodString>;
172
+ block: z.ZodObject<{
173
+ id: z.ZodString;
174
+ props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
175
+ type: z.ZodString;
176
+ }, z.core.$strip>;
177
+ }, z.core.$strip>, z.ZodObject<{
178
+ op: z.ZodLiteral<"update_props">;
179
+ pageSlug: z.ZodString;
180
+ blockId: z.ZodString;
181
+ patch: z.ZodRecord<z.ZodString, z.ZodUnknown>;
182
+ }, z.core.$strip>, z.ZodObject<{
183
+ op: z.ZodLiteral<"remove_block">;
184
+ pageSlug: z.ZodString;
185
+ blockId: z.ZodString;
186
+ }, z.core.$strip>, z.ZodObject<{
187
+ op: z.ZodLiteral<"move_block">;
188
+ pageSlug: z.ZodString;
189
+ blockId: z.ZodString;
190
+ afterBlockId: z.ZodOptional<z.ZodString>;
191
+ }, z.core.$strip>, z.ZodObject<{
192
+ op: z.ZodLiteral<"duplicate_block">;
193
+ pageSlug: z.ZodString;
194
+ blockId: z.ZodString;
195
+ toPageSlug: z.ZodOptional<z.ZodString>;
196
+ newBlockId: z.ZodOptional<z.ZodString>;
197
+ afterBlockId: z.ZodOptional<z.ZodString>;
198
+ }, z.core.$strip>, z.ZodObject<{
199
+ op: z.ZodLiteral<"add_item">;
200
+ pageSlug: z.ZodString;
201
+ blockId: z.ZodString;
202
+ listKey: z.ZodString;
203
+ item: z.ZodRecord<z.ZodString, z.ZodUnknown>;
204
+ afterItemId: z.ZodOptional<z.ZodString>;
205
+ afterIndex: z.ZodOptional<z.ZodNumber>;
206
+ }, z.core.$strip>, z.ZodObject<{
207
+ op: z.ZodLiteral<"update_item">;
208
+ pageSlug: z.ZodString;
209
+ blockId: z.ZodString;
210
+ listKey: z.ZodString;
211
+ itemId: z.ZodOptional<z.ZodString>;
212
+ index: z.ZodOptional<z.ZodNumber>;
213
+ patch: z.ZodRecord<z.ZodString, z.ZodUnknown>;
214
+ }, z.core.$strip>, z.ZodObject<{
215
+ op: z.ZodLiteral<"remove_item">;
216
+ pageSlug: z.ZodString;
217
+ blockId: z.ZodString;
218
+ listKey: z.ZodString;
219
+ itemId: z.ZodOptional<z.ZodString>;
220
+ index: z.ZodOptional<z.ZodNumber>;
221
+ }, z.core.$strip>, z.ZodObject<{
222
+ op: z.ZodLiteral<"move_item">;
223
+ pageSlug: z.ZodString;
224
+ blockId: z.ZodString;
225
+ listKey: z.ZodString;
226
+ itemId: z.ZodOptional<z.ZodString>;
227
+ index: z.ZodOptional<z.ZodNumber>;
228
+ afterItemId: z.ZodOptional<z.ZodString>;
229
+ afterIndex: z.ZodOptional<z.ZodNumber>;
230
+ }, z.core.$strip>, z.ZodObject<{
231
+ op: z.ZodLiteral<"reorder_items">;
232
+ pageSlug: z.ZodString;
233
+ blockId: z.ZodString;
234
+ listKey: z.ZodString;
235
+ order: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
236
+ }, z.core.$strip>, z.ZodObject<{
237
+ op: z.ZodLiteral<"reorder_blocks">;
238
+ pageSlug: z.ZodString;
239
+ order: z.ZodArray<z.ZodString>;
240
+ }, z.core.$strip>, z.ZodObject<{
241
+ op: z.ZodLiteral<"rename_page">;
242
+ pageSlug: z.ZodString;
243
+ newPageSlug: z.ZodOptional<z.ZodString>;
244
+ newTitle: z.ZodOptional<z.ZodString>;
245
+ }, z.core.$strip>, z.ZodObject<{
246
+ op: z.ZodLiteral<"remove_page">;
247
+ pageSlug: z.ZodString;
248
+ }, z.core.$strip>, z.ZodObject<{
249
+ op: z.ZodLiteral<"move_page">;
250
+ pageSlug: z.ZodString;
251
+ afterPageSlug: z.ZodOptional<z.ZodString>;
252
+ }, z.core.$strip>, z.ZodObject<{
253
+ op: z.ZodLiteral<"duplicate_page">;
254
+ pageSlug: z.ZodString;
255
+ newPageSlug: z.ZodOptional<z.ZodString>;
256
+ newTitle: z.ZodOptional<z.ZodString>;
257
+ afterPageSlug: z.ZodOptional<z.ZodString>;
258
+ }, z.core.$strip>, z.ZodObject<{
259
+ op: z.ZodLiteral<"update_page_meta">;
260
+ pageSlug: z.ZodString;
261
+ patch: z.ZodObject<{
262
+ title: z.ZodOptional<z.ZodString>;
263
+ description: z.ZodOptional<z.ZodString>;
264
+ ogImage: z.ZodOptional<z.ZodString>;
265
+ }, z.core.$strip>;
266
+ }, z.core.$strip>, z.ZodObject<{
267
+ op: z.ZodLiteral<"update_site_config">;
268
+ patch: z.ZodObject<{
269
+ name: z.ZodOptional<z.ZodString>;
270
+ logo: z.ZodOptional<z.ZodString>;
271
+ navLabels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
272
+ navGroups: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
273
+ }, z.core.$strip>;
274
+ }, z.core.$strip>, z.ZodObject<{
275
+ op: z.ZodLiteral<"update_theme">;
276
+ patch: z.ZodObject<{
277
+ brandColor: z.ZodOptional<z.ZodString>;
278
+ accentColor: z.ZodOptional<z.ZodString>;
279
+ backgroundColor: z.ZodOptional<z.ZodString>;
280
+ surfaceColor: z.ZodOptional<z.ZodString>;
281
+ headingColor: z.ZodOptional<z.ZodString>;
282
+ textColor: z.ZodOptional<z.ZodString>;
283
+ mutedTextColor: z.ZodOptional<z.ZodString>;
284
+ headingFont: z.ZodOptional<z.ZodString>;
285
+ bodyFont: z.ZodOptional<z.ZodString>;
286
+ radius: z.ZodOptional<z.ZodString>;
287
+ }, z.core.$strip>;
288
+ cssVars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
289
+ }, z.core.$strip>], "op">, z.ZodObject<{}, z.core.$loose>]>>;
290
+ reason: z.ZodOptional<z.ZodString>;
291
+ }, z.core.$strip>, z.ZodObject<{
292
+ type: z.ZodLiteral<"plan_meta">;
293
+ intent: z.ZodOptional<z.ZodString>;
294
+ summary: z.ZodOptional<z.ZodString>;
295
+ estimatedOps: z.ZodOptional<z.ZodNumber>;
296
+ }, z.core.$strip>, z.ZodObject<{
297
+ type: z.ZodLiteral<"op_applied">;
298
+ index: z.ZodNumber;
299
+ total: z.ZodNumber;
300
+ op: z.ZodOptional<z.ZodUnion<[z.ZodDiscriminatedUnion<[z.ZodObject<{
301
+ op: z.ZodLiteral<"create_page">;
302
+ page: z.ZodType<import("./schemas.ts").PageDoc, unknown, z.core.$ZodTypeInternals<import("./schemas.ts").PageDoc, unknown>>;
303
+ }, z.core.$strip>, z.ZodObject<{
304
+ op: z.ZodLiteral<"add_block">;
305
+ pageSlug: z.ZodString;
306
+ afterBlockId: z.ZodOptional<z.ZodString>;
307
+ block: z.ZodObject<{
308
+ id: z.ZodString;
309
+ props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
310
+ type: z.ZodString;
311
+ }, z.core.$strip>;
312
+ }, z.core.$strip>, z.ZodObject<{
313
+ op: z.ZodLiteral<"update_props">;
314
+ pageSlug: z.ZodString;
315
+ blockId: z.ZodString;
316
+ patch: z.ZodRecord<z.ZodString, z.ZodUnknown>;
317
+ }, z.core.$strip>, z.ZodObject<{
318
+ op: z.ZodLiteral<"remove_block">;
319
+ pageSlug: z.ZodString;
320
+ blockId: z.ZodString;
321
+ }, z.core.$strip>, z.ZodObject<{
322
+ op: z.ZodLiteral<"move_block">;
323
+ pageSlug: z.ZodString;
324
+ blockId: z.ZodString;
325
+ afterBlockId: z.ZodOptional<z.ZodString>;
326
+ }, z.core.$strip>, z.ZodObject<{
327
+ op: z.ZodLiteral<"duplicate_block">;
328
+ pageSlug: z.ZodString;
329
+ blockId: z.ZodString;
330
+ toPageSlug: z.ZodOptional<z.ZodString>;
331
+ newBlockId: z.ZodOptional<z.ZodString>;
332
+ afterBlockId: z.ZodOptional<z.ZodString>;
333
+ }, z.core.$strip>, z.ZodObject<{
334
+ op: z.ZodLiteral<"add_item">;
335
+ pageSlug: z.ZodString;
336
+ blockId: z.ZodString;
337
+ listKey: z.ZodString;
338
+ item: z.ZodRecord<z.ZodString, z.ZodUnknown>;
339
+ afterItemId: z.ZodOptional<z.ZodString>;
340
+ afterIndex: z.ZodOptional<z.ZodNumber>;
341
+ }, z.core.$strip>, z.ZodObject<{
342
+ op: z.ZodLiteral<"update_item">;
343
+ pageSlug: z.ZodString;
344
+ blockId: z.ZodString;
345
+ listKey: z.ZodString;
346
+ itemId: z.ZodOptional<z.ZodString>;
347
+ index: z.ZodOptional<z.ZodNumber>;
348
+ patch: z.ZodRecord<z.ZodString, z.ZodUnknown>;
349
+ }, z.core.$strip>, z.ZodObject<{
350
+ op: z.ZodLiteral<"remove_item">;
351
+ pageSlug: z.ZodString;
352
+ blockId: z.ZodString;
353
+ listKey: z.ZodString;
354
+ itemId: z.ZodOptional<z.ZodString>;
355
+ index: z.ZodOptional<z.ZodNumber>;
356
+ }, z.core.$strip>, z.ZodObject<{
357
+ op: z.ZodLiteral<"move_item">;
358
+ pageSlug: z.ZodString;
359
+ blockId: z.ZodString;
360
+ listKey: z.ZodString;
361
+ itemId: z.ZodOptional<z.ZodString>;
362
+ index: z.ZodOptional<z.ZodNumber>;
363
+ afterItemId: z.ZodOptional<z.ZodString>;
364
+ afterIndex: z.ZodOptional<z.ZodNumber>;
365
+ }, z.core.$strip>, z.ZodObject<{
366
+ op: z.ZodLiteral<"reorder_items">;
367
+ pageSlug: z.ZodString;
368
+ blockId: z.ZodString;
369
+ listKey: z.ZodString;
370
+ order: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
371
+ }, z.core.$strip>, z.ZodObject<{
372
+ op: z.ZodLiteral<"reorder_blocks">;
373
+ pageSlug: z.ZodString;
374
+ order: z.ZodArray<z.ZodString>;
375
+ }, z.core.$strip>, z.ZodObject<{
376
+ op: z.ZodLiteral<"rename_page">;
377
+ pageSlug: z.ZodString;
378
+ newPageSlug: z.ZodOptional<z.ZodString>;
379
+ newTitle: z.ZodOptional<z.ZodString>;
380
+ }, z.core.$strip>, z.ZodObject<{
381
+ op: z.ZodLiteral<"remove_page">;
382
+ pageSlug: z.ZodString;
383
+ }, z.core.$strip>, z.ZodObject<{
384
+ op: z.ZodLiteral<"move_page">;
385
+ pageSlug: z.ZodString;
386
+ afterPageSlug: z.ZodOptional<z.ZodString>;
387
+ }, z.core.$strip>, z.ZodObject<{
388
+ op: z.ZodLiteral<"duplicate_page">;
389
+ pageSlug: z.ZodString;
390
+ newPageSlug: z.ZodOptional<z.ZodString>;
391
+ newTitle: z.ZodOptional<z.ZodString>;
392
+ afterPageSlug: z.ZodOptional<z.ZodString>;
393
+ }, z.core.$strip>, z.ZodObject<{
394
+ op: z.ZodLiteral<"update_page_meta">;
395
+ pageSlug: z.ZodString;
396
+ patch: z.ZodObject<{
397
+ title: z.ZodOptional<z.ZodString>;
398
+ description: z.ZodOptional<z.ZodString>;
399
+ ogImage: z.ZodOptional<z.ZodString>;
400
+ }, z.core.$strip>;
401
+ }, z.core.$strip>, z.ZodObject<{
402
+ op: z.ZodLiteral<"update_site_config">;
403
+ patch: z.ZodObject<{
404
+ name: z.ZodOptional<z.ZodString>;
405
+ logo: z.ZodOptional<z.ZodString>;
406
+ navLabels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
407
+ navGroups: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
408
+ }, z.core.$strip>;
409
+ }, z.core.$strip>, z.ZodObject<{
410
+ op: z.ZodLiteral<"update_theme">;
411
+ patch: z.ZodObject<{
412
+ brandColor: z.ZodOptional<z.ZodString>;
413
+ accentColor: z.ZodOptional<z.ZodString>;
414
+ backgroundColor: z.ZodOptional<z.ZodString>;
415
+ surfaceColor: z.ZodOptional<z.ZodString>;
416
+ headingColor: z.ZodOptional<z.ZodString>;
417
+ textColor: z.ZodOptional<z.ZodString>;
418
+ mutedTextColor: z.ZodOptional<z.ZodString>;
419
+ headingFont: z.ZodOptional<z.ZodString>;
420
+ bodyFont: z.ZodOptional<z.ZodString>;
421
+ radius: z.ZodOptional<z.ZodString>;
422
+ }, z.core.$strip>;
423
+ cssVars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
424
+ }, z.core.$strip>], "op">, z.ZodObject<{}, z.core.$loose>]>>;
425
+ previewVersion: z.ZodNumber;
426
+ focusBlockId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
427
+ updatedSlug: z.ZodOptional<z.ZodString>;
428
+ }, z.core.$strip>, z.ZodObject<{
429
+ type: z.ZodLiteral<"rollback_started">;
430
+ appliedCount: z.ZodNumber;
431
+ reason: z.ZodOptional<z.ZodString>;
432
+ }, z.core.$strip>, z.ZodObject<{
433
+ type: z.ZodLiteral<"rollback_done">;
434
+ restoredVersion: z.ZodOptional<z.ZodNumber>;
435
+ }, z.core.$strip>, z.ZodObject<{
436
+ type: z.ZodLiteral<"image_progress">;
437
+ percent: z.ZodOptional<z.ZodNumber>;
438
+ stage: z.ZodOptional<z.ZodString>;
439
+ }, z.core.$loose>, z.ZodObject<{
440
+ type: z.ZodLiteral<"final">;
441
+ result: z.ZodObject<{
442
+ status: z.ZodOptional<z.ZodString>;
443
+ summary: z.ZodOptional<z.ZodString>;
444
+ changes: z.ZodOptional<z.ZodArray<z.ZodString>>;
445
+ suggestions: z.ZodOptional<z.ZodArray<z.ZodString>>;
446
+ previewVersion: z.ZodOptional<z.ZodNumber>;
447
+ focusBlockId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
448
+ updatedSlug: z.ZodOptional<z.ZodString>;
449
+ error: z.ZodOptional<z.ZodString>;
450
+ debug: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
451
+ }, z.core.$loose>;
452
+ }, z.core.$strip>, z.ZodObject<{
453
+ type: z.ZodLiteral<"error">;
454
+ result: z.ZodOptional<z.ZodObject<{
455
+ status: z.ZodOptional<z.ZodString>;
456
+ summary: z.ZodOptional<z.ZodString>;
457
+ changes: z.ZodOptional<z.ZodArray<z.ZodString>>;
458
+ suggestions: z.ZodOptional<z.ZodArray<z.ZodString>>;
459
+ previewVersion: z.ZodOptional<z.ZodNumber>;
460
+ focusBlockId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
461
+ updatedSlug: z.ZodOptional<z.ZodString>;
462
+ error: z.ZodOptional<z.ZodString>;
463
+ debug: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
464
+ }, z.core.$loose>>;
465
+ code: z.ZodOptional<z.ZodNumber>;
466
+ }, z.core.$strip>, z.ZodObject<{
467
+ type: z.ZodLiteral<"canceled">;
468
+ message: z.ZodOptional<z.ZodString>;
469
+ }, z.core.$strip>], "type">;
470
+ export type ChatStreamEvent = z.infer<typeof chatStreamEventSchema>;
471
+ export type ChatStreamEventType = ChatStreamEvent["type"];
472
+ export type ChatStreamFrame = ChatStreamEvent & {
473
+ _seq?: number;
474
+ };
475
+ export declare function parseChatStreamFrame(raw: unknown): ChatStreamFrame | null;
@@ -0,0 +1,137 @@
1
+ import { z } from "zod";
2
+ import { operationSchema } from "./schemas.js";
3
+ const assistantResponseLike = z.looseObject({
4
+ status: z.string().optional(),
5
+ summary: z.string().optional(),
6
+ changes: z.array(z.string()).optional(),
7
+ suggestions: z.array(z.string()).optional(),
8
+ previewVersion: z.number().optional(),
9
+ focusBlockId: z.string().nullable().optional(),
10
+ updatedSlug: z.string().optional(),
11
+ error: z.string().optional(),
12
+ debug: z.looseObject({}).optional(),
13
+ });
14
+ const statusEvent = z.object({
15
+ type: z.literal("status"),
16
+ message: z.string(),
17
+ });
18
+ const heartbeatEvent = z.object({
19
+ type: z.literal("heartbeat"),
20
+ stage: z.string(),
21
+ label: z.string(),
22
+ elapsedMs: z.number(),
23
+ });
24
+ const tokenEvent = z.object({
25
+ type: z.literal("token"),
26
+ text: z.string(),
27
+ });
28
+ const fieldDraftEvent = z.object({
29
+ type: z.literal("field_draft"),
30
+ blockId: z.string(),
31
+ editablePath: z.string(),
32
+ value: z.string(),
33
+ pageSlug: z.string().optional(),
34
+ });
35
+ const summaryTokenEvent = z.object({
36
+ type: z.literal("summary_token"),
37
+ text: z.string(),
38
+ });
39
+ const thinkingStartEvent = z.object({
40
+ type: z.literal("thinking_start"),
41
+ });
42
+ const thinkingTokenEvent = z.object({
43
+ type: z.literal("thinking_token"),
44
+ text: z.string(),
45
+ });
46
+ const thinkingEndEvent = z.object({
47
+ type: z.literal("thinking_end"),
48
+ durationMs: z.number().optional(),
49
+ });
50
+ const changelogEntryEvent = z.object({
51
+ type: z.literal("changelog_entry"),
52
+ entry: z.string(),
53
+ });
54
+ const opCandidateEvent = z.object({
55
+ type: z.literal("op_candidate"),
56
+ index: z.number(),
57
+ op: operationSchema.or(z.looseObject({})),
58
+ });
59
+ const opSkippedEvent = z.object({
60
+ type: z.literal("op_skipped"),
61
+ index: z.number(),
62
+ total: z.number(),
63
+ op: operationSchema.or(z.looseObject({})).optional(),
64
+ reason: z.string().optional(),
65
+ });
66
+ const planMetaEvent = z.object({
67
+ type: z.literal("plan_meta"),
68
+ intent: z.string().optional(),
69
+ summary: z.string().optional(),
70
+ estimatedOps: z.number().optional(),
71
+ });
72
+ const opAppliedEvent = z.object({
73
+ type: z.literal("op_applied"),
74
+ index: z.number(),
75
+ total: z.number(),
76
+ op: operationSchema.or(z.looseObject({})).optional(),
77
+ previewVersion: z.number(),
78
+ focusBlockId: z.string().nullable().optional(),
79
+ updatedSlug: z.string().optional(),
80
+ });
81
+ const rollbackStartedEvent = z.object({
82
+ type: z.literal("rollback_started"),
83
+ appliedCount: z.number(),
84
+ reason: z.string().optional(),
85
+ });
86
+ const rollbackDoneEvent = z.object({
87
+ type: z.literal("rollback_done"),
88
+ restoredVersion: z.number().optional(),
89
+ });
90
+ const imageProgressEvent = z.object({
91
+ type: z.literal("image_progress"),
92
+ percent: z.number().optional(),
93
+ stage: z.string().optional(),
94
+ }).loose();
95
+ const finalEvent = z.object({
96
+ type: z.literal("final"),
97
+ result: assistantResponseLike,
98
+ });
99
+ const errorEvent = z.object({
100
+ type: z.literal("error"),
101
+ result: assistantResponseLike.optional(),
102
+ code: z.number().optional(),
103
+ });
104
+ const canceledEvent = z.object({
105
+ type: z.literal("canceled"),
106
+ message: z.string().optional(),
107
+ });
108
+ export const chatStreamEventSchema = z.discriminatedUnion("type", [
109
+ statusEvent,
110
+ heartbeatEvent,
111
+ tokenEvent,
112
+ fieldDraftEvent,
113
+ summaryTokenEvent,
114
+ thinkingStartEvent,
115
+ thinkingTokenEvent,
116
+ thinkingEndEvent,
117
+ changelogEntryEvent,
118
+ opCandidateEvent,
119
+ opSkippedEvent,
120
+ planMetaEvent,
121
+ opAppliedEvent,
122
+ rollbackStartedEvent,
123
+ rollbackDoneEvent,
124
+ imageProgressEvent,
125
+ finalEvent,
126
+ errorEvent,
127
+ canceledEvent,
128
+ ]);
129
+ export function parseChatStreamFrame(raw) {
130
+ const parsed = chatStreamEventSchema.safeParse(raw);
131
+ if (!parsed.success)
132
+ return null;
133
+ const seq = raw?._seq;
134
+ return typeof seq === "number"
135
+ ? { ...parsed.data, _seq: seq }
136
+ : parsed.data;
137
+ }
@@ -0,0 +1,3 @@
1
+ import type { PageDoc, SiteConfig } from "./schemas.ts";
2
+ export declare const DEMO_SEED_PAGES: PageDoc[];
3
+ export declare const DEMO_SEED_SITE_CONFIG: SiteConfig;