@visual-layer/mcp-server 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/perceptual-diff.d.ts +35 -0
- package/dist/perceptual-diff.d.ts.map +1 -0
- package/dist/perceptual-diff.js +76 -0
- package/dist/perceptual-diff.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +137 -5
- package/dist/server.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Bbox } from '@visual-layer/core';
|
|
2
|
+
export interface DiffOptions {
|
|
3
|
+
/** Per-channel abs difference (0-255) above which a pixel counts as changed. Default 30. */
|
|
4
|
+
pixelTolerance?: number;
|
|
5
|
+
/** Fraction of scanned pixels changed above which `changed` is true. Default 0.005 (0.5%). */
|
|
6
|
+
changeThreshold?: number;
|
|
7
|
+
/** Viewport-space bbox to restrict the scan to (e.g. the clicked element). Omit = full image. */
|
|
8
|
+
region?: Bbox;
|
|
9
|
+
/** Viewport the region bbox is in. Required when region is set. */
|
|
10
|
+
viewport?: {
|
|
11
|
+
width: number;
|
|
12
|
+
height: number;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export interface DiffResult {
|
|
16
|
+
changed: boolean;
|
|
17
|
+
/** Fraction of scanned pixels that differ, in [0, 1]. */
|
|
18
|
+
changeRatio: number;
|
|
19
|
+
differingPixels: number;
|
|
20
|
+
totalPixels: number;
|
|
21
|
+
/** The screenshot-space region actually scanned, when a region was given. */
|
|
22
|
+
region?: {
|
|
23
|
+
x: number;
|
|
24
|
+
y: number;
|
|
25
|
+
width: number;
|
|
26
|
+
height: number;
|
|
27
|
+
scale: number;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Decode before/after to raw RGB, force after to before's dimensions, and count
|
|
32
|
+
* pixels differing beyond pixelTolerance within the scan window (region or full).
|
|
33
|
+
*/
|
|
34
|
+
export declare function diffScreenshots(before: Buffer, after: Buffer, opts?: DiffOptions): Promise<DiffResult>;
|
|
35
|
+
//# sourceMappingURL=perceptual-diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perceptual-diff.d.ts","sourceRoot":"","sources":["../src/perceptual-diff.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC1B,4FAA4F;IAC5F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8FAA8F;IAC9F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iGAAiG;IACjG,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,mEAAmE;IACnE,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,MAAM,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACjF;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,UAAU,CAAC,CA6DrB"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Perceptual screenshot diff — region-aware pixel comparison of two ingested
|
|
3
|
+
* screenshots. Replaces the coarse sha256-identity check in verify_action with
|
|
4
|
+
* an actual pixel diff, optionally scoped to the clicked element's bbox so a
|
|
5
|
+
* small visual change is not drowned out by an unrelated full-page animation.
|
|
6
|
+
*
|
|
7
|
+
* ponytail: per-pixel threshold scan over raw RGB. O(W*H) per call, fine for
|
|
8
|
+
* viewport-sized PNGs. Upgrade to block-hash / pHash if very large screenshots
|
|
9
|
+
* or repeated calls show measurable cost.
|
|
10
|
+
*/
|
|
11
|
+
import sharp from 'sharp';
|
|
12
|
+
/**
|
|
13
|
+
* Decode before/after to raw RGB, force after to before's dimensions, and count
|
|
14
|
+
* pixels differing beyond pixelTolerance within the scan window (region or full).
|
|
15
|
+
*/
|
|
16
|
+
export async function diffScreenshots(before, after, opts = {}) {
|
|
17
|
+
const pixelTol = opts.pixelTolerance ?? 30;
|
|
18
|
+
const changeThreshold = opts.changeThreshold ?? 0.005;
|
|
19
|
+
const beforeImg = await sharp(before).removeAlpha().raw().toBuffer({ resolveWithObject: true });
|
|
20
|
+
const W = beforeImg.info.width;
|
|
21
|
+
const H = beforeImg.info.height;
|
|
22
|
+
const ch = beforeImg.info.channels;
|
|
23
|
+
// Force after to identical dimensions/channels — before/after come from the
|
|
24
|
+
// same viewport, but JPEG re-encode or a 1px scroll can shift size by 1.
|
|
25
|
+
const afterImg = await sharp(after)
|
|
26
|
+
.removeAlpha()
|
|
27
|
+
.resize(W, H, { fit: 'fill' })
|
|
28
|
+
.raw()
|
|
29
|
+
.toBuffer({ resolveWithObject: true });
|
|
30
|
+
let x0 = 0;
|
|
31
|
+
let y0 = 0;
|
|
32
|
+
let x1 = W;
|
|
33
|
+
let y1 = H;
|
|
34
|
+
let region;
|
|
35
|
+
if (opts.region && opts.viewport && opts.viewport.width > 0 && opts.viewport.height > 0) {
|
|
36
|
+
const sx = W / opts.viewport.width;
|
|
37
|
+
const sy = H / opts.viewport.height;
|
|
38
|
+
const s = Math.min(sx, sy);
|
|
39
|
+
const [bx, by, bw, bh] = opts.region;
|
|
40
|
+
x0 = clamp(Math.floor(bx * s), 0, W);
|
|
41
|
+
y0 = clamp(Math.floor(by * s), 0, H);
|
|
42
|
+
x1 = clamp(Math.ceil((bx + bw) * s), 0, W);
|
|
43
|
+
y1 = clamp(Math.ceil((by + bh) * s), 0, H);
|
|
44
|
+
region = { x: x0, y: y0, width: x1 - x0, height: y1 - y0, scale: s };
|
|
45
|
+
}
|
|
46
|
+
const a = beforeImg.data;
|
|
47
|
+
const b = afterImg.data;
|
|
48
|
+
let differing = 0;
|
|
49
|
+
let total = 0;
|
|
50
|
+
for (let y = y0; y < y1; y++) {
|
|
51
|
+
for (let x = x0; x < x1; x++) {
|
|
52
|
+
const i = (y * W + x) * ch;
|
|
53
|
+
for (let c = 0; c < ch; c++) {
|
|
54
|
+
if (Math.abs(a[i + c] - b[i + c]) > pixelTol) {
|
|
55
|
+
differing++;
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
total++;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (total === 0)
|
|
63
|
+
total = 1;
|
|
64
|
+
const changeRatio = differing / total;
|
|
65
|
+
return {
|
|
66
|
+
changed: changeRatio > changeThreshold,
|
|
67
|
+
changeRatio,
|
|
68
|
+
differingPixels: differing,
|
|
69
|
+
totalPixels: total,
|
|
70
|
+
region,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function clamp(v, min, max) {
|
|
74
|
+
return v < min ? min : v > max ? max : v;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=perceptual-diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perceptual-diff.js","sourceRoot":"","sources":["../src/perceptual-diff.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsBpE,OAAO,EAAE,WAAW,EAAqB,MAAM,YAAY,CAAC;AAG5D,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,4FAA4F;IAC5F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,YAAY,CAAC,IAAI,GAAE,mBAAwB,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAiWtG"}
|
package/dist/server.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MCP stdio server. Exposes
|
|
2
|
+
* MCP stdio server. Exposes 9 VisualLayer tools usable from Claude Code and Codex.
|
|
3
3
|
* Wraps core/figma-rest/grounding; contains no business logic of its own.
|
|
4
4
|
*
|
|
5
5
|
* Logs MUST go to stderr (§18.3) — stdout is the JSON-RPC transport.
|
|
@@ -9,9 +9,10 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
|
9
9
|
import { createHash } from 'node:crypto';
|
|
10
10
|
import { readFile as readFileBuffer } from 'node:fs/promises';
|
|
11
11
|
import { snapshotToScreenGraph, structuredError, ErrorCodes, } from '@visual-layer/core';
|
|
12
|
-
import { groundInstruction, compareGraphs, evalGrounding } from '@visual-layer/grounding';
|
|
12
|
+
import { groundInstruction, gateGrounding, buildConsensus, compareGraphs, evalGrounding, } from '@visual-layer/grounding';
|
|
13
13
|
import { HttpFigmaClient, MockFigmaClient, captureFigma } from '@visual-layer/figma-rest';
|
|
14
14
|
import { ServerState } from './state.js';
|
|
15
|
+
import { diffScreenshots } from './perceptual-diff.js';
|
|
15
16
|
export const MCP_SERVER_VERSION = '0.1.0';
|
|
16
17
|
export function createServer(opts = {}) {
|
|
17
18
|
const state = opts.state ?? new ServerState();
|
|
@@ -95,15 +96,136 @@ export function createServer(opts = {}) {
|
|
|
95
96
|
}
|
|
96
97
|
});
|
|
97
98
|
/* 3. ground_instruction */
|
|
98
|
-
server.tool('ground_instruction', 'Rank interactables in a ScreenGraph against a natural-language instruction. Returns top-K candidates
|
|
99
|
+
server.tool('ground_instruction', 'Rank interactables in a ScreenGraph against a natural-language instruction. Returns top-K candidates + a gate verdict. verdict.status: "accepted" (safe to act), "needs_visual_confirm" (structure ambiguous — look at the screenshot, then call confirm_grounding), "rejected" (no viable candidate). This gate is how accuracy approaches 100%: actions only fire when structure is confident or vision confirms it.', {
|
|
99
100
|
screenGraphId: z.string().min(1),
|
|
100
101
|
instruction: z.string().min(1),
|
|
101
102
|
topK: z.number().int().positive().max(50).optional(),
|
|
103
|
+
gate: z
|
|
104
|
+
.object({
|
|
105
|
+
acceptConfidence: z.number().min(0).max(1).optional(),
|
|
106
|
+
minGap: z.number().min(0).max(1).optional(),
|
|
107
|
+
rejectConfidence: z.number().min(0).max(1).optional(),
|
|
108
|
+
})
|
|
109
|
+
.optional()
|
|
110
|
+
.describe('Gate thresholds. Defaults: acceptConfidence 0.85, minGap 0.2, rejectConfidence 0.3.'),
|
|
102
111
|
}, async (args) => {
|
|
103
112
|
try {
|
|
104
|
-
const { graph
|
|
113
|
+
const { graph } = state.get(args.screenGraphId);
|
|
105
114
|
const result = groundInstruction(graph, args.instruction, { topK: args.topK ?? 5 });
|
|
106
|
-
|
|
115
|
+
const verdict = gateGrounding(result, graph, (args.gate ?? {}));
|
|
116
|
+
return state.respond({
|
|
117
|
+
candidates: result.candidates,
|
|
118
|
+
verdict,
|
|
119
|
+
screenshot: graph.screenshot ?? null,
|
|
120
|
+
}, result.warnings);
|
|
121
|
+
}
|
|
122
|
+
catch (e) {
|
|
123
|
+
return err(toCode(e), msg(e));
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
/* 3b. confirm_grounding — vision second-opinion (the agent IS the VLM) */
|
|
127
|
+
server.tool('confirm_grounding', 'Vision second-opinion on an ambiguous grounding verdict. Call ONLY after ground_instruction returned verdict.status "needs_visual_confirm". Re-runs the gate with the same instruction and applies your visual verdict. Pass confirmed=true + the interactableId you see is the right target (use the bbox from the candidates); confirmed=false to block. Returns consensus.status: "act" (proceed) or "blocked".', {
|
|
128
|
+
screenGraphId: z.string().min(1),
|
|
129
|
+
instruction: z.string().min(1),
|
|
130
|
+
confirmed: z.boolean(),
|
|
131
|
+
interactableId: z.string().optional().describe('The interactable id vision confirms. Required when confirmed=true.'),
|
|
132
|
+
reason: z.string().optional(),
|
|
133
|
+
gate: z
|
|
134
|
+
.object({
|
|
135
|
+
acceptConfidence: z.number().min(0).max(1).optional(),
|
|
136
|
+
minGap: z.number().min(0).max(1).optional(),
|
|
137
|
+
rejectConfidence: z.number().min(0).max(1).optional(),
|
|
138
|
+
})
|
|
139
|
+
.optional(),
|
|
140
|
+
}, async (args) => {
|
|
141
|
+
try {
|
|
142
|
+
const { graph, trace } = state.get(args.screenGraphId);
|
|
143
|
+
const result = groundInstruction(graph, args.instruction, { topK: 5 });
|
|
144
|
+
const verdict = gateGrounding(result, graph, (args.gate ?? {}));
|
|
145
|
+
if (verdict.status === 'accepted') {
|
|
146
|
+
// Structure already confident — vision not needed, but harmless.
|
|
147
|
+
trace.info('confirm_grounding', { note: 'structure already accepted, vision verdict ignored' });
|
|
148
|
+
}
|
|
149
|
+
if (args.confirmed && !args.interactableId) {
|
|
150
|
+
return err(ErrorCodes.snapshot_missing_fields, 'confirmed=true requires interactableId');
|
|
151
|
+
}
|
|
152
|
+
const visual = {
|
|
153
|
+
confirmed: args.confirmed,
|
|
154
|
+
interactableId: args.interactableId,
|
|
155
|
+
reason: args.reason,
|
|
156
|
+
};
|
|
157
|
+
const consensus = buildConsensus(verdict, visual);
|
|
158
|
+
trace.info('confirm_grounding', {
|
|
159
|
+
gateStatus: verdict.status,
|
|
160
|
+
visualConfirmed: args.confirmed,
|
|
161
|
+
consensus: consensus.status,
|
|
162
|
+
interactableId: consensus.interactableId,
|
|
163
|
+
});
|
|
164
|
+
await trace.flush(state.store);
|
|
165
|
+
return state.respond({
|
|
166
|
+
consensus,
|
|
167
|
+
verdict,
|
|
168
|
+
screenshot: graph.screenshot ?? null,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
catch (e) {
|
|
172
|
+
return err(toCode(e), msg(e));
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
/* 3c. verify_action — did the action take effect? (perceptual before/after diff) */
|
|
176
|
+
server.tool('verify_action', 'Confirm an action took visible effect via a perceptual pixel diff of before/after screenshots ingested through capture_browser. Pass interactableId to scope the diff to the clicked element bbox (recommended — isolates the change from page-wide noise). Returns changed=true iff the changed-pixel ratio exceeds threshold (default 0.5%). changed=false means no visible state change — the action likely missed or was a no-op.', {
|
|
177
|
+
screenGraphId: z.string().min(1),
|
|
178
|
+
beforeArtifactId: z.string().min(1),
|
|
179
|
+
afterArtifactId: z.string().min(1),
|
|
180
|
+
interactableId: z
|
|
181
|
+
.string()
|
|
182
|
+
.optional()
|
|
183
|
+
.describe('The clicked interactable. When set, the diff scans only its bbox region.'),
|
|
184
|
+
pixelTolerance: z.number().min(0).max(255).optional().describe('Per-channel diff (0-255) to count as changed. Default 30.'),
|
|
185
|
+
changeThreshold: z.number().min(0).max(1).optional().describe('Changed-pixel fraction for changed=true. Default 0.005 (0.5%).'),
|
|
186
|
+
}, async (args) => {
|
|
187
|
+
try {
|
|
188
|
+
const { graph, runId, trace } = state.get(args.screenGraphId);
|
|
189
|
+
const before = await state.store.lookup(runId, args.beforeArtifactId);
|
|
190
|
+
const after = await state.store.lookup(runId, args.afterArtifactId);
|
|
191
|
+
if (!before)
|
|
192
|
+
return err('artifact_not_found', `before artifact ${args.beforeArtifactId} not in run ${runId}`, runId);
|
|
193
|
+
if (!after)
|
|
194
|
+
return err('artifact_not_found', `after artifact ${args.afterArtifactId} not in run ${runId}`, runId);
|
|
195
|
+
const beforeBuf = await state.store.read(runId, args.beforeArtifactId, before.filename);
|
|
196
|
+
const afterBuf = await state.store.read(runId, args.afterArtifactId, after.filename);
|
|
197
|
+
let region = null;
|
|
198
|
+
if (args.interactableId) {
|
|
199
|
+
const inter = graph.interactables.find((i) => i.id === args.interactableId);
|
|
200
|
+
if (!inter)
|
|
201
|
+
return err('element_not_found', `interactable ${args.interactableId} not in graph`);
|
|
202
|
+
region = pickRegion(inter.bbox, graph.viewport);
|
|
203
|
+
}
|
|
204
|
+
const diff = await diffScreenshots(beforeBuf, afterBuf, {
|
|
205
|
+
pixelTolerance: args.pixelTolerance,
|
|
206
|
+
changeThreshold: args.changeThreshold,
|
|
207
|
+
region: region?.bbox,
|
|
208
|
+
viewport: region?.viewport,
|
|
209
|
+
});
|
|
210
|
+
trace.info('verify_action', {
|
|
211
|
+
changed: diff.changed,
|
|
212
|
+
changeRatio: Number(diff.changeRatio.toFixed(4)),
|
|
213
|
+
differingPixels: diff.differingPixels,
|
|
214
|
+
scoped: !!region,
|
|
215
|
+
});
|
|
216
|
+
await trace.flush(state.store);
|
|
217
|
+
return state.respond({
|
|
218
|
+
changed: diff.changed,
|
|
219
|
+
changeRatio: diff.changeRatio,
|
|
220
|
+
differingPixels: diff.differingPixels,
|
|
221
|
+
totalPixels: diff.totalPixels,
|
|
222
|
+
region: diff.region ?? null,
|
|
223
|
+
reason: diff.changed
|
|
224
|
+
? `pixel change ${(diff.changeRatio * 100).toFixed(2)}% of scanned region`
|
|
225
|
+
: 'no perceptible pixel change — action likely had no visible effect',
|
|
226
|
+
before: { sha256: before.sha256 ?? '', byteSize: before.byteSize, mimeType: before.mimeType },
|
|
227
|
+
after: { sha256: after.sha256 ?? '', byteSize: after.byteSize, mimeType: after.mimeType },
|
|
228
|
+
});
|
|
107
229
|
}
|
|
108
230
|
catch (e) {
|
|
109
231
|
return err(toCode(e), msg(e));
|
|
@@ -202,6 +324,16 @@ function toCode(e) {
|
|
|
202
324
|
function msg(e) {
|
|
203
325
|
return e instanceof Error ? e.message : String(e);
|
|
204
326
|
}
|
|
327
|
+
/**
|
|
328
|
+
* Map a viewport-space bbox to a screenshot-space scan region. Returns null
|
|
329
|
+
* when no viewport is set on the graph — caller then falls back to a full-image
|
|
330
|
+
* diff instead of a scoped one.
|
|
331
|
+
*/
|
|
332
|
+
function pickRegion(bbox, viewport) {
|
|
333
|
+
if (!viewport || !viewport.width || !viewport.height)
|
|
334
|
+
return null;
|
|
335
|
+
return { bbox, viewport: { width: viewport.width, height: viewport.height } };
|
|
336
|
+
}
|
|
205
337
|
async function readFile(p) {
|
|
206
338
|
const { readFile: rf } = await import('node:fs/promises');
|
|
207
339
|
return rf(p, 'utf8');
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visual-layer/mcp-server",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "MCP stdio server exposing VisualLayer tools (Claude Code + Codex)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -28,10 +28,11 @@
|
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
31
|
+
"sharp": "^0.33.5",
|
|
31
32
|
"zod": "^3.23.8",
|
|
32
33
|
"@visual-layer/core": "1.0.1",
|
|
33
34
|
"@visual-layer/figma-rest": "1.0.1",
|
|
34
|
-
"@visual-layer/grounding": "1.0
|
|
35
|
+
"@visual-layer/grounding": "1.1.0"
|
|
35
36
|
},
|
|
36
37
|
"scripts": {
|
|
37
38
|
"build": "tsc -b",
|