@pixerate/editor 0.261.0 → 0.262.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,138 @@
1
+ /**
2
+ * Conformance scenarios: a recorded sequence of tool calls with what each one returned, so
3
+ * another implementation of an editor (the Swift port, #533) can replay the same calls and check
4
+ * it gets the same results, documents and pixels. `@pixerate/conformance` holds the scenarios
5
+ * (`domains/<domain>/fixtures/*.json`); `scripts/record-conformance.mjs` records them from this
6
+ * core and a core test replays them.
7
+ *
8
+ * Results are compared after {@link normalizeConformanceValue}: ids an implementation generates
9
+ * (from a clock, say) become `@1`, `@2`, … in the order they are first seen, and binary payloads
10
+ * become `"<binary>"`, so neither the id format nor the PNG encoder is part of the contract. Ids
11
+ * that come from counters or names (`s1`, `pad1`, `ink-pen`) stay as they are. Every implementation applies the same rules (written
12
+ * out in the package README).
13
+ */
14
+ import type { McpToolResult } from './registry.js';
15
+ /** One tool call of a scenario and, once recorded, what it returned. */
16
+ export interface ConformanceStep {
17
+ /** Tool name, unprefixed (`paint_stroke`). */
18
+ tool: string;
19
+ /** Arguments. A string `@n` is replaced by the id that `@n` stands for. */
20
+ arguments?: Record<string, unknown>;
21
+ /** Also compare the saved document after this call. */
22
+ document?: boolean;
23
+ /**
24
+ * Also compare the rendered pixels after this call (`paper: false` leaves the paper out;
25
+ * `tolerance` loosens what another implementation is held to for this snapshot).
26
+ */
27
+ pixels?: boolean | {
28
+ paper?: boolean;
29
+ tolerance?: {
30
+ maxDelta?: number;
31
+ meanDelta?: number;
32
+ };
33
+ };
34
+ /**
35
+ * Parts of the result left out of the comparison because they describe this implementation
36
+ * rather than the contract (the wet engine's backend): JSON pointers like `/backend`, where a
37
+ * `*` segment stands for every array element or object member.
38
+ */
39
+ ignore?: string[];
40
+ /** Recorded results, written by the recorder. */
41
+ expect?: ConformanceExpectation;
42
+ }
43
+ export interface ConformanceExpectation {
44
+ /** The normalized `structuredContent`, or `{ error: { code, message, details? } }` for a failed call. */
45
+ result: unknown;
46
+ isError?: true;
47
+ document?: unknown;
48
+ pixels?: ConformancePixels;
49
+ }
50
+ /** A pixel snapshot: the PNG next to the scenario plus how close another implementation must be. */
51
+ export interface ConformancePixels {
52
+ /** PNG file, relative to the scenario file. */
53
+ file: string;
54
+ width: number;
55
+ height: number;
56
+ /** SHA-256 of the RGBA bytes, hex. This core matches it exactly. */
57
+ sha256: string;
58
+ /** Largest difference allowed in any channel of any pixel (0–255). */
59
+ maxDelta: number;
60
+ /** Largest mean difference allowed over all channels. */
61
+ meanDelta: number;
62
+ }
63
+ export interface ConformanceScenario {
64
+ $schema?: string;
65
+ /** Unique kebab-case id within the domain; also the file name. */
66
+ id: string;
67
+ description: string;
68
+ /** Host options, such as the canvas size. */
69
+ setup?: Record<string, unknown>;
70
+ steps: ConformanceStep[];
71
+ /** Reasons an implementation skips the whole scenario, by implementation (`swift`). */
72
+ skip?: Record<string, string>;
73
+ }
74
+ /** What a scenario runs against: a tool registry plus ways to read the document and pixels. */
75
+ export interface ConformanceHost {
76
+ callTool(name: string, args: Record<string, unknown>): Promise<McpToolResult>;
77
+ document(): unknown;
78
+ pixels(options: {
79
+ paper?: boolean;
80
+ }): {
81
+ width: number;
82
+ height: number;
83
+ data: Uint8Array | Uint8ClampedArray;
84
+ };
85
+ /** Whether a string is an id this implementation generated in its own format (default: none). */
86
+ isGeneratedId?(value: string): boolean;
87
+ dispose?(): void;
88
+ }
89
+ /** What one step produced, normalized (pixels are raw RGBA for the caller to hash or encode). */
90
+ export interface ConformanceStepOutput {
91
+ result: unknown;
92
+ isError: boolean;
93
+ document?: unknown;
94
+ pixels?: {
95
+ width: number;
96
+ height: number;
97
+ data: Uint8Array;
98
+ };
99
+ }
100
+ /** Maps real ids to `@n` placeholders and back, across a whole scenario. */
101
+ export declare class ConformanceIds {
102
+ private readonly toPlaceholder;
103
+ private readonly fromPlaceholder;
104
+ /** The placeholder for `id`, assigning the next one when it is new. */
105
+ add(id: string): string;
106
+ placeholder(id: string): string | undefined;
107
+ /** `text` with every known id in it replaced by its placeholder (longest ids first). */
108
+ replaceWithin(text: string): string;
109
+ /** The real id a placeholder stands for. */
110
+ resolve(placeholder: string): string | undefined;
111
+ }
112
+ /** Strings at least this long made only of base64 characters are binary payloads. */
113
+ export declare const CONFORMANCE_BINARY_MIN_LENGTH = 200;
114
+ type IdTest = (value: string) => boolean;
115
+ /**
116
+ * A value as scenarios store it:
117
+ * 1. Every string value or object key the implementation generated as an id (`isGeneratedId`) is
118
+ * numbered `@1`, `@2`, … in the order first seen, walking depth first with object keys sorted
119
+ * (each key before its value); the numbering carries across the scenario's steps.
120
+ * 2. Every known id in a string or object key, whole or inside a longer string (an error message),
121
+ * becomes its placeholder; longer ids are replaced first.
122
+ * 3. A string starting with `data:`, or at least 200 characters of base64, becomes `"<binary>"`.
123
+ * 4. An ISO 8601 date-time string (`2026-11-04T01:06:52.993Z`) becomes `"<time>"`: clocks differ.
124
+ * 5. Object keys are sorted; `undefined` values are dropped (as JSON would).
125
+ */
126
+ export declare function normalizeConformanceValue(value: unknown, ids: ConformanceIds, isGeneratedId?: IdTest): unknown;
127
+ /** `value` without the members at `paths` (`/a/b`, `*` for every element or member). */
128
+ export declare function omitConformancePaths(value: unknown, paths: readonly string[]): unknown;
129
+ /** Arguments with each `@n` placeholder string replaced by the id it stands for. */
130
+ export declare function resolveConformanceArguments(value: unknown, ids: ConformanceIds): unknown;
131
+ /** The comparable part of a tool result: `structuredContent`, or the error's code, message and details. */
132
+ export declare function conformanceResult(result: McpToolResult): {
133
+ value: unknown;
134
+ isError: boolean;
135
+ };
136
+ /** Runs a scenario's calls in order against a fresh host and returns what each step produced. */
137
+ export declare function runConformanceScenario(scenario: ConformanceScenario, host: ConformanceHost): Promise<ConformanceStepOutput[]>;
138
+ export {};
@@ -14,7 +14,6 @@
14
14
 
