@neta-art/cohub 8.23.0 → 9.0.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 (159) hide show
  1. package/dist/board/animation.d.ts +57 -181
  2. package/dist/board/animation.js +374 -220
  3. package/dist/board/core/arrow-geometry.d.ts +33 -18
  4. package/dist/board/core/arrow-geometry.js +283 -52
  5. package/dist/board/core/draw-geometry.d.ts +22 -36
  6. package/dist/board/core/draw-geometry.js +148 -85
  7. package/dist/board/core/export-assets.d.ts +3 -6
  8. package/dist/board/core/export-assets.js +0 -2
  9. package/dist/board/core/export-plan.d.ts +12 -63
  10. package/dist/board/core/export-plan.js +55 -94
  11. package/dist/board/core/palette.d.ts +4 -21
  12. package/dist/board/core/palette.js +8 -13
  13. package/dist/board/core/scene.d.ts +33 -0
  14. package/dist/board/core/scene.js +302 -0
  15. package/dist/board/core/shape-definition.d.ts +12 -24
  16. package/dist/board/core/shape-definition.js +0 -19
  17. package/dist/board/core/shape-types.d.ts +6 -120
  18. package/dist/board/core/shape-types.js +5 -5
  19. package/dist/board/core/text-metrics.d.ts +8 -11
  20. package/dist/board/core/text-metrics.js +5 -34
  21. package/dist/board/core/tool-styles.d.ts +6 -16
  22. package/dist/board/core/tool-styles.js +17 -25
  23. package/dist/board/export/index.d.ts +10 -17
  24. package/dist/board/export/index.js +22 -21
  25. package/dist/board/export/scene.d.ts +10 -16
  26. package/dist/board/export/scene.js +17 -30
  27. package/dist/board/geometry.d.ts +27 -56
  28. package/dist/board/geometry.js +7 -67
  29. package/dist/board/headless/index.d.ts +7 -27
  30. package/dist/board/headless/index.js +20 -19
  31. package/dist/board/headless/sketch.d.ts +19 -0
  32. package/dist/board/headless/sketch.js +146 -0
  33. package/dist/board/image-key.d.ts +2 -12
  34. package/dist/board/image-key.js +3 -13
  35. package/dist/board/index.d.ts +18 -20
  36. package/dist/board/index.js +17 -17
  37. package/dist/board/media-playback.d.ts +3 -6
  38. package/dist/board/media-playback.js +6 -6
  39. package/dist/board/presets.d.ts +150 -0
  40. package/dist/board/presets.js +226 -0
  41. package/dist/board/render/board-background.d.ts +5 -3
  42. package/dist/board/render/board-background.js +8 -7
  43. package/dist/board/render/clip.d.ts +14 -0
  44. package/dist/board/render/clip.js +47 -0
  45. package/dist/board/render/index.d.ts +8 -5
  46. package/dist/board/render/index.js +7 -4
  47. package/dist/board/render/media-interaction.d.ts +4 -5
  48. package/dist/board/render/media-interaction.js +1 -2
  49. package/dist/board/render/palette.d.ts +6 -2
  50. package/dist/board/render/palette.js +7 -1
  51. package/dist/board/render/renderers/arrow-card-renderer.js +69 -71
  52. package/dist/board/render/renderers/audio-card-renderer.js +3 -3
  53. package/dist/board/render/renderers/base-card-renderer.d.ts +6 -17
  54. package/dist/board/render/renderers/base-card-renderer.js +1 -24
  55. package/dist/board/render/renderers/board-renderer-registry.d.ts +20 -50
  56. package/dist/board/render/renderers/board-renderer-registry.js +6 -7
  57. package/dist/board/render/renderers/draw-card-renderer.js +89 -56
  58. package/dist/board/render/renderers/effect-card-renderer.d.ts +6 -0
  59. package/dist/board/render/renderers/effect-card-renderer.js +197 -0
  60. package/dist/board/render/renderers/far-plate.d.ts +4 -21
  61. package/dist/board/render/renderers/far-plate.js +15 -34
  62. package/dist/board/render/renderers/file-card-renderer.d.ts +4 -25
  63. package/dist/board/render/renderers/file-card-renderer.js +8 -58
  64. package/dist/board/render/renderers/frame-card-renderer.js +28 -28
  65. package/dist/board/render/renderers/image-card-renderer.d.ts +4 -3
  66. package/dist/board/render/renderers/image-card-renderer.js +0 -9
  67. package/dist/board/render/renderers/shape-card-renderer.d.ts +9 -0
  68. package/dist/board/render/renderers/shape-card-renderer.js +240 -0
  69. package/dist/board/render/renderers/sketch-card-renderer.d.ts +5 -0
  70. package/dist/board/render/renderers/sketch-card-renderer.js +98 -0
  71. package/dist/board/render/renderers/task-card-renderer.d.ts +0 -1
  72. package/dist/board/render/renderers/task-card-renderer.js +14 -16
  73. package/dist/board/render/renderers/text-card-renderer.d.ts +1 -3
  74. package/dist/board/render/renderers/text-card-renderer.js +56 -46
  75. package/dist/board/render/renderers/unknown-card-renderer.js +4 -10
  76. package/dist/board/render/renderers/video-card-renderer.d.ts +4 -2
  77. package/dist/board/render/renderers/video-card-renderer.js +2 -1
  78. package/dist/board/render/sketch-host.d.ts +14 -0
  79. package/dist/board/render/sketch-host.js +216 -0
  80. package/dist/board/render/stroke.d.ts +12 -0
  81. package/dist/board/render/stroke.js +90 -0
  82. package/dist/board/render/text-measurement.d.ts +6 -26
  83. package/dist/board/render/text-measurement.js +11 -30
  84. package/dist/board/replay.d.ts +6 -31
  85. package/dist/board/replay.js +45 -203
  86. package/dist/board/runtime/board-player.d.ts +24 -0
  87. package/dist/board/runtime/board-player.js +161 -0
  88. package/dist/board/task.d.ts +2 -10
  89. package/dist/board/task.js +1 -10
  90. package/dist/chunks/environment.d.ts +2296 -3864
  91. package/dist/chunks/host-bridge.d.ts +253 -0
  92. package/dist/chunks/http.d.ts +238 -58
  93. package/dist/chunks/http.js +1061 -1034
  94. package/dist/chunks/transport.js +113 -59
  95. package/dist/chunks/websocket.d.ts +1 -1
  96. package/dist/chunks/websocket.js +1 -1
  97. package/dist/host-bridge.d.ts +54 -0
  98. package/dist/host-bridge.js +322 -0
  99. package/dist/http.d.ts +3 -3
  100. package/dist/index.d.ts +76 -193
  101. package/dist/index.js +2037 -1191
  102. package/dist/protocol/dist/board-constants.d.ts +1 -29
  103. package/dist/protocol/dist/board-constants.js +2 -115
  104. package/dist/protocol/dist/board-layout.d.ts +59 -0
  105. package/dist/protocol/dist/board-layout.js +482 -0
  106. package/dist/protocol/dist/board-model.d.ts +2052 -0
  107. package/dist/protocol/dist/board-model.js +592 -0
  108. package/dist/protocol/dist/board-patch.d.ts +86 -0
  109. package/dist/protocol/dist/board-patch.js +734 -0
  110. package/dist/protocol/dist/board-schema.d.ts +33 -0
  111. package/dist/protocol/dist/board-schema.js +59 -0
  112. package/dist/protocol/dist/board-upgrade.d.ts +1 -0
  113. package/dist/protocol/dist/board-url.d.ts +1 -3
  114. package/dist/protocol/dist/board-url.js +2 -2
  115. package/dist/protocol/dist/board.d.ts +37 -232
  116. package/dist/protocol/dist/board.js +62 -160
  117. package/dist/protocol/dist/display/actions.d.ts +1 -0
  118. package/dist/protocol/dist/display/index.d.ts +2 -0
  119. package/dist/protocol/dist/index.d.ts +11 -12
  120. package/dist/protocol/dist/model/metrics.d.ts +2 -0
  121. package/dist/protocol/dist/model/session.d.ts +2 -1
  122. package/dist/protocol/dist/realtime/types.d.ts +2 -2
  123. package/dist/protocol/dist/runtime/index.d.ts +1 -0
  124. package/dist/space-picker.d.ts +1 -0
  125. package/dist/space-picker.js +1 -0
  126. package/dist/types.d.ts +2 -5
  127. package/package.json +9 -1
  128. package/dist/board/core/connections.d.ts +0 -108
  129. package/dist/board/core/connections.js +0 -455
  130. package/dist/board/mutation.d.ts +0 -6
  131. package/dist/board/mutation.js +0 -14
  132. package/dist/board/render/connection-layer.d.ts +0 -53
  133. package/dist/board/render/connection-layer.js +0 -375
  134. package/dist/board/render/renderers/geo-card-renderer.d.ts +0 -5
  135. package/dist/board/render/renderers/geo-card-renderer.js +0 -127
  136. package/dist/board/semantic-document.d.ts +0 -37
  137. package/dist/board/semantic-document.js +0 -288
  138. package/dist/board/semantic-mutation.d.ts +0 -10
  139. package/dist/board/semantic-mutation.js +0 -209
  140. package/dist/protocol/dist/board-animation.js +0 -34
  141. package/dist/protocol/dist/board-authoring.d.ts +0 -1326
  142. package/dist/protocol/dist/board-authoring.js +0 -302
  143. package/dist/protocol/dist/board-capability-registry.d.ts +0 -2
  144. package/dist/protocol/dist/board-capability-registry.js +0 -123
  145. package/dist/protocol/dist/board-codec.d.ts +0 -3
  146. package/dist/protocol/dist/board-codec.js +0 -383
  147. package/dist/protocol/dist/board-composition.d.ts +0 -383
  148. package/dist/protocol/dist/board-composition.js +0 -310
  149. package/dist/protocol/dist/board-connection.d.ts +0 -317
  150. package/dist/protocol/dist/board-connection.js +0 -219
  151. package/dist/protocol/dist/board-document.d.ts +0 -1566
  152. package/dist/protocol/dist/board-document.js +0 -456
  153. package/dist/protocol/dist/board-effect.d.ts +0 -96
  154. package/dist/protocol/dist/board-effect.js +0 -54
  155. package/dist/protocol/dist/board-geometry.d.ts +0 -15
  156. package/dist/protocol/dist/board-geometry.js +0 -137
  157. package/dist/protocol/dist/board-node.d.ts +0 -8
  158. package/dist/protocol/dist/board-node.js +0 -252
  159. /package/dist/protocol/dist/{board-animation.d.ts → host-bridge.d.ts} +0 -0
