@pixerate/editor 0.260.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.
Files changed (35) hide show
  1. package/dist/agent/index.cjs +19 -3
  2. package/dist/agent/index.js +21 -5
  3. package/dist/bridge/cli.cjs +4 -3
  4. package/dist/bridge/cli.js +3 -2
  5. package/dist/bridge/index.cjs +4 -3
  6. package/dist/bridge/index.js +3 -2
  7. package/dist/{chunk-KBNCEZZB.cjs → chunk-5NRD76T7.cjs} +9 -7
  8. package/dist/{chunk-SPPDMY7T.js → chunk-6LWEL5DO.js} +4 -2
  9. package/dist/{chunk-RTPBM46F.cjs → chunk-7TD63DZP.cjs} +1 -294
  10. package/dist/{chunk-ABHOYBZD.js → chunk-K4BGRCSH.js} +1 -294
  11. package/dist/chunk-SYEOA5MS.js +301 -0
  12. package/dist/{chunk-5DLCOQOQ.cjs → chunk-YBC3RKT2.cjs} +177 -16
  13. package/dist/chunk-ZEKI6EPI.cjs +301 -0
  14. package/dist/{chunk-UCYW4M66.js → chunk-ZQI3WUPP.js} +163 -2
  15. package/dist/paint-editor/contract.d.cts +11 -0
  16. package/dist/paint-editor/contract.d.ts +11 -0
  17. package/dist/paint-editor/controller.d.cts +17 -0
  18. package/dist/paint-editor/controller.d.ts +17 -0
  19. package/dist/paint-editor/index.cjs +245 -84
  20. package/dist/paint-editor/index.d.cts +2 -1
  21. package/dist/paint-editor/index.d.ts +2 -1
  22. package/dist/paint-editor/index.js +163 -2
  23. package/dist/paint-editor/path-samples.d.cts +19 -0
  24. package/dist/paint-editor/path-samples.d.ts +19 -0
  25. package/dist/paint-editor/ui.d.cts +6 -0
  26. package/dist/paint-editor/ui.d.ts +6 -0
  27. package/dist/tools/conformance.d.cts +138 -0
  28. package/dist/tools/conformance.d.ts +138 -0
  29. package/dist/tools/index.cjs +19 -3
  30. package/dist/tools/index.d.cts +1 -0
  31. package/dist/tools/index.d.ts +1 -0
  32. package/dist/tools/index.js +21 -5
  33. package/package.json +1 -1
  34. package/skills/pixerate-paint-editor/SKILL.md +2 -0
  35. package/skills/pixerate-paint-sketch-to-finish/SKILL.md +5 -1
@@ -31,7 +31,6 @@ require('../chunk-T7QSEKDY.cjs');
31
31
 
32
32
 
33
33
 
34
- var _chunk5DLCOQOQcjs = require('../chunk-5DLCOQOQ.cjs');
35
34
 
36
35
 
37
36
 
@@ -39,6 +38,7 @@ var _chunk5DLCOQOQcjs = require('../chunk-5DLCOQOQ.cjs');
39
38
 
40
39
 
41
40
 
41
+ var _chunkYBC3RKT2cjs = require('../chunk-YBC3RKT2.cjs');
42
42
 
43
43
 
44
44
 
@@ -47,6 +47,7 @@ var _chunk5DLCOQOQcjs = require('../chunk-5DLCOQOQ.cjs');
47
47
 
48
48
 
49
49
 
50
+ var _chunkZEKI6EPIcjs = require('../chunk-ZEKI6EPI.cjs');
50
51
 
51
52
 
52
53
 
@@ -57,7 +58,15 @@ var _chunk5DLCOQOQcjs = require('../chunk-5DLCOQOQ.cjs');
57
58
 
58
59
 
59
60
 
60
- var _chunkRTPBM46Fcjs = require('../chunk-RTPBM46F.cjs');
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+ var _chunk7TD63DZPcjs = require('../chunk-7TD63DZP.cjs');
61
70
 
62
71
 
63
72
 