15
15
 
16
16
 
17
- var _chunk5DLCOQOQcjs = require('../chunk-5DLCOQOQ.cjs');
18
17
 
19
18
 
20
19
 
@@ -22,6 +21,7 @@ var _chunk5DLCOQOQcjs = require('../chunk-5DLCOQOQ.cjs');
22
21
 
23
22
 
24
23
 
24
+ var _chunkYBC3RKT2cjs = require('../chunk-YBC3RKT2.cjs');
25
25
 
26
26
 
27
27
 
@@ -30,6 +30,7 @@ var _chunk5DLCOQOQcjs = require('../chunk-5DLCOQOQ.cjs');
30
30
 
31
31
 
32
32
 
33
+ var _chunkZEKI6EPIcjs = require('../chunk-ZEKI6EPI.cjs');
33
34
 
34
35
 
35
36
 
@@ -40,7 +41,15 @@ var _chunk5DLCOQOQcjs = require('../chunk-5DLCOQOQ.cjs');
40
41
 
41
42
 
42
43
 
43
- var _chunkRTPBM46Fcjs = require('../chunk-RTPBM46F.cjs');
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+ var _chunk7TD63DZPcjs = require('../chunk-7TD63DZP.cjs');
44
53
 
45
54
 
46
55
 
@@ -201,4 +210,11 @@ var _chunk2BSBFBOAcjs = require('../chunk-2BSBFBOA.cjs');
201
210
 
