@verevoir/design-gate 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1039 @@
1
+ import { z } from 'zod';
2
+ export declare const SCHEMA_URL = "https://verevoir.dev/schemas/design-surface/v0";
3
+ /** Where something was found. First-class + repeated. `confidence` is the adapter's
4
+ * own reading confidence (a screenshot read is less sure than a parsed repo). */
5
+ export declare const Provenance: z.ZodObject<{
6
+ sourceId: z.ZodString;
7
+ kind: z.ZodEnum<["screenshot", "flat", "figma", "repo", "website", "claude-design", "v0"]>;
8
+ locator: z.ZodString;
9
+ confidence: z.ZodOptional<z.ZodNumber>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ sourceId: string;
12
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
13
+ locator: string;
14
+ confidence?: number | undefined;
15
+ }, {
16
+ sourceId: string;
17
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
18
+ locator: string;
19
+ confidence?: number | undefined;
20
+ }>;
21
+ export type Provenance = z.infer<typeof Provenance>;
22
+ /** How the product SPEAKS — tone, personality, language. Attributes are the axes a
23
+ * design system names ("plain-spoken", "authoritative", "warm"); examples are real
24
+ * copy that shows it. Per-source, so the landscape can compare voices across apps. */
25
+ export declare const Voice: z.ZodObject<{
26
+ sourceId: z.ZodOptional<z.ZodString>;
27
+ summary: z.ZodString;
28
+ attributes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
29
+ examples: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
30
+ provenance: z.ZodDefault<z.ZodArray<z.ZodObject<{
31
+ sourceId: z.ZodString;
32
+ kind: z.ZodEnum<["screenshot", "flat", "figma", "repo", "website", "claude-design", "v0"]>;
33
+ locator: z.ZodString;
34
+ confidence: z.ZodOptional<z.ZodNumber>;
35
+ }, "strip", z.ZodTypeAny, {
36
+ sourceId: string;
37
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
38
+ locator: string;
39
+ confidence?: number | undefined;
40
+ }, {
41
+ sourceId: string;
42
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
43
+ locator: string;
44
+ confidence?: number | undefined;
45
+ }>, "many">>;
46
+ }, "strip", z.ZodTypeAny, {
47
+ summary: string;
48
+ attributes: string[];
49
+ examples: string[];
50
+ provenance: {
51
+ sourceId: string;
52
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
53
+ locator: string;
54
+ confidence?: number | undefined;
55
+ }[];
56
+ sourceId?: string | undefined;
57
+ }, {
58
+ summary: string;
59
+ sourceId?: string | undefined;
60
+ attributes?: string[] | undefined;
61
+ examples?: string[] | undefined;
62
+ provenance?: {
63
+ sourceId: string;
64
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
65
+ locator: string;
66
+ confidence?: number | undefined;
67
+ }[] | undefined;
68
+ }>;
69
+ export type Voice = z.infer<typeof Voice>;
70
+ /** How the product FEELS — the aesthetic character. Attributes are the axes
71
+ * ("minimal", "high-contrast", "dense", "playful"); references point at what
72
+ * evidences it (a screenshot, a page). */
73
+ export declare const Feel: z.ZodObject<{
74
+ sourceId: z.ZodOptional<z.ZodString>;
75
+ summary: z.ZodString;
76
+ attributes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
77
+ references: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
78
+ provenance: z.ZodDefault<z.ZodArray<z.ZodObject<{
79
+ sourceId: z.ZodString;
80
+ kind: z.ZodEnum<["screenshot", "flat", "figma", "repo", "website", "claude-design", "v0"]>;
81
+ locator: z.ZodString;
82
+ confidence: z.ZodOptional<z.ZodNumber>;
83
+ }, "strip", z.ZodTypeAny, {
84
+ sourceId: string;
85
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
86
+ locator: string;
87
+ confidence?: number | undefined;
88
+ }, {
89
+ sourceId: string;
90
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
91
+ locator: string;
92
+ confidence?: number | undefined;
93
+ }>, "many">>;
94
+ }, "strip", z.ZodTypeAny, {
95
+ summary: string;
96
+ attributes: string[];
97
+ provenance: {
98
+ sourceId: string;
99
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
100
+ locator: string;
101
+ confidence?: number | undefined;
102
+ }[];
103
+ references: string[];
104
+ sourceId?: string | undefined;
105
+ }, {
106
+ summary: string;
107
+ sourceId?: string | undefined;
108
+ attributes?: string[] | undefined;
109
+ provenance?: {
110
+ sourceId: string;
111
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
112
+ locator: string;
113
+ confidence?: number | undefined;
114
+ }[] | undefined;
115
+ references?: string[] | undefined;
116
+ }>;
117
+ export type Feel = z.infer<typeof Feel>;
118
+ /** A design PRINCIPLE the surface holds — a rule with teeth ("no decorative borders
119
+ * or shadows", "one primary action per view"). Deviations from these are the
120
+ * high-value findings of an overlay. */
121
+ export declare const Principle: z.ZodObject<{
122
+ id: z.ZodString;
123
+ statement: z.ZodString;
124
+ rationale: z.ZodOptional<z.ZodString>;
125
+ provenance: z.ZodArray<z.ZodObject<{
126
+ sourceId: z.ZodString;
127
+ kind: z.ZodEnum<["screenshot", "flat", "figma", "repo", "website", "claude-design", "v0"]>;
128
+ locator: z.ZodString;
129
+ confidence: z.ZodOptional<z.ZodNumber>;
130
+ }, "strip", z.ZodTypeAny, {
131
+ sourceId: string;
132
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
133
+ locator: string;
134
+ confidence?: number | undefined;
135
+ }, {
136
+ sourceId: string;
137
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
138
+ locator: string;
139
+ confidence?: number | undefined;
140
+ }>, "many">;
141
+ }, "strip", z.ZodTypeAny, {
142
+ provenance: {
143
+ sourceId: string;
144
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
145
+ locator: string;
146
+ confidence?: number | undefined;
147
+ }[];
148
+ id: string;
149
+ statement: string;
150
+ rationale?: string | undefined;
151
+ }, {
152
+ provenance: {
153
+ sourceId: string;
154
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
155
+ locator: string;
156
+ confidence?: number | undefined;
157
+ }[];
158
+ id: string;
159
+ statement: string;
160
+ rationale?: string | undefined;
161
+ }>;
162
+ export type Principle = z.infer<typeof Principle>;
163
+ /** The project CONTEXT a surface must serve — the yardstick the overlay judges
164
+ * against, so the design is never evaluated in a vacuum. A young audience should
165
+ * show TENSION with something oak-panelled: `audience` + `positioning` say what it is
166
+ * FOR, and `tensions` name what it must NOT drift into. Pulled from the aigency
167
+ * project context for an audit; authored for a proposal; carried forward on an
168
+ * accepted surface. This is the aigency plug: the design surface answers to the same
169
+ * project intent the code and the ADRs do. */
170
+ export declare const Intent: z.ZodObject<{
171
+ audience: z.ZodOptional<z.ZodString>;
172
+ positioning: z.ZodOptional<z.ZodString>;
173
+ tensions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
174
+ notes: z.ZodOptional<z.ZodString>;
175
+ }, "strip", z.ZodTypeAny, {
176
+ tensions: string[];
177
+ audience?: string | undefined;
178
+ positioning?: string | undefined;
179
+ notes?: string | undefined;
180
+ }, {
181
+ audience?: string | undefined;
182
+ positioning?: string | undefined;
183
+ tensions?: string[] | undefined;
184
+ notes?: string | undefined;
185
+ }>;
186
+ export type Intent = z.infer<typeof Intent>;
187
+ /** Where a surface sits in its lifecycle. An `accepted` surface IS project context —
188
+ * persisted in the substrate, versioned, and developed over time exactly as the code
189
+ * is; it's not a one-off report. */
190
+ export declare const SurfaceStatus: z.ZodEnum<["audit", "landscape", "proposal", "accepted"]>;
191
+ export type SurfaceStatus = z.infer<typeof SurfaceStatus>;
192
+ /** The design TOKENS a surface uses — the DTCG set (colour / type / space / …), the
193
+ * bottom layer this whole surface sits on. This is where the earlier design-token
194
+ * work FOLDS IN, not as a separate thing: `ingest-style-guide` is a token importer,
195
+ * `generate-design-tokens` a token exporter, and the DTCG design-gate is the token
196
+ * half of `validateSurface`. Per-source + collected (like voices), so the landscape
197
+ * shows token DIVERGENCE across the ecosystem (Nexus's blue vs Timesheets's blue).
198
+ * `dtcg` is the raw DTCG object; the zod schema keeps it an opaque record, and
199
+ * `validateSurface` runs the shared design-gate (`validateDtcg`) over it — the same
200
+ * zero-dependency check a produced pack runs in CI — so the token layer is gated
201
+ * exactly like the rest of the surface (STDIO-524). */
202
+ export declare const TokenSet: z.ZodObject<{
203
+ sourceId: z.ZodOptional<z.ZodString>;
204
+ dtcg: z.ZodRecord<z.ZodString, z.ZodUnknown>;
205
+ provenance: z.ZodDefault<z.ZodArray<z.ZodObject<{
206
+ sourceId: z.ZodString;
207
+ kind: z.ZodEnum<["screenshot", "flat", "figma", "repo", "website", "claude-design", "v0"]>;
208
+ locator: z.ZodString;
209
+ confidence: z.ZodOptional<z.ZodNumber>;
210
+ }, "strip", z.ZodTypeAny, {
211
+ sourceId: string;
212
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
213
+ locator: string;
214
+ confidence?: number | undefined;
215
+ }, {
216
+ sourceId: string;
217
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
218
+ locator: string;
219
+ confidence?: number | undefined;
220
+ }>, "many">>;
221
+ }, "strip", z.ZodTypeAny, {
222
+ provenance: {
223
+ sourceId: string;
224
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
225
+ locator: string;
226
+ confidence?: number | undefined;
227
+ }[];
228
+ dtcg: Record<string, unknown>;
229
+ sourceId?: string | undefined;
230
+ }, {
231
+ dtcg: Record<string, unknown>;
232
+ sourceId?: string | undefined;
233
+ provenance?: {
234
+ sourceId: string;
235
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
236
+ locator: string;
237
+ confidence?: number | undefined;
238
+ }[] | undefined;
239
+ }>;
240
+ export type TokenSet = z.infer<typeof TokenSet>;
241
+ export declare const Variant: z.ZodObject<{
242
+ name: z.ZodString;
243
+ description: z.ZodOptional<z.ZodString>;
244
+ tokens: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
245
+ }, "strip", z.ZodTypeAny, {
246
+ name: string;
247
+ description?: string | undefined;
248
+ tokens?: Record<string, string> | undefined;
249
+ }, {
250
+ name: string;
251
+ description?: string | undefined;
252
+ tokens?: Record<string, string> | undefined;
253
+ }>;
254
+ export type Variant = z.infer<typeof Variant>;
255
+ export declare const PropSpec: z.ZodObject<{
256
+ name: z.ZodString;
257
+ type: z.ZodOptional<z.ZodString>;
258
+ required: z.ZodOptional<z.ZodBoolean>;
259
+ description: z.ZodOptional<z.ZodString>;
260
+ }, "strip", z.ZodTypeAny, {
261
+ name: string;
262
+ type?: string | undefined;
263
+ description?: string | undefined;
264
+ required?: boolean | undefined;
265
+ }, {
266
+ name: string;
267
+ type?: string | undefined;
268
+ description?: string | undefined;
269
+ required?: boolean | undefined;
270
+ }>;
271
+ export type PropSpec = z.infer<typeof PropSpec>;
272
+ export declare const ComponentKind: z.ZodEnum<["atom", "molecule", "organism", "layout", "page"]>;
273
+ export type ComponentKind = z.infer<typeof ComponentKind>;
274
+ export declare const Component: z.ZodObject<{
275
+ id: z.ZodString;
276
+ name: z.ZodString;
277
+ kind: z.ZodEnum<["atom", "molecule", "organism", "layout", "page"]>;
278
+ role: z.ZodOptional<z.ZodString>;
279
+ description: z.ZodOptional<z.ZodString>;
280
+ composition: z.ZodOptional<z.ZodString>;
281
+ variants: z.ZodDefault<z.ZodArray<z.ZodObject<{
282
+ name: z.ZodString;
283
+ description: z.ZodOptional<z.ZodString>;
284
+ tokens: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
285
+ }, "strip", z.ZodTypeAny, {
286
+ name: string;
287
+ description?: string | undefined;
288
+ tokens?: Record<string, string> | undefined;
289
+ }, {
290
+ name: string;
291
+ description?: string | undefined;
292
+ tokens?: Record<string, string> | undefined;
293
+ }>, "many">>;
294
+ props: z.ZodDefault<z.ZodArray<z.ZodObject<{
295
+ name: z.ZodString;
296
+ type: z.ZodOptional<z.ZodString>;
297
+ required: z.ZodOptional<z.ZodBoolean>;
298
+ description: z.ZodOptional<z.ZodString>;
299
+ }, "strip", z.ZodTypeAny, {
300
+ name: string;
301
+ type?: string | undefined;
302
+ description?: string | undefined;
303
+ required?: boolean | undefined;
304
+ }, {
305
+ name: string;
306
+ type?: string | undefined;
307
+ description?: string | undefined;
308
+ required?: boolean | undefined;
309
+ }>, "many">>;
310
+ states: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
311
+ composes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
312
+ a11y: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
313
+ evidence: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
314
+ provenance: z.ZodArray<z.ZodObject<{
315
+ sourceId: z.ZodString;
316
+ kind: z.ZodEnum<["screenshot", "flat", "figma", "repo", "website", "claude-design", "v0"]>;
317
+ locator: z.ZodString;
318
+ confidence: z.ZodOptional<z.ZodNumber>;
319
+ }, "strip", z.ZodTypeAny, {
320
+ sourceId: string;
321
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
322
+ locator: string;
323
+ confidence?: number | undefined;
324
+ }, {
325
+ sourceId: string;
326
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
327
+ locator: string;
328
+ confidence?: number | undefined;
329
+ }>, "many">;
330
+ }, "strip", z.ZodTypeAny, {
331
+ kind: "atom" | "molecule" | "organism" | "layout" | "page";
332
+ provenance: {
333
+ sourceId: string;
334
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
335
+ locator: string;
336
+ confidence?: number | undefined;
337
+ }[];
338
+ id: string;
339
+ name: string;
340
+ variants: {
341
+ name: string;
342
+ description?: string | undefined;
343
+ tokens?: Record<string, string> | undefined;
344
+ }[];
345
+ props: {
346
+ name: string;
347
+ type?: string | undefined;
348
+ description?: string | undefined;
349
+ required?: boolean | undefined;
350
+ }[];
351
+ states: string[];
352
+ composes: string[];
353
+ a11y: string[];
354
+ evidence: string[];
355
+ description?: string | undefined;
356
+ role?: string | undefined;
357
+ composition?: string | undefined;
358
+ }, {
359
+ kind: "atom" | "molecule" | "organism" | "layout" | "page";
360
+ provenance: {
361
+ sourceId: string;
362
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
363
+ locator: string;
364
+ confidence?: number | undefined;
365
+ }[];
366
+ id: string;
367
+ name: string;
368
+ description?: string | undefined;
369
+ role?: string | undefined;
370
+ composition?: string | undefined;
371
+ variants?: {
372
+ name: string;
373
+ description?: string | undefined;
374
+ tokens?: Record<string, string> | undefined;
375
+ }[] | undefined;
376
+ props?: {
377
+ name: string;
378
+ type?: string | undefined;
379
+ description?: string | undefined;
380
+ required?: boolean | undefined;
381
+ }[] | undefined;
382
+ states?: string[] | undefined;
383
+ composes?: string[] | undefined;
384
+ a11y?: string[] | undefined;
385
+ evidence?: string[] | undefined;
386
+ }>;
387
+ export type Component = z.infer<typeof Component>;
388
+ export declare const Pattern: z.ZodObject<{
389
+ id: z.ZodString;
390
+ name: z.ZodString;
391
+ description: z.ZodOptional<z.ZodString>;
392
+ components: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
393
+ provenance: z.ZodArray<z.ZodObject<{
394
+ sourceId: z.ZodString;
395
+ kind: z.ZodEnum<["screenshot", "flat", "figma", "repo", "website", "claude-design", "v0"]>;
396
+ locator: z.ZodString;
397
+ confidence: z.ZodOptional<z.ZodNumber>;
398
+ }, "strip", z.ZodTypeAny, {
399
+ sourceId: string;
400
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
401
+ locator: string;
402
+ confidence?: number | undefined;
403
+ }, {
404
+ sourceId: string;
405
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
406
+ locator: string;
407
+ confidence?: number | undefined;
408
+ }>, "many">;
409
+ }, "strip", z.ZodTypeAny, {
410
+ provenance: {
411
+ sourceId: string;
412
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
413
+ locator: string;
414
+ confidence?: number | undefined;
415
+ }[];
416
+ id: string;
417
+ name: string;
418
+ components: string[];
419
+ description?: string | undefined;
420
+ }, {
421
+ provenance: {
422
+ sourceId: string;
423
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
424
+ locator: string;
425
+ confidence?: number | undefined;
426
+ }[];
427
+ id: string;
428
+ name: string;
429
+ description?: string | undefined;
430
+ components?: string[] | undefined;
431
+ }>;
432
+ export type Pattern = z.infer<typeof Pattern>;
433
+ export declare const SourceRef: z.ZodObject<{
434
+ id: z.ZodString;
435
+ kind: z.ZodEnum<["screenshot", "flat", "figma", "repo", "website", "claude-design", "v0"]>;
436
+ locator: z.ZodString;
437
+ label: z.ZodOptional<z.ZodString>;
438
+ }, "strip", z.ZodTypeAny, {
439
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
440
+ locator: string;
441
+ id: string;
442
+ label?: string | undefined;
443
+ }, {
444
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
445
+ locator: string;
446
+ id: string;
447
+ label?: string | undefined;
448
+ }>;
449
+ export type SourceRef = z.infer<typeof SourceRef>;
450
+ /** The surface. `sources`/`voices`/`feels` are length 1 for a single-source surface,
451
+ * N for a synthesised landscape — same type either way (closed under synthesis). */
452
+ export declare const DesignSurface: z.ZodObject<{
453
+ $schema: z.ZodDefault<z.ZodLiteral<"https://verevoir.dev/schemas/design-surface/v0">>;
454
+ status: z.ZodDefault<z.ZodEnum<["audit", "landscape", "proposal", "accepted"]>>;
455
+ intent: z.ZodOptional<z.ZodObject<{
456
+ audience: z.ZodOptional<z.ZodString>;
457
+ positioning: z.ZodOptional<z.ZodString>;
458
+ tensions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
459
+ notes: z.ZodOptional<z.ZodString>;
460
+ }, "strip", z.ZodTypeAny, {
461
+ tensions: string[];
462
+ audience?: string | undefined;
463
+ positioning?: string | undefined;
464
+ notes?: string | undefined;
465
+ }, {
466
+ audience?: string | undefined;
467
+ positioning?: string | undefined;
468
+ tensions?: string[] | undefined;
469
+ notes?: string | undefined;
470
+ }>>;
471
+ sources: z.ZodArray<z.ZodObject<{
472
+ id: z.ZodString;
473
+ kind: z.ZodEnum<["screenshot", "flat", "figma", "repo", "website", "claude-design", "v0"]>;
474
+ locator: z.ZodString;
475
+ label: z.ZodOptional<z.ZodString>;
476
+ }, "strip", z.ZodTypeAny, {
477
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
478
+ locator: string;
479
+ id: string;
480
+ label?: string | undefined;
481
+ }, {
482
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
483
+ locator: string;
484
+ id: string;
485
+ label?: string | undefined;
486
+ }>, "many">;
487
+ voices: z.ZodDefault<z.ZodArray<z.ZodObject<{
488
+ sourceId: z.ZodOptional<z.ZodString>;
489
+ summary: z.ZodString;
490
+ attributes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
491
+ examples: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
492
+ provenance: z.ZodDefault<z.ZodArray<z.ZodObject<{
493
+ sourceId: z.ZodString;
494
+ kind: z.ZodEnum<["screenshot", "flat", "figma", "repo", "website", "claude-design", "v0"]>;
495
+ locator: z.ZodString;
496
+ confidence: z.ZodOptional<z.ZodNumber>;
497
+ }, "strip", z.ZodTypeAny, {
498
+ sourceId: string;
499
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
500
+ locator: string;
501
+ confidence?: number | undefined;
502
+ }, {
503
+ sourceId: string;
504
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
505
+ locator: string;
506
+ confidence?: number | undefined;
507
+ }>, "many">>;
508
+ }, "strip", z.ZodTypeAny, {
509
+ summary: string;
510
+ attributes: string[];
511
+ examples: string[];
512
+ provenance: {
513
+ sourceId: string;
514
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
515
+ locator: string;
516
+ confidence?: number | undefined;
517
+ }[];
518
+ sourceId?: string | undefined;
519
+ }, {
520
+ summary: string;
521
+ sourceId?: string | undefined;
522
+ attributes?: string[] | undefined;
523
+ examples?: string[] | undefined;
524
+ provenance?: {
525
+ sourceId: string;
526
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
527
+ locator: string;
528
+ confidence?: number | undefined;
529
+ }[] | undefined;
530
+ }>, "many">>;
531
+ feels: z.ZodDefault<z.ZodArray<z.ZodObject<{
532
+ sourceId: z.ZodOptional<z.ZodString>;
533
+ summary: z.ZodString;
534
+ attributes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
535
+ references: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
536
+ provenance: z.ZodDefault<z.ZodArray<z.ZodObject<{
537
+ sourceId: z.ZodString;
538
+ kind: z.ZodEnum<["screenshot", "flat", "figma", "repo", "website", "claude-design", "v0"]>;
539
+ locator: z.ZodString;
540
+ confidence: z.ZodOptional<z.ZodNumber>;
541
+ }, "strip", z.ZodTypeAny, {
542
+ sourceId: string;
543
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
544
+ locator: string;
545
+ confidence?: number | undefined;
546
+ }, {
547
+ sourceId: string;
548
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
549
+ locator: string;
550
+ confidence?: number | undefined;
551
+ }>, "many">>;
552
+ }, "strip", z.ZodTypeAny, {
553
+ summary: string;
554
+ attributes: string[];
555
+ provenance: {
556
+ sourceId: string;
557
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
558
+ locator: string;
559
+ confidence?: number | undefined;
560
+ }[];
561
+ references: string[];
562
+ sourceId?: string | undefined;
563
+ }, {
564
+ summary: string;
565
+ sourceId?: string | undefined;
566
+ attributes?: string[] | undefined;
567
+ provenance?: {
568
+ sourceId: string;
569
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
570
+ locator: string;
571
+ confidence?: number | undefined;
572
+ }[] | undefined;
573
+ references?: string[] | undefined;
574
+ }>, "many">>;
575
+ principles: z.ZodDefault<z.ZodArray<z.ZodObject<{
576
+ id: z.ZodString;
577
+ statement: z.ZodString;
578
+ rationale: z.ZodOptional<z.ZodString>;
579
+ provenance: z.ZodArray<z.ZodObject<{
580
+ sourceId: z.ZodString;
581
+ kind: z.ZodEnum<["screenshot", "flat", "figma", "repo", "website", "claude-design", "v0"]>;
582
+ locator: z.ZodString;
583
+ confidence: z.ZodOptional<z.ZodNumber>;
584
+ }, "strip", z.ZodTypeAny, {
585
+ sourceId: string;
586
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
587
+ locator: string;
588
+ confidence?: number | undefined;
589
+ }, {
590
+ sourceId: string;
591
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
592
+ locator: string;
593
+ confidence?: number | undefined;
594
+ }>, "many">;
595
+ }, "strip", z.ZodTypeAny, {
596
+ provenance: {
597
+ sourceId: string;
598
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
599
+ locator: string;
600
+ confidence?: number | undefined;
601
+ }[];
602
+ id: string;
603
+ statement: string;
604
+ rationale?: string | undefined;
605
+ }, {
606
+ provenance: {
607
+ sourceId: string;
608
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
609
+ locator: string;
610
+ confidence?: number | undefined;
611
+ }[];
612
+ id: string;
613
+ statement: string;
614
+ rationale?: string | undefined;
615
+ }>, "many">>;
616
+ tokens: z.ZodDefault<z.ZodArray<z.ZodObject<{
617
+ sourceId: z.ZodOptional<z.ZodString>;
618
+ dtcg: z.ZodRecord<z.ZodString, z.ZodUnknown>;
619
+ provenance: z.ZodDefault<z.ZodArray<z.ZodObject<{
620
+ sourceId: z.ZodString;
621
+ kind: z.ZodEnum<["screenshot", "flat", "figma", "repo", "website", "claude-design", "v0"]>;
622
+ locator: z.ZodString;
623
+ confidence: z.ZodOptional<z.ZodNumber>;
624
+ }, "strip", z.ZodTypeAny, {
625
+ sourceId: string;
626
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
627
+ locator: string;
628
+ confidence?: number | undefined;
629
+ }, {
630
+ sourceId: string;
631
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
632
+ locator: string;
633
+ confidence?: number | undefined;
634
+ }>, "many">>;
635
+ }, "strip", z.ZodTypeAny, {
636
+ provenance: {
637
+ sourceId: string;
638
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
639
+ locator: string;
640
+ confidence?: number | undefined;
641
+ }[];
642
+ dtcg: Record<string, unknown>;
643
+ sourceId?: string | undefined;
644
+ }, {
645
+ dtcg: Record<string, unknown>;
646
+ sourceId?: string | undefined;
647
+ provenance?: {
648
+ sourceId: string;
649
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
650
+ locator: string;
651
+ confidence?: number | undefined;
652
+ }[] | undefined;
653
+ }>, "many">>;
654
+ components: z.ZodDefault<z.ZodArray<z.ZodObject<{
655
+ id: z.ZodString;
656
+ name: z.ZodString;
657
+ kind: z.ZodEnum<["atom", "molecule", "organism", "layout", "page"]>;
658
+ role: z.ZodOptional<z.ZodString>;
659
+ description: z.ZodOptional<z.ZodString>;
660
+ composition: z.ZodOptional<z.ZodString>;
661
+ variants: z.ZodDefault<z.ZodArray<z.ZodObject<{
662
+ name: z.ZodString;
663
+ description: z.ZodOptional<z.ZodString>;
664
+ tokens: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
665
+ }, "strip", z.ZodTypeAny, {
666
+ name: string;
667
+ description?: string | undefined;
668
+ tokens?: Record<string, string> | undefined;
669
+ }, {
670
+ name: string;
671
+ description?: string | undefined;
672
+ tokens?: Record<string, string> | undefined;
673
+ }>, "many">>;
674
+ props: z.ZodDefault<z.ZodArray<z.ZodObject<{
675
+ name: z.ZodString;
676
+ type: z.ZodOptional<z.ZodString>;
677
+ required: z.ZodOptional<z.ZodBoolean>;
678
+ description: z.ZodOptional<z.ZodString>;
679
+ }, "strip", z.ZodTypeAny, {
680
+ name: string;
681
+ type?: string | undefined;
682
+ description?: string | undefined;
683
+ required?: boolean | undefined;
684
+ }, {
685
+ name: string;
686
+ type?: string | undefined;
687
+ description?: string | undefined;
688
+ required?: boolean | undefined;
689
+ }>, "many">>;
690
+ states: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
691
+ composes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
692
+ a11y: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
693
+ evidence: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
694
+ provenance: z.ZodArray<z.ZodObject<{
695
+ sourceId: z.ZodString;
696
+ kind: z.ZodEnum<["screenshot", "flat", "figma", "repo", "website", "claude-design", "v0"]>;
697
+ locator: z.ZodString;
698
+ confidence: z.ZodOptional<z.ZodNumber>;
699
+ }, "strip", z.ZodTypeAny, {
700
+ sourceId: string;
701
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
702
+ locator: string;
703
+ confidence?: number | undefined;
704
+ }, {
705
+ sourceId: string;
706
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
707
+ locator: string;
708
+ confidence?: number | undefined;
709
+ }>, "many">;
710
+ }, "strip", z.ZodTypeAny, {
711
+ kind: "atom" | "molecule" | "organism" | "layout" | "page";
712
+ provenance: {
713
+ sourceId: string;
714
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
715
+ locator: string;
716
+ confidence?: number | undefined;
717
+ }[];
718
+ id: string;
719
+ name: string;
720
+ variants: {
721
+ name: string;
722
+ description?: string | undefined;
723
+ tokens?: Record<string, string> | undefined;
724
+ }[];
725
+ props: {
726
+ name: string;
727
+ type?: string | undefined;
728
+ description?: string | undefined;
729
+ required?: boolean | undefined;
730
+ }[];
731
+ states: string[];
732
+ composes: string[];
733
+ a11y: string[];
734
+ evidence: string[];
735
+ description?: string | undefined;
736
+ role?: string | undefined;
737
+ composition?: string | undefined;
738
+ }, {
739
+ kind: "atom" | "molecule" | "organism" | "layout" | "page";
740
+ provenance: {
741
+ sourceId: string;
742
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
743
+ locator: string;
744
+ confidence?: number | undefined;
745
+ }[];
746
+ id: string;
747
+ name: string;
748
+ description?: string | undefined;
749
+ role?: string | undefined;
750
+ composition?: string | undefined;
751
+ variants?: {
752
+ name: string;
753
+ description?: string | undefined;
754
+ tokens?: Record<string, string> | undefined;
755
+ }[] | undefined;
756
+ props?: {
757
+ name: string;
758
+ type?: string | undefined;
759
+ description?: string | undefined;
760
+ required?: boolean | undefined;
761
+ }[] | undefined;
762
+ states?: string[] | undefined;
763
+ composes?: string[] | undefined;
764
+ a11y?: string[] | undefined;
765
+ evidence?: string[] | undefined;
766
+ }>, "many">>;
767
+ patterns: z.ZodDefault<z.ZodArray<z.ZodObject<{
768
+ id: z.ZodString;
769
+ name: z.ZodString;
770
+ description: z.ZodOptional<z.ZodString>;
771
+ components: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
772
+ provenance: z.ZodArray<z.ZodObject<{
773
+ sourceId: z.ZodString;
774
+ kind: z.ZodEnum<["screenshot", "flat", "figma", "repo", "website", "claude-design", "v0"]>;
775
+ locator: z.ZodString;
776
+ confidence: z.ZodOptional<z.ZodNumber>;
777
+ }, "strip", z.ZodTypeAny, {
778
+ sourceId: string;
779
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
780
+ locator: string;
781
+ confidence?: number | undefined;
782
+ }, {
783
+ sourceId: string;
784
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
785
+ locator: string;
786
+ confidence?: number | undefined;
787
+ }>, "many">;
788
+ }, "strip", z.ZodTypeAny, {
789
+ provenance: {
790
+ sourceId: string;
791
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
792
+ locator: string;
793
+ confidence?: number | undefined;
794
+ }[];
795
+ id: string;
796
+ name: string;
797
+ components: string[];
798
+ description?: string | undefined;
799
+ }, {
800
+ provenance: {
801
+ sourceId: string;
802
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
803
+ locator: string;
804
+ confidence?: number | undefined;
805
+ }[];
806
+ id: string;
807
+ name: string;
808
+ description?: string | undefined;
809
+ components?: string[] | undefined;
810
+ }>, "many">>;
811
+ generatedAt: z.ZodOptional<z.ZodString>;
812
+ }, "strip", z.ZodTypeAny, {
813
+ status: "audit" | "landscape" | "proposal" | "accepted";
814
+ tokens: {
815
+ provenance: {
816
+ sourceId: string;
817
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
818
+ locator: string;
819
+ confidence?: number | undefined;
820
+ }[];
821
+ dtcg: Record<string, unknown>;
822
+ sourceId?: string | undefined;
823
+ }[];
824
+ components: {
825
+ kind: "atom" | "molecule" | "organism" | "layout" | "page";
826
+ provenance: {
827
+ sourceId: string;
828
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
829
+ locator: string;
830
+ confidence?: number | undefined;
831
+ }[];
832
+ id: string;
833
+ name: string;
834
+ variants: {
835
+ name: string;
836
+ description?: string | undefined;
837
+ tokens?: Record<string, string> | undefined;
838
+ }[];
839
+ props: {
840
+ name: string;
841
+ type?: string | undefined;
842
+ description?: string | undefined;
843
+ required?: boolean | undefined;
844
+ }[];
845
+ states: string[];
846
+ composes: string[];
847
+ a11y: string[];
848
+ evidence: string[];
849
+ description?: string | undefined;
850
+ role?: string | undefined;
851
+ composition?: string | undefined;
852
+ }[];
853
+ $schema: "https://verevoir.dev/schemas/design-surface/v0";
854
+ sources: {
855
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
856
+ locator: string;
857
+ id: string;
858
+ label?: string | undefined;
859
+ }[];
860
+ voices: {
861
+ summary: string;
862
+ attributes: string[];
863
+ examples: string[];
864
+ provenance: {
865
+ sourceId: string;
866
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
867
+ locator: string;
868
+ confidence?: number | undefined;
869
+ }[];
870
+ sourceId?: string | undefined;
871
+ }[];
872
+ feels: {
873
+ summary: string;
874
+ attributes: string[];
875
+ provenance: {
876
+ sourceId: string;
877
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
878
+ locator: string;
879
+ confidence?: number | undefined;
880
+ }[];
881
+ references: string[];
882
+ sourceId?: string | undefined;
883
+ }[];
884
+ principles: {
885
+ provenance: {
886
+ sourceId: string;
887
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
888
+ locator: string;
889
+ confidence?: number | undefined;
890
+ }[];
891
+ id: string;
892
+ statement: string;
893
+ rationale?: string | undefined;
894
+ }[];
895
+ patterns: {
896
+ provenance: {
897
+ sourceId: string;
898
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
899
+ locator: string;
900
+ confidence?: number | undefined;
901
+ }[];
902
+ id: string;
903
+ name: string;
904
+ components: string[];
905
+ description?: string | undefined;
906
+ }[];
907
+ intent?: {
908
+ tensions: string[];
909
+ audience?: string | undefined;
910
+ positioning?: string | undefined;
911
+ notes?: string | undefined;
912
+ } | undefined;
913
+ generatedAt?: string | undefined;
914
+ }, {
915
+ sources: {
916
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
917
+ locator: string;
918
+ id: string;
919
+ label?: string | undefined;
920
+ }[];
921
+ status?: "audit" | "landscape" | "proposal" | "accepted" | undefined;
922
+ tokens?: {
923
+ dtcg: Record<string, unknown>;
924
+ sourceId?: string | undefined;
925
+ provenance?: {
926
+ sourceId: string;
927
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
928
+ locator: string;
929
+ confidence?: number | undefined;
930
+ }[] | undefined;
931
+ }[] | undefined;
932
+ components?: {
933
+ kind: "atom" | "molecule" | "organism" | "layout" | "page";
934
+ provenance: {
935
+ sourceId: string;
936
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
937
+ locator: string;
938
+ confidence?: number | undefined;
939
+ }[];
940
+ id: string;
941
+ name: string;
942
+ description?: string | undefined;
943
+ role?: string | undefined;
944
+ composition?: string | undefined;
945
+ variants?: {
946
+ name: string;
947
+ description?: string | undefined;
948
+ tokens?: Record<string, string> | undefined;
949
+ }[] | undefined;
950
+ props?: {
951
+ name: string;
952
+ type?: string | undefined;
953
+ description?: string | undefined;
954
+ required?: boolean | undefined;
955
+ }[] | undefined;
956
+ states?: string[] | undefined;
957
+ composes?: string[] | undefined;
958
+ a11y?: string[] | undefined;
959
+ evidence?: string[] | undefined;
960
+ }[] | undefined;
961
+ $schema?: "https://verevoir.dev/schemas/design-surface/v0" | undefined;
962
+ intent?: {
963
+ audience?: string | undefined;
964
+ positioning?: string | undefined;
965
+ tensions?: string[] | undefined;
966
+ notes?: string | undefined;
967
+ } | undefined;
968
+ voices?: {
969
+ summary: string;
970
+ sourceId?: string | undefined;
971
+ attributes?: string[] | undefined;
972
+ examples?: string[] | undefined;
973
+ provenance?: {
974
+ sourceId: string;
975
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
976
+ locator: string;
977
+ confidence?: number | undefined;
978
+ }[] | undefined;
979
+ }[] | undefined;
980
+ feels?: {
981
+ summary: string;
982
+ sourceId?: string | undefined;
983
+ attributes?: string[] | undefined;
984
+ provenance?: {
985
+ sourceId: string;
986
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
987
+ locator: string;
988
+ confidence?: number | undefined;
989
+ }[] | undefined;
990
+ references?: string[] | undefined;
991
+ }[] | undefined;
992
+ principles?: {
993
+ provenance: {
994
+ sourceId: string;
995
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
996
+ locator: string;
997
+ confidence?: number | undefined;
998
+ }[];
999
+ id: string;
1000
+ statement: string;
1001
+ rationale?: string | undefined;
1002
+ }[] | undefined;
1003
+ patterns?: {
1004
+ provenance: {
1005
+ sourceId: string;
1006
+ kind: "flat" | "screenshot" | "figma" | "repo" | "website" | "claude-design" | "v0";
1007
+ locator: string;
1008
+ confidence?: number | undefined;
1009
+ }[];
1010
+ id: string;
1011
+ name: string;
1012
+ description?: string | undefined;
1013
+ components?: string[] | undefined;
1014
+ }[] | undefined;
1015
+ generatedAt?: string | undefined;
1016
+ }>;
1017
+ export type DesignSurface = z.infer<typeof DesignSurface>;
1018
+ export interface SurfaceFinding {
1019
+ kind: 'SCHEMA' | 'DANGLING_REF' | 'DTCG';
1020
+ where: string;
1021
+ message: string;
1022
+ }
1023
+ export interface SurfaceVerdict {
1024
+ ok: boolean;
1025
+ findings: SurfaceFinding[];
1026
+ }
1027
+ /** Parse against the schema, then the semantic checks it can't express: every
1028
+ * `composes` / pattern `components` id resolves, and every `tokens` layer is valid
1029
+ * DTCG (delegated to the shared design-gate). Deterministic gate, precise patchable
1030
+ * findings — the surface's own half plus the token half of the DTCG gate. */
1031
+ export declare function validateSurface(input: unknown): SurfaceVerdict;
1032
+ /** Merge two surfaces, CLOSED over the schema. Components/patterns fold by id (same
1033
+ * id → one entry, unioned provenance). Voices/feels/principles are COLLECTED (kept
1034
+ * per-source, deduped) rather than folded into one — because the landscape's job is
1035
+ * to let you SEE the spread ("Nexus feels dense, .com feels airy"); reconciling them
1036
+ * into a single unified voice/feel is a PROPOSE-stage decision, not a merge. So the
1037
+ * merge preserves the divergence that the overlay then reasons about. */
1038
+ export declare function mergeSurfaces(a: DesignSurface, b: DesignSurface): DesignSurface;
1039
+ export declare function synthesise(surfaces: DesignSurface[]): DesignSurface;