@@ -2544,4 +2553,11 @@ function createReviewToolProvider(target, options) {
2544
2553
 
2545
2554
 
2546
2555
 
2547
- 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.createCanvasComponentToolProvider = createCanvasComponentToolProvider; exports.createCaptureTool = _chunkN2FGYZ4Qcjs.createCaptureTool; exports.createCaptureToolProvider = _chunkN2FGYZ4Qcjs.createCaptureToolProvider; exports.createDocumentChartTools = createDocumentChartTools; exports.createEditorMcpToolProvider = createEditorMcpToolProvider; exports.createElementCaptureSurface = _chunkSVFEVKLFcjs.createElementCaptureSurface; exports.createInstantPresenceClock = _chunkK7ENM55Pcjs.createInstantPresenceClock; exports.createMcpServer = _chunkRTPBM46Fcjs.createMcpServer; exports.createOriginMiddleware = _chunk5DLCOQOQcjs.createOriginMiddleware; exports.createPlaybackToolProvider = _chunk3SLBXKAWcjs.createPlaybackToolProvider; exports.createReviewToolProvider = createReviewToolProvider; exports.createRichTextToolProvider = createRichTextToolProvider; exports.createSpreadsheetToolProvider = createSpreadsheetToolProvider; 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.normalizeSide = normalizeSide; exports.parseSkillFrontmatter = _chunkRTPBM46Fcjs.parseSkillFrontmatter; exports.parseStyleDomains = _chunk5DLCOQOQcjs.parseStyleDomains; exports.planAgentCommand = planAgentCommand; exports.planCanvasPlaybackSteps = planCanvasPlaybackSteps; exports.planCanvasToolPlayback = planCanvasToolPlayback; exports.planToolCall = planToolCall; 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.toolCallToAgentCommand = toolCallToAgentCommand; 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.validateAgentCommand = validateAgentCommand; exports.validateJsonSchema = _chunkWOFXZ3XUcjs.validateJsonSchema;
2556
+
2557
+
2558
+
2559
+
2560
+
2561
+
2562
+
2563
+ 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.createCanvasComponentToolProvider = createCanvasComponentToolProvider; exports.createCaptureTool = _chunkN2FGYZ4Qcjs.createCaptureTool; exports.createCaptureToolProvider = _chunkN2FGYZ4Qcjs.createCaptureToolProvider; exports.createDocumentChartTools = createDocumentChartTools; exports.createEditorMcpToolProvider = createEditorMcpToolProvider; exports.createElementCaptureSurface = _chunkSVFEVKLFcjs.createElementCaptureSurface; exports.createInstantPresenceClock = _chunkK7ENM55Pcjs.createInstantPresenceClock; exports.createMcpServer = _chunkZEKI6EPIcjs.createMcpServer; exports.createOriginMiddleware = _chunkYBC3RKT2cjs.createOriginMiddleware; exports.createPlaybackToolProvider = _chunk3SLBXKAWcjs.createPlaybackToolProvider; exports.createReviewToolProvider = createReviewToolProvider; exports.createRichTextToolProvider = createRichTextToolProvider; exports.createSpreadsheetToolProvider = createSpreadsheetToolProvider; 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.normalizeSide = normalizeSide; exports.omitConformancePaths = _chunkYBC3RKT2cjs.omitConformancePaths; exports.parseSkillFrontmatter = _chunk7TD63DZPcjs.parseSkillFrontmatter; exports.parseStyleDomains = _chunkYBC3RKT2cjs.parseStyleDomains; exports.planAgentCommand = planAgentCommand; exports.planCanvasPlaybackSteps = planCanvasPlaybackSteps; exports.planCanvasToolPlayback = planCanvasToolPlayback; exports.planToolCall = planToolCall; 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.toolCallToAgentCommand = toolCallToAgentCommand; 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.validateAgentCommand = validateAgentCommand; exports.validateJsonSchema = _chunkWOFXZ3XUcjs.validateJsonSchema;
@@ -16,7 +16,10 @@ import {
16
16
  } from "../chunk-U4VE4UI2.js";
17
17
  import "../chunk-LPFQHVCO.js";
18
18
  import {
19
+ CONFORMANCE_BINARY_MIN_LENGTH,
20
+ ConformanceIds,
19
21
  callEvalTool,
22
+ conformanceResult,
20
23
  createOriginMiddleware,
21
24
  createStyleResolver,
22
25
  createStyleToolProvider,
@@ -25,26 +28,33 @@ import {
25
28
  listSkillEvals,
26
29
  matchesEvalExpectation,
27
30
  memoryStyleStore,
31
+ normalizeConformanceValue,
32
+ omitConformancePaths,
28
33
  parseStyleDomains,
29
34
  renderStyle,
35
+ resolveConformanceArguments,
36
+ runConformanceScenario,
30
37
  runStyleChecks,
31
38
  runToolScript,
32
39
  toolResultError,
33
40
  toolResultValue
34
- } from "../chunk-UCYW4M66.js";
41
+ } from "../chunk-ZQI3WUPP.js";
35
42
  import {
36
43
  JSON_RPC_ERRORS,
37
44
  MCP_PROTOCOL_VERSIONS,
38
45
  TOOL_BRIDGE_DEFAULT_PORT,
39
46
  TOOL_BRIDGE_PROTOCOL,
47
+ connectToolBridge,
48
+ createMcpServer,
49
+ toolsetInstructions
50
+ } from "../chunk-SYEOA5MS.js";
51
+ import {
40
52
  TOOL_DISCOVERY_TOOLS,
41
53
  TOOL_NAMESPACE_SEPARATOR,
42
54
  ToolRegistry,
43
55
  ToolRegistryError,
44
56
  ToolRegistryView,
45
57
  baseToolName,
46
- connectToolBridge,
47
- createMcpServer,
48
58
  createToolRegistry,
49
59
  errorResult,
50
60
  listSkills,
@@ -54,10 +64,9 @@ import {
54
64
  searchTools,
55
65
  summarize,
56
66
  toToolResult,
57
- toolsetInstructions,
58
67
  toolsetName,
59
68
  unknownToolMessage
60
- } from "../chunk-ABHOYBZD.js";
69
+ } from "../chunk-K4BGRCSH.js";
61
70
  import {
62
71
  AgentPlayback,
63
72
  createAgentPlayback,
@@ -2441,6 +2450,8 @@ export {
2441
2450
  AgentPlayback,
2442
2451
  CAPTURE_EXCLUDE_SELECTOR,
2443
2452
  CAPTURE_OVERLAY_SELECTORS,
2453
+ CONFORMANCE_BINARY_MIN_LENGTH,
2454
+ ConformanceIds,
2444
2455
  EDITOR_CANVAS_TOOLS,
2445
2456
  EDITOR_MCP_TOOLS,
2446
2457
  EDITOR_PROMPT_TOOLS,
@@ -2479,6 +2490,7 @@ export {
2479
2490
  captureInputSchema,
2480
2491
  captureOutputSize,
2481
2492
  cloneElementWithStyles,
2493
+ conformanceResult,
2482
2494
  connectToolBridge,
2483
2495
  createAgentPlayback,
2484
2496
  createCanvasComponentToolProvider,
@@ -2508,7 +2520,9 @@ export {
2508
2520
  locatePlaybackChrome,
2509
2521
  matchesEvalExpectation,
2510
2522
  memoryStyleStore,
2523
+ normalizeConformanceValue,
2511
2524
  normalizeSide,
2525
+ omitConformancePaths,
2512
2526
  parseSkillFrontmatter,
2513
2527
  parseStyleDomains,
2514
2528
  planAgentCommand,
@@ -2524,6 +2538,8 @@ export {
2524
2538
  realPresenceClock,
2525
2539
  renderStyle,
2526
2540
  resolveCaptureRequest,
2541
+ resolveConformanceArguments,
2542
+ runConformanceScenario,
2527
2543
  runStyleChecks,
2528
2544
  runToolScript,
2529
2545
  searchTokens,
@@ -1,8 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict"; function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
3
3
 
4
- var _chunkKBNCEZZBcjs = require('../chunk-KBNCEZZB.cjs');
5
- require('../chunk-RTPBM46F.cjs');
4
+ var _chunk5NRD76T7cjs = require('../chunk-5NRD76T7.cjs');
5
+ require('../chunk-ZEKI6EPI.cjs');
6
+ require('../chunk-7TD63DZP.cjs');
6
7
  require('../chunk-WOFXZ3XU.cjs');
7
8
  require('../chunk-2BSBFBOA.cjs');
8
9
 
@@ -23,7 +24,7 @@ args.forEach((arg, i) => {
23
24
  if (arg === "--origin" && args[i + 1]) origins.push(args[i + 1]);
24
25
  });
25
26
  var port = value("--port");
26
- void _chunkKBNCEZZBcjs.createToolBridge.call(void 0, {
27
+ void _chunk5NRD76T7cjs.createToolBridge.call(void 0, {
27
28
  name: _nullishCoalesce(value("--name"), () => ( "pixerate")),
28
29
  port: port !== void 0 ? Number(port) : void 0,
29
30
  token: _nullishCoalesce(value("--token"), () => ( process.env.PIXERATE_BRIDGE_TOKEN)),
@@ -1,8 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  createToolBridge
4
- } from "../chunk-SPPDMY7T.js";
5
- import "../chunk-ABHOYBZD.js";
4
+ } from "../chunk-6LWEL5DO.js";
5
+ import "../chunk-SYEOA5MS.js";
6
+ import "../chunk-K4BGRCSH.js";
6
7
  import "../chunk-V2ZCJRDM.js";
7
8
  import "../chunk-HF5QZS7Z.js";
8
9
 
@@ -3,11 +3,12 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkKBNCEZZBcjs = require('../chunk-KBNCEZZB.cjs');
6
+ var _chunk5NRD76T7cjs = require('../chunk-5NRD76T7.cjs');
7
7
 
8
8
 
9
9
 
10
- var _chunkRTPBM46Fcjs = require('../chunk-RTPBM46F.cjs');
10
+ var _chunkZEKI6EPIcjs = require('../chunk-ZEKI6EPI.cjs');
11
+ require('../chunk-7TD63DZP.cjs');
11
12
  require('../chunk-WOFXZ3XU.cjs');
12
13
  require('../chunk-2BSBFBOA.cjs');
13
14
 
@@ -17,4 +18,4 @@ require('../chunk-2BSBFBOA.cjs');
17
18
 
18
19
 
19
20
 
20
- exports.TOOL_BRIDGE_DEFAULT_PORT = _chunkRTPBM46Fcjs.TOOL_BRIDGE_DEFAULT_PORT; exports.TOOL_BRIDGE_PROTOCOL = _chunkRTPBM46Fcjs.TOOL_BRIDGE_PROTOCOL; exports.createToolBridge = _chunkKBNCEZZBcjs.createToolBridge; exports.defaultSkillsDir = _chunkKBNCEZZBcjs.defaultSkillsDir; exports.isLocalOrigin = _chunkKBNCEZZBcjs.isLocalOrigin; exports.loadSkillFiles = _chunkKBNCEZZBcjs.loadSkillFiles;
21
+ exports.TOOL_BRIDGE_DEFAULT_PORT = _chunkZEKI6EPIcjs.TOOL_BRIDGE_DEFAULT_PORT; exports.TOOL_BRIDGE_PROTOCOL = _chunkZEKI6EPIcjs.TOOL_BRIDGE_PROTOCOL; exports.createToolBridge = _chunk5NRD76T7cjs.createToolBridge; exports.defaultSkillsDir = _chunk5NRD76T7cjs.defaultSkillsDir; exports.isLocalOrigin = _chunk5NRD76T7cjs.isLocalOrigin; exports.loadSkillFiles = _chunk5NRD76T7cjs.loadSkillFiles;
@@ -3,11 +3,12 @@ import {
3
3
  defaultSkillsDir,
4
4
  isLocalOrigin,
5
5
  loadSkillFiles
6
- } from "../chunk-SPPDMY7T.js";
6
+ } from "../chunk-6LWEL5DO.js";
7
7
  import {
8
8
  TOOL_BRIDGE_DEFAULT_PORT,
9
9
  TOOL_BRIDGE_PROTOCOL
10
- } from "../chunk-ABHOYBZD.js";
10
+ } from "../chunk-SYEOA5MS.js";
11
+ import "../chunk-K4BGRCSH.js";
11
12
  import "../chunk-V2ZCJRDM.js";
12
13
  import "../chunk-HF5QZS7Z.js";
13
14
  export {
@@ -2,8 +2,10 @@
2
2
 
3
3
 
4
4
 
5
+ var _chunkZEKI6EPIcjs = require('./chunk-ZEKI6EPI.cjs');
5
6
 
6
- var _chunkRTPBM46Fcjs = require('./chunk-RTPBM46F.cjs');
7
+
8
+ var _chunk7TD63DZPcjs = require('./chunk-7TD63DZP.cjs');
7
9
 
8
10
  // src/bridge/index.ts
9
11
  var _http = require('http');
@@ -197,7 +199,7 @@ var SKILL_INSTRUCTIONS = "Each editor's tools are documented by an agent skill (
197
199
  async function createToolBridge(options) {
198
200
  const log = _nullishCoalesce(options.log, () => ( ((message) => process.stderr.write(`[${options.name}] ${message}
199
201
  `))));
200
- const port = _nullishCoalesce(options.port, () => ( _chunkRTPBM46Fcjs.TOOL_BRIDGE_DEFAULT_PORT));
202
+ const port = _nullishCoalesce(options.port, () => ( _chunkZEKI6EPIcjs.TOOL_BRIDGE_DEFAULT_PORT));
201
203
  const retryMs = _nullishCoalesce(options.retryMs, () => ( 2e3));
202
204
  const timeoutMs = _nullishCoalesce(options.timeoutMs, () => ( 6e4));
203
205
  const extraOrigins = new Set(_nullishCoalesce(options.origins, () => ( [])));
@@ -211,7 +213,7 @@ async function createToolBridge(options) {
211
213
  let closed = false;
212
214
  let retry;
213
215
  const send = (editor, message) => editor.socket.send(JSON.stringify(message));
214
- const registry = new (0, _chunkRTPBM46Fcjs.ToolRegistry)();
216
+ const registry = new (0, _chunk7TD63DZPcjs.ToolRegistry)();
215
217
  const listeners = /* @__PURE__ */ new Set();
216
218
  const toolsChanged = () => listeners.forEach((l) => l());
217
219
  const describeEditors = () => [...editors.values()].map((e) => `${e.id} (${e.name})`).join(", ");
@@ -319,13 +321,13 @@ async function createToolBridge(options) {
319
321
  return;
320
322
  }
321
323
  if (message.t === "hello") {
322
- if (message.v !== _chunkRTPBM46Fcjs.TOOL_BRIDGE_PROTOCOL) {
324
+ if (message.v !== _chunkZEKI6EPIcjs.TOOL_BRIDGE_PROTOCOL) {
323
325
  log(`refused an editor speaking protocol v${String(message.v)}`);
324
- return ws.close(1008, `This bridge speaks protocol v${_chunkRTPBM46Fcjs.TOOL_BRIDGE_PROTOCOL}; update @pixerate/editor.`);
326
+ return ws.close(1008, `This bridge speaks protocol v${_chunkZEKI6EPIcjs.TOOL_BRIDGE_PROTOCOL}; update @pixerate/editor.`);
325
327
  }
326
328
  editor = { id: `e${++editorCounter}`, name: String(message.name || "Editor"), ...message.kind ? { kind: message.kind } : {}, socket: ws, tools: Array.isArray(message.tools) ? message.tools : [], activeAt: Date.now(), activeSeq: ++activity };
327
329
  editors.set(editor.id, editor);
328
- ws.send(JSON.stringify({ t: "welcome", v: _chunkRTPBM46Fcjs.TOOL_BRIDGE_PROTOCOL, id: editor.id }));
330
+ ws.send(JSON.stringify({ t: "welcome", v: _chunkZEKI6EPIcjs.TOOL_BRIDGE_PROTOCOL, id: editor.id }));
329
331
  log(`editor ${editor.id} connected: ${editor.name} (${editor.tools.length} tools)`);
330
332
  toolsChanged();
331
333
  } else if (message.t === "tools" && editor) {
@@ -381,7 +383,7 @@ async function createToolBridge(options) {
381
383
  `)]);
382
384
  const skills = options.skills === false ? {} : _nullishCoalesce(options.skills, () => ( loadSkillFiles()));
383
385
  const hasSkills = Object.keys(skills).length > 0;
384
- const mcp = _chunkRTPBM46Fcjs.createMcpServer.call(void 0, registry, {
386
+ const mcp = _chunkZEKI6EPIcjs.createMcpServer.call(void 0, registry, {
385
387
  name: options.name,
386
388
  version: _nullishCoalesce(options.version, () => ( "0.1.0")),
387
389
  instructions: [options.instructions, BRIDGE_INSTRUCTIONS, hasSkills ? SKILL_INSTRUCTIONS : ""].filter(Boolean).join("\n\n"),
@@ -1,9 +1,11 @@
1
1
  import {
2
2
  TOOL_BRIDGE_DEFAULT_PORT,
3
3
  TOOL_BRIDGE_PROTOCOL,
4
- ToolRegistry,
5
4
  createMcpServer
6
- } from "./chunk-ABHOYBZD.js";
5
+ } from "./chunk-SYEOA5MS.js";
6
+ import {
7
+ ToolRegistry
8
+ } from "./chunk-K4BGRCSH.js";
7
9
 
8
10
  // src/bridge/index.ts
9
11
  import { createServer } from "http";
@@ -921,299 +921,6 @@ function searchTools(tools, toolsets, query, options = {}) {
921
921
  return results.slice(0, _nullishCoalesce(options.limit, () => ( 10)));
922
922
  }
923
923
 
924
- // src/tools/mcp-server.ts
925
- var MCP_PROTOCOL_VERSIONS = ["2025-06-18", "2025-03-26", "2024-11-05"];
926
- var JSON_RPC_ERRORS = {
927
- parseError: -32700,
928
- invalidRequest: -32600,
929
- methodNotFound: -32601,
930
- invalidParams: -32602,
931
- internalError: -32603
932
- };
933
- var errorResponse = (id, code, message, data) => ({
934
- jsonrpc: "2.0",
935
- id,
936
- error: { code, message, ...data !== void 0 ? { data } : {} }
937
- });
938
- function toolsetInstructions(source) {
939
- const sets = source.toolsets();
940
- const discovery = source.hasTool("list_toolsets") && source.hasTool("search_tools");
941
- const lines = [
942
- "Tools are grouped into toolsets, one per open editor or feature, and named `<toolset>__<tool>`." + (discovery ? " Only some are listed at first: call list_toolsets to see them all, search_tools to find a tool for a task, and enable_tools to add what you need." : "")
943
- ];
944
- if (sets.length > 0) {
945
- lines.push("", "Toolsets:");
946
- for (const set of sets) {
947
- const about = [set.title, summarize(set.description)].filter(Boolean).join(": ");
948
- const skill = set.skill ? ` (skill: ${set.skill})` : "";
949
- lines.push(`- ${set.name}${about ? ` - ${about}` : ""}${skill}, ${set.tools.length} tools`);
950
- }
951
- }
952
- if (sets.some((s) => s.skill)) {
953
- lines.push(
954
- "",
955
- "Read the skill a toolset names before using it" + (source.hasTool("get_skill") ? " (get_skill)." : " (an MCP resource or prompt when the server offers skills).")
956
- );
957
- }
958
- return lines.join("\n");
959
- }
960
- var skillUri = (path) => `skill://${path}`;
961
- function createMcpServer(registry, options) {
962
- const skillFiles = _nullishCoalesce(options.skills, () => ( null));
963
- const skills = skillFiles ? listSkills(skillFiles) : [];
964
- const capabilities = {
965
- ...registry.capabilities,
966
- ...skills.length > 0 ? { resources: {}, prompts: {} } : {}
967
- };
968
- const readSkillPath = (path) => _nullishCoalesce(_optionalChain([skillFiles, 'optionalAccess', _27 => _27[path]]), () => ( _optionalChain([skillFiles, 'optionalAccess', _28 => _28[`./${path}`]])));
969
- let initialized = false;
970
- let actor;
971
- let unsubscribe = null;
972
- const running = /* @__PURE__ */ new Map();
973
- const startNotifications = () => {
974
- if (unsubscribe || !options.send) return;
975
- const send = options.send;
976
- unsubscribe = registry.onListChanged(() => send({ jsonrpc: "2.0", method: "notifications/tools/list_changed" }));
977
- };
978
- async function dispatch(request) {
979
- const id = _nullishCoalesce(request.id, () => ( null));
980
- const isNotification = request.id === void 0 || request.id === null;
981
- const params = _nullishCoalesce(request.params, () => ( {}));
982
- switch (request.method) {
983
- case "initialize": {
984
- const client = params.clientInfo;
985
- if (client && typeof client.name === "string" && client.name) {
986
- actor = { id: `mcp:${client.name}`, name: typeof client.title === "string" && client.title ? client.title : client.name };
987
- }
988
- const instructions = typeof options.instructions === "function" ? options.instructions(registry) : options.instructions;
989
- const requested = String(_nullishCoalesce(params.protocolVersion, () => ( "")));
990
- const protocolVersion = MCP_PROTOCOL_VERSIONS.includes(requested) ? requested : MCP_PROTOCOL_VERSIONS[0];
991
- return {
992
- jsonrpc: "2.0",
993
- id,
994
- result: {
995
- protocolVersion,
996
- capabilities,
997
- serverInfo: { name: options.name, version: options.version, ...options.title ? { title: options.title } : {} },
998
- ...instructions ? { instructions } : {}
999
- }
1000
- };
1001
- }
1002
- case "notifications/initialized":
1003
- initialized = true;
1004
- startNotifications();
1005
- return null;
1006
- case "notifications/cancelled": {
1007
- const requestId = params.requestId;
1008
- if (requestId !== void 0) _optionalChain([running, 'access', _29 => _29.get, 'call', _30 => _30(requestId), 'optionalAccess', _31 => _31.abort, 'call', _32 => _32(params.reason)]);
1009
- return null;
1010
- }
1011
- case "ping":
1012
- return { jsonrpc: "2.0", id, result: {} };
1013
- case "tools/list":
1014
- return { jsonrpc: "2.0", id, result: registry.listTools() };
1015
- case "tools/call": {
1016
- const name = params.name;
1017
- if (typeof name !== "string") {
1018
- return errorResponse(id, JSON_RPC_ERRORS.invalidParams, 'tools/call needs a string "name".');
1019
- }
1020
- if (!registry.hasTool(name)) {
1021
- return errorResponse(id, JSON_RPC_ERRORS.invalidParams, `Unknown tool: ${name}`);
1022
- }
1023
- const args = params.arguments;
1024
- if (args !== void 0 && (typeof args !== "object" || args === null || Array.isArray(args))) {
1025
- return errorResponse(id, JSON_RPC_ERRORS.invalidParams, '"arguments" must be an object.');
1026
- }
1027
- const controller = new AbortController();
1028
- if (!isNotification) running.set(id, controller);
1029
- try {
1030
- const result = await registry.callTool(name, _nullishCoalesce(args, () => ( {})), { signal: controller.signal, ...actor ? { actor } : {} });
1031
- if (controller.signal.aborted) return null;
1032
- return { jsonrpc: "2.0", id, result };
1033
- } finally {
1034
- if (!isNotification) running.delete(id);
1035
- }
1036
- }
1037
- case "resources/list":
1038
- case "prompts/list":
1039
- case "resources/read":
1040
- case "prompts/get": {
1041
- if (skills.length === 0) break;
1042
- if (request.method === "resources/list") {
1043
- const resources = skills.flatMap(
1044
- (skill2) => ["SKILL.md", ...skill2.references].map((file) => ({
1045
- uri: skillUri(`${skill2.name}/${file}`),
1046
- name: file === "SKILL.md" ? skill2.name : `${skill2.name}/${file}`,
1047
- ...file === "SKILL.md" ? { description: skill2.description } : {},
1048
- mimeType: "text/markdown"
1049
- }))
1050
- );
1051
- return { jsonrpc: "2.0", id, result: { resources } };
1052
- }
1053
- if (request.method === "resources/read") {
1054
- const uri = String(_nullishCoalesce(params.uri, () => ( "")));
1055
- const text2 = uri.startsWith("skill://") ? readSkillPath(uri.slice("skill://".length)) : void 0;
1056
- if (text2 === void 0) return errorResponse(id, JSON_RPC_ERRORS.invalidParams, `Unknown resource: ${uri}`, { uri });
1057
- return { jsonrpc: "2.0", id, result: { contents: [{ uri, mimeType: "text/markdown", text: text2 }] } };
1058
- }
1059
- if (request.method === "prompts/list") {
1060
- return { jsonrpc: "2.0", id, result: { prompts: skills.map((s) => ({ name: s.name, description: s.description })) } };
1061
- }
1062
- const skill = skills.find((s) => s.name === params.name);
1063
- const text = skill ? readSkillPath(`${skill.name}/SKILL.md`) : void 0;
1064
- if (!skill || text === void 0) return errorResponse(id, JSON_RPC_ERRORS.invalidParams, `Unknown prompt: ${String(params.name)}`);
1065
- return {
1066
- jsonrpc: "2.0",
1067
- id,
1068
- result: {
1069
- description: skill.description,
1070
- messages: [{ role: "user", content: { type: "text", text: parseSkillFrontmatter(text).body.trim() } }]
1071
- }
1072
- };
1073
- }
1074
- }
1075
- if (isNotification) return null;
1076
- return errorResponse(id, JSON_RPC_ERRORS.methodNotFound, `Method not found: ${request.method}`);
1077
- }
1078
- return {
1079
- get initialized() {
1080
- return initialized;
1081
- },
1082
- async handle(message) {
1083
- let request;
1084
- if (typeof message === "string") {
1085
- try {
1086
- request = JSON.parse(message);
1087
- } catch (e3) {
1088
- return errorResponse(null, JSON_RPC_ERRORS.parseError, "Parse error.");
1089
- }
1090
- } else {
1091
- request = message;
1092
- }
1093
- if (!request || typeof request !== "object" || Array.isArray(request) || request.jsonrpc !== "2.0" || typeof request.method !== "string") {
1094
- const id = request && typeof request === "object" && !Array.isArray(request) ? _nullishCoalesce(request.id, () => ( null)) : null;
1095
- return errorResponse(id, JSON_RPC_ERRORS.invalidRequest, "Invalid JSON-RPC 2.0 request.");
1096
- }
1097
- try {
1098
- return await dispatch(request);
1099
- } catch (error) {
1100
- if (request.id === void 0 || request.id === null) return null;
1101
- return errorResponse(
1102
- request.id,
1103
- JSON_RPC_ERRORS.internalError,
1104
- error instanceof Error ? error.message : String(error)
1105
- );
1106
- }
1107
- },
1108
- close() {
1109
- _optionalChain([unsubscribe, 'optionalCall', _33 => _33()]);
1110
- unsubscribe = null;
1111
- for (const controller of running.values()) controller.abort("Server closed.");
1112
- running.clear();
1113
- }
1114
- };
1115
- }
1116
-
1117
- // src/tools/bridge-client.ts
1118
- var TOOL_BRIDGE_PROTOCOL = 1;
1119
- var TOOL_BRIDGE_DEFAULT_PORT = 4477;
1120
- function connectToolBridge(registry, options) {
1121
- const Ctor = _nullishCoalesce(options.WebSocket, () => ( globalThis.WebSocket));
1122
- if (!Ctor) throw new Error("No WebSocket implementation: pass options.WebSocket.");
1123
- const base = _nullishCoalesce(options.url, () => ( `ws://127.0.0.1:${TOOL_BRIDGE_DEFAULT_PORT}`));
1124
- const url = options.token ? `${base}${base.includes("?") ? "&" : "?"}token=${encodeURIComponent(options.token)}` : base;
1125
- let status = "connecting";
1126
- let editorId = null;
1127
- let socket = null;
1128
- let closed = false;
1129
- let delay = 500;
1130
- let retry = null;
1131
- const running = /* @__PURE__ */ new Map();
1132
- const setStatus = (next, detail) => {
1133
- if (next === status && !detail) return;
1134
- status = next;
1135
- _optionalChain([options, 'access', _34 => _34.onStatus, 'optionalCall', _35 => _35(next, detail)]);
1136
- };
1137
- const send = (message) => {
1138
- if (socket && socket.readyState === 1) socket.send(JSON.stringify(message));
1139
- };
1140
- const unsubscribe = registry.onListChanged((tools) => send({ t: "tools", tools }));
1141
- const open = () => {
1142
- if (closed) return;
1143
- setStatus("connecting");
1144
- const ws = new Ctor(url);
1145
- socket = ws;
1146
- ws.addEventListener("open", () => {
1147
- delay = 500;
1148
- send({ t: "hello", v: TOOL_BRIDGE_PROTOCOL, name: options.name, ...options.kind ? { kind: options.kind } : {}, tools: registry.listTools().tools });
1149
- });
1150
- ws.addEventListener("message", (event) => {
1151
- let message;
1152
- try {
1153
- message = JSON.parse(String(event.data));
1154
- } catch (e4) {
1155
- return;
1156
- }
1157
- if (message.t === "welcome") {
1158
- editorId = message.id;
1159
- setStatus("connected");
1160
- } else if (message.t === "call") {
1161
- const controller = new AbortController();
1162
- running.set(message.id, controller);
1163
- void registry.callTool(message.name, _nullishCoalesce(message.arguments, () => ( {})), { signal: controller.signal }).then((result) => {
1164
- running.delete(message.id);
1165
- if (!controller.signal.aborted) send({ t: "result", id: message.id, result });
1166
- });
1167
- } else if (message.t === "cancel") {
1168
- _optionalChain([running, 'access', _36 => _36.get, 'call', _37 => _37(message.id), 'optionalAccess', _38 => _38.abort, 'call', _39 => _39(_nullishCoalesce(message.reason, () => ( "Cancelled by the agent.")))]);
1169
- running.delete(message.id);
1170
- }
1171
- });
1172
- ws.addEventListener("close", (event) => {
1173
- if (socket !== ws) return;
1174
- socket = null;
1175
- editorId = null;
1176
- for (const controller of running.values()) controller.abort("The bridge disconnected.");
1177
- running.clear();
1178
- if (closed) return setStatus("closed");
1179
- setStatus("disconnected", event.reason || void 0);
1180
- if (options.reconnect === false) return;
1181
- retry = setTimeout(open, delay);
1182
- delay = Math.min(1e4, delay * 2);
1183
- });
1184
- ws.addEventListener("error", () => {
1185
- });
1186
- };
1187
- open();
1188
- return {
1189
- get status() {
1190
- return status;
1191
- },
1192
- get editorId() {
1193
- return editorId;
1194
- },
1195
- close() {
1196
- if (closed) return;
1197
- closed = true;
1198
- if (retry) clearTimeout(retry);
1199
- unsubscribe();
1200
- for (const controller of running.values()) controller.abort("The editor disconnected.");
1201
- running.clear();
1202
- const ws = socket;
1203
- socket = null;
1204
- _optionalChain([ws, 'optionalAccess', _40 => _40.close, 'call', _41 => _41(1e3, "Editor closed.")]);
1205
- setStatus("closed");
1206
- }
1207
- };
1208
- }
1209
-
1210
-
1211
-
1212
-
1213
-
1214
-
1215
-
1216
-
1217
924
 
1218
925
 
1219
926
 
@@ -1232,4 +939,4 @@ function connectToolBridge(registry, options) {
1232
939
 
1233
940
 
1234
941
 
1235
- exports.searchTokens = searchTokens; exports.summarize = summarize; exports.searchTools = searchTools; exports.parseSkillFrontmatter = parseSkillFrontmatter; exports.listSkills = listSkills; exports.readSkillFile = readSkillFile; exports.TOOL_DISCOVERY_TOOLS = TOOL_DISCOVERY_TOOLS; exports.ToolRegistryView = ToolRegistryView; exports.ToolRegistryError = ToolRegistryError; exports.TOOL_NAMESPACE_SEPARATOR = TOOL_NAMESPACE_SEPARATOR; exports.toolsetName = toolsetName; exports.baseToolName = baseToolName; exports.unknownToolMessage = unknownToolMessage; exports.errorResult = errorResult; exports.toToolResult = toToolResult; exports.ToolRegistry = ToolRegistry; exports.createToolRegistry = createToolRegistry; exports.MCP_PROTOCOL_VERSIONS = MCP_PROTOCOL_VERSIONS; exports.JSON_RPC_ERRORS = JSON_RPC_ERRORS; exports.toolsetInstructions = toolsetInstructions; exports.createMcpServer = createMcpServer; exports.TOOL_BRIDGE_PROTOCOL = TOOL_BRIDGE_PROTOCOL; exports.TOOL_BRIDGE_DEFAULT_PORT = TOOL_BRIDGE_DEFAULT_PORT; exports.connectToolBridge = connectToolBridge;
942
+ exports.searchTokens = searchTokens; exports.summarize = summarize; exports.searchTools = searchTools; exports.parseSkillFrontmatter = parseSkillFrontmatter; exports.listSkills = listSkills; exports.readSkillFile = readSkillFile; exports.TOOL_DISCOVERY_TOOLS = TOOL_DISCOVERY_TOOLS; exports.ToolRegistryView = ToolRegistryView; exports.ToolRegistryError = ToolRegistryError; exports.TOOL_NAMESPACE_SEPARATOR = TOOL_NAMESPACE_SEPARATOR; exports.toolsetName = toolsetName; exports.baseToolName = baseToolName; exports.unknownToolMessage = unknownToolMessage; exports.errorResult = errorResult; exports.toToolResult = toToolResult; exports.ToolRegistry = ToolRegistry; exports.createToolRegistry = createToolRegistry;