202
211
 
203
212
 
204
- exports.AgentPlayback = _chunk3SLBXKAWcjs.AgentPlayback; exports.CAPTURE_EXCLUDE_SELECTOR = _chunkSVFEVKLFcjs.CAPTURE_EXCLUDE_SELECTOR; exports.CAPTURE_OVERLAY_SELECTORS = _chunkSVFEVKLFcjs.CAPTURE_OVERLAY_SELECTORS; exports.EDITOR_CANVAS_TOOLS = _chunkSVFEVKLFcjs.EDITOR_CANVAS_TOOLS; exports.EDITOR_MCP_TOOLS = _chunkSVFEVKLFcjs.EDITOR_MCP_TOOLS; exports.EDITOR_PROMPT_TOOLS = _chunkSVFEVKLFcjs.EDITOR_PROMPT_TOOLS; exports.EDIT_OPERATION_REQUIRED_ARGUMENTS = _chunkSVFEVKLFcjs.EDIT_OPERATION_REQUIRED_ARGUMENTS; exports.EXPORT_EXCLUDED_SELECTORS = _chunkSVFEVKLFcjs.EXPORT_EXCLUDED_SELECTORS; exports.JSON_RPC_ERRORS = _chunkRTPBM46Fcjs.JSON_RPC_ERRORS; exports.MCP_PROTOCOL_VERSIONS = _chunkRTPBM46Fcjs.MCP_PROTOCOL_VERSIONS; exports.MCP_TOOL_CANVAS_ADD_NODE = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_ADD_NODE; exports.MCP_TOOL_CANVAS_CONNECT = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_CONNECT; exports.MCP_TOOL_CANVAS_HIGHLIGHT = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_HIGHLIGHT; exports.MCP_TOOL_CANVAS_LAYOUT = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_LAYOUT; exports.MCP_TOOL_CANVAS_REMOVE_NODES = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_REMOVE_NODES; exports.MCP_TOOL_CANVAS_SELECT = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_SELECT; exports.MCP_TOOL_CANVAS_UPDATE_NODE = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_UPDATE_NODE; exports.MCP_TOOL_EDIT_CANVAS = _chunkSVFEVKLFcjs.MCP_TOOL_EDIT_CANVAS; exports.MCP_TOOL_EDIT_PROMPT = _chunkSVFEVKLFcjs.MCP_TOOL_EDIT_PROMPT; exports.MCP_TOOL_GET_EDITOR_STATE = _chunkSVFEVKLFcjs.MCP_TOOL_GET_EDITOR_STATE; exports.MCP_TOOL_PROMPT_INSERT_TEXT = _chunkSVFEVKLFcjs.MCP_TOOL_PROMPT_INSERT_TEXT; exports.MCP_TOOL_PROMPT_REPLACE_RANGE = _chunkSVFEVKLFcjs.MCP_TOOL_PROMPT_REPLACE_RANGE; exports.MCP_TOOL_PROMPT_SELECT = _chunkSVFEVKLFcjs.MCP_TOOL_PROMPT_SELECT; exports.MCP_TOOL_PROMPT_SET_VARIABLE = _chunkSVFEVKLFcjs.MCP_TOOL_PROMPT_SET_VARIABLE; exports.MCP_TOOL_VIEW_EDITOR = _chunkSVFEVKLFcjs.MCP_TOOL_VIEW_EDITOR; exports.PRESENCE_COLORS = _chunkK7ENM55Pcjs.PRESENCE_COLORS; exports.PerformanceQueue = _chunkK7ENM55Pcjs.PerformanceQueue; exports.PresenceStore = _chunkK7ENM55Pcjs.PresenceStore; exports.TOOL_BRIDGE_DEFAULT_PORT = _chunkRTPBM46Fcjs.TOOL_BRIDGE_DEFAULT_PORT; exports.TOOL_BRIDGE_PROTOCOL = _chunkRTPBM46Fcjs.TOOL_BRIDGE_PROTOCOL; exports.TOOL_DISCOVERY_TOOLS = _chunkRTPBM46Fcjs.TOOL_DISCOVERY_TOOLS; exports.TOOL_NAMESPACE_SEPARATOR = _chunkRTPBM46Fcjs.TOOL_NAMESPACE_SEPARATOR; exports.ToolRegistry = _chunkRTPBM46Fcjs.ToolRegistry; exports.ToolRegistryError = _chunkRTPBM46Fcjs.ToolRegistryError; exports.ToolRegistryView = _chunkRTPBM46Fcjs.ToolRegistryView; exports.UNSAFE_JSON_KEYS = _chunk2BSBFBOAcjs.UNSAFE_JSON_KEYS; exports.baseToolName = _chunkRTPBM46Fcjs.baseToolName; exports.callEvalTool = _chunk5DLCOQOQcjs.callEvalTool; exports.captureInputSchema = _chunkN2FGYZ4Qcjs.captureInputSchema; exports.captureOutputSize = _chunkN2FGYZ4Qcjs.captureOutputSize; exports.cloneElementWithStyles = _chunkSVFEVKLFcjs.cloneElementWithStyles; exports.connectToolBridge = _chunkRTPBM46Fcjs.connectToolBridge; exports.createAgentPlayback = _chunk3SLBXKAWcjs.createAgentPlayback; exports.createCaptureTool = _chunkN2FGYZ4Qcjs.createCaptureTool; exports.createCaptureToolProvider = _chunkN2FGYZ4Qcjs.createCaptureToolProvider; exports.createElementCaptureSurface = _chunkSVFEVKLFcjs.createElementCaptureSurface; exports.createInstantPresenceClock = _chunkK7ENM55Pcjs.createInstantPresenceClock; exports.createMcpServer = _chunkRTPBM46Fcjs.createMcpServer; exports.createOriginMiddleware = _chunk5DLCOQOQcjs.createOriginMiddleware; exports.createPlaybackToolProvider = _chunk3SLBXKAWcjs.createPlaybackToolProvider; exports.createStyleResolver = _chunk5DLCOQOQcjs.createStyleResolver; exports.createStyleToolProvider = _chunk5DLCOQOQcjs.createStyleToolProvider; exports.createToolRegistry = _chunkRTPBM46Fcjs.createToolRegistry; exports.derivePlaybackSteps = _chunk3SLBXKAWcjs.derivePlaybackSteps; exports.elementToSvg = _chunkSVFEVKLFcjs.elementToSvg; exports.errorResult = _chunkRTPBM46Fcjs.errorResult; exports.failedEvalChecks = _chunk5DLCOQOQcjs.failedEvalChecks; exports.imageEvalFixturePixels = _chunk5DLCOQOQcjs.imageEvalFixturePixels; exports.isUnsafeJsonKey = _chunk2BSBFBOAcjs.isUnsafeJsonKey; exports.listSkillEvals = _chunk5DLCOQOQcjs.listSkillEvals; exports.listSkills = _chunkRTPBM46Fcjs.listSkills; exports.locatePlaybackChrome = _chunk3SLBXKAWcjs.locatePlaybackChrome; exports.matchesEvalExpectation = _chunk5DLCOQOQcjs.matchesEvalExpectation; exports.memoryStyleStore = _chunk5DLCOQOQcjs.memoryStyleStore; exports.parseSkillFrontmatter = _chunkRTPBM46Fcjs.parseSkillFrontmatter; exports.parseStyleDomains = _chunk5DLCOQOQcjs.parseStyleDomains; exports.playbackRectFromClient = _chunk3SLBXKAWcjs.playbackRectFromClient; exports.playbackRefsFromArgs = _chunk3SLBXKAWcjs.playbackRefsFromArgs; exports.playbackRefsFromResult = _chunk3SLBXKAWcjs.playbackRefsFromResult; exports.rasterizeElement = _chunkSVFEVKLFcjs.rasterizeElement; exports.readSkillFile = _chunkRTPBM46Fcjs.readSkillFile; exports.readingTime = _chunk3SLBXKAWcjs.readingTime; exports.realPresenceClock = _chunkK7ENM55Pcjs.realPresenceClock; exports.renderStyle = _chunk5DLCOQOQcjs.renderStyle; exports.resolveCaptureRequest = _chunkN2FGYZ4Qcjs.resolveCaptureRequest; exports.runStyleChecks = _chunk5DLCOQOQcjs.runStyleChecks; exports.runToolScript = _chunk5DLCOQOQcjs.runToolScript; exports.searchTokens = _chunkRTPBM46Fcjs.searchTokens; exports.searchTools = _chunkRTPBM46Fcjs.searchTools; exports.stripPrototypeKeys = _chunk2BSBFBOAcjs.stripPrototypeKeys; exports.summarize = _chunkRTPBM46Fcjs.summarize; exports.toCapturedImageData = _chunkN2FGYZ4Qcjs.toCapturedImageData; exports.toToolResult = _chunkRTPBM46Fcjs.toToolResult; exports.toolResultError = _chunk5DLCOQOQcjs.toolResultError; exports.toolResultValue = _chunk5DLCOQOQcjs.toolResultValue; exports.toolsetInstructions = _chunkRTPBM46Fcjs.toolsetInstructions; exports.toolsetName = _chunkRTPBM46Fcjs.toolsetName; exports.trackPresenceDrag = _chunkK7ENM55Pcjs.trackPresenceDrag; exports.tweenPresenceCursor = _chunkK7ENM55Pcjs.tweenPresenceCursor; exports.unionCaptureRects = _chunkN2FGYZ4Qcjs.unionCaptureRects; exports.unionRects = _chunk3SLBXKAWcjs.unionRects; exports.unknownToolMessage = _chunkRTPBM46Fcjs.unknownToolMessage; exports.validateJsonSchema = _chunkWOFXZ3XUcjs.validateJsonSchema;
213
+
214
+
215
+
216
+
217
+
218
+
219
+
220
+ exports.AgentPlayback = _chunk3SLBXKAWcjs.AgentPlayback; exports.CAPTURE_EXCLUDE_SELECTOR = _chunkSVFEVKLFcjs.CAPTURE_EXCLUDE_SELECTOR; exports.CAPTURE_OVERLAY_SELECTORS = _chunkSVFEVKLFcjs.CAPTURE_OVERLAY_SELECTORS; exports.CONFORMANCE_BINARY_MIN_LENGTH = _chunkYBC3RKT2cjs.CONFORMANCE_BINARY_MIN_LENGTH; exports.ConformanceIds = _chunkYBC3RKT2cjs.ConformanceIds; exports.EDITOR_CANVAS_TOOLS = _chunkSVFEVKLFcjs.EDITOR_CANVAS_TOOLS; exports.EDITOR_MCP_TOOLS = _chunkSVFEVKLFcjs.EDITOR_MCP_TOOLS; exports.EDITOR_PROMPT_TOOLS = _chunkSVFEVKLFcjs.EDITOR_PROMPT_TOOLS; exports.EDIT_OPERATION_REQUIRED_ARGUMENTS = _chunkSVFEVKLFcjs.EDIT_OPERATION_REQUIRED_ARGUMENTS; exports.EXPORT_EXCLUDED_SELECTORS = _chunkSVFEVKLFcjs.EXPORT_EXCLUDED_SELECTORS; exports.JSON_RPC_ERRORS = _chunkZEKI6EPIcjs.JSON_RPC_ERRORS; exports.MCP_PROTOCOL_VERSIONS = _chunkZEKI6EPIcjs.MCP_PROTOCOL_VERSIONS; exports.MCP_TOOL_CANVAS_ADD_NODE = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_ADD_NODE; exports.MCP_TOOL_CANVAS_CONNECT = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_CONNECT; exports.MCP_TOOL_CANVAS_HIGHLIGHT = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_HIGHLIGHT; exports.MCP_TOOL_CANVAS_LAYOUT = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_LAYOUT; exports.MCP_TOOL_CANVAS_REMOVE_NODES = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_REMOVE_NODES; exports.MCP_TOOL_CANVAS_SELECT = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_SELECT; exports.MCP_TOOL_CANVAS_UPDATE_NODE = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_UPDATE_NODE; exports.MCP_TOOL_EDIT_CANVAS = _chunkSVFEVKLFcjs.MCP_TOOL_EDIT_CANVAS; exports.MCP_TOOL_EDIT_PROMPT = _chunkSVFEVKLFcjs.MCP_TOOL_EDIT_PROMPT; exports.MCP_TOOL_GET_EDITOR_STATE = _chunkSVFEVKLFcjs.MCP_TOOL_GET_EDITOR_STATE; exports.MCP_TOOL_PROMPT_INSERT_TEXT = _chunkSVFEVKLFcjs.MCP_TOOL_PROMPT_INSERT_TEXT; exports.MCP_TOOL_PROMPT_REPLACE_RANGE = _chunkSVFEVKLFcjs.MCP_TOOL_PROMPT_REPLACE_RANGE; exports.MCP_TOOL_PROMPT_SELECT = _chunkSVFEVKLFcjs.MCP_TOOL_PROMPT_SELECT; exports.MCP_TOOL_PROMPT_SET_VARIABLE = _chunkSVFEVKLFcjs.MCP_TOOL_PROMPT_SET_VARIABLE; exports.MCP_TOOL_VIEW_EDITOR = _chunkSVFEVKLFcjs.MCP_TOOL_VIEW_EDITOR; exports.PRESENCE_COLORS = _chunkK7ENM55Pcjs.PRESENCE_COLORS; exports.PerformanceQueue = _chunkK7ENM55Pcjs.PerformanceQueue; exports.PresenceStore = _chunkK7ENM55Pcjs.PresenceStore; exports.TOOL_BRIDGE_DEFAULT_PORT = _chunkZEKI6EPIcjs.TOOL_BRIDGE_DEFAULT_PORT; exports.TOOL_BRIDGE_PROTOCOL = _chunkZEKI6EPIcjs.TOOL_BRIDGE_PROTOCOL; exports.TOOL_DISCOVERY_TOOLS = _chunk7TD63DZPcjs.TOOL_DISCOVERY_TOOLS; exports.TOOL_NAMESPACE_SEPARATOR = _chunk7TD63DZPcjs.TOOL_NAMESPACE_SEPARATOR; exports.ToolRegistry = _chunk7TD63DZPcjs.ToolRegistry; exports.ToolRegistryError = _chunk7TD63DZPcjs.ToolRegistryError; exports.ToolRegistryView = _chunk7TD63DZPcjs.ToolRegistryView; exports.UNSAFE_JSON_KEYS = _chunk2BSBFBOAcjs.UNSAFE_JSON_KEYS; exports.baseToolName = _chunk7TD63DZPcjs.baseToolName; exports.callEvalTool = _chunkYBC3RKT2cjs.callEvalTool; exports.captureInputSchema = _chunkN2FGYZ4Qcjs.captureInputSchema; exports.captureOutputSize = _chunkN2FGYZ4Qcjs.captureOutputSize; exports.cloneElementWithStyles = _chunkSVFEVKLFcjs.cloneElementWithStyles; exports.conformanceResult = _chunkYBC3RKT2cjs.conformanceResult; exports.connectToolBridge = _chunkZEKI6EPIcjs.connectToolBridge; exports.createAgentPlayback = _chunk3SLBXKAWcjs.createAgentPlayback; exports.createCaptureTool = _chunkN2FGYZ4Qcjs.createCaptureTool; exports.createCaptureToolProvider = _chunkN2FGYZ4Qcjs.createCaptureToolProvider; exports.createElementCaptureSurface = _chunkSVFEVKLFcjs.createElementCaptureSurface; exports.createInstantPresenceClock = _chunkK7ENM55Pcjs.createInstantPresenceClock; exports.createMcpServer = _chunkZEKI6EPIcjs.createMcpServer; exports.createOriginMiddleware = _chunkYBC3RKT2cjs.createOriginMiddleware; exports.createPlaybackToolProvider = _chunk3SLBXKAWcjs.createPlaybackToolProvider; exports.createStyleResolver = _chunkYBC3RKT2cjs.createStyleResolver; exports.createStyleToolProvider = _chunkYBC3RKT2cjs.createStyleToolProvider; exports.createToolRegistry = _chunk7TD63DZPcjs.createToolRegistry; exports.derivePlaybackSteps = _chunk3SLBXKAWcjs.derivePlaybackSteps; exports.elementToSvg = _chunkSVFEVKLFcjs.elementToSvg; exports.errorResult = _chunk7TD63DZPcjs.errorResult; exports.failedEvalChecks = _chunkYBC3RKT2cjs.failedEvalChecks; exports.imageEvalFixturePixels = _chunkYBC3RKT2cjs.imageEvalFixturePixels; exports.isUnsafeJsonKey = _chunk2BSBFBOAcjs.isUnsafeJsonKey; exports.listSkillEvals = _chunkYBC3RKT2cjs.listSkillEvals; exports.listSkills = _chunk7TD63DZPcjs.listSkills; exports.locatePlaybackChrome = _chunk3SLBXKAWcjs.locatePlaybackChrome; exports.matchesEvalExpectation = _chunkYBC3RKT2cjs.matchesEvalExpectation; exports.memoryStyleStore = _chunkYBC3RKT2cjs.memoryStyleStore; exports.normalizeConformanceValue = _chunkYBC3RKT2cjs.normalizeConformanceValue; exports.omitConformancePaths = _chunkYBC3RKT2cjs.omitConformancePaths; exports.parseSkillFrontmatter = _chunk7TD63DZPcjs.parseSkillFrontmatter; exports.parseStyleDomains = _chunkYBC3RKT2cjs.parseStyleDomains; exports.playbackRectFromClient = _chunk3SLBXKAWcjs.playbackRectFromClient; exports.playbackRefsFromArgs = _chunk3SLBXKAWcjs.playbackRefsFromArgs; exports.playbackRefsFromResult = _chunk3SLBXKAWcjs.playbackRefsFromResult; exports.rasterizeElement = _chunkSVFEVKLFcjs.rasterizeElement; exports.readSkillFile = _chunk7TD63DZPcjs.readSkillFile; exports.readingTime = _chunk3SLBXKAWcjs.readingTime; exports.realPresenceClock = _chunkK7ENM55Pcjs.realPresenceClock; exports.renderStyle = _chunkYBC3RKT2cjs.renderStyle; exports.resolveCaptureRequest = _chunkN2FGYZ4Qcjs.resolveCaptureRequest; exports.resolveConformanceArguments = _chunkYBC3RKT2cjs.resolveConformanceArguments; exports.runConformanceScenario = _chunkYBC3RKT2cjs.runConformanceScenario; exports.runStyleChecks = _chunkYBC3RKT2cjs.runStyleChecks; exports.runToolScript = _chunkYBC3RKT2cjs.runToolScript; exports.searchTokens = _chunk7TD63DZPcjs.searchTokens; exports.searchTools = _chunk7TD63DZPcjs.searchTools; exports.stripPrototypeKeys = _chunk2BSBFBOAcjs.stripPrototypeKeys; exports.summarize = _chunk7TD63DZPcjs.summarize; exports.toCapturedImageData = _chunkN2FGYZ4Qcjs.toCapturedImageData; exports.toToolResult = _chunk7TD63DZPcjs.toToolResult; exports.toolResultError = _chunkYBC3RKT2cjs.toolResultError; exports.toolResultValue = _chunkYBC3RKT2cjs.toolResultValue; exports.toolsetInstructions = _chunkZEKI6EPIcjs.toolsetInstructions; exports.toolsetName = _chunk7TD63DZPcjs.toolsetName; exports.trackPresenceDrag = _chunkK7ENM55Pcjs.trackPresenceDrag; exports.tweenPresenceCursor = _chunkK7ENM55Pcjs.tweenPresenceCursor; exports.unionCaptureRects = _chunkN2FGYZ4Qcjs.unionCaptureRects; exports.unionRects = _chunk3SLBXKAWcjs.unionRects; exports.unknownToolMessage = _chunk7TD63DZPcjs.unknownToolMessage; exports.validateJsonSchema = _chunkWOFXZ3XUcjs.validateJsonSchema;
@@ -25,3 +25,4 @@ export * from './script.cjs';
25
25
  export * from './style.cjs';
