@visual-layer/core 1.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.
- package/dist/artifact-store/index.d.ts +70 -0
- package/dist/artifact-store/index.d.ts.map +1 -0
- package/dist/artifact-store/index.js +289 -0
- package/dist/artifact-store/index.js.map +1 -0
- package/dist/browser-adapter.d.ts +1362 -0
- package/dist/browser-adapter.d.ts.map +1 -0
- package/dist/browser-adapter.js +264 -0
- package/dist/browser-adapter.js.map +1 -0
- package/dist/confidence.d.ts +8 -0
- package/dist/confidence.d.ts.map +1 -0
- package/dist/confidence.js +28 -0
- package/dist/confidence.js.map +1 -0
- package/dist/errors.d.ts +41 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +33 -0
- package/dist/errors.js.map +1 -0
- package/dist/geometry/bbox.d.ts +30 -0
- package/dist/geometry/bbox.d.ts.map +1 -0
- package/dist/geometry/bbox.js +77 -0
- package/dist/geometry/bbox.js.map +1 -0
- package/dist/geometry/coordinates.d.ts +26 -0
- package/dist/geometry/coordinates.d.ts.map +1 -0
- package/dist/geometry/coordinates.js +25 -0
- package/dist/geometry/coordinates.js.map +1 -0
- package/dist/geometry/index.d.ts +3 -0
- package/dist/geometry/index.d.ts.map +1 -0
- package/dist/geometry/index.js +3 -0
- package/dist/geometry/index.js.map +1 -0
- package/dist/ids.d.ts +7 -0
- package/dist/ids.d.ts.map +1 -0
- package/dist/ids.js +21 -0
- package/dist/ids.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/provenance.d.ts +7 -0
- package/dist/provenance.d.ts.map +1 -0
- package/dist/provenance.js +9 -0
- package/dist/provenance.js.map +1 -0
- package/dist/redaction/index.d.ts +28 -0
- package/dist/redaction/index.d.ts.map +1 -0
- package/dist/redaction/index.js +97 -0
- package/dist/redaction/index.js.map +1 -0
- package/dist/schema/index.d.ts +383 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +96 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/text/index.d.ts +18 -0
- package/dist/text/index.d.ts.map +1 -0
- package/dist/text/index.js +60 -0
- package/dist/text/index.js.map +1 -0
- package/dist/trace/index.d.ts +64 -0
- package/dist/trace/index.d.ts.map +1 -0
- package/dist/trace/index.js +63 -0
- package/dist/trace/index.js.map +1 -0
- package/dist/warnings.d.ts +7 -0
- package/dist/warnings.d.ts.map +1 -0
- package/dist/warnings.js +10 -0
- package/dist/warnings.js.map +1 -0
- package/package.json +33 -0
package/dist/ids.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable-ish ID generation. Uses crypto randomness so IDs are unique across
|
|
3
|
+
* runs within a machine without depending on wall-clock monotonicity.
|
|
4
|
+
*/
|
|
5
|
+
import { randomBytes } from 'node:crypto';
|
|
6
|
+
import { createHash } from 'node:crypto';
|
|
7
|
+
/** e.g. makeId('sg') -> "sg_a1b2c3d4e5f6g7h8" */
|
|
8
|
+
export function makeId(prefix) {
|
|
9
|
+
const rand = randomBytes(8).toString('hex');
|
|
10
|
+
return `${prefix}_${rand}`;
|
|
11
|
+
}
|
|
12
|
+
/** Short stable ID derived from content. Deterministic for identical input. */
|
|
13
|
+
export function deterministicId(prefix, content) {
|
|
14
|
+
const hash = createHash('sha256').update(content).digest('hex').slice(0, 12);
|
|
15
|
+
return `${prefix}_${hash}`;
|
|
16
|
+
}
|
|
17
|
+
/** sha256 hex of a string/buffer. */
|
|
18
|
+
export function sha256(content) {
|
|
19
|
+
return createHash('sha256').update(content).digest('hex');
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=ids.js.map
|
package/dist/ids.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../src/ids.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,iDAAiD;AACjD,MAAM,UAAU,MAAM,CAAC,MAAc;IACnC,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,OAAe;IAC7D,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7E,OAAO,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,MAAM,CAAC,OAAqC;IAC1D,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @visual-layer/core public surface.
|
|
3
|
+
*/
|
|
4
|
+
export * from './schema/index.js';
|
|
5
|
+
export * from './geometry/index.js';
|
|
6
|
+
export * from './text/index.js';
|
|
7
|
+
export * from './confidence.js';
|
|
8
|
+
export * from './ids.js';
|
|
9
|
+
export * from './warnings.js';
|
|
10
|
+
export * from './provenance.js';
|
|
11
|
+
export * from './errors.js';
|
|
12
|
+
export * from './redaction/index.js';
|
|
13
|
+
export * from './artifact-store/index.js';
|
|
14
|
+
export * from './trace/index.js';
|
|
15
|
+
export * from './browser-adapter.js';
|
|
16
|
+
export declare const CORE_VERSION = "0.1.0";
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AAErC,eAAO,MAAM,YAAY,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @visual-layer/core public surface.
|
|
3
|
+
*/
|
|
4
|
+
export * from './schema/index.js';
|
|
5
|
+
export * from './geometry/index.js';
|
|
6
|
+
export * from './text/index.js';
|
|
7
|
+
export * from './confidence.js';
|
|
8
|
+
export * from './ids.js';
|
|
9
|
+
export * from './warnings.js';
|
|
10
|
+
export * from './provenance.js';
|
|
11
|
+
export * from './errors.js';
|
|
12
|
+
export * from './redaction/index.js';
|
|
13
|
+
export * from './artifact-store/index.js';
|
|
14
|
+
export * from './trace/index.js';
|
|
15
|
+
export * from './browser-adapter.js';
|
|
16
|
+
export const CORE_VERSION = '0.1.0';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AAErC,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Provenance constructors. */
|
|
2
|
+
import type { Provenance, InteractableSource } from './schema/index.js';
|
|
3
|
+
export declare function provenance(field: string, source: InteractableSource | string, opts?: {
|
|
4
|
+
confidence?: number;
|
|
5
|
+
note?: string;
|
|
6
|
+
}): Provenance;
|
|
7
|
+
//# sourceMappingURL=provenance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAExE,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,kBAAkB,GAAG,MAAM,EACnC,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAChD,UAAU,CAKZ"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function provenance(field, source, opts = {}) {
|
|
2
|
+
const p = { field, source };
|
|
3
|
+
if (opts.confidence !== undefined)
|
|
4
|
+
p.confidence = opts.confidence;
|
|
5
|
+
if (opts.note !== undefined)
|
|
6
|
+
p.note = opts.note;
|
|
7
|
+
return p;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=provenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provenance.js","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,UAAU,CACxB,KAAa,EACb,MAAmC,EACnC,OAA+C,EAAE;IAEjD,MAAM,CAAC,GAAe,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACxC,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;QAAE,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IAClE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAChD,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret redaction. Used before any value is written to artifact store,
|
|
3
|
+
* trace, warnings, or error details.
|
|
4
|
+
*
|
|
5
|
+
* Fail-closed: if redaction itself throws, callers must NOT persist the
|
|
6
|
+
* unredacted value — emit `redaction_failed` and discard the sensitive blob.
|
|
7
|
+
*/
|
|
8
|
+
export interface RedactionResult {
|
|
9
|
+
/** Redacted copy of the input. */
|
|
10
|
+
redacted: string;
|
|
11
|
+
/** Number of substitutions made. */
|
|
12
|
+
count: number;
|
|
13
|
+
/** Names of patterns that fired (deduped). */
|
|
14
|
+
matchedPatterns: string[];
|
|
15
|
+
}
|
|
16
|
+
export declare function redactString(input: string): RedactionResult;
|
|
17
|
+
/** Deep-clone a JSON-ish value, redacting every string along the way. */
|
|
18
|
+
export declare function redactJson<T>(value: T): T;
|
|
19
|
+
/**
|
|
20
|
+
* Fail-closed guard. Runs the redactor; if it throws, rethrows as a typed
|
|
21
|
+
* `RedactionError` so callers can emit `redaction_failed` and discard.
|
|
22
|
+
*/
|
|
23
|
+
export declare class RedactionError extends Error {
|
|
24
|
+
readonly code: "redaction_failed";
|
|
25
|
+
constructor(cause: unknown);
|
|
26
|
+
}
|
|
27
|
+
export declare function redactJsonFailClosed<T>(value: T): T;
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/redaction/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoBH,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAa3D;AAeD,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAEzC;AA0BD;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAG,kBAAkB,CAAU;gBAChC,KAAK,EAAE,OAAO;CAI3B;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAMnD"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret redaction. Used before any value is written to artifact store,
|
|
3
|
+
* trace, warnings, or error details.
|
|
4
|
+
*
|
|
5
|
+
* Fail-closed: if redaction itself throws, callers must NOT persist the
|
|
6
|
+
* unredacted value — emit `redaction_failed` and discard the sensitive blob.
|
|
7
|
+
*/
|
|
8
|
+
/** Patterns matched against raw strings. Order matters: longest first. */
|
|
9
|
+
const SECRET_PATTERNS = [
|
|
10
|
+
// Known vendor token shapes
|
|
11
|
+
{ name: 'openai-key', re: /\bsk-[A-Za-z0-9_-]{20,}\b/g, replacement: 'sk-[REDACTED]' },
|
|
12
|
+
{ name: 'anthropic-key', re: /\bsk-ant-[A-Za-z0-9_-]{20,}\b/g, replacement: 'sk-ant-[REDACTED]' },
|
|
13
|
+
{ name: 'figma-token', re: /\bfigd_[A-Za-z0-9_-]{20,}\b/g, replacement: 'figd_[REDACTED]' },
|
|
14
|
+
// Bearer / Authorization header values
|
|
15
|
+
{ name: 'bearer', re: /\b(Bearer)\s+[A-Za-z0-9._\-]+/gi, replacement: '$1 [REDACTED]' },
|
|
16
|
+
// key= / token: / secret: assignments (capture value after the label)
|
|
17
|
+
{
|
|
18
|
+
name: 'secret-assignment',
|
|
19
|
+
re: /\b(api[_-]?key|apikey|access[_-]?token|auth[_-]?token|token|secret|password|passwd|client[_-]?secret|private[_-]?key)(["']?\s*[:=]\s*["']?)([^\s"'&]+)/gi,
|
|
20
|
+
replacement: '$1$2[REDACTED]',
|
|
21
|
+
},
|
|
22
|
+
// Generic long opaque blobs (hex/base64, 40+ chars) — conservative, may also mask hashes
|
|
23
|
+
{ name: 'opaque-blob', re: /\b[A-Za-z0-9+/]{40,}={0,2}\b/g, replacement: '[REDACTED]' },
|
|
24
|
+
];
|
|
25
|
+
export function redactString(input) {
|
|
26
|
+
let redacted = input;
|
|
27
|
+
let count = 0;
|
|
28
|
+
const matched = new Set();
|
|
29
|
+
for (const p of SECRET_PATTERNS) {
|
|
30
|
+
const before = redacted;
|
|
31
|
+
redacted = redacted.replace(p.re, p.replacement);
|
|
32
|
+
if (redacted !== before) {
|
|
33
|
+
count += countSubstitutions(before, redacted);
|
|
34
|
+
matched.add(p.name);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return { redacted, count, matchedPatterns: [...matched] };
|
|
38
|
+
}
|
|
39
|
+
function countSubstitutions(before, after) {
|
|
40
|
+
// Count the [REDACTED] occurrences introduced by THIS pattern pass (delta),
|
|
41
|
+
// not the total — earlier patterns' substitutions are already in `before`.
|
|
42
|
+
const a = countRedacted(before);
|
|
43
|
+
const b = countRedacted(after);
|
|
44
|
+
return Math.max(0, b - a);
|
|
45
|
+
}
|
|
46
|
+
function countRedacted(s) {
|
|
47
|
+
const m = s.match(/\[REDACTED\]/g);
|
|
48
|
+
return m ? m.length : 0;
|
|
49
|
+
}
|
|
50
|
+
/** Deep-clone a JSON-ish value, redacting every string along the way. */
|
|
51
|
+
export function redactJson(value) {
|
|
52
|
+
return redactJsonImpl(value);
|
|
53
|
+
}
|
|
54
|
+
function redactJsonImpl(value) {
|
|
55
|
+
if (typeof value === 'string')
|
|
56
|
+
return redactString(value).redacted;
|
|
57
|
+
if (Array.isArray(value))
|
|
58
|
+
return value.map(redactJsonImpl);
|
|
59
|
+
if (value && typeof value === 'object') {
|
|
60
|
+
const out = {};
|
|
61
|
+
for (const [k, v] of Object.entries(value)) {
|
|
62
|
+
// key-level masking: sensitive keys get fully redacted regardless of value type
|
|
63
|
+
if (isSensitiveKey(k)) {
|
|
64
|
+
out[k] = '[REDACTED]';
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
out[k] = redactJsonImpl(v);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return out;
|
|
71
|
+
}
|
|
72
|
+
return value;
|
|
73
|
+
}
|
|
74
|
+
const SENSITIVE_KEY_RE = /^(api[_-]?key|apikey|access[_-]?token|auth[_-]?token|token|secret|password|passwd|client[_-]?secret|private[_-]?key|authorization|cookie|figma[_-]?token)$/i;
|
|
75
|
+
function isSensitiveKey(key) {
|
|
76
|
+
return SENSITIVE_KEY_RE.test(key);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Fail-closed guard. Runs the redactor; if it throws, rethrows as a typed
|
|
80
|
+
* `RedactionError` so callers can emit `redaction_failed` and discard.
|
|
81
|
+
*/
|
|
82
|
+
export class RedactionError extends Error {
|
|
83
|
+
code = 'redaction_failed';
|
|
84
|
+
constructor(cause) {
|
|
85
|
+
super(`redaction failed: ${cause instanceof Error ? cause.message : String(cause)}`);
|
|
86
|
+
this.name = 'RedactionError';
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
export function redactJsonFailClosed(value) {
|
|
90
|
+
try {
|
|
91
|
+
return redactJson(value);
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
throw new RedactionError(e);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/redaction/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ScreenGraph schema — the canonical v0 data contract.
|
|
3
|
+
*
|
|
4
|
+
* See VISION_LAYER_MVP_PLAN.md §6 and §18.2 for the accepted contract decisions:
|
|
5
|
+
* - bbox is always [x, y, width, height] in the declared coordinate space.
|
|
6
|
+
* - confidence is always a finite number in [0, 1].
|
|
7
|
+
* - compare_graphs output fields are missingFromActual / extraInActual.
|
|
8
|
+
*/
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
/** `[x, y, width, height]`. width/height must be non-negative. */
|
|
11
|
+
export declare const Bbox: z.ZodEffects<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, [number, number, number, number], [number, number, number, number]>;
|
|
12
|
+
export type Bbox = z.infer<typeof Bbox>;
|
|
13
|
+
export declare const CoordinateSpace: z.ZodEnum<["viewport", "screenshot", "figma"]>;
|
|
14
|
+
export type CoordinateSpace = z.infer<typeof CoordinateSpace>;
|
|
15
|
+
export declare const ScreenGraphSource: z.ZodEnum<["browser", "figma", "image", "hybrid"]>;
|
|
16
|
+
export type ScreenGraphSource = z.infer<typeof ScreenGraphSource>;
|
|
17
|
+
export declare const InteractableSource: z.ZodEnum<["dom", "ax", "figma", "ocr", "vision"]>;
|
|
18
|
+
export type InteractableSource = z.infer<typeof InteractableSource>;
|
|
19
|
+
export declare const WarningSeverity: z.ZodEnum<["info", "warning", "error"]>;
|
|
20
|
+
export type WarningSeverity = z.infer<typeof WarningSeverity>;
|
|
21
|
+
/** Finite number in [0, 1]. */
|
|
22
|
+
export declare const Confidence: z.ZodNumber;
|
|
23
|
+
export type Confidence = z.infer<typeof Confidence>;
|
|
24
|
+
/** Per-dimension grounding scores, each in [0, 1]. */
|
|
25
|
+
export declare const ScoreBreakdown: z.ZodObject<{
|
|
26
|
+
text: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
role: z.ZodOptional<z.ZodNumber>;
|
|
28
|
+
bbox: z.ZodOptional<z.ZodNumber>;
|
|
29
|
+
source: z.ZodOptional<z.ZodNumber>;
|
|
30
|
+
}, "strip", z.ZodNumber, z.objectOutputType<{
|
|
31
|
+
text: z.ZodOptional<z.ZodNumber>;
|
|
32
|
+
role: z.ZodOptional<z.ZodNumber>;
|
|
33
|
+
bbox: z.ZodOptional<z.ZodNumber>;
|
|
34
|
+
source: z.ZodOptional<z.ZodNumber>;
|
|
35
|
+
}, z.ZodNumber, "strip">, z.objectInputType<{
|
|
36
|
+
text: z.ZodOptional<z.ZodNumber>;
|
|
37
|
+
role: z.ZodOptional<z.ZodNumber>;
|
|
38
|
+
bbox: z.ZodOptional<z.ZodNumber>;
|
|
39
|
+
source: z.ZodOptional<z.ZodNumber>;
|
|
40
|
+
}, z.ZodNumber, "strip">>;
|
|
41
|
+
export type ScoreBreakdown = z.infer<typeof ScoreBreakdown>;
|
|
42
|
+
export declare const Viewport: z.ZodObject<{
|
|
43
|
+
width: z.ZodNumber;
|
|
44
|
+
height: z.ZodNumber;
|
|
45
|
+
dpr: z.ZodOptional<z.ZodNumber>;
|
|
46
|
+
url: z.ZodOptional<z.ZodString>;
|
|
47
|
+
}, "strip", z.ZodTypeAny, {
|
|
48
|
+
width: number;
|
|
49
|
+
height: number;
|
|
50
|
+
dpr?: number | undefined;
|
|
51
|
+
url?: string | undefined;
|
|
52
|
+
}, {
|
|
53
|
+
width: number;
|
|
54
|
+
height: number;
|
|
55
|
+
dpr?: number | undefined;
|
|
56
|
+
url?: string | undefined;
|
|
57
|
+
}>;
|
|
58
|
+
export type Viewport = z.infer<typeof Viewport>;
|
|
59
|
+
export declare const Screenshot: z.ZodObject<{
|
|
60
|
+
artifactId: z.ZodString;
|
|
61
|
+
sha256: z.ZodString;
|
|
62
|
+
width: z.ZodNumber;
|
|
63
|
+
height: z.ZodNumber;
|
|
64
|
+
mimeType: z.ZodEnum<["image/png", "image/jpeg"]>;
|
|
65
|
+
}, "strip", z.ZodTypeAny, {
|
|
66
|
+
width: number;
|
|
67
|
+
height: number;
|
|
68
|
+
artifactId: string;
|
|
69
|
+
sha256: string;
|
|
70
|
+
mimeType: "image/png" | "image/jpeg";
|
|
71
|
+
}, {
|
|
72
|
+
width: number;
|
|
73
|
+
height: number;
|
|
74
|
+
artifactId: string;
|
|
75
|
+
sha256: string;
|
|
76
|
+
mimeType: "image/png" | "image/jpeg";
|
|
77
|
+
}>;
|
|
78
|
+
export type Screenshot = z.infer<typeof Screenshot>;
|
|
79
|
+
export declare const AttributeValue: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>;
|
|
80
|
+
export type AttributeValue = z.infer<typeof AttributeValue>;
|
|
81
|
+
export declare const Interactable: z.ZodObject<{
|
|
82
|
+
id: z.ZodString;
|
|
83
|
+
role: z.ZodOptional<z.ZodString>;
|
|
84
|
+
name: z.ZodOptional<z.ZodString>;
|
|
85
|
+
text: z.ZodOptional<z.ZodString>;
|
|
86
|
+
bbox: z.ZodEffects<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, [number, number, number, number], [number, number, number, number]>;
|
|
87
|
+
coordinateSpace: z.ZodEnum<["viewport", "screenshot", "figma"]>;
|
|
88
|
+
source: z.ZodArray<z.ZodEnum<["dom", "ax", "figma", "ocr", "vision"]>, "many">;
|
|
89
|
+
confidence: z.ZodNumber;
|
|
90
|
+
domPath: z.ZodOptional<z.ZodString>;
|
|
91
|
+
axRef: z.ZodOptional<z.ZodString>;
|
|
92
|
+
figmaNodeId: z.ZodOptional<z.ZodString>;
|
|
93
|
+
attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
|
|
94
|
+
}, "strip", z.ZodTypeAny, {
|
|
95
|
+
bbox: [number, number, number, number];
|
|
96
|
+
source: ("figma" | "dom" | "ax" | "ocr" | "vision")[];
|
|
97
|
+
id: string;
|
|
98
|
+
coordinateSpace: "viewport" | "screenshot" | "figma";
|
|
99
|
+
confidence: number;
|
|
100
|
+
text?: string | undefined;
|
|
101
|
+
role?: string | undefined;
|
|
102
|
+
name?: string | undefined;
|
|
103
|
+
domPath?: string | undefined;
|
|
104
|
+
axRef?: string | undefined;
|
|
105
|
+
figmaNodeId?: string | undefined;
|
|
106
|
+
attributes?: Record<string, string | number | boolean> | undefined;
|
|
107
|
+
}, {
|
|
108
|
+
bbox: [number, number, number, number];
|
|
109
|
+
source: ("figma" | "dom" | "ax" | "ocr" | "vision")[];
|
|
110
|
+
id: string;
|
|
111
|
+
coordinateSpace: "viewport" | "screenshot" | "figma";
|
|
112
|
+
confidence: number;
|
|
113
|
+
text?: string | undefined;
|
|
114
|
+
role?: string | undefined;
|
|
115
|
+
name?: string | undefined;
|
|
116
|
+
domPath?: string | undefined;
|
|
117
|
+
axRef?: string | undefined;
|
|
118
|
+
figmaNodeId?: string | undefined;
|
|
119
|
+
attributes?: Record<string, string | number | boolean> | undefined;
|
|
120
|
+
}>;
|
|
121
|
+
export type Interactable = z.infer<typeof Interactable>;
|
|
122
|
+
export declare const Warning: z.ZodObject<{
|
|
123
|
+
code: z.ZodString;
|
|
124
|
+
message: z.ZodString;
|
|
125
|
+
severity: z.ZodEnum<["info", "warning", "error"]>;
|
|
126
|
+
targetId: z.ZodOptional<z.ZodString>;
|
|
127
|
+
}, "strip", z.ZodTypeAny, {
|
|
128
|
+
code: string;
|
|
129
|
+
message: string;
|
|
130
|
+
severity: "info" | "warning" | "error";
|
|
131
|
+
targetId?: string | undefined;
|
|
132
|
+
}, {
|
|
133
|
+
code: string;
|
|
134
|
+
message: string;
|
|
135
|
+
severity: "info" | "warning" | "error";
|
|
136
|
+
targetId?: string | undefined;
|
|
137
|
+
}>;
|
|
138
|
+
export type Warning = z.infer<typeof Warning>;
|
|
139
|
+
export declare const Provenance: z.ZodObject<{
|
|
140
|
+
/** Dotted path to the field this provenance describes, e.g. `interactables[3].bbox`. */
|
|
141
|
+
field: z.ZodString;
|
|
142
|
+
/** Origin of the value. Either a known source or a free-form adapter label. */
|
|
143
|
+
source: z.ZodUnion<[z.ZodEnum<["dom", "ax", "figma", "ocr", "vision"]>, z.ZodString]>;
|
|
144
|
+
confidence: z.ZodOptional<z.ZodNumber>;
|
|
145
|
+
note: z.ZodOptional<z.ZodString>;
|
|
146
|
+
}, "strip", z.ZodTypeAny, {
|
|
147
|
+
source: string;
|
|
148
|
+
field: string;
|
|
149
|
+
confidence?: number | undefined;
|
|
150
|
+
note?: string | undefined;
|
|
151
|
+
}, {
|
|
152
|
+
source: string;
|
|
153
|
+
field: string;
|
|
154
|
+
confidence?: number | undefined;
|
|
155
|
+
note?: string | undefined;
|
|
156
|
+
}>;
|
|
157
|
+
export type Provenance = z.infer<typeof Provenance>;
|
|
158
|
+
/**
|
|
159
|
+
* The MVP freezes domNodes / axNodes / figmaNodes / ocrBlocks / mappings as
|
|
160
|
+
* opaque `unknown[]` — adapters may attach raw upstream payloads, but core
|
|
161
|
+
* only reasons over `interactables`. Concrete shapes land in later versions.
|
|
162
|
+
*/
|
|
163
|
+
export declare const ScreenGraph: z.ZodObject<{
|
|
164
|
+
id: z.ZodString;
|
|
165
|
+
version: z.ZodLiteral<"0.1">;
|
|
166
|
+
source: z.ZodEnum<["browser", "figma", "image", "hybrid"]>;
|
|
167
|
+
createdAt: z.ZodString;
|
|
168
|
+
viewport: z.ZodOptional<z.ZodObject<{
|
|
169
|
+
width: z.ZodNumber;
|
|
170
|
+
height: z.ZodNumber;
|
|
171
|
+
dpr: z.ZodOptional<z.ZodNumber>;
|
|
172
|
+
url: z.ZodOptional<z.ZodString>;
|
|
173
|
+
}, "strip", z.ZodTypeAny, {
|
|
174
|
+
width: number;
|
|
175
|
+
height: number;
|
|
176
|
+
dpr?: number | undefined;
|
|
177
|
+
url?: string | undefined;
|
|
178
|
+
}, {
|
|
179
|
+
width: number;
|
|
180
|
+
height: number;
|
|
181
|
+
dpr?: number | undefined;
|
|
182
|
+
url?: string | undefined;
|
|
183
|
+
}>>;
|
|
184
|
+
screenshot: z.ZodOptional<z.ZodObject<{
|
|
185
|
+
artifactId: z.ZodString;
|
|
186
|
+
sha256: z.ZodString;
|
|
187
|
+
width: z.ZodNumber;
|
|
188
|
+
height: z.ZodNumber;
|
|
189
|
+
mimeType: z.ZodEnum<["image/png", "image/jpeg"]>;
|
|
190
|
+
}, "strip", z.ZodTypeAny, {
|
|
191
|
+
width: number;
|
|
192
|
+
height: number;
|
|
193
|
+
artifactId: string;
|
|
194
|
+
sha256: string;
|
|
195
|
+
mimeType: "image/png" | "image/jpeg";
|
|
196
|
+
}, {
|
|
197
|
+
width: number;
|
|
198
|
+
height: number;
|
|
199
|
+
artifactId: string;
|
|
200
|
+
sha256: string;
|
|
201
|
+
mimeType: "image/png" | "image/jpeg";
|
|
202
|
+
}>>;
|
|
203
|
+
interactables: z.ZodArray<z.ZodObject<{
|
|
204
|
+
id: z.ZodString;
|
|
205
|
+
role: z.ZodOptional<z.ZodString>;
|
|
206
|
+
name: z.ZodOptional<z.ZodString>;
|
|
207
|
+
text: z.ZodOptional<z.ZodString>;
|
|
208
|
+
bbox: z.ZodEffects<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, [number, number, number, number], [number, number, number, number]>;
|
|
209
|
+
coordinateSpace: z.ZodEnum<["viewport", "screenshot", "figma"]>;
|
|
210
|
+
source: z.ZodArray<z.ZodEnum<["dom", "ax", "figma", "ocr", "vision"]>, "many">;
|
|
211
|
+
confidence: z.ZodNumber;
|
|
212
|
+
domPath: z.ZodOptional<z.ZodString>;
|
|
213
|
+
axRef: z.ZodOptional<z.ZodString>;
|
|
214
|
+
figmaNodeId: z.ZodOptional<z.ZodString>;
|
|
215
|
+
attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
|
|
216
|
+
}, "strip", z.ZodTypeAny, {
|
|
217
|
+
bbox: [number, number, number, number];
|
|
218
|
+
source: ("figma" | "dom" | "ax" | "ocr" | "vision")[];
|
|
219
|
+
id: string;
|
|
220
|
+
coordinateSpace: "viewport" | "screenshot" | "figma";
|
|
221
|
+
confidence: number;
|
|
222
|
+
text?: string | undefined;
|
|
223
|
+
role?: string | undefined;
|
|
224
|
+
name?: string | undefined;
|
|
225
|
+
domPath?: string | undefined;
|
|
226
|
+
axRef?: string | undefined;
|
|
227
|
+
figmaNodeId?: string | undefined;
|
|
228
|
+
attributes?: Record<string, string | number | boolean> | undefined;
|
|
229
|
+
}, {
|
|
230
|
+
bbox: [number, number, number, number];
|
|
231
|
+
source: ("figma" | "dom" | "ax" | "ocr" | "vision")[];
|
|
232
|
+
id: string;
|
|
233
|
+
coordinateSpace: "viewport" | "screenshot" | "figma";
|
|
234
|
+
confidence: number;
|
|
235
|
+
text?: string | undefined;
|
|
236
|
+
role?: string | undefined;
|
|
237
|
+
name?: string | undefined;
|
|
238
|
+
domPath?: string | undefined;
|
|
239
|
+
axRef?: string | undefined;
|
|
240
|
+
figmaNodeId?: string | undefined;
|
|
241
|
+
attributes?: Record<string, string | number | boolean> | undefined;
|
|
242
|
+
}>, "many">;
|
|
243
|
+
domNodes: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
|
|
244
|
+
axNodes: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
|
|
245
|
+
figmaNodes: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
|
|
246
|
+
ocrBlocks: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
|
|
247
|
+
mappings: z.ZodDefault<z.ZodArray<z.ZodUnknown, "many">>;
|
|
248
|
+
warnings: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
249
|
+
code: z.ZodString;
|
|
250
|
+
message: z.ZodString;
|
|
251
|
+
severity: z.ZodEnum<["info", "warning", "error"]>;
|
|
252
|
+
targetId: z.ZodOptional<z.ZodString>;
|
|
253
|
+
}, "strip", z.ZodTypeAny, {
|
|
254
|
+
code: string;
|
|
255
|
+
message: string;
|
|
256
|
+
severity: "info" | "warning" | "error";
|
|
257
|
+
targetId?: string | undefined;
|
|
258
|
+
}, {
|
|
259
|
+
code: string;
|
|
260
|
+
message: string;
|
|
261
|
+
severity: "info" | "warning" | "error";
|
|
262
|
+
targetId?: string | undefined;
|
|
263
|
+
}>, "many">>;
|
|
264
|
+
provenance: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
265
|
+
/** Dotted path to the field this provenance describes, e.g. `interactables[3].bbox`. */
|
|
266
|
+
field: z.ZodString;
|
|
267
|
+
/** Origin of the value. Either a known source or a free-form adapter label. */
|
|
268
|
+
source: z.ZodUnion<[z.ZodEnum<["dom", "ax", "figma", "ocr", "vision"]>, z.ZodString]>;
|
|
269
|
+
confidence: z.ZodOptional<z.ZodNumber>;
|
|
270
|
+
note: z.ZodOptional<z.ZodString>;
|
|
271
|
+
}, "strip", z.ZodTypeAny, {
|
|
272
|
+
source: string;
|
|
273
|
+
field: string;
|
|
274
|
+
confidence?: number | undefined;
|
|
275
|
+
note?: string | undefined;
|
|
276
|
+
}, {
|
|
277
|
+
source: string;
|
|
278
|
+
field: string;
|
|
279
|
+
confidence?: number | undefined;
|
|
280
|
+
note?: string | undefined;
|
|
281
|
+
}>, "many">>;
|
|
282
|
+
}, "strip", z.ZodTypeAny, {
|
|
283
|
+
source: "figma" | "browser" | "image" | "hybrid";
|
|
284
|
+
id: string;
|
|
285
|
+
version: "0.1";
|
|
286
|
+
createdAt: string;
|
|
287
|
+
interactables: {
|
|
288
|
+
bbox: [number, number, number, number];
|
|
289
|
+
source: ("figma" | "dom" | "ax" | "ocr" | "vision")[];
|
|
290
|
+
id: string;
|
|
291
|
+
coordinateSpace: "viewport" | "screenshot" | "figma";
|
|
292
|
+
confidence: number;
|
|
293
|
+
text?: string | undefined;
|
|
294
|
+
role?: string | undefined;
|
|
295
|
+
name?: string | undefined;
|
|
296
|
+
domPath?: string | undefined;
|
|
297
|
+
axRef?: string | undefined;
|
|
298
|
+
figmaNodeId?: string | undefined;
|
|
299
|
+
attributes?: Record<string, string | number | boolean> | undefined;
|
|
300
|
+
}[];
|
|
301
|
+
mappings: unknown[];
|
|
302
|
+
warnings: {
|
|
303
|
+
code: string;
|
|
304
|
+
message: string;
|
|
305
|
+
severity: "info" | "warning" | "error";
|
|
306
|
+
targetId?: string | undefined;
|
|
307
|
+
}[];
|
|
308
|
+
provenance: {
|
|
309
|
+
source: string;
|
|
310
|
+
field: string;
|
|
311
|
+
confidence?: number | undefined;
|
|
312
|
+
note?: string | undefined;
|
|
313
|
+
}[];
|
|
314
|
+
viewport?: {
|
|
315
|
+
width: number;
|
|
316
|
+
height: number;
|
|
317
|
+
dpr?: number | undefined;
|
|
318
|
+
url?: string | undefined;
|
|
319
|
+
} | undefined;
|
|
320
|
+
screenshot?: {
|
|
321
|
+
width: number;
|
|
322
|
+
height: number;
|
|
323
|
+
artifactId: string;
|
|
324
|
+
sha256: string;
|
|
325
|
+
mimeType: "image/png" | "image/jpeg";
|
|
326
|
+
} | undefined;
|
|
327
|
+
domNodes?: unknown[] | undefined;
|
|
328
|
+
axNodes?: unknown[] | undefined;
|
|
329
|
+
figmaNodes?: unknown[] | undefined;
|
|
330
|
+
ocrBlocks?: unknown[] | undefined;
|
|
331
|
+
}, {
|
|
332
|
+
source: "figma" | "browser" | "image" | "hybrid";
|
|
333
|
+
id: string;
|
|
334
|
+
version: "0.1";
|
|
335
|
+
createdAt: string;
|
|
336
|
+
interactables: {
|
|
337
|
+
bbox: [number, number, number, number];
|
|
338
|
+
source: ("figma" | "dom" | "ax" | "ocr" | "vision")[];
|
|
339
|
+
id: string;
|
|
340
|
+
coordinateSpace: "viewport" | "screenshot" | "figma";
|
|
341
|
+
confidence: number;
|
|
342
|
+
text?: string | undefined;
|
|
343
|
+
role?: string | undefined;
|
|
344
|
+
name?: string | undefined;
|
|
345
|
+
domPath?: string | undefined;
|
|
346
|
+
axRef?: string | undefined;
|
|
347
|
+
figmaNodeId?: string | undefined;
|
|
348
|
+
attributes?: Record<string, string | number | boolean> | undefined;
|
|
349
|
+
}[];
|
|
350
|
+
viewport?: {
|
|
351
|
+
width: number;
|
|
352
|
+
height: number;
|
|
353
|
+
dpr?: number | undefined;
|
|
354
|
+
url?: string | undefined;
|
|
355
|
+
} | undefined;
|
|
356
|
+
screenshot?: {
|
|
357
|
+
width: number;
|
|
358
|
+
height: number;
|
|
359
|
+
artifactId: string;
|
|
360
|
+
sha256: string;
|
|
361
|
+
mimeType: "image/png" | "image/jpeg";
|
|
362
|
+
} | undefined;
|
|
363
|
+
domNodes?: unknown[] | undefined;
|
|
364
|
+
axNodes?: unknown[] | undefined;
|
|
365
|
+
figmaNodes?: unknown[] | undefined;
|
|
366
|
+
ocrBlocks?: unknown[] | undefined;
|
|
367
|
+
mappings?: unknown[] | undefined;
|
|
368
|
+
warnings?: {
|
|
369
|
+
code: string;
|
|
370
|
+
message: string;
|
|
371
|
+
severity: "info" | "warning" | "error";
|
|
372
|
+
targetId?: string | undefined;
|
|
373
|
+
}[] | undefined;
|
|
374
|
+
provenance?: {
|
|
375
|
+
source: string;
|
|
376
|
+
field: string;
|
|
377
|
+
confidence?: number | undefined;
|
|
378
|
+
note?: string | undefined;
|
|
379
|
+
}[] | undefined;
|
|
380
|
+
}>;
|
|
381
|
+
export type ScreenGraph = z.infer<typeof ScreenGraph>;
|
|
382
|
+
export declare const SCHEMA_VERSION: "0.1";
|
|
383
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,kEAAkE;AAClE,eAAO,MAAM,IAAI,0JAE0F,CAAC;AAC5G,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAExC,eAAO,MAAM,eAAe,gDAA8C,CAAC;AAC3E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,iBAAiB,oDAAkD,CAAC;AACjF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,kBAAkB,oDAAkD,CAAC;AAClF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,eAAO,MAAM,eAAe,yCAAuC,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,+BAA+B;AAC/B,eAAO,MAAM,UAAU,aAAoC,CAAC;AAC5D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,sDAAsD;AACtD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;yBAOU,CAAC;AACtC,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAI5D,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;EAKnB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;EAMrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,cAAc,sDAAiD,CAAC;AAC7E,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAavB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;EAKlB,CAAC;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAE9C,eAAO,MAAM,UAAU;IACrB,wFAAwF;;IAExF,+EAA+E;;;;;;;;;;;;;;EAI/E,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAIpD;;;;GAIG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAhBtB,wFAAwF;;QAExF,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6B/E,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,cAAc,EAAG,KAAc,CAAC"}
|