@@ -1,1566 +0,0 @@
1
- import { BOARD_DOCUMENT_KIND, BOARD_EXTENSION } from "./board.js";
2
- import { BOARD_REMOTE_URL_MAX_LENGTH, BoardRemoteUrlSchema, isPublicBoardRemoteAddress, normalizeBoardRemoteUrl } from "./board-url.js";
3
- import { z } from "zod";
4
- //#region ../protocol/dist/board-document.d.ts
5
- declare const BoardFrameSchema: z.ZodObject<{
6
- x: z.ZodNumber;
7
- y: z.ZodNumber;
8
- width: z.ZodNumber;
9
- height: z.ZodNumber;
10
- rotation: z.ZodDefault<z.ZodNumber>;
11
- }, z.core.$strip>;
12
- /**
13
- * The board camera. This is local UI state, not synced content: semantic ops
14
- * (see diffBoardDocuments) never describe the viewport, and the editor holds
15
- * the live camera separately from the persisted document. Here it only serves
16
- * as an initial camera hint when a document is first loaded.
17
- */
18
- declare const BoardViewportSchema: z.ZodObject<{
19
- x: z.ZodNumber;
20
- y: z.ZodNumber;
21
- zoom: z.ZodNumber;
22
- }, z.core.$strip>;
23
- declare const BoardAppearanceSchema: z.ZodObject<{
24
- theme: z.ZodOptional<z.ZodString>;
25
- motion: z.ZodOptional<z.ZodObject<{
26
- enter: z.ZodOptional<z.ZodObject<{
27
- kind: z.ZodString;
28
- kindVersion: z.ZodDefault<z.ZodNumber>;
29
- params: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
30
- }, z.core.$strict>>;
31
- }, z.core.$strict>>;
32
- mood: z.ZodOptional<z.ZodEnum<{
33
- arcane: "arcane";
34
- clean: "clean";
35
- cyber: "cyber";
36
- natural: "natural";
37
- playful: "playful";
38
- }>>;
39
- background: z.ZodDefault<z.ZodObject<{
40
- kind: z.ZodDefault<z.ZodEnum<{
41
- custom: "custom";
42
- dots: "dots";
43
- grid: "grid";
44
- image: "image";
45
- shader: "shader";
46
- solid: "solid";
47
- }>>;
48
- color: z.ZodOptional<z.ZodString>;
49
- imageUrl: z.ZodOptional<z.ZodString>;
50
- fit: z.ZodOptional<z.ZodEnum<{
51
- contain: "contain";
52
- cover: "cover";
53
- repeat: "repeat";
54
- }>>;
55
- position: z.ZodOptional<z.ZodEnum<{
56
- bottom: "bottom";
57
- center: "center";
58
- left: "left";
59
- right: "right";
60
- top: "top";
61
- }>>;
62
- opacity: z.ZodOptional<z.ZodNumber>;
63
- }, z.core.$strip>>;
64
- grid: z.ZodDefault<z.ZodObject<{
65
- visible: z.ZodDefault<z.ZodBoolean>;
66
- size: z.ZodDefault<z.ZodNumber>;
67
- opacity: z.ZodDefault<z.ZodNumber>;
68
- }, z.core.$strip>>;
69
- }, z.core.$strip>;
70
- /** Optional visual chrome still carried by a few older shapes. */
71
- declare const BoardItemStyleSchema: z.ZodObject<{
72
- variant: z.ZodDefault<z.ZodString>;
73
- theme: z.ZodOptional<z.ZodString>;
74
- accentColor: z.ZodOptional<z.ZodString>;
75
- size: z.ZodDefault<z.ZodEnum<{
76
- lg: "lg";
77
- md: "md";
78
- sm: "sm";
79
- }>>;
80
- emphasis: z.ZodDefault<z.ZodEnum<{
81
- epic: "epic";
82
- legendary: "legendary";
83
- normal: "normal";
84
- rare: "rare";
85
- }>>;
86
- effects: z.ZodDefault<z.ZodArray<z.ZodString>>;
87
- }, z.core.$strip>;
88
- declare const SpaceFileRefSchema: z.ZodObject<{
89
- kind: z.ZodLiteral<"space-file">;
90
- path: z.ZodString;
91
- }, z.core.$strip>;
92
- declare const BoardMediaSnapshotSchema: z.ZodObject<{
93
- title: z.ZodOptional<z.ZodString>;
94
- mimeType: z.ZodOptional<z.ZodString>;
95
- size: z.ZodOptional<z.ZodNumber>;
96
- mtimeMs: z.ZodOptional<z.ZodNumber>;
97
- naturalWidth: z.ZodOptional<z.ZodNumber>;
98
- naturalHeight: z.ZodOptional<z.ZodNumber>;
99
- }, z.core.$strip>;
100
- /** Freestanding text — no card chrome; its frame always follows the glyphs. */
101
- declare const BoardTextItemSchema: z.ZodObject<{
102
- id: z.ZodString;
103
- frame: z.ZodObject<{
104
- x: z.ZodNumber;
105
- y: z.ZodNumber;
106
- width: z.ZodNumber;
107
- height: z.ZodNumber;
108
- rotation: z.ZodDefault<z.ZodNumber>;
109
- }, z.core.$strip>;
110
- parentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
111
- locked: z.ZodOptional<z.ZodBoolean>;
112
- style: z.ZodOptional<z.ZodObject<{
113
- variant: z.ZodDefault<z.ZodString>;
114
- theme: z.ZodOptional<z.ZodString>;
115
- accentColor: z.ZodOptional<z.ZodString>;
116
- size: z.ZodDefault<z.ZodEnum<{
117
- lg: "lg";
118
- md: "md";
119
- sm: "sm";
120
- }>>;
121
- emphasis: z.ZodDefault<z.ZodEnum<{
122
- epic: "epic";
123
- legendary: "legendary";
124
- normal: "normal";
125
- rare: "rare";
126
- }>>;
127
- effects: z.ZodDefault<z.ZodArray<z.ZodString>>;
128
- }, z.core.$strip>>;
129
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
130
- type: z.ZodLiteral<"text">;
131
- text: z.ZodDefault<z.ZodString>;
132
- color: z.ZodDefault<z.ZodString>;
133
- fontSize: z.ZodDefault<z.ZodNumber>;
134
- }, z.core.$strip>;
135
- declare const BoardGeoItemSchema: z.ZodObject<{
136
- id: z.ZodString;
137
- frame: z.ZodObject<{
138
- x: z.ZodNumber;
139
- y: z.ZodNumber;
140
- width: z.ZodNumber;
141
- height: z.ZodNumber;
142
- rotation: z.ZodDefault<z.ZodNumber>;
143
- }, z.core.$strip>;
144
- parentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
145
- locked: z.ZodOptional<z.ZodBoolean>;
146
- style: z.ZodOptional<z.ZodObject<{
147
- variant: z.ZodDefault<z.ZodString>;
148
- theme: z.ZodOptional<z.ZodString>;
149
- accentColor: z.ZodOptional<z.ZodString>;
150
- size: z.ZodDefault<z.ZodEnum<{
151
- lg: "lg";
152
- md: "md";
153
- sm: "sm";
154
- }>>;
155
- emphasis: z.ZodDefault<z.ZodEnum<{
156
- epic: "epic";
157
- legendary: "legendary";
158
- normal: "normal";
159
- rare: "rare";
160
- }>>;
161
- effects: z.ZodDefault<z.ZodArray<z.ZodString>>;
162
- }, z.core.$strip>>;
163
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
164
- type: z.ZodLiteral<"geo">;
165
- geo: z.ZodDefault<z.ZodString>;
166
- text: z.ZodDefault<z.ZodString>;
167
- color: z.ZodDefault<z.ZodString>;
168
- fillOpacity: z.ZodDefault<z.ZodNumber>;
169
- }, z.core.$strip>;
170
- /** A raw freehand sample. Pressure defaults to 0.5 (mouse) when absent. */
171
- declare const DrawPointSchema: z.ZodObject<{
172
- x: z.ZodNumber;
173
- y: z.ZodNumber;
174
- p: z.ZodDefault<z.ZodNumber>;
175
- }, z.core.$strip>;
176
- /** A world-space point. */
177
- declare const BoardPointSchema: z.ZodObject<{
178
- x: z.ZodNumber;
179
- y: z.ZodNumber;
180
- }, z.core.$strip>;
181
- declare const BoardDrawItemSchema: z.ZodObject<{
182
- id: z.ZodString;
183
- frame: z.ZodObject<{
184
- x: z.ZodNumber;
185
- y: z.ZodNumber;
186
- width: z.ZodNumber;
187
- height: z.ZodNumber;
188
- rotation: z.ZodDefault<z.ZodNumber>;
189
- }, z.core.$strip>;
190
- parentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
191
- locked: z.ZodOptional<z.ZodBoolean>;
192
- style: z.ZodOptional<z.ZodObject<{
193
- variant: z.ZodDefault<z.ZodString>;
194
- theme: z.ZodOptional<z.ZodString>;
195
- accentColor: z.ZodOptional<z.ZodString>;
196
- size: z.ZodDefault<z.ZodEnum<{
197
- lg: "lg";
198
- md: "md";
199
- sm: "sm";
200
- }>>;
201
- emphasis: z.ZodDefault<z.ZodEnum<{
202
- epic: "epic";
203
- legendary: "legendary";
204
- normal: "normal";
205
- rare: "rare";
206
- }>>;
207
- effects: z.ZodDefault<z.ZodArray<z.ZodString>>;
208
- }, z.core.$strip>>;
209
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
210
- type: z.ZodLiteral<"draw">;
211
- points: z.ZodDefault<z.ZodArray<z.ZodObject<{
212
- x: z.ZodNumber;
213
- y: z.ZodNumber;
214
- p: z.ZodDefault<z.ZodNumber>;
215
- }, z.core.$strip>>>;
216
- color: z.ZodDefault<z.ZodString>;
217
- size: z.ZodDefault<z.ZodNumber>;
218
- }, z.core.$strip>;
219
- /**
220
- * A free arrow — a standalone annotation stroke between two world points.
221
- *
222
- * Arrows do not relate nodes. A relation between two nodes is a
223
- * `BoardConnection`, which is stored separately and resolves its geometry from
224
- * the live node frames. Keeping the two apart is what lets an arrow be a plain
225
- * shape (its own frame, freely movable) while a connection stays purely
226
- * semantic — neither has to pretend to be the other.
227
- */
228
- declare const BoardArrowItemSchema: z.ZodObject<{
229
- id: z.ZodString;
230
- frame: z.ZodObject<{
231
- x: z.ZodNumber;
232
- y: z.ZodNumber;
233
- width: z.ZodNumber;
234
- height: z.ZodNumber;
235
- rotation: z.ZodDefault<z.ZodNumber>;
236
- }, z.core.$strip>;
237
- parentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
238
- locked: z.ZodOptional<z.ZodBoolean>;
239
- style: z.ZodOptional<z.ZodObject<{
240
- variant: z.ZodDefault<z.ZodString>;
241
- theme: z.ZodOptional<z.ZodString>;
242
- accentColor: z.ZodOptional<z.ZodString>;
243
- size: z.ZodDefault<z.ZodEnum<{
244
- lg: "lg";
245
- md: "md";
246
- sm: "sm";
247
- }>>;
248
- emphasis: z.ZodDefault<z.ZodEnum<{
249
- epic: "epic";
250
- legendary: "legendary";
251
- normal: "normal";
252
- rare: "rare";
253
- }>>;
254
- effects: z.ZodDefault<z.ZodArray<z.ZodString>>;
255
- }, z.core.$strip>>;
256
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
257
- type: z.ZodLiteral<"arrow">;
258
- start: z.ZodObject<{
259
- x: z.ZodNumber;
260
- y: z.ZodNumber;
261
- }, z.core.$strip>;
262
- end: z.ZodObject<{
263
- x: z.ZodNumber;
264
- y: z.ZodNumber;
265
- }, z.core.$strip>;
266
- bend: z.ZodDefault<z.ZodNumber>;
267
- color: z.ZodDefault<z.ZodString>;
268
- size: z.ZodDefault<z.ZodNumber>;
269
- arrowStart: z.ZodDefault<z.ZodBoolean>;
270
- arrowEnd: z.ZodDefault<z.ZodBoolean>;
271
- label: z.ZodDefault<z.ZodString>;
272
- }, z.core.$strip>;
273
- /** A frame container for organising shapes. */
274
- declare const BoardFrameItemSchema: z.ZodObject<{
275
- id: z.ZodString;
276
- frame: z.ZodObject<{
277
- x: z.ZodNumber;
278
- y: z.ZodNumber;
279
- width: z.ZodNumber;
280
- height: z.ZodNumber;
281
- rotation: z.ZodDefault<z.ZodNumber>;
282
- }, z.core.$strip>;
283
- parentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
284
- locked: z.ZodOptional<z.ZodBoolean>;
285
- style: z.ZodOptional<z.ZodObject<{
286
- variant: z.ZodDefault<z.ZodString>;
287
- theme: z.ZodOptional<z.ZodString>;
288
- accentColor: z.ZodOptional<z.ZodString>;
289
- size: z.ZodDefault<z.ZodEnum<{
290
- lg: "lg";
291
- md: "md";
292
- sm: "sm";
293
- }>>;
294
- emphasis: z.ZodDefault<z.ZodEnum<{
295
- epic: "epic";
296
- legendary: "legendary";
297
- normal: "normal";
298
- rare: "rare";
299
- }>>;
300
- effects: z.ZodDefault<z.ZodArray<z.ZodString>>;
301
- }, z.core.$strip>>;
302
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
303
- type: z.ZodLiteral<"frame">;
304
- label: z.ZodDefault<z.ZodString>;
305
- color: z.ZodDefault<z.ZodString>;
306
- }, z.core.$strip>;
307
- /** Image node — space file only, natural aspect, no chrome. */
308
- declare const BoardImageItemSchema: z.ZodObject<{
309
- id: z.ZodString;
310
- frame: z.ZodObject<{
311
- x: z.ZodNumber;
312
- y: z.ZodNumber;
313
- width: z.ZodNumber;
314
- height: z.ZodNumber;
315
- rotation: z.ZodDefault<z.ZodNumber>;
316
- }, z.core.$strip>;
317
- parentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
318
- locked: z.ZodOptional<z.ZodBoolean>;
319
- style: z.ZodOptional<z.ZodObject<{
320
- variant: z.ZodDefault<z.ZodString>;
321
- theme: z.ZodOptional<z.ZodString>;
322
- accentColor: z.ZodOptional<z.ZodString>;
323
- size: z.ZodDefault<z.ZodEnum<{
324
- lg: "lg";
325
- md: "md";
326
- sm: "sm";
327
- }>>;
328
- emphasis: z.ZodDefault<z.ZodEnum<{
329
- epic: "epic";
330
- legendary: "legendary";
331
- normal: "normal";
332
- rare: "rare";
333
- }>>;
334
- effects: z.ZodDefault<z.ZodArray<z.ZodString>>;
335
- }, z.core.$strip>>;
336
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
337
- type: z.ZodLiteral<"image">;
338
- ref: z.ZodObject<{
339
- kind: z.ZodLiteral<"space-file">;
340
- path: z.ZodString;
341
- }, z.core.$strip>;
342
- snapshot: z.ZodOptional<z.ZodObject<{
343
- title: z.ZodOptional<z.ZodString>;
344
- mimeType: z.ZodOptional<z.ZodString>;
345
- size: z.ZodOptional<z.ZodNumber>;
346
- mtimeMs: z.ZodOptional<z.ZodNumber>;
347
- naturalWidth: z.ZodOptional<z.ZodNumber>;
348
- naturalHeight: z.ZodOptional<z.ZodNumber>;
349
- }, z.core.$strip>>;
350
- crop: z.ZodOptional<z.ZodObject<{
351
- x: z.ZodDefault<z.ZodNumber>;
352
- y: z.ZodDefault<z.ZodNumber>;
353
- w: z.ZodDefault<z.ZodNumber>;
354
- h: z.ZodDefault<z.ZodNumber>;
355
- }, z.core.$strip>>;
356
- }, z.core.$strip>;
357
- /** Video node — space file only. Playback state is local UI, never synced. */
358
- declare const BoardVideoItemSchema: z.ZodObject<{
359
- id: z.ZodString;
360
- frame: z.ZodObject<{
361
- x: z.ZodNumber;
362
- y: z.ZodNumber;
363
- width: z.ZodNumber;
364
- height: z.ZodNumber;
365
- rotation: z.ZodDefault<z.ZodNumber>;
366
- }, z.core.$strip>;
367
- parentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
368
- locked: z.ZodOptional<z.ZodBoolean>;
369
- style: z.ZodOptional<z.ZodObject<{
370
- variant: z.ZodDefault<z.ZodString>;
371
- theme: z.ZodOptional<z.ZodString>;
372
- accentColor: z.ZodOptional<z.ZodString>;
373
- size: z.ZodDefault<z.ZodEnum<{
374
- lg: "lg";
375
- md: "md";
376
- sm: "sm";
377
- }>>;
378
- emphasis: z.ZodDefault<z.ZodEnum<{
379
- epic: "epic";
380
- legendary: "legendary";
381
- normal: "normal";
382
- rare: "rare";
383
- }>>;
384
- effects: z.ZodDefault<z.ZodArray<z.ZodString>>;
385
- }, z.core.$strip>>;
386
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
387
- type: z.ZodLiteral<"video">;
388
- ref: z.ZodObject<{
389
- kind: z.ZodLiteral<"space-file">;
390
- path: z.ZodString;
391
- }, z.core.$strip>;
392
- snapshot: z.ZodOptional<z.ZodObject<{
393
- title: z.ZodOptional<z.ZodString>;
394
- mimeType: z.ZodOptional<z.ZodString>;
395
- size: z.ZodOptional<z.ZodNumber>;
396
- mtimeMs: z.ZodOptional<z.ZodNumber>;
397
- naturalWidth: z.ZodOptional<z.ZodNumber>;
398
- naturalHeight: z.ZodOptional<z.ZodNumber>;
399
- }, z.core.$strip>>;
400
- }, z.core.$strip>;
401
- /** Audio node — space file only. Playback state is local UI, never synced. */
402
- declare const BoardAudioItemSchema: z.ZodObject<{
403
- id: z.ZodString;
404
- frame: z.ZodObject<{
405
- x: z.ZodNumber;
406
- y: z.ZodNumber;
407
- width: z.ZodNumber;
408
- height: z.ZodNumber;
409
- rotation: z.ZodDefault<z.ZodNumber>;
410
- }, z.core.$strip>;
411
- parentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
412
- locked: z.ZodOptional<z.ZodBoolean>;
413
- style: z.ZodOptional<z.ZodObject<{
414
- variant: z.ZodDefault<z.ZodString>;
415
- theme: z.ZodOptional<z.ZodString>;
416
- accentColor: z.ZodOptional<z.ZodString>;
417
- size: z.ZodDefault<z.ZodEnum<{
418
- lg: "lg";
419
- md: "md";
420
- sm: "sm";
421
- }>>;
422
- emphasis: z.ZodDefault<z.ZodEnum<{
423
- epic: "epic";
424
- legendary: "legendary";
425
- normal: "normal";
426
- rare: "rare";
427
- }>>;
428
- effects: z.ZodDefault<z.ZodArray<z.ZodString>>;
429
- }, z.core.$strip>>;
430
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
431
- type: z.ZodLiteral<"audio">;
432
- ref: z.ZodObject<{
433
- kind: z.ZodLiteral<"space-file">;
434
- path: z.ZodString;
435
- }, z.core.$strip>;
436
- snapshot: z.ZodOptional<z.ZodObject<{
437
- title: z.ZodOptional<z.ZodString>;
438
- mimeType: z.ZodOptional<z.ZodString>;
439
- size: z.ZodOptional<z.ZodNumber>;
440
- mtimeMs: z.ZodOptional<z.ZodNumber>;
441
- naturalWidth: z.ZodOptional<z.ZodNumber>;
442
- naturalHeight: z.ZodOptional<z.ZodNumber>;
443
- durationMs: z.ZodOptional<z.ZodNumber>;
444
- }, z.core.$strip>>;
445
- }, z.core.$strip>;
446
- /**
447
- * Cached display facts for a file card.
448
- *
449
- * Purely derived from the referenced file and versioned by `mtimeMs`, so it is a
450
- * cache and never a second source of truth: the workspace file remains
451
- * authoritative, and a stale snapshot is detectable rather than silently wrong.
452
- * It is stored so that opening a board renders complete cards immediately, with
453
- * no per-node file read on the first paint.
454
- */
455
- declare const BoardFileSnapshotSchema: z.ZodObject<{
456
- title: z.ZodOptional<z.ZodString>;
457
- mimeType: z.ZodOptional<z.ZodString>;
458
- size: z.ZodOptional<z.ZodNumber>;
459
- mtimeMs: z.ZodOptional<z.ZodNumber>;
460
- excerpt: z.ZodOptional<z.ZodString>;
461
- coverPath: z.ZodOptional<z.ZodString>;
462
- coverUrl: z.ZodOptional<z.ZodString>;
463
- }, z.core.$strip>;
464
- /**
465
- * File node — a thumbnail entry point to any workspace file.
466
- *
467
- * This is the fallback for every dropped file that is not natively an image or
468
- * video, including binaries and unknown extensions: a board should never refuse
469
- * a file, only present it with less detail. Presentation tiers are derived from
470
- * the snapshot (see filePreviewKind), not stored, so there is no display state
471
- * to drift from the facts.
472
- */
473
- declare const BoardFileItemSchema: z.ZodObject<{
474
- id: z.ZodString;
475
- frame: z.ZodObject<{
476
- x: z.ZodNumber;
477
- y: z.ZodNumber;
478
- width: z.ZodNumber;
479
- height: z.ZodNumber;
480
- rotation: z.ZodDefault<z.ZodNumber>;
481
- }, z.core.$strip>;
482
- parentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
483
- locked: z.ZodOptional<z.ZodBoolean>;
484
- style: z.ZodOptional<z.ZodObject<{
485
- variant: z.ZodDefault<z.ZodString>;
486
- theme: z.ZodOptional<z.ZodString>;
487
- accentColor: z.ZodOptional<z.ZodString>;
488
- size: z.ZodDefault<z.ZodEnum<{
489
- lg: "lg";
490
- md: "md";
491
- sm: "sm";
492
- }>>;
493
- emphasis: z.ZodDefault<z.ZodEnum<{
494
- epic: "epic";
495
- legendary: "legendary";
496
- normal: "normal";
497
- rare: "rare";
498
- }>>;
499
- effects: z.ZodDefault<z.ZodArray<z.ZodString>>;
500
- }, z.core.$strip>>;
501
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
502
- type: z.ZodLiteral<"file">;
503
- ref: z.ZodObject<{
504
- kind: z.ZodLiteral<"space-file">;
505
- path: z.ZodString;
506
- }, z.core.$strip>;
507
- snapshot: z.ZodOptional<z.ZodObject<{
508
- title: z.ZodOptional<z.ZodString>;
509
- mimeType: z.ZodOptional<z.ZodString>;
510
- size: z.ZodOptional<z.ZodNumber>;
511
- mtimeMs: z.ZodOptional<z.ZodNumber>;
512
- excerpt: z.ZodOptional<z.ZodString>;
513
- coverPath: z.ZodOptional<z.ZodString>;
514
- coverUrl: z.ZodOptional<z.ZodString>;
515
- }, z.core.$strip>>;
516
- }, z.core.$strip>;
517
- declare const BOARD_TASK_ARTIFACT_LIMIT = 6;
518
- declare const BoardTaskArtifactSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
519
- id: z.ZodString;
520
- title: z.ZodOptional<z.ZodString>;
521
- url: z.ZodString;
522
- mimeType: z.ZodOptional<z.ZodString>;
523
- type: z.ZodLiteral<"image">;
524
- naturalWidth: z.ZodOptional<z.ZodNumber>;
525
- naturalHeight: z.ZodOptional<z.ZodNumber>;
526
- }, z.core.$strict>, z.ZodObject<{
527
- id: z.ZodString;
528
- title: z.ZodOptional<z.ZodString>;
529
- url: z.ZodString;
530
- mimeType: z.ZodOptional<z.ZodString>;
531
- type: z.ZodLiteral<"video">;
532
- previewUrl: z.ZodOptional<z.ZodString>;
533
- durationMs: z.ZodOptional<z.ZodNumber>;
534
- naturalWidth: z.ZodOptional<z.ZodNumber>;
535
- naturalHeight: z.ZodOptional<z.ZodNumber>;
536
- }, z.core.$strict>, z.ZodObject<{
537
- id: z.ZodString;
538
- title: z.ZodOptional<z.ZodString>;
539
- url: z.ZodString;
540
- mimeType: z.ZodOptional<z.ZodString>;
541
- type: z.ZodLiteral<"audio">;
542
- previewUrl: z.ZodOptional<z.ZodString>;
543
- durationMs: z.ZodOptional<z.ZodNumber>;
544
- }, z.core.$strict>, z.ZodObject<{
545
- id: z.ZodString;
546
- type: z.ZodLiteral<"text">;
547
- title: z.ZodOptional<z.ZodString>;
548
- textExcerpt: z.ZodString;
549
- }, z.core.$strict>], "type">;
550
- /**
551
- * Cached task facts used for an immediate first paint. The task run remains the
552
- * source of truth and live clients refresh this projection by `taskRunId`.
553
- */
554
- declare const BoardTaskSnapshotSchema: z.ZodObject<{
555
- taskType: z.ZodString;
556
- status: z.ZodEnum<{
557
- completed: "completed";
558
- failed: "failed";
559
- pending: "pending";
560
- running: "running";
561
- }>;
562
- title: z.ZodString;
563
- model: z.ZodOptional<z.ZodString>;
564
- promptExcerpt: z.ZodOptional<z.ZodString>;
565
- artifactCount: z.ZodNumber;
566
- artifacts: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
567
- id: z.ZodString;
568
- title: z.ZodOptional<z.ZodString>;
569
- url: z.ZodString;
570
- mimeType: z.ZodOptional<z.ZodString>;
571
- type: z.ZodLiteral<"image">;
572
- naturalWidth: z.ZodOptional<z.ZodNumber>;
573
- naturalHeight: z.ZodOptional<z.ZodNumber>;
574
- }, z.core.$strict>, z.ZodObject<{
575
- id: z.ZodString;
576
- title: z.ZodOptional<z.ZodString>;
577
- url: z.ZodString;
578
- mimeType: z.ZodOptional<z.ZodString>;
579
- type: z.ZodLiteral<"video">;
580
- previewUrl: z.ZodOptional<z.ZodString>;
581
- durationMs: z.ZodOptional<z.ZodNumber>;
582
- naturalWidth: z.ZodOptional<z.ZodNumber>;
583
- naturalHeight: z.ZodOptional<z.ZodNumber>;
584
- }, z.core.$strict>, z.ZodObject<{
585
- id: z.ZodString;
586
- title: z.ZodOptional<z.ZodString>;
587
- url: z.ZodString;
588
- mimeType: z.ZodOptional<z.ZodString>;
589
- type: z.ZodLiteral<"audio">;
590
- previewUrl: z.ZodOptional<z.ZodString>;
591
- durationMs: z.ZodOptional<z.ZodNumber>;
592
- }, z.core.$strict>, z.ZodObject<{
593
- id: z.ZodString;
594
- type: z.ZodLiteral<"text">;
595
- title: z.ZodOptional<z.ZodString>;
596
- textExcerpt: z.ZodString;
597
- }, z.core.$strict>], "type">>>;
598
- updatedAt: z.ZodOptional<z.ZodString>;
599
- }, z.core.$strict>;
600
- /** A stable reference to a task run with a small, replaceable display cache. */
601
- declare const BoardTaskItemSchema: z.ZodObject<{
602
- id: z.ZodString;
603
- frame: z.ZodObject<{
604
- x: z.ZodNumber;
605
- y: z.ZodNumber;
606
- width: z.ZodNumber;
607
- height: z.ZodNumber;
608
- rotation: z.ZodDefault<z.ZodNumber>;
609
- }, z.core.$strip>;
610
- parentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
611
- locked: z.ZodOptional<z.ZodBoolean>;
612
- style: z.ZodOptional<z.ZodObject<{
613
- variant: z.ZodDefault<z.ZodString>;
614
- theme: z.ZodOptional<z.ZodString>;
615
- accentColor: z.ZodOptional<z.ZodString>;
616
- size: z.ZodDefault<z.ZodEnum<{
617
- lg: "lg";
618
- md: "md";
619
- sm: "sm";
620
- }>>;
621
- emphasis: z.ZodDefault<z.ZodEnum<{
622
- epic: "epic";
623
- legendary: "legendary";
624
- normal: "normal";
625
- rare: "rare";
626
- }>>;
627
- effects: z.ZodDefault<z.ZodArray<z.ZodString>>;
628
- }, z.core.$strip>>;
629
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
630
- type: z.ZodLiteral<"task">;
631
- taskRunId: z.ZodString;
632
- snapshot: z.ZodObject<{
633
- taskType: z.ZodString;
634
- status: z.ZodEnum<{
635
- completed: "completed";
636
- failed: "failed";
637
- pending: "pending";
638
- running: "running";
639
- }>;
640
- title: z.ZodString;
641
- model: z.ZodOptional<z.ZodString>;
642
- promptExcerpt: z.ZodOptional<z.ZodString>;
643
- artifactCount: z.ZodNumber;
644
- artifacts: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
645
- id: z.ZodString;
646
- title: z.ZodOptional<z.ZodString>;
647
- url: z.ZodString;
648
- mimeType: z.ZodOptional<z.ZodString>;
649
- type: z.ZodLiteral<"image">;
650
- naturalWidth: z.ZodOptional<z.ZodNumber>;
651
- naturalHeight: z.ZodOptional<z.ZodNumber>;
652
- }, z.core.$strict>, z.ZodObject<{
653
- id: z.ZodString;
654
- title: z.ZodOptional<z.ZodString>;
655
- url: z.ZodString;
656
- mimeType: z.ZodOptional<z.ZodString>;
657
- type: z.ZodLiteral<"video">;
658
- previewUrl: z.ZodOptional<z.ZodString>;
659
- durationMs: z.ZodOptional<z.ZodNumber>;
660
- naturalWidth: z.ZodOptional<z.ZodNumber>;
661
- naturalHeight: z.ZodOptional<z.ZodNumber>;
662
- }, z.core.$strict>, z.ZodObject<{
663
- id: z.ZodString;
664
- title: z.ZodOptional<z.ZodString>;
665
- url: z.ZodString;
666
- mimeType: z.ZodOptional<z.ZodString>;
667
- type: z.ZodLiteral<"audio">;
668
- previewUrl: z.ZodOptional<z.ZodString>;
669
- durationMs: z.ZodOptional<z.ZodNumber>;
670
- }, z.core.$strict>, z.ZodObject<{
671
- id: z.ZodString;
672
- type: z.ZodLiteral<"text">;
673
- title: z.ZodOptional<z.ZodString>;
674
- textExcerpt: z.ZodString;
675
- }, z.core.$strict>], "type">>>;
676
- updatedAt: z.ZodOptional<z.ZodString>;
677
- }, z.core.$strict>;
678
- }, z.core.$strip>;
679
- /**
680
- * The set of shape types this client understands natively. Anything else is
681
- * preserved verbatim as an unknown item (see BoardUnknownItem) so documents
682
- * authored by newer clients round-trip losslessly — data is never dropped or
683
- * silently downgraded just because this client predates a shape type.
684
- */
685
- declare const KNOWN_BOARD_ITEM_TYPES: readonly ["image", "video", "audio", "file", "task", "text", "geo", "draw", "arrow", "frame"];
686
- type KnownBoardItemType = (typeof KNOWN_BOARD_ITEM_TYPES)[number];
687
- /**
688
- * A forward-compatible carrier for shape types this client does not recognise.
689
- * Its discriminant is the literal `"unknown"` so the item union still narrows
690
- * cleanly on `type`. The real type string and every original field are preserved
691
- * verbatim in `raw`.
692
- */
693
- declare const UNKNOWN_BOARD_ITEM_TYPE: "unknown";
694
- type BoardUnknownItem = {
695
- id: string;
696
- type: typeof UNKNOWN_BOARD_ITEM_TYPE;
697
- frame: z.infer<typeof BoardFrameSchema>;
698
- parentId?: string | null;
699
- locked?: boolean;
700
- style?: z.infer<typeof BoardItemStyleSchema>;
701
- metadata?: Record<string, unknown>;
702
- /** Verbatim original item record (carries the real `type`). */
703
- raw: Record<string, unknown>;
704
- };
705
- /** The real (preserved) type string of an unknown item. */
706
- declare function unknownRealType(item: BoardUnknownItem): string;
707
- declare const BoardItemSchema: z.ZodPipe<z.ZodAny, z.ZodTransform<BoardUnknownItem | {
708
- id: string;
709
- frame: {
710
- x: number;
711
- y: number;
712
- width: number;
713
- height: number;
714
- rotation: number;
715
- };
716
- parentId?: string | null | undefined;
717
- locked?: boolean | undefined;
718
- style?: {
719
- variant: string;
720
- theme?: string | undefined;
721
- accentColor?: string | undefined;
722
- size: "lg" | "md" | "sm";
723
- emphasis: "epic" | "legendary" | "normal" | "rare";
724
- effects: string[];
725
- } | undefined;
726
- metadata?: Record<string, unknown> | undefined;
727
- type: "image";
728
- ref: {
729
- kind: "space-file";
730
- path: string;
731
- };
732
- snapshot?: {
733
- title?: string | undefined;
734
- mimeType?: string | undefined;
735
- size?: number | undefined;
736
- mtimeMs?: number | undefined;
737
- naturalWidth?: number | undefined;
738
- naturalHeight?: number | undefined;
739
- } | undefined;
740
- crop?: {
741
- x: number;
742
- y: number;
743
- w: number;
744
- h: number;
745
- } | undefined;
746
- } | {
747
- id: string;
748
- frame: {
749
- x: number;
750
- y: number;
751
- width: number;
752
- height: number;
753
- rotation: number;
754
- };
755
- parentId?: string | null | undefined;
756
- locked?: boolean | undefined;
757
- style?: {
758
- variant: string;
759
- theme?: string | undefined;
760
- accentColor?: string | undefined;
761
- size: "lg" | "md" | "sm";
762
- emphasis: "epic" | "legendary" | "normal" | "rare";
763
- effects: string[];
764
- } | undefined;
765
- metadata?: Record<string, unknown> | undefined;
766
- type: "video";
767
- ref: {
768
- kind: "space-file";
769
- path: string;
770
- };
771
- snapshot?: {
772
- title?: string | undefined;
773
- mimeType?: string | undefined;
774
- size?: number | undefined;
775
- mtimeMs?: number | undefined;
776
- naturalWidth?: number | undefined;
777
- naturalHeight?: number | undefined;
778
- } | undefined;
779
- } | {
780
- id: string;
781
- frame: {
782
- x: number;
783
- y: number;
784
- width: number;
785
- height: number;
786
- rotation: number;
787
- };
788
- parentId?: string | null | undefined;
789
- locked?: boolean | undefined;
790
- style?: {
791
- variant: string;
792
- theme?: string | undefined;
793
- accentColor?: string | undefined;
794
- size: "lg" | "md" | "sm";
795
- emphasis: "epic" | "legendary" | "normal" | "rare";
796
- effects: string[];
797
- } | undefined;
798
- metadata?: Record<string, unknown> | undefined;
799
- type: "audio";
800
- ref: {
801
- kind: "space-file";
802
- path: string;
803
- };
804
- snapshot?: {
805
- title?: string | undefined;
806
- mimeType?: string | undefined;
807
- size?: number | undefined;
808
- mtimeMs?: number | undefined;
809
- naturalWidth?: number | undefined;
810
- naturalHeight?: number | undefined;
811
- durationMs?: number | undefined;
812
- } | undefined;
813
- } | {
814
- id: string;
815
- frame: {
816
- x: number;
817
- y: number;
818
- width: number;
819
- height: number;
820
- rotation: number;
821
- };
822
- parentId?: string | null | undefined;
823
- locked?: boolean | undefined;
824
- style?: {
825
- variant: string;
826
- theme?: string | undefined;
827
- accentColor?: string | undefined;
828
- size: "lg" | "md" | "sm";
829
- emphasis: "epic" | "legendary" | "normal" | "rare";
830
- effects: string[];
831
- } | undefined;
832
- metadata?: Record<string, unknown> | undefined;
833
- type: "file";
834
- ref: {
835
- kind: "space-file";
836
- path: string;
837
- };
838
- snapshot?: {
839
- title?: string | undefined;
840
- mimeType?: string | undefined;
841
- size?: number | undefined;
842
- mtimeMs?: number | undefined;
843
- excerpt?: string | undefined;
844
- coverPath?: string | undefined;
845
- coverUrl?: string | undefined;
846
- } | undefined;
847
- } | {
848
- id: string;
849
- frame: {
850
- x: number;
851
- y: number;
852
- width: number;
853
- height: number;
854
- rotation: number;
855
- };
856
- parentId?: string | null | undefined;
857
- locked?: boolean | undefined;
858
- style?: {
859
- variant: string;
860
- theme?: string | undefined;
861
- accentColor?: string | undefined;
862
- size: "lg" | "md" | "sm";
863
- emphasis: "epic" | "legendary" | "normal" | "rare";
864
- effects: string[];
865
- } | undefined;
866
- metadata?: Record<string, unknown> | undefined;
867
- type: "task";
868
- taskRunId: string;
869
- snapshot: {
870
- taskType: string;
871
- status: "completed" | "failed" | "pending" | "running";
872
- title: string;
873
- model?: string | undefined;
874
- promptExcerpt?: string | undefined;
875
- artifactCount: number;
876
- artifacts: ({
877
- id: string;
878
- title?: string | undefined;
879
- url: string;
880
- mimeType?: string | undefined;
881
- type: "image";
882
- naturalWidth?: number | undefined;
883
- naturalHeight?: number | undefined;
884
- } | {
885
- id: string;
886
- title?: string | undefined;
887
- url: string;
888
- mimeType?: string | undefined;
889
- type: "video";
890
- previewUrl?: string | undefined;
891
- durationMs?: number | undefined;
892
- naturalWidth?: number | undefined;
893
- naturalHeight?: number | undefined;
894
- } | {
895
- id: string;
896
- title?: string | undefined;
897
- url: string;
898
- mimeType?: string | undefined;
899
- type: "audio";
900
- previewUrl?: string | undefined;
901
- durationMs?: number | undefined;
902
- } | {
903
- id: string;
904
- type: "text";
905
- title?: string | undefined;
906
- textExcerpt: string;
907
- })[];
908
- updatedAt?: string | undefined;
909
- };
910
- } | {
911
- id: string;
912
- frame: {
913
- x: number;
914
- y: number;
915
- width: number;
916
- height: number;
917
- rotation: number;
918
- };
919
- parentId?: string | null | undefined;
920
- locked?: boolean | undefined;
921
- style?: {
922
- variant: string;
923
- theme?: string | undefined;
924
- accentColor?: string | undefined;
925
- size: "lg" | "md" | "sm";
926
- emphasis: "epic" | "legendary" | "normal" | "rare";
927
- effects: string[];
928
- } | undefined;
929
- metadata?: Record<string, unknown> | undefined;
930
- type: "text";
931
- text: string;
932
- color: string;
933
- fontSize: number;
934
- } | {
935
- id: string;
936
- frame: {
937
- x: number;
938
- y: number;
939
- width: number;
940
- height: number;
941
- rotation: number;
942
- };
943
- parentId?: string | null | undefined;
944
- locked?: boolean | undefined;
945
- style?: {
946
- variant: string;
947
- theme?: string | undefined;
948
- accentColor?: string | undefined;
949
- size: "lg" | "md" | "sm";
950
- emphasis: "epic" | "legendary" | "normal" | "rare";
951
- effects: string[];
952
- } | undefined;
953
- metadata?: Record<string, unknown> | undefined;
954
- type: "geo";
955
- geo: string;
956
- text: string;
957
- color: string;
958
- fillOpacity: number;
959
- } | {
960
- id: string;
961
- frame: {
962
- x: number;
963
- y: number;
964
- width: number;
965
- height: number;
966
- rotation: number;
967
- };
968
- parentId?: string | null | undefined;
969
- locked?: boolean | undefined;
970
- style?: {
971
- variant: string;
972
- theme?: string | undefined;
973
- accentColor?: string | undefined;
974
- size: "lg" | "md" | "sm";
975
- emphasis: "epic" | "legendary" | "normal" | "rare";
976
- effects: string[];
977
- } | undefined;
978
- metadata?: Record<string, unknown> | undefined;
979
- type: "draw";
980
- points: {
981
- x: number;
982
- y: number;
983
- p: number;
984
- }[];
985
- color: string;
986
- size: number;
987
- } | {
988
- id: string;
989
- frame: {
990
- x: number;
991
- y: number;
992
- width: number;
993
- height: number;
994
- rotation: number;
995
- };
996
- parentId?: string | null | undefined;
997
- locked?: boolean | undefined;
998
- style?: {
999
- variant: string;
1000
- theme?: string | undefined;
1001
- accentColor?: string | undefined;
1002
- size: "lg" | "md" | "sm";
1003
- emphasis: "epic" | "legendary" | "normal" | "rare";
1004
- effects: string[];
1005
- } | undefined;
1006
- metadata?: Record<string, unknown> | undefined;
1007
- type: "arrow";
1008
- start: {
1009
- x: number;
1010
- y: number;
1011
- };
1012
- end: {
1013
- x: number;
1014
- y: number;
1015
- };
1016
- bend: number;
1017
- color: string;
1018
- size: number;
1019
- arrowStart: boolean;
1020
- arrowEnd: boolean;
1021
- label: string;
1022
- } | {
1023
- id: string;
1024
- frame: {
1025
- x: number;
1026
- y: number;
1027
- width: number;
1028
- height: number;
1029
- rotation: number;
1030
- };
1031
- parentId?: string | null | undefined;
1032
- locked?: boolean | undefined;
1033
- style?: {
1034
- variant: string;
1035
- theme?: string | undefined;
1036
- accentColor?: string | undefined;
1037
- size: "lg" | "md" | "sm";
1038
- emphasis: "epic" | "legendary" | "normal" | "rare";
1039
- effects: string[];
1040
- } | undefined;
1041
- metadata?: Record<string, unknown> | undefined;
1042
- type: "frame";
1043
- label: string;
1044
- color: string;
1045
- }, any>>;
1046
- /**
1047
- * Parse a single item leniently: known types are validated and normalised;
1048
- * anything else becomes a lossless unknown item. Never throws on shape data —
1049
- * a malformed known item degrades to unknown rather than failing the document.
1050
- */
1051
- declare function parseBoardItemLoose(raw: unknown): BoardItem;
1052
- declare const BoardDocumentSchema: z.ZodObject<{
1053
- kind: z.ZodLiteral<"cohub.board">;
1054
- version: z.ZodLiteral<1>;
1055
- appearance: z.ZodDefault<z.ZodObject<{
1056
- theme: z.ZodOptional<z.ZodString>;
1057
- motion: z.ZodOptional<z.ZodObject<{
1058
- enter: z.ZodOptional<z.ZodObject<{
1059
- kind: z.ZodString;
1060
- kindVersion: z.ZodDefault<z.ZodNumber>;
1061
- params: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1062
- }, z.core.$strict>>;
1063
- }, z.core.$strict>>;
1064
- mood: z.ZodOptional<z.ZodEnum<{
1065
- arcane: "arcane";
1066
- clean: "clean";
1067
- cyber: "cyber";
1068
- natural: "natural";
1069
- playful: "playful";
1070
- }>>;
1071
- background: z.ZodDefault<z.ZodObject<{
1072
- kind: z.ZodDefault<z.ZodEnum<{
1073
- custom: "custom";
1074
- dots: "dots";
1075
- grid: "grid";
1076
- image: "image";
1077
- shader: "shader";
1078
- solid: "solid";
1079
- }>>;
1080
- color: z.ZodOptional<z.ZodString>;
1081
- imageUrl: z.ZodOptional<z.ZodString>;
1082
- fit: z.ZodOptional<z.ZodEnum<{
1083
- contain: "contain";
1084
- cover: "cover";
1085
- repeat: "repeat";
1086
- }>>;
1087
- position: z.ZodOptional<z.ZodEnum<{
1088
- bottom: "bottom";
1089
- center: "center";
1090
- left: "left";
1091
- right: "right";
1092
- top: "top";
1093
- }>>;
1094
- opacity: z.ZodOptional<z.ZodNumber>;
1095
- }, z.core.$strip>>;
1096
- grid: z.ZodDefault<z.ZodObject<{
1097
- visible: z.ZodDefault<z.ZodBoolean>;
1098
- size: z.ZodDefault<z.ZodNumber>;
1099
- opacity: z.ZodDefault<z.ZodNumber>;
1100
- }, z.core.$strip>>;
1101
- }, z.core.$strip>>;
1102
- viewport: z.ZodObject<{
1103
- x: z.ZodNumber;
1104
- y: z.ZodNumber;
1105
- zoom: z.ZodNumber;
1106
- }, z.core.$strip>;
1107
- items: z.ZodArray<z.ZodPipe<z.ZodAny, z.ZodTransform<BoardUnknownItem | {
1108
- id: string;
1109
- frame: {
1110
- x: number;
1111
- y: number;
1112
- width: number;
1113
- height: number;
1114
- rotation: number;
1115
- };
1116
- parentId?: string | null | undefined;
1117
- locked?: boolean | undefined;
1118
- style?: {
1119
- variant: string;
1120
- theme?: string | undefined;
1121
- accentColor?: string | undefined;
1122
- size: "lg" | "md" | "sm";
1123
- emphasis: "epic" | "legendary" | "normal" | "rare";
1124
- effects: string[];
1125
- } | undefined;
1126
- metadata?: Record<string, unknown> | undefined;
1127
- type: "image";
1128
- ref: {
1129
- kind: "space-file";
1130
- path: string;
1131
- };
1132
- snapshot?: {
1133
- title?: string | undefined;
1134
- mimeType?: string | undefined;
1135
- size?: number | undefined;
1136
- mtimeMs?: number | undefined;
1137
- naturalWidth?: number | undefined;
1138
- naturalHeight?: number | undefined;
1139
- } | undefined;
1140
- crop?: {
1141
- x: number;
1142
- y: number;
1143
- w: number;
1144
- h: number;
1145
- } | undefined;
1146
- } | {
1147
- id: string;
1148
- frame: {
1149
- x: number;
1150
- y: number;
1151
- width: number;
1152
- height: number;
1153
- rotation: number;
1154
- };
1155
- parentId?: string | null | undefined;
1156
- locked?: boolean | undefined;
1157
- style?: {
1158
- variant: string;
1159
- theme?: string | undefined;
1160
- accentColor?: string | undefined;
1161
- size: "lg" | "md" | "sm";
1162
- emphasis: "epic" | "legendary" | "normal" | "rare";
1163
- effects: string[];
1164
- } | undefined;
1165
- metadata?: Record<string, unknown> | undefined;
1166
- type: "video";
1167
- ref: {
1168
- kind: "space-file";
1169
- path: string;
1170
- };
1171
- snapshot?: {
1172
- title?: string | undefined;
1173
- mimeType?: string | undefined;
1174
- size?: number | undefined;
1175
- mtimeMs?: number | undefined;
1176
- naturalWidth?: number | undefined;
1177
- naturalHeight?: number | undefined;
1178
- } | undefined;
1179
- } | {
1180
- id: string;
1181
- frame: {
1182
- x: number;
1183
- y: number;
1184
- width: number;
1185
- height: number;
1186
- rotation: number;
1187
- };
1188
- parentId?: string | null | undefined;
1189
- locked?: boolean | undefined;
1190
- style?: {
1191
- variant: string;
1192
- theme?: string | undefined;
1193
- accentColor?: string | undefined;
1194
- size: "lg" | "md" | "sm";
1195
- emphasis: "epic" | "legendary" | "normal" | "rare";
1196
- effects: string[];
1197
- } | undefined;
1198
- metadata?: Record<string, unknown> | undefined;
1199
- type: "audio";
1200
- ref: {
1201
- kind: "space-file";
1202
- path: string;
1203
- };
1204
- snapshot?: {
1205
- title?: string | undefined;
1206
- mimeType?: string | undefined;
1207
- size?: number | undefined;
1208
- mtimeMs?: number | undefined;
1209
- naturalWidth?: number | undefined;
1210
- naturalHeight?: number | undefined;
1211
- durationMs?: number | undefined;
1212
- } | undefined;
1213
- } | {
1214
- id: string;
1215
- frame: {
1216
- x: number;
1217
- y: number;
1218
- width: number;
1219
- height: number;
1220
- rotation: number;
1221
- };
1222
- parentId?: string | null | undefined;
1223
- locked?: boolean | undefined;
1224
- style?: {
1225
- variant: string;
1226
- theme?: string | undefined;
1227
- accentColor?: string | undefined;
1228
- size: "lg" | "md" | "sm";
1229
- emphasis: "epic" | "legendary" | "normal" | "rare";
1230
- effects: string[];
1231
- } | undefined;
1232
- metadata?: Record<string, unknown> | undefined;
1233
- type: "file";
1234
- ref: {
1235
- kind: "space-file";
1236
- path: string;
1237
- };
1238
- snapshot?: {
1239
- title?: string | undefined;
1240
- mimeType?: string | undefined;
1241
- size?: number | undefined;
1242
- mtimeMs?: number | undefined;
1243
- excerpt?: string | undefined;
1244
- coverPath?: string | undefined;
1245
- coverUrl?: string | undefined;
1246
- } | undefined;
1247
- } | {
1248
- id: string;
1249
- frame: {
1250
- x: number;
1251
- y: number;
1252
- width: number;
1253
- height: number;
1254
- rotation: number;
1255
- };
1256
- parentId?: string | null | undefined;
1257
- locked?: boolean | undefined;
1258
- style?: {
1259
- variant: string;
1260
- theme?: string | undefined;
1261
- accentColor?: string | undefined;
1262
- size: "lg" | "md" | "sm";
1263
- emphasis: "epic" | "legendary" | "normal" | "rare";
1264
- effects: string[];
1265
- } | undefined;
1266
- metadata?: Record<string, unknown> | undefined;
1267
- type: "task";
1268
- taskRunId: string;
1269
- snapshot: {
1270
- taskType: string;
1271
- status: "completed" | "failed" | "pending" | "running";
1272
- title: string;
1273
- model?: string | undefined;
1274
- promptExcerpt?: string | undefined;
1275
- artifactCount: number;
1276
- artifacts: ({
1277
- id: string;
1278
- title?: string | undefined;
1279
- url: string;
1280
- mimeType?: string | undefined;
1281
- type: "image";
1282
- naturalWidth?: number | undefined;
1283
- naturalHeight?: number | undefined;
1284
- } | {
1285
- id: string;
1286
- title?: string | undefined;
1287
- url: string;
1288
- mimeType?: string | undefined;
1289
- type: "video";
1290
- previewUrl?: string | undefined;
1291
- durationMs?: number | undefined;
1292
- naturalWidth?: number | undefined;
1293
- naturalHeight?: number | undefined;
1294
- } | {
1295
- id: string;
1296
- title?: string | undefined;
1297
- url: string;
1298
- mimeType?: string | undefined;
1299
- type: "audio";
1300
- previewUrl?: string | undefined;
1301
- durationMs?: number | undefined;
1302
- } | {
1303
- id: string;
1304
- type: "text";
1305
- title?: string | undefined;
1306
- textExcerpt: string;
1307
- })[];
1308
- updatedAt?: string | undefined;
1309
- };
1310
- } | {
1311
- id: string;
1312
- frame: {
1313
- x: number;
1314
- y: number;
1315
- width: number;
1316
- height: number;
1317
- rotation: number;
1318
- };
1319
- parentId?: string | null | undefined;
1320
- locked?: boolean | undefined;
1321
- style?: {
1322
- variant: string;
1323
- theme?: string | undefined;
1324
- accentColor?: string | undefined;
1325
- size: "lg" | "md" | "sm";
1326
- emphasis: "epic" | "legendary" | "normal" | "rare";
1327
- effects: string[];
1328
- } | undefined;
1329
- metadata?: Record<string, unknown> | undefined;
1330
- type: "text";
1331
- text: string;
1332
- color: string;
1333
- fontSize: number;
1334
- } | {
1335
- id: string;
1336
- frame: {
1337
- x: number;
1338
- y: number;
1339
- width: number;
1340
- height: number;
1341
- rotation: number;
1342
- };
1343
- parentId?: string | null | undefined;
1344
- locked?: boolean | undefined;
1345
- style?: {
1346
- variant: string;
1347
- theme?: string | undefined;
1348
- accentColor?: string | undefined;
1349
- size: "lg" | "md" | "sm";
1350
- emphasis: "epic" | "legendary" | "normal" | "rare";
1351
- effects: string[];
1352
- } | undefined;
1353
- metadata?: Record<string, unknown> | undefined;
1354
- type: "geo";
1355
- geo: string;
1356
- text: string;
1357
- color: string;
1358
- fillOpacity: number;
1359
- } | {
1360
- id: string;
1361
- frame: {
1362
- x: number;
1363
- y: number;
1364
- width: number;
1365
- height: number;
1366
- rotation: number;
1367
- };
1368
- parentId?: string | null | undefined;
1369
- locked?: boolean | undefined;
1370
- style?: {
1371
- variant: string;
1372
- theme?: string | undefined;
1373
- accentColor?: string | undefined;
1374
- size: "lg" | "md" | "sm";
1375
- emphasis: "epic" | "legendary" | "normal" | "rare";
1376
- effects: string[];
1377
- } | undefined;
1378
- metadata?: Record<string, unknown> | undefined;
1379
- type: "draw";
1380
- points: {
1381
- x: number;
1382
- y: number;
1383
- p: number;
1384
- }[];
1385
- color: string;
1386
- size: number;
1387
- } | {
1388
- id: string;
1389
- frame: {
1390
- x: number;
1391
- y: number;
1392
- width: number;
1393
- height: number;
1394
- rotation: number;
1395
- };
1396
- parentId?: string | null | undefined;
1397
- locked?: boolean | undefined;
1398
- style?: {
1399
- variant: string;
1400
- theme?: string | undefined;
1401
- accentColor?: string | undefined;
1402
- size: "lg" | "md" | "sm";
1403
- emphasis: "epic" | "legendary" | "normal" | "rare";
1404
- effects: string[];
1405
- } | undefined;
1406
- metadata?: Record<string, unknown> | undefined;
1407
- type: "arrow";
1408
- start: {
1409
- x: number;
1410
- y: number;
1411
- };
1412
- end: {
1413
- x: number;
1414
- y: number;
1415
- };
1416
- bend: number;
1417
- color: string;
1418
- size: number;
1419
- arrowStart: boolean;
1420
- arrowEnd: boolean;
1421
- label: string;
1422
- } | {
1423
- id: string;
1424
- frame: {
1425
- x: number;
1426
- y: number;
1427
- width: number;
1428
- height: number;
1429
- rotation: number;
1430
- };
1431
- parentId?: string | null | undefined;
1432
- locked?: boolean | undefined;
1433
- style?: {
1434
- variant: string;
1435
- theme?: string | undefined;
1436
- accentColor?: string | undefined;
1437
- size: "lg" | "md" | "sm";
1438
- emphasis: "epic" | "legendary" | "normal" | "rare";
1439
- effects: string[];
1440
- } | undefined;
1441
- metadata?: Record<string, unknown> | undefined;
1442
- type: "frame";
1443
- label: string;
1444
- color: string;
1445
- }, any>>>;
1446
- connections: z.ZodDefault<z.ZodArray<z.ZodObject<{
1447
- id: z.ZodString;
1448
- source: z.ZodObject<{
1449
- itemId: z.ZodString;
1450
- portId: z.ZodOptional<z.ZodString>;
1451
- anchor: z.ZodDefault<z.ZodUnion<readonly [z.ZodObject<{
1452
- kind: z.ZodLiteral<"auto">;
1453
- }, z.core.$strip>, z.ZodObject<{
1454
- kind: z.ZodLiteral<"side">;
1455
- side: z.ZodEnum<{
1456
- bottom: "bottom";
1457
- left: "left";
1458
- right: "right";
1459
- top: "top";
1460
- }>;
1461
- offset: z.ZodDefault<z.ZodNumber>;
1462
- }, z.core.$strip>, z.ZodObject<{
1463
- kind: z.ZodLiteral<"fixed">;
1464
- nx: z.ZodNumber;
1465
- ny: z.ZodNumber;
1466
- }, z.core.$strip>]>>;
1467
- }, z.core.$strip>;
1468
- target: z.ZodObject<{
1469
- itemId: z.ZodString;
1470
- portId: z.ZodOptional<z.ZodString>;
1471
- anchor: z.ZodDefault<z.ZodUnion<readonly [z.ZodObject<{
1472
- kind: z.ZodLiteral<"auto">;
1473
- }, z.core.$strip>, z.ZodObject<{
1474
- kind: z.ZodLiteral<"side">;
1475
- side: z.ZodEnum<{
1476
- bottom: "bottom";
1477
- left: "left";
1478
- right: "right";
1479
- top: "top";
1480
- }>;
1481
- offset: z.ZodDefault<z.ZodNumber>;
1482
- }, z.core.$strip>, z.ZodObject<{
1483
- kind: z.ZodLiteral<"fixed">;
1484
- nx: z.ZodNumber;
1485
- ny: z.ZodNumber;
1486
- }, z.core.$strip>]>>;
1487
- }, z.core.$strip>;
1488
- relation: z.ZodDefault<z.ZodString>;
1489
- direction: z.ZodDefault<z.ZodEnum<{
1490
- backward: "backward";
1491
- both: "both";
1492
- forward: "forward";
1493
- none: "none";
1494
- }>>;
1495
- label: z.ZodDefault<z.ZodString>;
1496
- routing: z.ZodDefault<z.ZodObject<{
1497
- kind: z.ZodDefault<z.ZodEnum<{
1498
- curve: "curve";
1499
- orthogonal: "orthogonal";
1500
- straight: "straight";
1501
- }>>;
1502
- bend: z.ZodDefault<z.ZodNumber>;
1503
- waypoints: z.ZodDefault<z.ZodArray<z.ZodObject<{
1504
- x: z.ZodNumber;
1505
- y: z.ZodNumber;
1506
- }, z.core.$strip>>>;
1507
- }, z.core.$strip>>;
1508
- style: z.ZodDefault<z.ZodObject<{
1509
- color: z.ZodDefault<z.ZodString>;
1510
- size: z.ZodDefault<z.ZodNumber>;
1511
- line: z.ZodDefault<z.ZodEnum<{
1512
- dashed: "dashed";
1513
- solid: "solid";
1514
- }>>;
1515
- }, z.core.$strip>>;
1516
- metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1517
- }, z.core.$strict>>>;
1518
- }, z.core.$strip>;
1519
- type BoardFrame = z.infer<typeof BoardFrameSchema>;
1520
- type BoardViewport = z.infer<typeof BoardViewportSchema>;
1521
- type BoardAppearance = z.infer<typeof BoardAppearanceSchema>;
1522
- type BoardItemStyle = z.infer<typeof BoardItemStyleSchema>;
1523
- type SpaceFileRef = z.infer<typeof SpaceFileRefSchema>;
1524
- type BoardMediaSnapshot = z.infer<typeof BoardMediaSnapshotSchema>;
1525
- type BoardTextItem = z.infer<typeof BoardTextItemSchema>;
1526
- type BoardGeoItem = z.infer<typeof BoardGeoItemSchema>;
1527
- type DrawPoint = z.infer<typeof DrawPointSchema>;
1528
- type BoardPoint = z.infer<typeof BoardPointSchema>;
1529
- type BoardDrawItem = z.infer<typeof BoardDrawItemSchema>;
1530
- type BoardArrowItem = z.infer<typeof BoardArrowItemSchema>;
1531
- type BoardFrameItem = z.infer<typeof BoardFrameItemSchema>;
1532
- type BoardImageItem = z.infer<typeof BoardImageItemSchema>;
1533
- type BoardVideoItem = z.infer<typeof BoardVideoItemSchema>;
1534
- type BoardAudioItem = z.infer<typeof BoardAudioItemSchema>;
1535
- type BoardFileSnapshot = z.infer<typeof BoardFileSnapshotSchema>;
1536
- type BoardFileItem = z.infer<typeof BoardFileItemSchema>;
1537
- type BoardTaskArtifact = z.infer<typeof BoardTaskArtifactSchema>;
1538
- type BoardTaskSnapshot = z.infer<typeof BoardTaskSnapshotSchema>;
1539
- type BoardTaskItem = z.infer<typeof BoardTaskItemSchema>;
1540
- /** Known (natively handled) item variants. */
1541
- type BoardKnownItem = BoardImageItem | BoardVideoItem | BoardAudioItem | BoardFileItem | BoardTaskItem | BoardTextItem | BoardGeoItem | BoardDrawItem | BoardArrowItem | BoardFrameItem;
1542
- /** Any item, including forward-compatible unknown types. */
1543
- type BoardItem = BoardKnownItem | BoardUnknownItem;
1544
- type BoardDocument = z.infer<typeof BoardDocumentSchema>;
1545
- /**
1546
- * Parse a board document and drop connections whose endpoints are missing.
1547
- *
1548
- * The schema alone cannot express "every endpoint must name an existing item",
1549
- * so referential integrity is enforced here, at the single place a document
1550
- * enters the system. A dangling connection is dropped rather than repaired:
1551
- * there is no correct node to invent, and keeping it would render nothing while
1552
- * still counting as data.
1553
- *
1554
- * Item parsing stays lenient (see parseBoardItemLoose) — nodes carry content and
1555
- * are never discarded — while connections are pure references and are only
1556
- * meaningful with both ends present.
1557
- */
1558
- declare function parseBoardDocument(input: unknown): BoardDocument;
1559
- /** Keep only the connections whose endpoints both exist in `items`. */
1560
- declare function withResolvedConnections(document: BoardDocument): BoardDocument;
1561
- declare function isUnknownItem(item: BoardItem): item is BoardUnknownItem;
1562
- declare function isMediaItem(item: BoardItem): item is BoardImageItem | BoardVideoItem | BoardAudioItem;
1563
- /** Whether an item references a workspace file (media or file card). */
1564
- declare function isFileBackedItem(item: BoardItem): item is BoardImageItem | BoardVideoItem | BoardAudioItem | BoardFileItem;
1565
- //#endregion
1566
- export { BOARD_DOCUMENT_KIND, BOARD_EXTENSION, BOARD_REMOTE_URL_MAX_LENGTH, BOARD_TASK_ARTIFACT_LIMIT, BoardAppearance, BoardAppearanceSchema, BoardArrowItem, BoardArrowItemSchema, BoardAudioItem, BoardAudioItemSchema, BoardDocument, BoardDocumentSchema, BoardDrawItem, BoardDrawItemSchema, BoardFileItem, BoardFileItemSchema, BoardFileSnapshot, BoardFileSnapshotSchema, BoardFrame, BoardFrameItem, BoardFrameItemSchema, BoardFrameSchema, BoardGeoItem, BoardGeoItemSchema, BoardImageItem, BoardImageItemSchema, BoardItem, BoardItemSchema, BoardItemStyle, BoardItemStyleSchema, BoardKnownItem, BoardMediaSnapshot, BoardMediaSnapshotSchema, BoardPoint, BoardPointSchema, BoardRemoteUrlSchema, BoardTaskArtifact, BoardTaskArtifactSchema, BoardTaskItem, BoardTaskItemSchema, BoardTaskSnapshot, BoardTaskSnapshotSchema, BoardTextItem, BoardTextItemSchema, BoardUnknownItem, BoardVideoItem, BoardVideoItemSchema, BoardViewport, BoardViewportSchema, DrawPoint, DrawPointSchema, KNOWN_BOARD_ITEM_TYPES, KnownBoardItemType, SpaceFileRef, SpaceFileRefSchema, UNKNOWN_BOARD_ITEM_TYPE, isFileBackedItem, isMediaItem, isPublicBoardRemoteAddress, isUnknownItem, normalizeBoardRemoteUrl, parseBoardDocument, parseBoardItemLoose, unknownRealType, withResolvedConnections };