26
26
  export * from './style-tools.cjs';
27
27
  export * from './origin.cjs';
28
+ export * from './conformance.cjs';
@@ -25,3 +25,4 @@ export * from './script.js';
25
25
  export * from './style.js';
26
26
  export * from './style-tools.js';
27
27
  export * from './origin.js';
28
+ export * from './conformance.js';
@@ -1,5 +1,8 @@
1
1
  import {
2
+ CONFORMANCE_BINARY_MIN_LENGTH,
3
+ ConformanceIds,
2
4
  callEvalTool,
5
+ conformanceResult,
3
6
  createOriginMiddleware,
4
7
  createStyleResolver,
5
8
  createStyleToolProvider,
@@ -8,26 +11,33 @@ import {
8
11
  listSkillEvals,
9
12
  matchesEvalExpectation,
10
13
  memoryStyleStore,
14
+ normalizeConformanceValue,
15
+ omitConformancePaths,
11
16
  parseStyleDomains,
12
17
  renderStyle,
18
+ resolveConformanceArguments,
19
+ runConformanceScenario,
13
20
  runStyleChecks,
14
21
  runToolScript,
15
22
  toolResultError,
16
23
  toolResultValue
17
- } from "../chunk-UCYW4M66.js";
24
+ } from "../chunk-ZQI3WUPP.js";
18
25
  import {
19
26
  JSON_RPC_ERRORS,
20
27
  MCP_PROTOCOL_VERSIONS,
21
28
  TOOL_BRIDGE_DEFAULT_PORT,
22
29
  TOOL_BRIDGE_PROTOCOL,
30
+ connectToolBridge,
31
+ createMcpServer,
32
+ toolsetInstructions
33
+ } from "../chunk-SYEOA5MS.js";
34
+ import {
23
35
  TOOL_DISCOVERY_TOOLS,
24
36
  TOOL_NAMESPACE_SEPARATOR,
25
37
  ToolRegistry,
26
38
  ToolRegistryError,
27
39
  ToolRegistryView,
28
40
  baseToolName,
29
- connectToolBridge,
30
- createMcpServer,
31
41
  createToolRegistry,
32
42
  errorResult,
33
43
  listSkills,
@@ -37,10 +47,9 @@ import {
37
47
  searchTools,
38
48
  summarize,
39
49
  toToolResult,
40
- toolsetInstructions,
41
50
  toolsetName,
42
51
  unknownToolMessage
43
- } from "../chunk-ABHOYBZD.js";
52
+ } from "../chunk-K4BGRCSH.js";
44
53
  import {
45
54
  AgentPlayback,
46
55
  createAgentPlayback,
@@ -111,6 +120,8 @@ export {
111
120
  AgentPlayback,
112
121
  CAPTURE_EXCLUDE_SELECTOR,
113
122
  CAPTURE_OVERLAY_SELECTORS,
123
+ CONFORMANCE_BINARY_MIN_LENGTH,
124
+ ConformanceIds,
114
125
  EDITOR_CANVAS_TOOLS,
115
126
  EDITOR_MCP_TOOLS,
116
127
  EDITOR_PROMPT_TOOLS,
@@ -149,6 +160,7 @@ export {
149
160
  captureInputSchema,
150
161
  captureOutputSize,
151
162
  cloneElementWithStyles,
163
+ conformanceResult,
152
164
  connectToolBridge,
153
165
  createAgentPlayback,
154
166
  createCaptureTool,
@@ -172,6 +184,8 @@ export {
172
184
  locatePlaybackChrome,
173
185
  matchesEvalExpectation,
174
186
  memoryStyleStore,
187
+ normalizeConformanceValue,
188
+ omitConformancePaths,
175
189
  parseSkillFrontmatter,
176
190
  parseStyleDomains,
177
191
  playbackRectFromClient,
@@ -183,6 +197,8 @@ export {
183
197
  realPresenceClock,
184
198
  renderStyle,
185
199
  resolveCaptureRequest,
200
+ resolveConformanceArguments,
201
+ runConformanceScenario,
186
202
  runStyleChecks,
187
203
  runToolScript,
188
204
  searchTokens,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixerate/editor",
3
- "version": "0.261.0",
3
+ "version": "0.262.0",
4
4
  "description": "UI-agnostic rich text and media editing core library",
5
5
  "author": "Pixerate",
6
6
  "license": "MIT",