{
  "schemaVersion": 1,
  "protocols": {
    "bridge": "wxdbg.bridge.v1",
    "browserAgent": "wxdbg.agent.v1",
    "agentWire": "WxDebugWire"
  },
  "agentTools": [
    {"name":"wax_capabilities","title":"Wax agent capabilities","description":"Discover the curated Wax recording and paired-workbench command surface.","inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
    {"name":"wax_pair_start","title":"Pair a Wax debugger workbench","description":"Connect a waiting browser-created loopback rendezvous ticket, or create a legacy page bootstrap when ticket is omitted.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"targetUrl":{"type":"string","minLength":1},"ticket":{"type":"object","additionalProperties":false,"properties":{"port":{"type":"integer","minimum":1024,"maximum":65535},"sessionId":{"type":"string","minLength":32,"maxLength":32},"token":{"type":"string","minLength":32,"maxLength":32}},"required":["port","sessionId","token"]},"agentName":{"type":"string","minLength":1,"maxLength":128},"grants":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["readSession","readSource","readHeap","writeSession","writeFiles","controlExecution","readRecording","compileCode","unboundedCost","presentUi"]}},"ttlSeconds":{"type":"integer","minimum":1,"maximum":3600}},"required":["targetUrl"]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
    {"name":"wax_pair_status","title":"Wax debugger pairing status","description":"Read whether the local bridge and browser page are connected.","inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
    {"name":"wax_audit_recent","title":"Read recent Wax agent activity","description":"Read the bounded recent activity for this MCP agent process.","inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
    {"name":"wax_ui_snapshot","title":"Read the Wax workbench snapshot","description":"Read semantic workbench state and the revision tokens required for presentation commands.","inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
    {"name":"wax_ui_activate_view","title":"Activate a Wax workbench view","description":"Activate a named semantic workbench view using current revision and target-generation tokens.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"revision":{"type":"integer","minimum":0},"targetGeneration":{"type":"integer","minimum":0},"viewId":{"type":"string","minLength":1}},"required":["revision","targetGeneration","viewId"]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
    {"name":"wax_ui_ping","title":"Point out a Wax workbench view","description":"Point the user at a named workbench view with a short dismissible message.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"revision":{"type":"integer","minimum":0},"targetGeneration":{"type":"integer","minimum":0},"viewId":{"type":"string","minLength":1},"message":{"type":"string","minLength":1,"maxLength":280}},"required":["revision","targetGeneration","viewId","message"]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
    {"name":"wax_ui_reveal_source","title":"Reveal Wax source","description":"Reveal a source location through the paired workbench source controller.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"revision":{"type":"integer","minimum":0},"targetGeneration":{"type":"integer","minimum":0},"path":{"type":"string","minLength":1},"line":{"type":"integer","minimum":1},"column":{"type":"integer","minimum":1}},"required":["revision","targetGeneration","path","line"]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
    {"name":"wax_ui_present_evidence","title":"Present Wax investigation evidence","description":"Present a wxdbg.evidence.v1 value through the paired workbench coordinator.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"revision":{"type":"integer","minimum":0},"targetGeneration":{"type":"integer","minimum":0},"evidence":{"type":"object"}},"required":["revision","targetGeneration","evidence"]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
    {"name":"wax_recording_info","title":"Read Wax recording metadata","description":"Read metadata from a completed recording path, or from the paired workbench recording when path is omitted.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"path":{"type":"string","minLength":1}}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
    {"name":"wax_investigation_list","title":"List Wax recording investigations","description":"Compile and list packaged investigations for a recording path, or for the paired workbench recording when path is omitted.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"path":{"type":"string","minLength":1},"files":{"type":"array","maxItems":64,"items":{"type":"string","minLength":1}},"queryDirs":{"type":"array","maxItems":16,"items":{"type":"string","minLength":1}},"noQueryLibrary":{"type":"boolean"}}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
    {"name":"wax_investigation_run","title":"Run a Wax recording investigation","description":"Run one packaged investigation against a recording path, or against the paired workbench recording when path is omitted.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"path":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"member":{"type":"string","minLength":1},"case":{"type":"string","minLength":1},"arguments":{"type":"string"},"workers":{"type":"integer","minimum":1,"maximum":4096},"files":{"type":"array","maxItems":64,"items":{"type":"string","minLength":1}},"queryDirs":{"type":"array","maxItems":16,"items":{"type":"string","minLength":1}},"noQueryLibrary":{"type":"boolean"}},"required":["name"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
    {"name":"wax_debug_execute","title":"Execute a paired Wax debugger command","description":"Execute one projected canonical command against the paired browser workbench.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"command":{"type":"string","agentCommandEnum":true},"args":{"type":"object"}},"required":["command"]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}}
  ],
  "principles": [
    "Canonical command names describe debugger semantics, not transport mechanics.",
    "Direct JS commands pass explicit session/artifact/source data and return structured state.",
    "Agent-wire commands are capability-gated and generation-bound; resume and reposition commands complete through stopped/exited/error events.",
    "Browser same-page Wasm uses direct JS; native live/replay/remote targets use the agent wire."
  ],
  "effectVocabulary": {
    "readSource": "Reads target or query source text.",
    "readRecording": "Reads recording contents or metadata.",
    "readHeap": "Reads live or replayed program state.",
    "readSession": "Reads debugger or workbench session state.",
    "writeSession": "Changes debugger, pairing, or workbench session state.",
    "controlExecution": "Starts, pauses, resumes, or repositions program execution.",
    "compileCode": "Compiles user, project, query, or investigation code.",
    "writeFiles": "Creates, replaces, or removes files outside transient process memory.",
    "unboundedCost": "May scale with an unconstrained recording, source set, or execution interval.",
    "presentUi": "Changes semantic workbench presentation without accessing the DOM."
  },
  "commandEffects": {
    "status": ["readSession"],
    "discovery.help": [],
    "discovery.capabilities": [],
    "debug.context": ["readSource", "readHeap"],
    "session.init": ["writeSession", "writeFiles"],
    "session.attach": ["writeSession", "writeFiles"],
    "session.detach": ["writeSession", "writeFiles"],
    "session.gui": ["writeSession"],
    "session.cacheClear": ["writeSession", "writeFiles"],
    "session.configGet": ["readSession"],
    "session.configSet": ["writeSession", "writeFiles"],
    "run": ["readHeap", "controlExecution"],
    "continue": ["readHeap", "controlExecution"],
    "step.into": ["readHeap", "controlExecution"],
    "step.over": ["readHeap", "controlExecution"],
    "step.out": ["readHeap", "controlExecution"],
    "pause": ["readHeap", "controlExecution"],
    "run.toLocation": ["readSource", "readHeap", "controlExecution"],
    "stack": ["readHeap"],
    "locals": ["readHeap"],
    "inspect.object": ["readHeap"],
    "type.info": ["readHeap"],
    "breakpoint.set": ["readSource", "writeSession"],
    "breakpoint.clear": ["writeSession"],
    "breakpoint.clearAll": ["writeSession"],
    "breakpoint.list": ["readSession"],
    "breakpoint.listBreakable": ["readSource"],
    "watchpoint.add": ["readHeap", "writeSession"],
    "watchpoint.list": ["readSession"],
    "watchpoint.clear": ["writeSession"],
    "mutationLog.add": ["readHeap", "writeSession"],
    "mutationLog.list": ["readSession"],
    "mutationLog.clear": ["writeSession"],
    "mutationLog.read": ["readHeap"],
    "recording.create": ["readHeap", "controlExecution", "writeFiles", "writeSession"],
    "recording.inputSchema": ["readSource", "compileCode", "unboundedCost"],
    "recording.createProgress": ["readSession"],
    "recording.createStop": ["controlExecution", "writeSession"],
    "recording.outputSchema": ["readSource", "compileCode", "unboundedCost"],
    "recording.select": ["readRecording", "writeSession"],
    "recording.open": ["readRecording", "readHeap", "writeSession"],
    "recording.investigationSources": ["readRecording", "readSource"],
    "recording.exportInvestigations": ["readRecording", "readSource", "writeSession", "writeFiles"],
    "recording.exportInvestigationsChunk": ["readSession", "readRecording"],
    "recording.exportInvestigationsClose": ["writeSession", "writeFiles"],
    "investigation.draftLoad": ["readSession", "readSource"],
    "investigation.draftSave": ["readSession", "readSource", "writeSession", "writeFiles"],
    "investigation.draftDelete": ["writeSession", "writeFiles"],
    "source.draftLoad": ["readSession", "readSource"],
    "source.draftSave": ["readSession", "readSource", "writeSession", "writeFiles"],
    "source.draftDelete": ["writeSession", "writeFiles"],
    "target.openLive": ["writeSession", "controlExecution"],
    "recording.continueEdited": ["readSource", "readRecording", "readHeap", "writeSession", "controlExecution", "compileCode", "unboundedCost"],
    "source.bundle": ["readSource"],
    "source.read": ["readSource"],
    "source.materialize": ["readSource", "writeFiles"],
    "agent.bootstrap": ["readSource", "writeFiles"],
    "agent.serve": ["writeSession"],
    "source.highlights": ["readSource"],
    "replay.frameInfo": ["readRecording", "readHeap"],
    "replay.seekFrame": ["readRecording", "readHeap", "controlExecution"],
    "replay.stepBack": ["readRecording", "readHeap", "controlExecution"],
    "replay.stepBackInto": ["readRecording", "readHeap", "controlExecution"],
    "replay.continueBack": ["readRecording", "readHeap", "controlExecution", "unboundedCost"],
    "replay.rollToFrame": ["readRecording", "readHeap", "controlExecution", "unboundedCost"],
    "replay.nextMatch": ["readRecording", "readHeap", "controlExecution"],
    "replay.prevMatch": ["readRecording", "readHeap", "controlExecution"],
    "recording.info": ["readRecording"],
    "recording.repack": ["readRecording", "writeFiles", "unboundedCost"],
    "recording.frames": ["readRecording"],
    "recording.inspect": ["readRecording", "readHeap"],
    "recording.types": ["readRecording"],
    "recording.queries": ["readSource", "readRecording", "compileCode", "unboundedCost"],
    "investigation.list": ["readSource", "readRecording", "compileCode", "unboundedCost"],
    "investigation.open": ["readSource", "readRecording", "writeSession", "compileCode", "unboundedCost"],
    "recording.query": ["readSource", "readRecording", "readHeap", "compileCode", "unboundedCost"],
    "investigation.run": ["readSource", "readRecording", "readHeap", "compileCode", "unboundedCost"],
    "recording.apiMethods": ["readRecording"],
    "recording.hostFnMethods": ["readRecording"],
    "recording.histogram": ["readRecording", "readHeap"],
    "artifact.timeline": ["readRecording", "readHeap", "unboundedCost"],
    "artifact.allocs": ["readRecording", "readHeap", "unboundedCost"],
    "artifact.hostCalls": ["readRecording", "readHeap"],
    "artifact.frameChannels": ["readRecording", "readHeap"],
    "artifact.mutations": ["readRecording", "readHeap", "unboundedCost"],
    "artifact.diff": ["readRecording", "readHeap", "unboundedCost"],
    "artifact.findFrames": ["readSource", "readRecording", "readHeap", "compileCode", "unboundedCost"],
    "artifact.waxExprEval": ["readRecording", "readHeap", "compileCode"],
    "live.eval": ["readHeap", "compileCode"],
    "edit.apply": ["readSource", "readHeap", "writeSession", "controlExecution", "compileCode", "unboundedCost"],
    "ui.snapshot": ["readSession"],
    "ui.activateView": ["presentUi"],
    "ui.ping": ["presentUi"],
    "ui.revealSource": ["readSource", "presentUi"],
    "ui.presentEvidence": ["presentUi"],
    "recording.outputs": ["readRecording", "readHeap"]
  },
  "validationPolicy": {
    "directJs": "Generated request schemas validate direct-JS session requests before dispatch.",
    "browserBridge": "The browser bridge routes command envelopes through the generated registry request schemas before reaching a page agent.",
    "nativeCli": "Native handlers own command parsing, semantics, and diagnostics.",
    "webGui": "The packaged web GUI consumes the generated JavaScript command catalog for command metadata, request validation, and target capability gating."
  },
  "cli": {
    "protocol": "wax.cli-schema.v1",
    "schemaVersion": 1,
    "errorSchema": "wxdbg.error.v1",
    "endOptions": "--",
    "globalOptions": [
      {
        "name": "--session",
        "value": "dir",
        "multiplicity": "once",
        "description": "Select the debugger session directory."
      },
      {
        "name": "--backend",
        "value": "c|native",
        "multiplicity": "once",
        "description": "Select the local Instant backend."
      }
    ],
    "documentOptions": {
      "wxdbg.context.v1": [
        {
          "spelling": "--around",
          "value": "N",
          "constant": "kWxdbgContextAround",
          "min": 0,
          "max": 50,
          "default": 5,
          "atMinimum": "leaves the window out",
          "description": "source lines to include on each side of the stop"
        }
      ]
    },
    "exits": {
      "success": 0,
      "operationalFailure": 1,
      "usageError": 2
    },
    "hiddenCommands": [
      "--command-schema"
    ],
    "publicCommands": [
      "init",
      "attach",
      "detach",
      "status",
      "gui",
      "help",
      "capabilities",
      "context",
      "config get",
      "config set",
      "source materialize",
      "agent bootstrap",
      "agent serve",
      "cache clear",
      "break add",
      "break list",
      "break breakable",
      "break clear",
      "run",
      "continue",
      "step",
      "next",
      "out",
      "pause",
      "step-back",
      "step-back-into",
      "continue-back",
      "run-to",
      "seek",
      "next-match",
      "prev-match",
      "watchpoint add",
      "watchpoint list",
      "watchpoint clear",
      "mutation add",
      "mutation list",
      "mutation clear",
      "mutation log",
      "eval",
      "edit apply",
      "recording repack",
      "recording info",
      "recording frames",
      "recording create",
      "recording input-schema",
      "recording output-schema",
      "recording select",
      "recording continue-edited",
      "recording inspect",
      "recording diff",
      "recording allocations",
      "recording find",
      "recording timeline",
      "recording types",
      "recording queries",
      "recording query",
      "investigation list",
      "investigation open",
      "investigation run",
      "recording api",
      "recording hosts",
      "recording calls",
      "recording channels",
      "recording mutations",
      "recording histogram",
      "recording outputs"
    ]
  },
  "requestSchemas": {
    "StatusRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "CommandHelpRequest": {
      "allowExtraFields": false,
      "fields": {
        "command": { "type": "string", "minLength": 1 }
      }
    },
    "CommandCapabilitiesRequest": {
      "allowExtraFields": false,
      "fields": {
        "includeUnsupported": { "type": "bool" }
      }
    },
    "SessionInitRequest": {
      "allowExtraFields": false,
      "fields": {
        "projectPath": { "type": "string", "required": true, "minLength": 1 }
      }
    },
    "SessionAttachRequest": {
      "allowExtraFields": false,
      "fields": {
        "url": { "type": "string", "required": true, "minLength": 1 },
        "controller": { "type": "string", "minLength": 1 }
      }
    },
    "SessionDetachRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "GuiRequest": {
      "allowExtraFields": false,
      "fields": {
        "recordingPath": { "type": "string", "minLength": 1 },
        "foreground": { "type": "bool" },
        "noOpen": { "type": "bool" },
        "stop": { "type": "bool" }
      }
    },
    "InvestigationOpenRequest": {
      "allowExtraFields": false,
      "fields": {
        "recordingPath": { "type": "string", "required": true, "minLength": 1 },
        "name": { "type": "string", "minLength": 1 },
        "foreground": { "type": "bool" },
        "noOpen": { "type": "bool" }
      }
    },
    "CacheClearRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "ConfigGetRequest": {
      "allowExtraFields": false,
      "fields": {
        "key": { "type": "string", "required": true, "minLength": 1 }
      }
    },
    "ConfigSetRequest": {
      "allowExtraFields": false,
      "fields": {
        "key": { "type": "string", "required": true, "minLength": 1 },
        "value": { "type": "u64", "required": true }
      }
    },
    "DebugContextRequest": {
      "allowExtraFields": false,
      "fields": {
        "frame": { "type": "u64", "max": 2147483647 },
        "stableIds": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 } },
        "depth": { "type": "u64", "max": 2147483647 },
        "around": { "type": "u64", "max": 50 }
      }
    },
    "RunRequest": {
      "allowExtraFields": false,
      "fields": {
        "breakpointsText": { "type": "string" },
        "around": { "type": "u64", "max": 50 }
      }
    },
    "ContinueRequest": {
      "allowExtraFields": false,
      "fields": {
        "breakpointsText": { "type": "string" },
        "around": { "type": "u64", "max": 50 }
      }
    },
    "StepRequest": {
      "allowExtraFields": false,
      "fields": {
        "breakpointsText": { "type": "string" },
        "around": { "type": "u64", "max": 50 }
      }
    },
    "PauseRequest": {
      "allowExtraFields": false,
      "fields": {
        "around": { "type": "u64", "max": 50 }
      }
    },
    "RunToLocationRequest": {
      "allowExtraFields": false,
      "fields": {
        "target": { "type": "string", "minLength": 1 },
        "file": { "type": "string", "minLength": 1 },
        "line": { "type": "u64", "min": 1, "max": 65535 },
        "around": { "type": "u64", "max": 50 }
      },
      "oneOf": [["target"], ["file", "line"]]
    },
    "StackRequest": {
      "allowExtraFields": false,
      "fields": {
        "around": { "type": "u64", "max": 50 }
      }
    },
    "LocalsRequest": {
      "allowExtraFields": false,
      "fields": {
        "frame": { "type": "u64", "max": 2147483647 },
        "around": { "type": "u64", "max": 50 }
      }
    },
    "ObjectInspectRequest": {
      "allowExtraFields": false,
      "requireOneOf": [["stableId", "stableIds"]],
      "fields": {
        "stableId": { "type": "string", "minLength": 1 },
        "stableIds": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 } },
        "depth": { "type": "u64", "max": 2147483647 },
        "structured": { "type": "bool" },
        "around": { "type": "u64", "max": 50 }
      }
    },
    "TypeInfoRequest": {
      "allowExtraFields": false,
      "fields": {
        "typeId": { "type": "u64", "required": true, "max": 4294967295 }
      }
    },
    "SetBreakpointRequest": {
      "allowExtraFields": false,
      "fields": {
        "target": { "type": "string", "minLength": 1 },
        "file": { "type": "string", "minLength": 1 },
        "line": { "type": "u64", "min": 1, "max": 65535 },
        "condition": { "type": "string", "minLength": 1 }
      },
      "oneOf": [["target"], ["file", "line"], ["target", "condition"], ["file", "line", "condition"]]
    },
    "ClearBreakpointRequest": {
      "allowExtraFields": false,
      "fields": {
        "target": { "type": "string", "minLength": 1 },
        "file": { "type": "string", "minLength": 1 },
        "line": { "type": "u64", "min": 1, "max": 65535 }
      },
      "oneOf": [["target"], ["file", "line"]]
    },
    "ClearAllBreakpointsRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "ListBreakpointsRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "ListBreakableLinesRequest": {
      "allowExtraFields": false,
      "fields": {
        "file": { "type": "string", "minLength": 1 }
      }
    },
    "WatchpointAddRequest": {
      "allowExtraFields": false,
      "fields": {
        "targets": { "type": "string", "minLength": 1 },
        "targetsList": { "type": "array", "minItems": 1, "maxItems": 64, "items": { "type": "string", "minLength": 1 } }
      },
      "oneOf": [["targets"], ["targetsList"]]
    },
    "WatchpointListRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "WatchpointClearRequest": {
      "allowExtraFields": false,
      "fields": {
        "target": { "type": "string", "minLength": 1 },
        "all": { "type": "bool" }
      }
    },
    "MutationLogReadRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "MutationLogAddRequest": {
      "allowExtraFields": false,
      "fields": {
        "targets": { "type": "string", "minLength": 1 },
        "targetsList": { "type": "array", "minItems": 1, "maxItems": 64, "items": { "type": "string", "minLength": 1 } }
      },
      "oneOf": [["targets"], ["targetsList"]]
    },
    "MutationLogListRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "MutationLogClearRequest": {
      "allowExtraFields": false,
      "fields": {
        "target": { "type": "string", "minLength": 1 },
        "all": { "type": "bool" }
      }
    },
    "CreateRecordingRequest": {
      "allowExtraFields": false,
      "fields": {
        "frameCount": { "type": "u64", "min": 2, "max": 1000000 },
        "untilStopped": { "type": "bool" },
        "inputs": { "type": "any" }
      }
    },
    "CreateRecordingProgressRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "CreateRecordingStopRequest": {
      "allowExtraFields": false,
      "fields": {
        "keep": { "type": "bool", "required": true },
        "runId": { "type": "u64", "required": true, "min": 1 }
      }
    },
    "RecordingInputSchemaRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "RecordingOutputSchemaRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "OpenRecordingRequest": {
      "allowExtraFields": false,
      "fields": {
        "file": { "type": "string", "required": true, "minLength": 5 }
      }
    },
    "RecordingInvestigationSourcesRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "RecordingExportInvestigationsRequest": {
      "allowExtraFields": false,
      "fields": {
        "sources": { "type": "array", "required": true, "maxItems": 64 }
      }
    },
    "RecordingExportInvestigationsChunkRequest": {
      "allowExtraFields": false,
      "fields": {
        "downloadToken": { "type": "string", "required": true, "minLength": 32 },
        "offset": { "type": "u64", "required": true, "max": 4294967295 }
      }
    },
    "RecordingExportInvestigationsCloseRequest": {
      "allowExtraFields": false,
      "fields": {
        "downloadToken": { "type": "string", "required": true, "minLength": 32 }
      }
    },
    "InvestigationDraftIdentityRequest": {
      "allowExtraFields": false,
      "fields": {
        "baseRecordingIdentity": { "type": "string", "required": true, "minLength": 64 }
      }
    },
    "InvestigationDraftSaveRequest": {
      "allowExtraFields": false,
      "fields": {
        "schemaVersion": { "type": "u64", "required": true, "min": 1, "max": 1 },
        "baseRecordingIdentity": { "type": "string", "required": true, "minLength": 64 },
        "embeddedBaselineDigest": { "type": "string", "required": true, "minLength": 64 },
        "sources": { "type": "array", "required": true, "maxItems": 64 },
        "contentDigest": { "type": "string", "required": true, "minLength": 64 },
        "localRevision": { "type": "u64", "required": true, "min": 1, "max": 9007199254740991 }
      }
    },
    "SourceDraftIdentityRequest": {
      "allowExtraFields": false,
      "fields": {
        "workspaceIdentity": { "type": "string", "required": true, "minLength": 71 }
      }
    },
    "SourceDraftSaveRequest": {
      "allowExtraFields": false,
      "fields": {
        "schemaVersion": { "type": "u64", "required": true, "min": 1, "max": 1 },
        "workspaceIdentity": { "type": "string", "required": true, "minLength": 71 },
        "changes": { "type": "array", "required": true, "maxItems": 1024 },
        "contentDigest": { "type": "string", "required": true, "minLength": 64 },
        "localRevision": { "type": "u64", "required": true, "min": 1, "max": 9007199254740991 }
      }
    },
    "SourceDraftDeleteRequest": {
      "allowExtraFields": false,
      "fields": {
        "workspaceIdentity": { "type": "string", "required": true, "minLength": 71 },
        "localRevision": { "type": "u64", "required": true, "max": 9007199254740991 }
      }
    },
    "RecordingSelectRequest": {
      "allowExtraFields": false,
      "fields": {
        "path": { "type": "string", "required": true, "minLength": 1 }
      }
    },
    "RecordingInfoRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "RecordingRepackRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "RecordingContinueEditedRequest": {
      "allowExtraFields": false,
      "fields": {
        "frame": { "type": "u64", "required": true, "max": 9007199254740991 }
      }
    },
    "RecordingTypesRequest": {
      "allowExtraFields": false,
      "fields": {
        "name": { "type": "string", "minLength": 1 }
      }
    },
    "RecordingQueriesRequest": {
      "allowExtraFields": false,
      "fields": {
        "sources": { "type": "array", "maxItems": 64 }
      }
    },
    "RecordingQueryRequest": {
      "allowExtraFields": false,
      "fields": {
        "frame": { "type": "u64", "max": 9007199254740991 },
        "from": { "type": "u64", "max": 9007199254740991 },
        "to": { "type": "u64", "max": 9007199254740991 },
        "names": { "type": "array", "maxItems": 64 },
        "columns": { "type": "bool" },
        "projection": { "type": "any" },
        "retainMutations": { "type": "bool" },
        "workers": { "type": "u64", "min": 1, "max": 4096 },
        "arguments": { "type": "string" },
        "sources": { "type": "array", "maxItems": 64 }
      }
    },
    "InvestigationRunRequest": {
      "allowExtraFields": false,
      "fields": {
        "name": { "type": "string", "minLength": 1 },
        "member": { "type": "string", "minLength": 1 },
        "case": { "type": "string", "minLength": 1 },
        "arguments": { "type": "string" },
        "workers": { "type": "u64", "min": 1, "max": 4096 },
        "sources": { "type": "array", "maxItems": 64 }
      }
    },
    "RecordingApiMethodsRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "RecordingHostFnMethodsRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "RecordingHistogramRequest": {
      "allowExtraFields": false,
      "fields": {
        "frame": { "type": "u64", "required": true, "max": 9007199254740991 },
        "sort": { "type": "string", "minLength": 1 }
      }
    },
    "RecordingFramesRequest": {
      "allowExtraFields": false,
      "fields": {
        "frame": { "type": "u64", "max": 9007199254740991 },
        "from": { "type": "u64", "max": 9007199254740991 },
        "to": { "type": "u64", "max": 9007199254740991 }
      }
    },
    "RecordingInspectRequest": {
      "allowExtraFields": false,
      "fields": {
        "frame": { "type": "u64", "max": 9007199254740991 },
        "from": { "type": "u64", "max": 9007199254740991 },
        "to": { "type": "u64", "max": 9007199254740991 },
        "stableId": { "type": "string", "minLength": 1 },
        "depth": { "type": "u64", "max": 2147483647 }
      }
    },
    "SourceBundleRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "SourceMaterializeRequest": {
      "allowExtraFields": false,
      "fields": {
        "out": { "type": "string", "required": true, "minLength": 1 }
      }
    },
    "AgentBootstrapRequest": {
      "allowExtraFields": false,
      "fields": {
        "out": { "type": "string", "required": true, "minLength": 1 },
        "around": { "type": "u64", "max": 50 }
      }
    },
    "AgentServeRequest": {
      "allowExtraFields": false,
      "fields": {
        "agentName": { "type": "string", "minLength": 1 },
        "grants": { "type": "array", "maxItems": 10, "items": { "type": "string", "minLength": 1 } },
        "grantTtlSeconds": { "type": "u64", "min": 1, "max": 3600 }
      }
    },
    "SourceReadRequest": {
      "allowExtraFields": false,
      "fields": {
        "files": { "type": "array", "required": true, "minItems": 1, "maxItems": 512, "items": { "type": "string", "minLength": 1 } }
      }
    },
    "SourceHighlightsRequest": {
      "allowExtraFields": false,
      "fields": {
        "file": { "type": "string", "required": true, "minLength": 1 }
      }
    },
    "FrameInfoRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "SeekFrameRequest": {
      "allowExtraFields": false,
      "fields": {
        "frame": { "type": "u64", "required": true, "max": 9007199254740991 }
      }
    },
    "StepBackRequest": {
      "allowExtraFields": false,
      "fields": {
        "around": { "type": "u64", "max": 50 }
      }
    },
    "ContinueBackRequest": {
      "allowExtraFields": false,
      "fields": {
        "around": { "type": "u64", "max": 50 }
      }
    },
    "RollToFrameRequest": {
      "allowExtraFields": false,
      "fields": {
        "frame": { "type": "u64", "required": true, "max": 9007199254740991 }
      }
    },
    "NextMatchRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "PrevMatchRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "TimelineRequest": {
      "allowExtraFields": false,
      "fields": {
        "ids": { "type": "array", "minItems": 1, "maxItems": 64, "items": { "type": "any" } },
        "from": { "type": "u64", "max": 9007199254740991 },
        "to": { "type": "u64", "max": 9007199254740991 },
        "depth": { "type": "u64", "max": 2147483647 }
      }
    },
    "AllocsRequest": {
      "allowExtraFields": false,
      "fields": {
        "from": { "type": "u64", "max": 9007199254740991 },
        "to": { "type": "u64", "max": 9007199254740991 }
      }
    },
    "HostCallsRequest": {
      "allowExtraFields": false,
      "fields": {
        "frame": { "type": "u64", "required": true, "max": 9007199254740991 }
      }
    },
    "FrameChannelsRequest": {
      "allowExtraFields": false,
      "fields": {
        "frame": { "type": "u64", "required": true, "max": 9007199254740991 }
      }
    },
    "ArtifactMutationsRequest": {
      "allowExtraFields": false,
      "fields": {
        "targets": { "type": "string" },
        "targetsList": { "type": "array", "minItems": 1, "maxItems": 64, "items": { "type": "string", "minLength": 1 } },
        "from": { "type": "u64", "max": 9007199254740991 },
        "to": { "type": "u64", "max": 9007199254740991 }
      }
    },
    "DiffRequest": {
      "allowExtraFields": false,
      "fields": {
        "from": { "type": "u64", "max": 9007199254740991 },
        "to": { "type": "u64", "max": 9007199254740991 },
        "depth": { "type": "u64", "max": 2147483647 }
      }
    },
    "FindFramesRequest": {
      "allowExtraFields": false,
      "fields": {
        "all": { "type": "bool" },
        "limit": { "type": "u64", "min": 1, "max": 2147483647 },
        "invert": { "type": "bool" },
        "where": { "type": "string" },
        "name": { "type": "string" },
        "arguments": { "type": "string" },
        "retainMutations": { "type": "bool" },
        "sources": { "type": "array", "maxItems": 64 },
        "from": { "type": "u64", "max": 9007199254740991 },
        "to": { "type": "u64", "max": 9007199254740991 }
      }
    },
    "WaxExprEvalRequest": {
      "allowExtraFields": false,
      "fields": {
        "frame": { "type": "u64", "max": 9007199254740991 },
        "type": { "type": "string" },
        "expr": { "type": "string" }
      }
    },
    "EditApplyRequest": {
      "allowExtraFields": false,
      "fields": {
        "changes": { "type": "array", "required": true, "maxItems": 1024 }
      }
    },
    "LiveEvalRequest": {
      "allowExtraFields": false,
      "fields": {
        "type": { "type": "string" },
        "expr": { "type": "string" }
      }
    },
    "UiSnapshotRequest": {
      "allowExtraFields": false,
      "fields": {}
    },
    "UiActivateViewRequest": {
      "allowExtraFields": false,
      "fields": {
        "revision": { "type": "u64", "required": true },
        "targetGeneration": { "type": "u64", "required": true },
        "viewId": { "type": "string", "required": true, "minLength": 1 }
      }
    },
    "UiPingRequest": {
      "allowExtraFields": false,
      "fields": {
        "revision": { "type": "u64", "required": true },
        "targetGeneration": { "type": "u64", "required": true },
        "viewId": { "type": "string", "required": true, "minLength": 1 },
        "message": { "type": "string", "required": true, "minLength": 1, "maxLength": 280 }
      }
    },
    "UiRevealSourceRequest": {
      "allowExtraFields": false,
      "fields": {
        "revision": { "type": "u64", "required": true },
        "targetGeneration": { "type": "u64", "required": true },
        "path": { "type": "string", "required": true, "minLength": 1 },
        "line": { "type": "u64", "required": true, "min": 1 },
        "column": { "type": "u64", "min": 1 }
      }
    },
    "UiPresentEvidenceRequest": {
      "allowExtraFields": false,
      "fields": {
        "revision": { "type": "u64", "required": true },
        "targetGeneration": { "type": "u64", "required": true },
        "evidence": { "type": "any", "required": true }
      }
    },
    "RecordingOutputsRequest": {
      "allowExtraFields": false,
      "fields": {
        "frame": {
          "type": "u64",
          "required": true,
          "max": 9007199254740991
        }
      }
    }
  },
  "documents": {
    "description": "Public stdout contracts in JSON Schema. Wire presence rules only constrain the target payloads checked by internal validators.",
    "definitions": {
      "inspectedObject": {
        "description": "Object identity and renderer metadata are fixed; field and collection values retain the shared recursive inspection vocabulary.",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "stableId": {
                "type": "integer",
                "minimum": 0
              },
              "type": {
                "type": "string"
              },
              "typeId": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4294967295
              },
              "heapOffset": {
                "type": "integer",
                "minimum": 0
              },
              "fields": {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/$defs/recordedTaggedValue"
                }
              }
            },
            "required": [
              "stableId",
              "type",
              "typeId",
              "fields"
            ]
          },
          {
            "type": "object",
            "properties": {
              "stableId": {
                "type": "integer",
                "minimum": 0
              },
              "type": {
                "type": "string"
              },
              "typeId": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4294967295
              },
              "heapOffset": {
                "type": "integer",
                "minimum": 0
              },
              "collection": {
                "$ref": "#/$defs/recordedTaggedValue"
              }
            },
            "required": [
              "stableId",
              "type",
              "typeId",
              "collection"
            ]
          }
        ]
      },
      "inspectionFrame": {
        "type": "object",
        "properties": {
          "frame": {
            "type": "integer",
            "minimum": 0
          },
          "frameAbsolute": {
            "type": "integer",
            "minimum": 0
          },
          "objects": {
            "type": "array",
            "items": {
              "$ref": "#/$defs/inspectedObject"
            }
          }
        },
        "required": [
          "frame",
          "frameAbsolute",
          "objects"
        ]
      },
      "recordedTaggedValue": {"description":"A tagged value from the recording decoder, or null for a zero-byte channel payload. The document validates the type boundary; nested members follow the recording tagged-value vocabulary.","anyOf":[{"type":"null"},{"type":"object","properties":{"type":{"type":"string"}},"required":["type"],"additionalProperties":true}]},
      "catalogOwner": {
        "type": "object",
        "properties": {
          "ownerKind": {"type":"string","enum":["application","package"]},
          "ownerIdentity": {"type":"string"},
          "ownerVersion": {"anyOf":[{"type":"string"},{"type":"null"}]}
        },
        "required": ["ownerKind","ownerIdentity","ownerVersion"]
      },
      "catalogPosition": {
        "type": "object",
        "properties": {"line":{"type":"integer","minimum":1,"maximum":2147483647},"column":{"type":"integer","minimum":1,"maximum":2147483647}},
        "required": ["line","column"]
      },
      "catalogSource": {"type":"object","properties":{"path":{"type":"string"}},"required":["path"],"allOf":[{"$ref":"#/$defs/catalogPosition"}]},
      "catalogTypeDescriptor": {
        "description": "Compiler structural type descriptor, or null for no argument/void return. Document validation checks the nullable object and kind boundary; recursive descriptor contents follow the vocabulary in PublicDocs/RecordingJsonApi.md#queries and are validated by the compiler.",
        "anyOf": [{"type":"null"},{"type":"object","properties":{"kind":{"type":"string"}},"required":["kind"],"additionalProperties":true}]
      },
      "queryCatalogRoot": {
        "type": "object",
        "properties": {
          "name": {"type":"string"},
          "signature": {"type":"string"},
          "args": {"$ref":"#/$defs/catalogTypeDescriptor"},
          "returns": {"$ref":"#/$defs/catalogTypeDescriptor"},
          "source": {"$ref":"#/$defs/catalogSource"}
        },
        "required": ["name","signature","args","returns","source"],
        "allOf": [{"$ref":"#/$defs/catalogOwner"}]
      },
      "investigationCatalogProgram": {
        "type": "object",
        "properties": {
          "kind": {"const":"investigation"},
          "name": {"type":"string"},
          "description": {"type":"string"},
          "source": {"$ref":"#/$defs/catalogSource"},
          "members": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {"type":"string"},
                "documentation": {"anyOf":[{"type":"string"},{"type":"null"}]},
                "args": {"$ref":"#/$defs/catalogTypeDescriptor"},
                "returns": {"$ref":"#/$defs/catalogTypeDescriptor"},
                "source": {"$ref":"#/$defs/catalogPosition"}
              },
              "required": ["name","documentation","args","returns","source"]
            }
          },
          "cases": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {"name":{"type":"string"},"member":{"type":"string"},"returns":{"$ref":"#/$defs/catalogTypeDescriptor"}},
              "required": ["name","member","returns"]
            }
          }
        },
        "required": ["kind","name","description","source","members","cases"],
        "allOf": [{"$ref":"#/$defs/catalogOwner"}]
      },
      "recordingTypeBase": {
        "type": "object",
        "properties": {
          "typeId": {"type":"integer","minimum":0,"maximum":4294967295},
          "name": {"type":"string"},
          "typeClass": {"type":"string","enum":["class","struct","enum","interface","widget","delegate","error","array","none"]},
          "size": {"type":"integer","minimum":0,"maximum":4294967295}
        },
        "required": ["typeId","name","typeClass","size"]
      },
      "recordingType": {
        "anyOf": [
          {
            "type": "object",
            "allOf": [
              {"$ref":"#/$defs/recordingTypeBase"}
            ],
            "properties": {
              "kind": {
                "type": "string",
                "enum": ["unknown","bool","char","int8","int16","int32","int64","uint8","uint16","uint32","uint64","float","double","string","object","valuetype","span"]
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {"type":"string"},
                    "offset": {"type":"integer","minimum":0,"maximum":4294967295},
                    "typeId": {"type":"integer","minimum":0,"maximum":4294967295},
                    "isRef": {"type":"boolean"}
                  },
                  "required": ["name","offset","typeId","isRef"]
                }
              }
            },
            "required": ["kind","fields"]
          },
          {
            "type": "object",
            "allOf": [
              {"$ref":"#/$defs/recordingTypeBase"}
            ],
            "properties": {"kind":{"const":"array"},"elementTypeId":{"type":"integer","minimum":0,"maximum":4294967295}},
            "required": ["kind","elementTypeId"]
          },
          {
            "type": "object",
            "allOf": [
              {"$ref":"#/$defs/recordingTypeBase"}
            ],
            "properties": {
              "kind": {"const":"enum"},
              "backingKind": {
                "type": "string",
                "enum": ["unknown","bool","char","int8","int16","int32","int64","uint8","uint16","uint32","uint64","float","double","string","object","valuetype","array","span","enum"]
              },
              "isFlags": {"type":"boolean"},
              "cases": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {"type":"string"},
                    "value": {"type":"string","description":"Unsigned decimal representation of the stored 64-bit enum value bits."}
                  },
                  "required": ["name","value"]
                }
              }
            },
            "required": ["kind","backingKind","isFlags","cases"]
          }
        ]
      },
      "sectionVersion": {"type":"object","properties":{"major":{"type":"integer","minimum":0,"maximum":65535},"minor":{"type":"integer","minimum":0,"maximum":65535}},"required":["major","minor"]},
      "queryTable": {
        "type": "object",
        "properties": {
          "scan": {
            "type": "object",
            "properties": {
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "frameStart": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "frameCount": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "frames": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                }
              },
              "entries": {
                "anyOf": [
                  {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "minimum": -1,
                      "maximum": 2147483647
                    }
                  },
                  {
                    "type": "object",
                    "additionalProperties": {
                      "type": "array",
                      "items": {
                        "type": "integer",
                        "minimum": -1,
                        "maximum": 2147483647
                      }
                    }
                  }
                ]
              },
              "columns": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "render": {
                      "enum": [
                        "band",
                        "label",
                        "line",
                        "edge"
                      ]
                    },
                    "monotonic": {
                      "enum": [
                        "nondecreasing",
                        "nonincreasing"
                      ]
                    },
                    "values": {
                      "type": "array",
                      "items": {}
                    },
                    "nulls": {
                      "anyOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          }
                        }
                      ]
                    }
                  },
                  "required": [
                    "name",
                    "type",
                    "render",
                    "values",
                    "nulls"
                  ]
                }
              },
              "projection": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "kind": {
                        "const": "where"
                      },
                      "column": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "column"
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "kind": {
                        "const": "edges"
                      },
                      "column": {
                        "type": "string"
                      },
                      "edges": {
                        "type": "object",
                        "properties": {
                          "direction": {
                            "enum": [
                              "rise",
                              "fall"
                            ]
                          },
                          "frames": {
                            "type": "array",
                            "items": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            }
                          }
                        },
                        "required": [
                          "direction",
                          "frames"
                        ]
                      }
                    },
                    "required": [
                      "kind",
                      "column",
                      "edges"
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "kind": {
                        "const": "ranges"
                      },
                      "column": {
                        "type": "string"
                      },
                      "ranges": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "from": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "to": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            }
                          },
                          "required": [
                            "from",
                            "to"
                          ]
                        }
                      }
                    },
                    "required": [
                      "kind",
                      "column",
                      "ranges"
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "kind": {
                        "const": "reduce"
                      },
                      "column": {
                        "type": "string"
                      },
                      "reduce": {
                        "type": "object",
                        "properties": {
                          "op": {
                            "enum": [
                              "min",
                              "max",
                              "count",
                              "sum"
                            ]
                          },
                          "value": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "present": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          }
                        },
                        "required": [
                          "op",
                          "value",
                          "present"
                        ]
                      }
                    },
                    "required": [
                      "kind",
                      "column",
                      "reduce"
                    ]
                  }
                ]
              },
              "isolation": {
                "type": "object",
                "properties": {
                  "mode": {
                    "enum": [
                      "none",
                      "journal",
                      "snapshot",
                      "mixed"
                    ]
                  },
                  "journaled": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "snapshotted": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "loggedObjects": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "loggedBytes": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "mode",
                  "journaled",
                  "snapshotted",
                  "loggedObjects",
                  "loggedBytes"
                ]
              }
            },
            "required": [
              "name",
              "frameStart",
              "frameCount",
              "frames",
              "columns",
              "isolation"
            ]
          }
        },
        "required": [
          "scan"
        ]
      },
      "position": {
        "type": "object",
        "properties": {
          "file": { "description": "the source file the position is in", "type": "string", "minLength": 1 },
          "line": { "description": "1-based line", "type": "integer", "minimum": 1, "maximum": 4294967295 },
          "column": { "description": "1-based column, 0 when only the line is known", "type": "integer", "minimum": 0, "maximum": 4294967295 },
          "function": { "description": "the function the position is in", "type": "string", "minLength": 1 }
        }
      },
      "envelope": {
        "type": "object",
        "properties": {
          "protocol": { "description": "the document's own name", "type": "string", "minLength": 1 },
          "warnings": {
            "description": "what the command could not do",
            "type": "array",
            "items": { "type": "string", "minLength": 1 }
          }
        },
        "required": ["protocol"]
      },
      "breakpoint": {
        "type": "object",
        "properties": {
          "file": { "description": "the source file the breakpoint is armed in", "type": "string", "minLength": 1 },
          "line": { "description": "the line it is armed on, within the range the breakpoint store holds", "type": "integer", "minimum": 1, "maximum": 2147483647 },
          "condition": { "description": "the expression that has to hold for it to fire", "type": "string", "minLength": 1 }
        },
        "required": ["file","line"]
      },
      "frame": {
        "type": "object",
        "properties": {
          "counter": { "description": "the frame the run is in", "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
          "atBoundary": { "description": "whether the stop is between frames", "type": "boolean" },
          "completedFrame": { "description": "the frame that finished at that boundary", "type": "integer", "minimum": 0, "maximum": 9007199254740991 }
        },
        "required": ["atBoundary"]
      },
      "context": {
        "type": "object",
        "properties": {
          "status": { "description": "where the run is", "type": "string", "minLength": 1 },
          "reason": { "description": "why a status that would otherwise read as a failure is not one", "type": "string", "minLength": 1 },
          "crash": {
            "description": "what a crashed run has to say about the crash",
            "type": "object",
            "properties": {
              "type": { "description": "the error type", "type": "string", "minLength": 1 },
              "detail": { "description": "the detail the crash carried", "type": "string", "minLength": 1 },
              "expression": { "description": "the expression that failed", "type": "string", "minLength": 1 }
            }
          },
          "location": {
            "description": "where the stop stands",
            "type": "object",
            "allOf": [
              { "$ref": "#/$defs/position" }
            ]
          },
          "frame": {
            "description": "the recorded frame the stop belongs to; only a native pause or a live-wire stop knows one, so a target answering with it is describing a stop this route cannot carry",
            "type": "object",
            "allOf": [
              { "$ref": "#/$defs/frame" }
            ]
          },
          "watchpointHit": {
            "description": "the watchpoint the pause was for",
            "type": "object",
            "properties": {
              "watchId": { "description": "the watch that fired", "type": "integer", "minimum": 0, "maximum": 4294967295 },
              "stableId": { "description": "the object it watches", "type": "string", "pattern": "^@[0-9a-f]+$" },
              "functionId": { "description": "the function the write is in", "type": "integer", "minimum": 0, "maximum": 4294967295 },
              "statementId": { "description": "the statement that wrote", "type": "integer", "minimum": 0, "maximum": 4294967295 }
            },
            "required": ["watchId","functionId","statementId"]
          },
          "stack": {
            "description": "the call stack the stop stands on",
            "type": "object",
            "properties": {
              "depth": { "description": "the true depth, which `frames` may not reach", "type": "integer", "minimum": 0, "maximum": 4294967295 },
              "frames": {
                "description": "the innermost frames, truncated at the same limit on every producer",
                "type": "array",
                "maxItems": 16,
                "items": {
                  "type": "object",
                  "properties": {
                    "index": { "description": "0 for the innermost frame", "type": "integer", "minimum": 0, "maximum": 4294967295 }
                  },
                  "required": ["index"],
                  "allOf": [
                    { "$ref": "#/$defs/position" }
                  ]
                }
              }
            },
            "required": ["depth","frames"]
          },
          "locals": {
            "description": "one frame's variables",
            "type": "object",
            "properties": {
              "frameDepth": { "description": "the frame the variables were read from", "type": "integer", "minimum": 0, "maximum": 4294967295 },
              "variables": {
                "description": "the variables in that frame",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": { "description": "the variable's name", "type": "string", "minLength": 1 },
                    "value": { "description": "the formatted value", "type": "string" },
                    "parameter": { "description": "whether it is a parameter", "type": "boolean" },
                    "fields": {
                      "description": "an expandable value's fields",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": { "description": "the field's name", "type": "string", "minLength": 1 },
                          "value": { "description": "the formatted value", "type": "string" }
                        }
                      }
                    }
                  },
                  "required": ["parameter"]
                }
              }
            },
            "required": ["frameDepth","variables"]
          },
          "objects": {
            "description": "the objects the caller asked to have rendered into the stop",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "stableId": { "description": "the id that was asked about", "type": "string", "pattern": "^@[0-9a-f]+$" },
                "text": { "description": "the rendering a page produced", "type": "string" },
                "object": { "description": "the rendering a native debugger produced" },
                "missing": { "description": "present when no object stands at that id", "type": "boolean", "const": true },
                "error": { "description": "why there was no rendering", "type": "string", "minLength": 1 }
              },
              "required": ["stableId"]
            }
          },
          "breakpoints": {
            "description": "what is armed",
            "type": "array",
            "items": {
              "type": "object",
              "allOf": [
                { "$ref": "#/$defs/breakpoint" }
              ]
            }
          },
          "source": {
            "description": "the window the stop stands in",
            "type": "object",
            "properties": {
              "startLine": { "description": "the first line in the window", "type": "integer", "minimum": 1, "maximum": 4294967295 },
              "endLine": { "description": "the last line in the window", "type": "integer", "minimum": 1, "maximum": 4294967295 },
              "lines": {
                "description": "the window's lines",
                "type": "array",
                "minItems": 1,
                "items": {
                  "type": "object",
                  "properties": {
                    "line": { "description": "the line number", "type": "integer", "minimum": 1, "maximum": 4294967295 },
                    "text": { "description": "the line, without its terminator", "type": "string" },
                    "current": { "description": "whether the stop stands on this line", "type": "boolean" }
                  },
                  "required": ["line","text","current"]
                }
              }
            },
            "required": ["startLine","endLine","lines"]
          },
          "generation": { "description": "the generation a live-wire stop belongs to", "type": "string", "minLength": 1 },
          "resumed": { "description": "whether the app was let go again after the stop", "type": "boolean" }
        },
        "required": ["status"]
      },
      "action": {
        "type": "object",
        "properties": {
          "action": { "description": "The change performed: added, updated, unchanged, removed or cleared.", "type": "string", "minLength": 1 }
        },
        "required": ["action"]
      },
      "config": {
        "type": "object",
        "properties": {
          "key": { "description": "The configuration key.", "type": "string", "minLength": 1 },
          "value": { "description": "The effective configuration value.", "type": "integer", "minimum": 0, "maximum": 4294967295 }
        },
        "required": ["key","value"]
      },
      "watchTarget": {
        "type": "object",
        "properties": {
          "spec": { "description": "The target spelling accepted by add and clear.", "type": "string", "minLength": 1 },
          "field": { "description": "The watched field chain.", "type": "string", "minLength": 1 },
          "stableId": { "description": "The watched storage identity.", "type": "string", "pattern": "^@[0-9a-f]+$" },
          "ownerTypeId": { "description": "The type owning the field.", "type": "integer", "minimum": 0, "maximum": 4294967295 },
          "target": { "description": "Whether this watches static or object storage.", "type": "string", "minLength": 1 }
        },
        "required": ["spec","field","stableId","ownerTypeId","target"]
      },
      "editRetention": {
        "type": "object",
        "properties": {
          "kept": { "description": "Entries retained after applying the edit.", "type": "integer", "minimum": 0, "maximum": 4294967295 },
          "dropped": { "description": "Entries that could not be rebound.", "type": "integer", "minimum": 0, "maximum": 4294967295 }
        },
        "required": ["kept","dropped"]
      },
      "command": {
        "type": "object",
        "properties": {
          "canonical": { "description": "Canonical command identity.", "type": "string", "minLength": 1 },
          "category": { "description": "Help grouping.", "type": "string", "minLength": 1 },
          "description": { "description": "What the command does.", "type": "string", "minLength": 1 },
          "support": { "description": "Supported route policy.", "type": "string", "minLength": 1 },
          "resultSchema": {
            "description": "The command's output schema in JSON Schema 2020-12.",
            "type": "object",
            "additionalProperties": {  }
          },
          "errorSchema": { "description": "Failure document name.", "type": "string", "minLength": 1 },
          "synopsis": { "description": "CLI invocation syntax.", "type": "string", "minLength": 1 },
          "effects": {
            "description": "Effects the command may perform.",
            "type": "array",
            "items": { "type": "string", "minLength": 1 }
          },
          "aliases": {
            "description": "The public CLI spelling.",
            "type": "array",
            "items": { "type": "string", "minLength": 1 }
          },
          "targetKinds": {
            "description": "Supported kinds of target.",
            "type": "array",
            "items": { "type": "string", "minLength": 1 }
          },
          "errors": {
            "description": "Operational error codes declared for the command.",
            "type": "array",
            "items": { "type": "string", "minLength": 1 }
          },
          "examples": {
            "description": "Example invocations.",
            "type": "array",
            "items": { "type": "string", "minLength": 1 }
          },
          "sessionless": { "description": "Whether a session is unnecessary.", "type": "boolean" },
          "supported": { "description": "Whether this command is available for the current target.", "type": "boolean" },
          "requiresPaused": { "description": "Whether execution must be paused.", "type": "boolean" },
          "mutatesExecution": { "description": "Whether the command moves execution.", "type": "boolean" },
          "generationBound": { "description": "Whether the request belongs to one target generation.", "type": "boolean" },
          "textRendering": { "description": "Whether --text has a human rendering.", "type": "boolean" },
          "ownsStdout": { "description": "Whether stdout carries a protocol stream.", "type": "boolean", "const": true },
          "reason": { "description": "Why this command is unavailable.", "type": "string", "minLength": 1 },
          "resultDocument": { "description": "The document printed by the CLI.", "type": "string", "minLength": 1 },
          "notes": { "description": "Additional usage guidance.", "type": "string", "minLength": 1 },
          "operands": {
            "description": "Positional inputs in order.",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": { "description": "Operand name.", "type": "string", "minLength": 1 },
                "required": { "description": "Whether the operand must be supplied.", "type": "boolean" },
                "multiple": { "description": "Whether the operand repeats.", "type": "boolean" },
                "description": { "description": "Operand meaning.", "type": "string", "minLength": 1 }
              },
              "required": ["name","required","multiple","description"]
            }
          },
          "options": {
            "description": "Named inputs.",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "spelling": { "description": "Option spelling.", "type": "string", "minLength": 1 },
                "value": { "description": "Value placeholder when this option takes a value.", "type": "string", "minLength": 1 },
                "multiple": { "description": "Whether the option repeats.", "type": "boolean" },
                "required": { "description": "Whether the option is required.", "type": "boolean" },
                "description": { "description": "Option meaning.", "type": "string", "minLength": 1 },
                "minimum": { "description": "Minimum numeric value.", "type": "integer", "minimum": -2147483648, "maximum": 2147483647 },
                "maximum": { "description": "Maximum numeric value.", "type": "integer", "minimum": -2147483648, "maximum": 2147483647 },
                "requires": { "description": "Option that must accompany this option.", "type": "string", "minLength": 1 }
              },
              "required": ["spelling","multiple","required","description"]
            }
          },
          "validation": {
            "description": "Request validation guarantees.",
            "type": "object",
            "properties": {
              "directJsRequestSchema": { "description": "Whether direct JS validates the request schema.", "type": "boolean" }
            },
            "required": ["directJsRequestSchema"]
          }
        },
        "required": ["canonical","category","description","support","errorSchema","synopsis","effects","aliases","targetKinds","errors","examples","sessionless","supported","requiresPaused","mutatesExecution","generationBound","textRendering","operands","options","validation"]
      }
    },
    "types": {
      "wxdbg.query.v1": {
        "description": "Ordered typed query results or a projected column table. Every result covers the entire requested window; invocation failure returns an error instead.",
        "type": "object",
        "allOf": [{ "$ref": "#/$defs/envelope" }],
        "properties": {
          "protocol": { "const": "wxdbg.query.v1" },
          "from": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
          "to": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
          "result": { "anyOf": [
          {
            "type": "object",
            "properties": {
              "kind": { "const": "values" },
              "queries": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": { "name": { "type": "string" }, "typeId": { "type": "integer", "minimum": 0, "maximum": 4294967295 } },
                  "required": ["name", "typeId"]
                }
              },
              "frames": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "frame": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
                    "values": {
                      "type": "array",
                      "items": { "type": "object", "properties": { "present": { "type": "boolean" }, "value": {} }, "required": ["present", "value"] }
                    }
                  },
                  "required": ["frame", "values"]
                }
              }
            },
            "required": ["kind", "queries", "frames"]
          },
          {
            "type": "object",
            "properties": { "kind": { "const": "columns" }, "table": { "$ref": "#/$defs/queryTable" } },
            "required": ["kind", "table"]
          }
          ] }
        },
        "required": ["protocol", "from", "to", "result"]
      },
      "wxdbg.recording-repack.v1": {
        "description": "Result of rewriting a recording with a bounded keyframe set.",
        "allOf": [{"$ref": "#/$defs/envelope"}],
        "type": "object",
        "properties": {
          "protocol": {"const": "wxdbg.recording-repack.v1"},
          "input": {"type": "string"},
          "output": {"type": "string"},
          "inputBytes": {"type": "integer", "minimum": 0, "maximum": 4294967295},
          "outputBytes": {"type": "integer", "minimum": 0, "maximum": 4294967295},
          "originalKeyframes": {"type": "integer", "minimum": 0, "maximum": 4294967295},
          "retainedKeyframes": {"type": "integer", "minimum": 0, "maximum": 4294967295}
        },
        "required": ["protocol", "input", "output", "inputBytes", "outputBytes", "originalKeyframes", "retainedKeyframes"]
      },
      "wxdbg.recording-info.v1": {
        "description": "Recording identity, source inventory, section versions and storage measurements.",
        "allOf": [
          {
            "$ref": "#/$defs/envelope"
          }
        ],
        "type": "object",
        "properties": {
          "protocol": {
            "const": "wxdbg.recording-info.v1"
          },
          "path": {
            "type": "string"
          },
          "containerMajor": {
            "type": "integer",
            "minimum": 0,
            "maximum": 65535
          },
          "containerMinor": {
            "type": "integer",
            "minimum": 0,
            "maximum": 65535
          },
          "requiredFeatures": {
            "type": "string"
          },
          "optionalFeatures": {
            "type": "string"
          },
          "sections": {
            "type": "object",
            "properties": {
              "sourceBundle": {
                "$ref": "#/$defs/sectionVersion"
              },
              "idManifest": {
                "$ref": "#/$defs/sectionVersion"
              },
              "staticBlobs": {
                "$ref": "#/$defs/sectionVersion"
              },
              "cadence": {
                "$ref": "#/$defs/sectionVersion"
              },
              "keyframes": {
                "$ref": "#/$defs/sectionVersion"
              },
              "frameRecords": {
                "$ref": "#/$defs/sectionVersion"
              },
              "gcDecisions": {
                "$ref": "#/$defs/sectionVersion"
              },
              "frameTelemetry": {
                "$ref": "#/$defs/sectionVersion"
              }
            },
            "required": [
              "sourceBundle",
              "idManifest",
              "staticBlobs",
              "cadence",
              "keyframes",
              "frameRecords",
              "gcDecisions",
              "frameTelemetry"
            ]
          },
          "compilerVersion": {
            "type": "string"
          },
          "toolsetId": {
            "type": "string"
          },
          "toolsetSourceCommit": {
            "type": "string"
          },
          "toolsetReleaseTag": {
            "type": "string"
          },
          "fingerprint": {
            "type": "string"
          },
          "toolsetFlags": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "toolsetCompilerServiceAbi": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "toolsetDebuggerEngineAbi": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "eventAbiVersion": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "flags": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "startFrame": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "lastFrame": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "frameCount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "keyframeCount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "keyframeIntervalInFrames": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "bundleFileCount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483647
          },
          "bundleByteSize": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "frames": {
            "type": "object",
            "properties": {
              "storedBytes": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4294967295
              },
              "uncompressedBytes": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4294967295
              },
              "compression": {
                "type": "string",
                "enum": [
                  "raw",
                  "zstd"
                ]
              }
            },
            "required": [
              "storedBytes",
              "uncompressedBytes",
              "compression"
            ]
          },
          "keyframes": {
            "type": "object",
            "properties": {
              "storedBytes": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "uncompressedBytes": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "compression": {
                "type": "string",
                "enum": [
                  "raw",
                  "zstd"
                ]
              },
              "format": {
                "type": "string",
                "enum": [
                  "none",
                  "full",
                  "compact",
                  "mixed"
                ]
              },
              "compactCount": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4294967295
              },
              "committedBytes": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "heapImageBytes": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "tlsfMeasuredKeyframes": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4294967295
              },
              "tlsfInUseBytes": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "tlsfFreeBytes": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "tlsfHighWaterMax": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "storedBytes",
              "uncompressedBytes",
              "compression",
              "format",
              "compactCount",
              "committedBytes",
              "heapImageBytes",
              "tlsfMeasuredKeyframes"
            ]
          }
        },
        "required": [
          "protocol",
          "path",
          "containerMajor",
          "containerMinor",
          "requiredFeatures",
          "optionalFeatures",
          "sections",
          "compilerVersion",
          "fingerprint",
          "eventAbiVersion",
          "flags",
          "startFrame",
          "lastFrame",
          "frameCount",
          "keyframeCount",
          "keyframeIntervalInFrames",
          "bundleFileCount",
          "bundleByteSize",
          "frames",
          "keyframes"
        ]
      },
      "wxdbg.find.v1": {
        "description": "Predicate matches and exact search coverage. A limit-bounded prefix is never reported as a complete search.",
        "type": "object",
        "allOf": [
          {
            "$ref": "#/$defs/envelope"
          }
        ],
        "properties": {
          "protocol": {
            "const": "wxdbg.find.v1"
          },
          "count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483647
          },
          "coverage": {
            "type": "object",
            "properties": {
              "requested": {
                "type": "object",
                "properties": {
                  "from": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "to": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "from",
                  "to"
                ]
              },
              "evaluated": {
                "type": "object",
                "properties": {
                  "from": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "to": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "from",
                  "to"
                ]
              },
              "framesEvaluated": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              },
              "complete": {
                "type": "boolean"
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 2147483647
              }
            },
            "required": [
              "requested",
              "evaluated",
              "framesEvaluated",
              "complete"
            ]
          },
          "result": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "const": "matches"
                  },
                  "matches": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "frame": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "range": {
                          "type": "object",
                          "properties": {
                            "from": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "to": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            }
                          },
                          "required": [
                            "from",
                            "to"
                          ]
                        }
                      },
                      "required": [
                        "frame"
                      ]
                    }
                  }
                },
                "required": [
                  "kind",
                  "matches"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "const": "count"
                  }
                },
                "required": [
                  "kind"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "const": "summary"
                  },
                  "first": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "last": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "ranges": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "from": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "to": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        }
                      },
                      "required": [
                        "from",
                        "to"
                      ]
                    }
                  }
                },
                "required": [
                  "kind",
                  "ranges"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "const": "ranges"
                  },
                  "ranges": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "from": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "to": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        }
                      },
                      "required": [
                        "from",
                        "to"
                      ]
                    }
                  }
                },
                "required": [
                  "kind",
                  "ranges"
                ]
              }
            ]
          }
        },
        "required": [
          "protocol",
          "count",
          "coverage",
          "result"
        ]
      },
      "wxdbg.mutation-log.v1": {
        "description": "Field writes observed by the most recent execution.",
        "type": "object",
        "allOf": [{ "$ref": "#/$defs/envelope" }],
        "properties": {
          "protocol": { "const": "wxdbg.mutation-log.v1" },
          "entries": {
            "type": "array",
            "description": "Writes in execution order; unavailable source or frame information is absent.",
            "items": {
              "type": "object",
              "allOf": [{ "$ref": "#/$defs/position" }],
              "properties": {
                "frame": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
                "watchId": { "type": "integer", "minimum": 0, "maximum": 4294967295 },
                "functionId": { "type": "integer", "minimum": 0, "maximum": 4294967295 },
                "statementId": { "type": "integer", "minimum": 0, "maximum": 4294967295 },
                "sizeBytes": { "type": "integer", "minimum": 0, "maximum": 4294967295 },
                "stableId": { "type": "string", "pattern": "^@[0-9a-f]+$" },
                "oldStableId": { "type": "string", "pattern": "^@[0-9a-f]+$" },
                "newStableId": { "type": "string", "pattern": "^@[0-9a-f]+$" },
                "field": { "type": "string", "minLength": 1 },
                "old": { "type": "string" },
                "new": { "type": "string" },
                "oldHex": { "type": "string" },
                "newHex": { "type": "string" },
                "receiverOffset": { "type": "integer", "minimum": 0, "maximum": 4294967295 },
                "oldBytes": { "type": "array", "items": { "type": "integer", "minimum": 0, "maximum": 255 } },
                "newBytes": { "type": "array", "items": { "type": "integer", "minimum": 0, "maximum": 255 } }
              },
              "required": ["watchId", "functionId", "statementId", "sizeBytes", "oldHex", "newHex"]
            }
          }
        },
        "required": ["protocol", "entries"]
      },
      "wxdbg.context.v1": {
        "description": "One stop, whoever produced it: a native pause, a page's answer, or the GUI's native bridge. `wire: false` marks a member only a printed document carries, so a target sending it is answering with something this document cannot carry from that route.",
        "type": "object",
        "allOf": [
          { "$ref": "#/$defs/context" },
          { "$ref": "#/$defs/envelope" }
        ],
        "properties": {
          "protocol": { "const": "wxdbg.context.v1" }
        },
        "required": ["protocol"]
      },
      "wxdbg.breakpoints.v1": {
        "description": "What is armed, and what a mutation just did to it.",
        "type": "object",
        "properties": {
          "breakpoints": {
            "description": "the resulting list, absent when it could not be read",
            "type": "array",
            "items": {
              "type": "object",
              "allOf": [
                { "$ref": "#/$defs/breakpoint" }
              ]
            }
          },
          "change": {
            "description": "what the mutation did",
            "type": "object",
            "properties": {
              "action": { "description": "added, updated, unchanged, removed or cleared", "type": "string", "minLength": 1 },
              "item": {
                "description": "the row the action was about",
                "type": "object",
                "allOf": [
                  { "$ref": "#/$defs/breakpoint" }
                ]
              },
              "items": {
                "description": "The rows removed by clear --all.",
                "type": "array",
                "items": {
                  "type": "object",
                  "allOf": [
                    { "$ref": "#/$defs/breakpoint" }
                  ]
                }
              }
            },
            "required": ["action"]
          },
          "protocol": { "const": "wxdbg.breakpoints.v1" }
        },
        "allOf": [
          { "$ref": "#/$defs/envelope" }
        ],
        "required": ["protocol"]
      },
      "wxdbg.error.v1": {
        "description": "A failed invocation; code selects the recovery action.",
        "type": "object",
        "properties": {
          "error": {
            "description": "The command failure.",
            "type": "object",
            "properties": {
              "code": { "description": "A registry-declared error code.", "type": "string", "minLength": 1 },
              "message": { "description": "An explanation and recovery guidance.", "type": "string", "minLength": 1 }
            },
            "required": ["code","message"]
          },
          "protocol": { "const": "wxdbg.error.v1" }
        },
        "required": ["error","protocol"],
        "allOf": [
          { "$ref": "#/$defs/envelope" }
        ]
      },
      "wxdbg.status.v1": {
        "description": "Session binding, armed breakpoints and stored execution position.",
        "type": "object",
        "properties": {
          "project": { "description": "The bound project path.", "type": "string", "minLength": 1 },
          "target": {
            "description": "The attached browser target.",
            "type": "object",
            "properties": {
              "kind": { "description": "The target kind.", "type": "string", "minLength": 1 },
              "url": { "description": "The controller URL.", "type": "string", "minLength": 1 },
              "bridge": { "description": "Bridge availability: missing, stale or ready.", "type": "string", "minLength": 1 },
              "bridgeOwner": { "description": "Bridge owner: wxdbg or external.", "type": "string", "minLength": 1 },
              "page": { "description": "Page connection: connected or waiting.", "type": "string", "minLength": 1 }
            },
            "required": ["kind","url","bridge","bridgeOwner"]
          },
          "analysisRecording": { "description": "Default recording for analysis.", "type": "string", "minLength": 1 },
          "replayTarget": { "description": "The recording bound for execution.", "type": "string", "minLength": 1 },
          "breakpoints": {
            "description": "The armed breakpoints.",
            "type": "array",
            "items": {
              "type": "object",
              "allOf": [
                { "$ref": "#/$defs/breakpoint" }
              ]
            }
          },
          "head": {
            "description": "The stored stop.",
            "type": "object",
            "properties": {
              "functionId": { "description": "Stopped function identity.", "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
              "statementId": { "description": "Stopped statement identity.", "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
              "depth": { "description": "Recorded execution trace depth.", "type": "integer", "minimum": 0, "maximum": 4294967295 },
              "frame": {
                "description": "The stop's recorded frame.",
                "type": "object",
                "allOf": [
                  { "$ref": "#/$defs/frame" }
                ]
              },
              "recording": { "description": "The recording containing this stop.", "type": "string", "minLength": 1 }
            },
            "required": ["functionId","statementId","depth","frame"]
          },
          "matchQueue": {
            "description": "Navigation through query matches.",
            "type": "object",
            "properties": {
              "cursor": { "description": "The selected match index, or -1 before the first match.", "type": "integer", "minimum": -1, "maximum": 2147483647 },
              "frames": {
                "description": "Matching frame numbers in navigation order.",
                "type": "array",
                "items": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }
              }
            },
            "required": ["cursor","frames"]
          },
          "pairing": {
            "description": "Browser pairing information.",
            "type": "object",
            "properties": {
              "protocol": { "description": "The pairing protocol.", "type": "string", "minLength": 1 },
              "pageUrl": { "description": "The URL to open for pairing.", "type": "string", "minLength": 1 }
            },
            "required": ["protocol","pageUrl"]
          },
          "change": {
            "description": "The session action performed.",
            "type": "object",
            "allOf": [
              { "$ref": "#/$defs/action" }
            ]
          },
          "protocol": { "const": "wxdbg.status.v1" }
        },
        "required": ["breakpoints","protocol"],
        "allOf": [
          { "$ref": "#/$defs/envelope" }
        ]
      },
      "wxdbg.config.v1": {
        "description": "One effective configuration value, with its previous value after a write.",
        "type": "object",
        "properties": {
          "change": {
            "description": "The configuration write.",
            "type": "object",
            "properties": {
              "action": { "description": "The change performed: added, updated, unchanged, removed or cleared.", "type": "string", "minLength": 1 },
              "item": {
                "description": "The resulting setting.",
                "type": "object",
                "allOf": [
                  { "$ref": "#/$defs/config" }
                ]
              },
              "previous": { "description": "The value before the write.", "type": "integer", "minimum": 0, "maximum": 4294967295 }
            },
            "required": ["action","item","previous"]
          },
          "protocol": { "const": "wxdbg.config.v1" }
        },
        "allOf": [
          { "$ref": "#/$defs/config" },
          { "$ref": "#/$defs/envelope" }
        ],
        "required": ["protocol"]
      },
      "wxdbg.watchpoints.v1": {
        "description": "Configured watchpoints and changes made by this invocation.",
        "type": "object",
        "properties": {
          "watchpoints": {
            "description": "The resulting watched targets.",
            "type": "array",
            "items": {
              "type": "object",
              "allOf": [
                { "$ref": "#/$defs/watchTarget" }
              ]
            }
          },
          "change": {
            "description": "The watch configuration change.",
            "type": "object",
            "properties": {
              "action": { "description": "The change performed: added, updated, unchanged, removed or cleared.", "type": "string", "minLength": 1 },
              "items": {
                "description": "Targets affected by this invocation.",
                "type": "array",
                "items": {
                  "type": "object",
                  "allOf": [
                    { "$ref": "#/$defs/watchTarget" }
                  ]
                }
              }
            },
            "required": ["action","items"]
          },
          "protocol": { "const": "wxdbg.watchpoints.v1" }
        },
        "required": ["watchpoints","protocol"],
        "allOf": [
          { "$ref": "#/$defs/envelope" }
        ]
      },
      "wxdbg.mutations.v1": {
        "description": "Configured mutations and changes made by this invocation.",
        "type": "object",
        "properties": {
          "mutations": {
            "description": "The resulting watched targets.",
            "type": "array",
            "items": {
              "type": "object",
              "allOf": [
                { "$ref": "#/$defs/watchTarget" }
              ]
            }
          },
          "change": {
            "description": "The watch configuration change.",
            "type": "object",
            "properties": {
              "action": { "description": "The change performed: added, updated, unchanged, removed or cleared.", "type": "string", "minLength": 1 },
              "items": {
                "description": "Targets affected by this invocation.",
                "type": "array",
                "items": {
                  "type": "object",
                  "allOf": [
                    { "$ref": "#/$defs/watchTarget" }
                  ]
                }
              }
            },
            "required": ["action","items"]
          },
          "protocol": { "const": "wxdbg.mutations.v1" }
        },
        "required": ["mutations","protocol"],
        "allOf": [
          { "$ref": "#/$defs/envelope" }
        ]
      },
      "wxdbg.breakable.v1": {
        "description": "Source lines where breakpoints can bind.",
        "type": "object",
        "properties": {
          "files": {
            "description": "Breakable lines grouped by source file.",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "file": { "description": "Source file path.", "type": "string", "minLength": 1 },
                "lines": {
                  "description": "One-based breakable line numbers.",
                  "type": "array",
                  "items": { "type": "integer", "minimum": 1, "maximum": 4294967295 }
                }
              },
              "required": ["file","lines"]
            }
          },
          "protocol": { "const": "wxdbg.breakable.v1" }
        },
        "required": ["files","protocol"],
        "allOf": [
          { "$ref": "#/$defs/envelope" }
        ]
      },
      "wxdbg.recording.v1": {
        "description": "A recording produced by recording create.",
        "type": "object",
        "properties": {
          "path": { "description": "Path to the created recording.", "type": "string", "minLength": 1 },
          "frames": { "description": "Number of completed recorded frames.", "type": "integer", "minimum": 0, "maximum": 4294967295 },
          "fingerprint": { "description": "The compiled program fingerprint in hexadecimal.", "type": "string", "minLength": 1 },
          "framesSize": { "description": "Encoded frame data size in bytes.", "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
          "keyframes": { "description": "Number of stored keyframes.", "type": "integer", "minimum": 0, "maximum": 4294967295 },
          "profile": { "description": "Path to the optional execution profile.", "type": "string", "minLength": 1 },
          "protocol": { "const": "wxdbg.recording.v1" }
        },
        "required": ["path","frames","fingerprint","framesSize","keyframes","protocol"],
        "allOf": [
          { "$ref": "#/$defs/envelope" }
        ]
      },
      "wxdbg.edit-apply.v1": {
        "description": "Whether an edit applied and which debugger state survived.",
        "type": "object",
        "properties": {
          "applied": { "description": "Whether the edit took effect.", "type": "boolean" },
          "tier": { "description": "The edit compatibility tier.", "type": "string", "minLength": 1 },
          "message": { "description": "Explanation of the edit result.", "type": "string" },
          "frame": { "description": "The frame at which the edit applied.", "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
          "breakpoints": {
            "description": "Breakpoint retention.",
            "type": "object",
            "allOf": [
              { "$ref": "#/$defs/editRetention" }
            ]
          },
          "conditions": {
            "description": "Conditional breakpoint retention.",
            "type": "object",
            "allOf": [
              { "$ref": "#/$defs/editRetention" }
            ]
          },
          "protocol": { "const": "wxdbg.edit-apply.v1" }
        },
        "required": ["applied","tier","message","frame","breakpoints","conditions","protocol"],
        "allOf": [
          { "$ref": "#/$defs/envelope" }
        ]
      },
      "wxdbg.source-materialize.v2": {
        "description": "Materialized sources and their content hashes.",
        "type": "object",
        "properties": {
          "compilerVersion": { "description": "Compiler version embedded in the source bundle.", "type": "string" },
          "appName": { "description": "Application name embedded in the source bundle.", "type": "string" },
          "outDir": { "description": "Root containing the materialized sources.", "type": "string", "minLength": 1 },
          "manifestPath": { "description": "Path to the materialization manifest.", "type": "string", "minLength": 1 },
          "files": {
            "description": "Materialized source files.",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "path": { "description": "The debugger source path.", "type": "string", "minLength": 1 },
                "kind": { "description": "Source kind: application or library.", "type": "integer", "minimum": 0, "maximum": 1 },
                "localPath": { "description": "Path to the materialized file.", "type": "string", "minLength": 1 },
                "bytes": { "description": "Source byte count.", "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
                "sha256": { "description": "SHA-256 of the source bytes in lowercase hexadecimal.", "type": "string", "minLength": 1 }
              },
              "required": ["path","kind","localPath","bytes","sha256"]
            }
          },
          "protocol": { "const": "wxdbg.source-materialize.v2" }
        },
        "required": ["compilerVersion","appName","outDir","manifestPath","files","protocol"],
        "allOf": [
          { "$ref": "#/$defs/envelope" }
        ]
      },
      "wxdbg.agent-bootstrap.v1": {
        "description": "Source workspace, current stop and executable refresh commands.",
        "type": "object",
        "properties": {
          "outDir": { "description": "The agent workspace root.", "type": "string", "minLength": 1 },
          "sourceRoot": { "description": "The materialized source root.", "type": "string", "minLength": 1 },
          "sourceManifestPath": { "description": "Path to the source manifest.", "type": "string", "minLength": 1 },
          "agentManifestPath": { "description": "Path to the agent manifest.", "type": "string", "minLength": 1 },
          "wxdbgPath": { "description": "Path to the debugger executable.", "type": "string", "minLength": 1 },
          "sessionDir": { "description": "The session used by the generated commands.", "type": "string", "minLength": 1 },
          "sourceFileCount": { "description": "Number of materialized source files.", "type": "integer", "minimum": 0, "maximum": 4294967295 },
          "context": {
            "description": "The browser stop captured during bootstrap.",
            "type": "object",
            "allOf": [
              { "$ref": "#/$defs/context" }
            ]
          },
          "commands": {
            "description": "Commands represented as argv arrays, without shell quoting.",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": { "description": "The operation performed.", "type": "string", "minLength": 1 },
                "argv": {
                  "description": "Executable and arguments in order.",
                  "type": "array",
                  "minItems": 1,
                  "items": { "type": "string", "minLength": 1 }
                }
              },
              "required": ["label","argv"]
            }
          },
          "protocol": { "const": "wxdbg.agent-bootstrap.v1" }
        },
        "required": ["outDir","sourceRoot","sourceManifestPath","agentManifestPath","wxdbgPath","sessionDir","sourceFileCount","context","commands","protocol"],
        "allOf": [
          { "$ref": "#/$defs/envelope" }
        ]
      },
      "wxdbg.command.v1": {
        "description": "One command's inputs, output and availability.",
        "type": "object",
        "allOf": [
          { "$ref": "#/$defs/command" },
          { "$ref": "#/$defs/envelope" }
        ],
        "properties": {
          "protocol": { "const": "wxdbg.command.v1" }
        },
        "required": ["protocol"]
      },
      "wxdbg.capabilities.v1": {
        "description": "The commands and output contracts offered by this debugger.",
        "type": "object",
        "properties": {
          "surface": { "description": "The surface being described: cli.", "type": "string", "minLength": 1 },
          "targetKind": { "description": "The current session's target kind.", "type": "string", "minLength": 1 },
          "commands": {
            "description": "Commands available for discovery.",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "command": { "type": "string", "minLength": 1, "description": "The CLI command spelling to invoke or pass to help." },
                "description": { "type": "string", "minLength": 1, "description": "What the command does." },
                "supported": { "type": "boolean", "description": "Whether the current target supports the command." },
                "reason": { "type": "string", "minLength": 1, "description": "Why the command is unavailable." },
                "resultDocument": { "type": "string", "minLength": 1, "description": "The success document name; help supplies its JSON Schema." },
                "textRendering": { "type": "boolean", "description": "Whether --text supplies a human rendering." },
                "ownsStdout": { "type": "boolean", "const": true, "description": "Whether stdout is a protocol stream." }
              },
              "required": ["command","description","supported","textRendering"]
            }
          },
          "protocol": { "const": "wxdbg.capabilities.v1" }
        },
        "required": ["surface","targetKind","commands","protocol"],
        "allOf": [
          { "$ref": "#/$defs/envelope" }
        ]
      },
      "wxdbg.recording-types.v1": {
        "description": "Debugger type metadata embedded in a recording, optionally filtered by exact fully qualified name. No match returns an empty types array.",
        "type": "object",
        "allOf": [
          {"$ref":"#/$defs/envelope"}
        ],
        "properties": {"protocol":{"const":"wxdbg.recording-types.v1"},"types":{"type":"array","items":{"$ref":"#/$defs/recordingType"}}},
        "required": ["protocol","types"]
      },
      "wxdbg.recording-api.v1": {
        "description": "Recorded host-to-Wax entry points.",
        "type": "object",
        "allOf": [{"$ref":"#/$defs/envelope"}],
        "properties": {
          "protocol": {"const":"wxdbg.recording-api.v1"},
          "methods": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {"apiIndex":{"type":"integer","minimum":0,"maximum":4294967295},"name":{"type":"string"}},
              "required": ["apiIndex","name"]
            }
          }
        },
        "required": ["protocol","methods"]
      },
      "wxdbg.recording-hosts.v1": {
        "description": "Recorded Wax-to-host imports. An application with no referenced host functions returns an empty methods array.",
        "type": "object",
        "allOf": [{"$ref":"#/$defs/envelope"}],
        "properties": {
          "protocol": {"const":"wxdbg.recording-hosts.v1"},
          "methods": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "hostFnIndex": {"type":"integer","minimum":0,"maximum":4294967295},
                "name": {"type":"string"},
                "returnType": {"type":"string"},
                "isThrowing": {"type":"boolean"}
              },
              "required": ["hostFnIndex","name","returnType","isThrowing"]
            }
          }
        },
        "required": ["protocol","methods"]
      },
      "wxdbg.recording-queries.v1": {
        "type": "object",
        "properties": {
          "protocol": {"const":"wxdbg.recording-queries.v1"},
          "queryRoots": {"type":"array","items":{"$ref":"#/$defs/queryCatalogRoot"}}
        },
        "required": ["protocol","queryRoots"],
        "allOf": [{"$ref":"#/$defs/envelope"}],
        "description": "Complete compiled catalog in deterministic order. Empty catalogs succeed; compiler errors fail the command without a partial catalog."
      },
      "wxdbg.investigation-list.v1": {
        "type": "object",
        "properties": {
          "protocol": {"const":"wxdbg.investigation-list.v1"},
          "casePrograms": {"type":"array","items":{"$ref":"#/$defs/investigationCatalogProgram"}}
        },
        "required": ["protocol","casePrograms"],
        "allOf": [{"$ref":"#/$defs/envelope"}],
        "description": "Complete compiled catalog in deterministic order. Empty catalogs succeed; compiler errors fail the command without a partial catalog."
      },
      "wxdbg.recording-frames.v1": {
        "description": "Per-frame metadata in ascending frame order. The selected inclusive window may be empty; unavailable telemetry is null.",
        "type": "object",
        "properties": {
          "protocol": {
            "const": "wxdbg.recording-frames.v1"
          },
          "frames": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "frame": {
                  "type": "integer",
                  "minimum": 0
                },
                "dataSize": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4294967295
                },
                "fnIds": {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 4294967295
                  }
                },
                "totalDurationNanos": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "maintenanceDurationNanos": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "totalAllocations": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 4294967295
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "promotedAllocations": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 4294967295
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "frame",
                "dataSize",
                "fnIds",
                "totalDurationNanos",
                "maintenanceDurationNanos",
                "totalAllocations",
                "promotedAllocations"
              ]
            }
          }
        },
        "required": [
          "protocol",
          "frames"
        ],
        "allOf": [
          {
            "$ref": "#/$defs/envelope"
          }
        ]
      },
      "wxdbg.recording-channels.v1": {
        "type": "object",
        "properties": {
          "protocol": {
            "const": "wxdbg.recording-channels.v1"
          },
          "frame": {
            "type": "integer",
            "minimum": 0
          },
          "stateSeed": {
            "type": "boolean"
          },
          "records": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "const": "channelStateSeedMark"
                    },
                    "valueCount": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 4294967295
                    }
                  },
                  "required": [
                    "type",
                    "valueCount"
                  ]
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "const": "channelValue"
                    },
                    "slot": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 65535
                    },
                    "size": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 4294967295
                    },
                    "payload": {
                      "$ref": "#/$defs/recordedTaggedValue"
                    }
                  },
                  "required": [
                    "type",
                    "slot",
                    "size",
                    "payload"
                  ]
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "const": "channelEvents"
                    },
                    "slot": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 65535
                    },
                    "count": {
                      "type": "integer",
                      "minimum": -2147483648,
                      "maximum": 2147483647
                    },
                    "size": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 4294967295
                    },
                    "valueHex": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "slot",
                    "count",
                    "size",
                    "valueHex"
                  ]
                }
              ]
            }
          }
        },
        "required": [
          "protocol",
          "frame",
          "stateSeed",
          "records"
        ],
        "allOf": [
          {
            "$ref": "#/$defs/envelope"
          }
        ],
        "description": "Host-to-Wax channel records in tape order for one recorded frame. A valid frame may have no records; an out-of-window frame fails."
      },
      "wxdbg.recording-inspect.v1": {
        "type": "object",
        "properties": {
          "protocol": {
            "const": "wxdbg.recording-inspect.v1"
          },
          "frames": {
            "type": "array",
            "items": {
              "$ref": "#/$defs/inspectionFrame"
            }
          }
        },
        "required": [
          "protocol",
          "frames"
        ],
        "allOf": [
          {
            "$ref": "#/$defs/envelope"
          }
        ],
        "description": "Recorded inspect document. Application-defined values retain the shared renderer vocabulary."
      },
      "wxdbg.recording-histogram.v1": {
        "type": "object",
        "properties": {
          "protocol": {
            "const": "wxdbg.recording-histogram.v1"
          },
          "frame": {
            "type": "integer",
            "minimum": 0
          },
          "totalObjects": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "totalBodyBytes": {
            "type": "integer",
            "minimum": 0
          },
          "totalBufferBytes": {
            "type": "integer",
            "minimum": 0
          },
          "types": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "typeId": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4294967295
                },
                "name": {
                  "type": "string"
                },
                "count": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4294967295
                },
                "bodyBytes": {
                  "type": "integer",
                  "minimum": 0
                },
                "bufferBytes": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "required": [
                "typeId",
                "name",
                "count",
                "bodyBytes",
                "bufferBytes"
              ]
            }
          }
        },
        "required": [
          "protocol",
          "frame",
          "totalObjects",
          "totalBodyBytes",
          "totalBufferBytes",
          "types"
        ],
        "allOf": [
          {
            "$ref": "#/$defs/envelope"
          }
        ],
        "description": "Recorded histogram document. Application-defined values retain the shared renderer vocabulary."
      },
      "wxdbg.recording-calls.v1": {
        "type": "object",
        "properties": {
          "protocol": {
            "const": "wxdbg.recording-calls.v1"
          },
          "calls": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "hostFnIndex": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4294967295
                },
                "name": {
                  "anyOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "string"
                    }
                  ]
                },
                "returnValue": {
                  "$ref": "#/$defs/recordedTaggedValue"
                },
                "error": {
                  "$ref": "#/$defs/recordedTaggedValue"
                }
              },
              "required": [
                "hostFnIndex",
                "name",
                "returnValue",
                "error"
              ]
            }
          }
        },
        "required": [
          "protocol",
          "calls"
        ],
        "allOf": [
          {
            "$ref": "#/$defs/envelope"
          }
        ],
        "description": "Recorded calls document. Application-defined values retain the shared renderer vocabulary."
      },
      "wxdbg.recording-timeline.v1": {
        "type": "object",
        "properties": {
          "protocol": {
            "const": "wxdbg.recording-timeline.v1"
          },
          "stableIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 0
            }
          },
          "frames": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "frame": {
                  "type": "integer",
                  "minimum": 0
                },
                "objects": {
                  "type": "array",
                  "items": {
                    "anyOf": [
                      {
                        "$ref": "#/$defs/inspectedObject"
                      },
                      {
                        "type": "object",
                        "properties": {
                          "stableId": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "live": {
                            "type": "boolean", "const": false
                          }
                        },
                        "required": [
                          "stableId",
                          "live"
                        ]
                      }
                    ]
                  }
                }
              },
              "required": [
                "frame",
                "objects"
              ]
            }
          }
        },
        "required": [
          "protocol",
          "stableIds",
          "frames"
        ],
        "allOf": [
          {
            "$ref": "#/$defs/envelope"
          }
        ],
        "description": "Recorded timeline document. Application-defined values retain the shared renderer vocabulary."
      },
      "wxdbg.recording-allocations.v1": {
        "type": "object",
        "properties": {
          "protocol": {
            "const": "wxdbg.recording-allocations.v1"
          },
          "startFrame": {
            "type": "integer",
            "minimum": 0
          },
          "endFrame": {
            "type": "integer",
            "minimum": 0
          },
          "frames": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "frame": {
                  "type": "integer",
                  "minimum": 0
                },
                "created": {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "minimum": 0
                  }
                },
                "destroyed": {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "minimum": 0
                  }
                }
              },
              "required": [
                "frame",
                "created",
                "destroyed"
              ]
            }
          }
        },
        "required": [
          "protocol",
          "startFrame",
          "endFrame",
          "frames"
        ],
        "allOf": [
          {
            "$ref": "#/$defs/envelope"
          }
        ],
        "description": "Recorded allocations document. Application-defined values retain the shared renderer vocabulary."
      },
      "wxdbg.recording-diff.v1": {
        "type": "object",
        "properties": {
          "protocol": {
            "const": "wxdbg.recording-diff.v1"
          },
          "fromFrame": {
            "type": "integer",
            "minimum": 0
          },
          "toFrame": {
            "type": "integer",
            "minimum": 0
          },
          "created": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "stableId": {
                  "type": "integer",
                  "minimum": 0
                },
                "type": {
                  "type": "string"
                },
                "atFrame": {
                  "type": "integer",
                  "minimum": 0
                },
                "body": {
                  "anyOf": [
                    {
                      "type": "null"
                    },
                    {
                      "$ref": "#/$defs/inspectedObject"
                    }
                  ]
                }
              },
              "required": [
                "stableId",
                "type",
                "atFrame",
                "body"
              ]
            }
          },
          "destroyed": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "stableId": {
                  "type": "integer",
                  "minimum": 0
                },
                "type": {
                  "type": "string"
                },
                "atFrame": {
                  "type": "integer",
                  "minimum": 0
                },
                "body": {
                  "anyOf": [
                    {
                      "type": "null"
                    },
                    {
                      "$ref": "#/$defs/inspectedObject"
                    }
                  ]
                }
              },
              "required": [
                "stableId",
                "type",
                "atFrame",
                "body"
              ]
            }
          },
          "modified": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "stableId": {
                  "type": "integer",
                  "minimum": 0
                },
                "before": {
                  "anyOf": [
                    {
                      "type": "null"
                    },
                    {
                      "$ref": "#/$defs/inspectedObject"
                    }
                  ]
                },
                "after": {
                  "anyOf": [
                    {
                      "type": "null"
                    },
                    {
                      "$ref": "#/$defs/inspectedObject"
                    }
                  ]
                },
                "changedFields": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "stableId",
                "before",
                "after",
                "changedFields"
              ]
            }
          }
        },
        "required": [
          "protocol",
          "fromFrame",
          "toFrame",
          "created",
          "destroyed",
          "modified"
        ],
        "allOf": [
          {
            "$ref": "#/$defs/envelope"
          }
        ],
        "description": "Recorded diff document. Application-defined values retain the shared renderer vocabulary."
      },
      "wxdbg.recording-input-schema.v1": {
        "type": "object",
        "properties": {
          "protocol": {
            "type": "string",
            "const": "wxdbg.recording-input-schema.v1"
          },
          "envelope": {
            "type": "object",
            "properties": {
              "channelInitialValues": {
                "type": "object",
                "properties": {
                  "shape": {
                    "type": "string",
                    "const": "channel-values"
                  },
                  "requiredValues": {
                    "type": "string",
                    "const": "complete"
                  }
                },
                "required": [
                  "shape",
                  "requiredValues"
                ]
              },
              "frameInputs": {
                "type": "object",
                "properties": {
                  "shape": {
                    "type": "string",
                    "const": "array"
                  },
                  "element": {
                    "type": "object",
                    "properties": {
                      "frameId": {
                        "type": "object",
                        "properties": {
                          "required": {
                            "type": "boolean",
                            "const": true
                          },
                          "type": {
                            "type": "object",
                            "properties": {
                              "kind": {
                                "type": "string",
                                "const": "int32"
                              }
                            },
                            "required": [
                              "kind"
                            ]
                          },
                          "minimum": {
                            "type": "integer", "minimum": 0, "maximum": 0
                          },
                          "exclusiveMaximum": {
                            "type": "string",
                            "const": "--frames"
                          }
                        },
                        "required": [
                          "required",
                          "type",
                          "minimum",
                          "exclusiveMaximum"
                        ]
                      },
                      "values": {
                        "type": "object",
                        "properties": {
                          "required": {
                            "type": "boolean",
                            "const": true
                          },
                          "shape": {
                            "type": "string",
                            "const": "channel-values"
                          },
                          "requiredValues": {
                            "type": "string",
                            "const": "partial"
                          }
                        },
                        "required": [
                          "required",
                          "shape",
                          "requiredValues"
                        ]
                      }
                    },
                    "required": [
                      "frameId",
                      "values"
                    ]
                  }
                },
                "required": [
                  "shape",
                  "element"
                ]
              }
            },
            "required": [
              "channelInitialValues",
              "frameInputs"
            ]
          },
          "groups": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "optional": {
                      "type": "boolean",
                      "const": false
                    },
                    "shape": {
                      "type": "string",
                      "const": "members"
                    },
                    "members": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string"
                          },
                          "mode": {
                            "type": "string",
                            "enum": [
                              "value",
                              "events"
                            ]
                          },
                          "initial": {
                            "type": "string",
                            "enum": [
                              "none",
                              "required",
                              "optional"
                            ]
                          },
                          "nullable": {
                            "type": "boolean"
                          },
                          "secret": {
                            "type": "boolean"
                          },
                          "atomic": {
                            "type": "boolean"
                          },
                          "type": {
                            "$ref": "#/$defs/catalogTypeDescriptor"
                          }
                        },
                        "required": [
                          "name",
                          "mode",
                          "initial",
                          "nullable",
                          "secret",
                          "atomic",
                          "type"
                        ]
                      }
                    }
                  },
                  "required": [
                    "name",
                    "optional",
                    "shape",
                    "members"
                  ]
                },
                {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "optional": {
                      "type": "boolean",
                      "const": true
                    },
                    "shape": {
                      "type": "string",
                      "const": "value"
                    },
                    "type": {
                      "$ref": "#/$defs/catalogTypeDescriptor"
                    }
                  },
                  "required": [
                    "name",
                    "optional",
                    "shape",
                    "type"
                  ]
                }
              ]
            }
          }
        },
        "required": [
          "protocol",
          "envelope",
          "groups"
        ],
        "allOf": [
          {
            "$ref": "#/$defs/envelope"
          }
        ],
        "description": "Versioned recording-input-schema document."
      },
      "wxdbg.recording-output-schema.v1": {
        "type": "object",
        "properties": {
          "protocol": {
            "type": "string",
            "const": "wxdbg.recording-output-schema.v1"
          },
          "groups": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "shape": {
                  "type": "string",
                  "const": "members"
                },
                "members": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "slot": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 4294967295
                      },
                      "mode": {
                        "type": "string",
                        "enum": [
                          "value",
                          "events"
                        ]
                      },
                      "changed": {
                        "type": "boolean"
                      },
                      "type": {
                        "$ref": "#/$defs/catalogTypeDescriptor"
                      }
                    },
                    "required": [
                      "name",
                      "slot",
                      "mode",
                      "changed",
                      "type"
                    ]
                  }
                }
              },
              "required": [
                "name",
                "shape",
                "members"
              ]
            }
          }
        },
        "required": [
          "protocol",
          "groups"
        ],
        "allOf": [
          {
            "$ref": "#/$defs/envelope"
          }
        ],
        "description": "Versioned recording-output-schema document."
      },
      "wxdbg.recording-continue-edited.v1": {
        "type": "object",
        "properties": {
          "protocol": {
            "type": "string",
            "const": "wxdbg.recording-continue-edited.v1"
          },
          "ok": {
            "type": "boolean"
          },
          "category": {
            "type": "string",
            "enum": [
              "success",
              "compile_failure",
              "build_not_capable",
              "edit_incompatible",
              "input_schema_incompatible",
              "recording_failure"
            ]
          },
          "reason": {
            "type": "string"
          },
          "symbol": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "symbolTruncated": {
            "type": "boolean"
          },
          "messageTruncated": {
            "type": "boolean"
          },
          "frame": {
            "type": "integer",
            "minimum": 0
          },
          "sourceFingerprint": {
            "type": "string"
          }
        },
        "required": [
          "protocol",
          "category",
          "message",
          "messageTruncated",
          "ok",
          "reason",
          "symbolTruncated"
        ],
        "allOf": [
          {
            "$ref": "#/$defs/envelope"
          }
        ],
        "description": "Versioned recording-continue-edited document."
      },
      "wxdbg.recording-mutations.v1": {
        "type": "object",
        "properties": {
          "protocol": {
            "type": "string",
            "const": "wxdbg.recording-mutations.v1"
          },
          "mutations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "frame": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4294967295
                },
                "functionId": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4294967295
                },
                "statementId": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4294967295
                },
                "watchId": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4294967295
                },
                "sizeBytes": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4294967295
                },
                "line": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4294967295
                },
                "column": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4294967295
                },
                "file": {
                  "type": "string"
                },
                "stableId": {
                  "type": "string"
                },
                "field": {
                  "type": "string"
                },
                "oldStableId": {
                  "type": "string"
                },
                "newStableId": {
                  "type": "string"
                },
                "old": {
                  "type": "string"
                },
                "new": {
                  "type": "string"
                },
                "oldHex": {
                  "type": "string"
                },
                "newHex": {
                  "type": "string"
                }
              },
              "required": [
                "frame",
                "functionId",
                "statementId",
                "watchId",
                "sizeBytes",
                "oldHex",
                "newHex"
              ]
            }
          }
        },
        "required": [
          "protocol",
          "mutations"
        ],
        "allOf": [
          {
            "$ref": "#/$defs/envelope"
          }
        ],
        "description": "Recorded field writes. Warnings remain diagnostic stderr; this document contains the recorded writes."
      },
      "wxdbg.investigation-run.v1": {
        "type": "object",
        "properties": {
          "protocol": {
            "type": "string",
            "const": "wxdbg.investigation-run.v1"
          },
          "value": {},
          "complete": {
            "type": "boolean"
          },
          "scans": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "roots": {
                  "type": "string"
                },
                "args": {
                  "type": "string"
                },
                "requested": {
                  "type": "object",
                  "properties": {
                    "from": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "to": {
                      "type": "integer",
                      "minimum": 0
                    }
                  },
                  "required": [
                    "from",
                    "to"
                  ]
                },
                "covered": {
                  "type": "object",
                  "properties": {
                    "from": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "to": {
                      "type": "integer",
                      "minimum": 0
                    }
                  },
                  "required": [
                    "from",
                    "to"
                  ]
                },
                "failure": {
                  "anyOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "enum": [
                            "panic",
                            "budgetExceeded",
                            "cancelled",
                            "infrastructure"
                          ]
                        },
                        "lane": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "frame": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "integer",
                              "minimum": 0
                            }
                          ]
                        },
                        "message": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "kind",
                        "lane",
                        "frame",
                        "message"
                      ]
                    }
                  ]
                }
              },
              "required": [
                "roots",
                "args",
                "requested",
                "covered",
                "failure"
              ]
            }
          }
        },
        "required": [
          "protocol",
          "value",
          "complete",
          "scans"
        ],
        "allOf": [
          {
            "$ref": "#/$defs/envelope"
          }
        ],
        "description": "Typed application return value and ordered scan shortfalls. complete is authoritative even when scans is empty."
      },
      "wxdbg.eval.v1": {
        "description": "Evaluation value. Native JSON uses representation value and preserves the row/inspection renderer. Browser evaluation uses representation display and carries formatted text plus its value type.",
        "type": "object",
        "allOf": [
          {
            "$ref": "#/$defs/envelope"
          }
        ],
        "properties": {
          "protocol": {
            "const": "wxdbg.eval.v1"
          },
          "result": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "representation": {
                    "const": "value"
                  },
                  "value": {}
                },
                "required": [
                  "representation",
                  "value"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "representation": {
                    "const": "display"
                  },
                  "value": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string"
                      },
                      "type": {
                        "type": "string"
                      },
                      "name": {
                        "type": "null"
                      }
                    },
                    "required": [
                      "value",
                      "type",
                      "name"
                    ]
                  }
                },
                "required": [
                  "representation",
                  "value"
                ]
              }
            ]
          }
        },
        "required": [
          "protocol",
          "result"
        ]
      },
      "wxdbg.recording-outputs.v1": {
        "type": "object",
        "properties": {
          "protocol": {
            "type": "string",
            "const": "wxdbg.recording-outputs.v1"
          },
          "groups": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "shape": {
                  "type": "string",
                  "const": "members"
                },
                "members": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "slot": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 4294967295
                      },
                      "mode": {
                        "type": "string",
                        "enum": [
                          "value",
                          "events"
                        ]
                      },
                      "changed": {
                        "type": [
                          "boolean",
                          "null"
                        ]
                      },
                      "type": {
                        "$ref": "#/$defs/catalogTypeDescriptor"
                      },
                      "supportsChanges": {
                        "type": "boolean"
                      },
                      "value": {}
                    },
                    "required": [
                      "name",
                      "slot",
                      "mode",
                      "changed",
                      "type",
                      "supportsChanges",
                      "value"
                    ]
                  }
                }
              },
              "required": [
                "name",
                "shape",
                "members"
              ]
            }
          },
          "frame": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "protocol",
          "groups",
          "frame"
        ],
        "allOf": [
          {
            "$ref": "#/$defs/envelope"
          }
        ],
        "description": "Named API-channel register values and event batches after frame close."
      }
    },
    "wire": {
      "wxdbg.context.v1": {
        "required": ["status","frame.atBoundary","watchpointHit.watchId","watchpointHit.functionId","watchpointHit.statementId","stack.depth","stack.frames","stack.frames[].index","locals.frameDepth","locals.variables","locals.variables[].parameter","objects[].stableId","breakpoints","breakpoints[].file","breakpoints[].line","source.startLine","source.endLine","source.lines","source.lines[].line","source.lines[].text","source.lines[].current"],
        "forbidden": ["crash","frame","watchpointHit","locals.variables[].fields","objects[].object","generation","resumed","protocol","warnings"]
      },
      "wxdbg.breakpoints.v1": {
        "required": ["breakpoints[].file","breakpoints[].line","change.action","change.item.file","change.item.line","change.items[].file","change.items[].line"],
        "forbidden": ["protocol","warnings"]
      }
    }
  },
  "responseSchemas": {
    "EvalResult": {"document":"wxdbg.eval.v1","carriedIn":"result","description":"Evaluation value with explicit value or display representation."},
    "InvestigationRunResult": {"document": "wxdbg.investigation-run.v1", "carriedIn": "result", "description": "Typed application return value and ordered scan shortfalls. complete is authoritative even when scans is empty."},
    "ArtifactMutationsResult": {"document": "wxdbg.recording-mutations.v1", "carriedIn": "result", "description": "Recorded field writes. Warnings remain diagnostic stderr; this document contains the recorded writes."},
    "RecordingContinueEditedResult": {"document": "wxdbg.recording-continue-edited.v1", "carriedIn": "result", "description": "Versioned recording-continue-edited document."},
    "RecordingOutputSchemaResult": {"document": "wxdbg.recording-output-schema.v1", "carriedIn": "result", "description": "Versioned recording-output-schema document."},
    "RecordingInputSchemaResult": {"document": "wxdbg.recording-input-schema.v1", "carriedIn": "result", "description": "Versioned recording-input-schema document."},
    "RecordingDiffResult": {"document": "wxdbg.recording-diff.v1", "carriedIn": "result", "description": "Recorded diff document."},
    "RecordingAllocationsResult": {"document": "wxdbg.recording-allocations.v1", "carriedIn": "result", "description": "Recorded allocations document."},
    "RecordingTimelineResult": {"document": "wxdbg.recording-timeline.v1", "carriedIn": "result", "description": "Recorded timeline document."},
    "RecordingCallsResult": {"document": "wxdbg.recording-calls.v1", "carriedIn": "result", "description": "Recorded calls document."},
    "RecordingHistogramResult": {"document": "wxdbg.recording-histogram.v1", "carriedIn": "result", "description": "Recorded histogram document."},
    "RecordingInspectResult": {"document": "wxdbg.recording-inspect.v1", "carriedIn": "result", "description": "Recorded inspect document."},
    "RecordingChannelsResult": {"document":"wxdbg.recording-channels.v1","carriedIn":"result","description":"Recorded host-channel inputs for one frame."},
    "RecordingFramesResult": {"document":"wxdbg.recording-frames.v1","carriedIn":"result","description":"Per-frame metadata for the selected inclusive window, with nullable telemetry."},
    "InvestigationListResult": {"document": "wxdbg.investigation-list.v1", "carriedIn": "result", "description": "Complete compiled catalog in deterministic order. Empty catalogs succeed; compiler errors fail the command without a partial catalog."},
    "RecordingQueriesResult": {"document": "wxdbg.recording-queries.v1", "carriedIn": "result", "description": "Complete compiled catalog in deterministic order. Empty catalogs succeed; compiler errors fail the command without a partial catalog."},
    "RecordingHostFnMethodsResult": {"document": "wxdbg.recording-hosts.v1", "carriedIn": "result", "description": "Recorded Wax-to-host imports. An application with no referenced host functions returns an empty methods array."},
    "RecordingApiMethodsResult": {"document": "wxdbg.recording-api.v1", "carriedIn": "result", "description": "Recorded host-to-Wax entry points."},
    "RecordingTypesResult": {
      "document": "wxdbg.recording-types.v1",
      "carriedIn": "result",
      "description": "Debugger type metadata, including array elements, enum cases and object fields."
    },
    "FindFramesResult": { "document": "wxdbg.find.v1", "carriedIn": "result", "description": "Predicate matches with exact search coverage." },
    "RecordingQueryResult": { "document": "wxdbg.query.v1", "carriedIn": "result", "description": "Ordered typed values or a projected column table." },
    "RecordingInfoResult": { "document": "wxdbg.recording-info.v1", "carriedIn": "result", "description": "Recording identity and storage metadata." },
    "RecordingRepackResult": { "document": "wxdbg.recording-repack.v1", "carriedIn": "result", "description": "Keyframe-retention rewrite statistics." },
    "StatusResult": { "document": "wxdbg.status.v1", "carriedIn": "result", "description": "Where the session is bound and what is armed. The wire answer adds `protocolVersion`, `busy`, `capabilities` and the stored `head`, which are the page's own bookkeeping and not part of the document." },
    "CommandHelpResult": { "document": "wxdbg.command.v1", "carriedIn": "result", "description": "One command's operands, options, result document and error codes." },
    "CommandCapabilitiesResult": { "document": "wxdbg.capabilities.v1", "carriedIn": "result", "description": "Every command this surface supports, with its result document, text rendering and error codes." },
    "DebugContextResult": { "document": "wxdbg.context.v1", "carriedIn": "result", "description": "The whole stop: status, location, stack, the locals of the frame the caller named, the objects it asked to have rendered, what is armed, and the source window it asked for. Members are spelled as the document spells them, so a caller copies them rather than translating." },
    "RunResult": { "document": "wxdbg.context.v1", "carriedIn": "context", "description": "Whether the program ran to completion, the warnings it raised, and -- when it stopped -- the whole stop in `context`." },
    "StopResult": { "document": "wxdbg.context.v1", "carriedIn": "context", "description": "A transport that moved the program: the stop it landed on, in `context`." },
    "StackResult": { "document": "wxdbg.context.v1", "carriedIn": "context", "description": "The stored head, with the stop in `context` -- locals left out, since a stack listing is not about the frame's variables." },
    "LocalsResult": { "document": "wxdbg.context.v1", "carriedIn": "context", "description": "The stored head, with the stop in `context` and its `locals` read from the requested frame." },
    "ObjectInspectResult": { "document": "wxdbg.context.v1", "carriedIn": "context", "description": "The rendered objects, with the stop in `context` and the same objects under its `objects` member." },
    "ConfigResult": { "document": "wxdbg.config.v1", "carriedIn": "result", "description": "One configuration key and its value." },
    "BreakpointResult": { "document": "wxdbg.breakpoints.v1", "carriedIn": "result", "description": "What the mutation did and the resulting list. The wire answer adds `breakpointsText`, the page's own store spelling, which is not part of the document." },
    "ListBreakpointsResult": { "document": "wxdbg.breakpoints.v1", "carriedIn": "result", "description": "The armed breakpoints as `{file, line, condition}` rows. The wire answer adds `breakpointsText`, the page's own store spelling, which is not part of the document." },
    "ListBreakableLinesResult": { "document": "wxdbg.breakable.v1", "carriedIn": "result", "description": "The lines a breakpoint can bind to, by file." },
    "WatchpointConfigResult": { "document": "wxdbg.watchpoints.v1", "carriedIn": "result", "description": "What the mutation did and the resulting watch targets." },
    "WatchpointListResult": { "document": "wxdbg.watchpoints.v1", "carriedIn": "result", "description": "The watch targets this session holds." },
    "MutationLogConfigResult": { "document": "wxdbg.mutations.v1", "carriedIn": "result", "description": "What the mutation did and the resulting mutation targets." },
    "MutationLogListResult": { "document": "wxdbg.mutations.v1", "carriedIn": "result", "description": "The mutation targets this session holds." },
    "MutationLogReadResult": { "document": "wxdbg.mutation-log.v1", "carriedIn": "result", "description": "The recorded mutation entries, parsed." },
    "CreateRecordingResult": { "document": "wxdbg.recording.v1", "carriedIn": "result", "description": "The recording a completed run produced." },
    "EditApplyResult": { "document": "wxdbg.edit-apply.v1", "carriedIn": "result", "description": "Whether the edit landed, at which tier, and what carried over. The wire answer adds the refreshed head and run state, which are not part of the document." },
    "RecordingOutputsResult": {
      "document": "wxdbg.recording-outputs.v1",
      "carriedIn": "result",
      "description": "Completed-frame API-channel output values."
    }
  },
  "commands": [
    {
      "canonical": "status",
      "agent": { "browserExecute": true },
      "category": "state",
      "description": "Read current execution state and source location.",
      "directJs": { "names": ["statusWxdbgCommand"], "facadeNames": ["status"], "support": "implemented" },
      "agentWire": { "verbs": ["status"], "events": ["stopped", "exited", "error"], "completion": "response-or-event", "capability": "base" },
      "cli": {
        "aliases": ["status"], "support": "native-and-wasm", "sessionless": true, "textRendering": true, "resultDocument": "wxdbg.status.v1",
        "operands": [],
        "options": [],
        "errors": []
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "StatusRequest", "response": "StatusResult", "event": "StatusEvent" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs; wire:WxLiveAgent/controller",
      "coverage": ["direct-js-api", "agent-wire", "cli"]
    },
    {
      "canonical": "discovery.help",
      "category": "discovery",
      "description": "Describe waxdbg commands and target support.",
      "directJs": {
        "names": ["help"],
        "facadeNames": ["help"],
        "support": "facade"
      },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["help"],
        "support": "any",
        "resultDocument": "wxdbg.command.v1", "textRendering": true,
        "operands": [{"name": "command", "required": true, "multiple": true, "description": "the command to describe, as typed; run 'waxdbg --help' for the overview or 'waxdbg capabilities' for the whole catalog"}],
        "options": [{"spelling": "--verbose", "description": "include the registry record behind the command"}],
        "errors": []
      },
      "state": {
        "requiresPaused": false,
        "mutatesExecution": false,
        "generationBound": false
      },
      "schemas": {
        "request": "CommandHelpRequest",
        "response": "CommandHelpResult"
      },
      "owner": "command registry discovery helpers; CLI/browser facade presentation",
      "coverage": ["cli", "browser-facade"]
    },
    {
      "canonical": "discovery.capabilities",
      "agent": { "browserExecute": true },
      "category": "discovery",
      "description": "List waxdbg commands supported by the current target surface.",
      "directJs": {
        "names": ["commands"],
        "facadeNames": ["commands"],
        "support": "facade"
      },
      "agentWire": {
        "verbs": [],
        "responses": [],
        "events": [],
        "completion": "none",
        "capability": "none"
      },
      "cli": {
        "aliases": ["capabilities"],
        "support": "any",
        "resultDocument": "wxdbg.capabilities.v1", "textRendering": true,
        "operands": [],
        "options": [{"spelling": "--supported", "description": "list only the commands the current target supports"}],
        "errors": []
      },
      "state": {
        "requiresPaused": false,
        "mutatesExecution": false,
        "generationBound": false
      },
      "schemas": {
        "request": "CommandCapabilitiesRequest",
        "response": "CommandCapabilitiesResult"
      },
      "owner": "command registry discovery helpers; CLI/browser facade presentation",
      "coverage": ["cli", "browser-facade"]
    },
    {
      "canonical": "debug.context",
      "agent": { "browserExecute": true },
      "category": "inspect",
      "description": "Re-read the current stop without moving it: the same document every stop prints.",
      "directJs": { "names": ["debugContext"], "facadeNames": ["context"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["context"], "support": "native-and-wasm", "textRendering": true, "resultDocument": "wxdbg.context.v1",
        "operands": [],
        "options": [{"spelling": "--frame", "value": "N", "constant": "kWxdbgFrame", "min": 0, "max": 2147483647, "description": "the stack frame to read locals from (0 is the innermost)"}, {"spelling": "--object", "value": "@ID", "multiple": true, "description": "an object to render into the stop, by stable id; repeatable"}, {"spelling": "--depth", "value": "N", "constant": "kWxdbgObjectDepth", "min": 0, "max": 2147483647, "requires": "--object", "description": "how many levels of nested objects to render"}],
        "errors": ["browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "frame_out_of_range", "invalid_project_config", "no_debugger_target", "no_head", "read_failed", "stale_head", "unsupported_runtime"],
        "examples": ["waxdbg context", "waxdbg context --frame 1", "waxdbg context --object @65001d --depth 2"]
      },
      "state": { "requiresPaused": true, "mutatesExecution": false, "generationBound": true },
      "schemas": { "request": "DebugContextRequest", "response": "DebugContextResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "native CLI replay-to-HEAD context; direct-js:wxdbg-api.mjs composition over status/stack/locals/source/breakpoints; wxdbg-session.mjs stateful facade",
      "coverage": ["direct-js-api", "cli"]
    },
    {
      "canonical": "session.init",
      "category": "session",
      "description": "Bind a debugger session directory to a Wax project.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["init"], "support": "native", "sessionless": true, "resultDocument": "wxdbg.status.v1", "textRendering": true,
        "operands": [],
        "options": [{"spelling": "--internal-project-root", "value": "dir", "description": "bind this directory as the project root without discovery (used by wax)"}],
        "errors": ["project_not_found"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "SessionInitRequest", "response": "SessionInitResult" },
      "owner": "native-cli session storage",
      "coverage": ["cli"]
    },
    {
      "canonical": "session.attach",
      "category": "session",
      "description": "Attach a debugger session directory to a target.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["attach"], "support": "browser-wasm", "sessionless": true, "resultDocument": "wxdbg.status.v1", "textRendering": true, "unsupportedReason": "this session already targets a native program; run 'waxdbg detach' or 'waxdbg cache clear' before attaching a browser URL",
        "operands": [{"name": "url", "required": true, "description": "the http:// or https:// page hosting the Wasm target"}],
        "options": [{"spelling": "--port", "value": "N", "constant": "kWxdbgBridgePort", "min": 0, "max": 65535, "description": "the loopback port the page allows for the bridge"}, {"spelling": "--pair", "description": "print the pairing document for the page's connection dialog"}, {"spelling": "--controller", "value": "path", "description": "attach through an existing controller descriptor instead of starting a bridge"}, {"spelling": "--descriptor", "value": "path", "description": "alias of --controller"}],
        "errors": ["bad_request", "browser_unavailable"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "SessionAttachRequest", "response": "SessionAttachResult" },
      "owner": "native-cli session target storage; future bridge launcher/discovery",
      "coverage": ["cli"]
    },
    {
      "canonical": "session.detach",
      "category": "session",
      "description": "Detach the current debugger target from a session directory.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["detach"], "support": "browser-wasm", "sessionless": true, "resultDocument": "wxdbg.status.v1", "textRendering": true,
        "operands": [],
        "options": [],
        "errors": []
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "SessionDetachRequest", "response": "SessionDetachResult" },
      "owner": "native-cli session target storage",
      "coverage": ["cli"]
    },
    {
      "canonical": "session.gui",
      "category": "session",
      "description": "Open or stop the native-backed debugger desktop window.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["gui"], "support": "sessionless", "sessionless": true, "textRendering": true,
        "operands": [{"name": "target", "required": false, "description": "a .wxs recording to open, or `stop` to stop the running GUI"}],
        "options": [{"spelling": "--foreground", "description": "keep the GUI in the foreground"}, {"spelling": "--no-open", "description": "start the GUI server without the desktop window, printing its URL instead"}],
        "errors": ["bad_request", "missing_gui"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "GuiRequest", "response": "GuiResult" },
      "owner": "native-cli desktop GUI launcher and native live/replay agents",
      "coverage": ["cli"]
    },
    {
      "canonical": "session.cacheClear",
      "category": "session",
      "description": "Reset debugger scratch state while preserving the project binding.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["cache clear"], "support": "native-and-wasm", "resultDocument": "wxdbg.status.v1", "textRendering": true,
        "operands": [],
        "options": [{"spelling": "--all", "description": "also clear the user-wide replay keyframe cache"}],
        "errors": []
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "CacheClearRequest", "response": "CacheClearResult" },
      "owner": "native-cli session storage",
      "coverage": ["cli"]
    },
    {
      "canonical": "session.configGet",
      "category": "session",
      "description": "Read a debugger session setting.",
      "directJs": { "names": ["configGet"], "facadeNames": ["configGet"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["config get"], "support": "sessionless", "textRendering": true, "resultDocument": "wxdbg.config.v1",
        "operands": [{"name": "key", "required": true, "description": "the setting to read"}],
        "options": [],
        "errors": ["config_unreadable", "unknown_config_key"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "ConfigGetRequest", "response": "ConfigResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "native-cli .waxdbg/config; direct-js wxdbg-session.mjs in-memory settings",
      "coverage": ["cli", "direct-js-api"]
    },
    {
      "canonical": "session.configSet",
      "category": "session",
      "description": "Update a debugger session setting.",
      "directJs": { "names": ["configSet"], "facadeNames": ["configSet"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["config set"], "support": "sessionless", "resultDocument": "wxdbg.config.v1", "textRendering": true,
        "operands": [{"name": "key", "required": true, "description": "the setting to write"}, {"name": "value", "required": true, "description": "its new value"}],
        "options": [],
        "errors": ["config_unreadable", "config_unwritable", "unknown_config_key"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "ConfigSetRequest", "response": "ConfigResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "native-cli .waxdbg/config; direct-js wxdbg-session.mjs in-memory settings",
      "coverage": ["cli", "direct-js-api"]
    },
    {
      "canonical": "run",
      "category": "control",
      "description": "Start execution until completion or first pause.",
      "directJs": { "names": ["runWxdbgCommandWithWatchpoints", "runWxdbgCommand"], "facadeNames": ["run"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["run"], "support": "native-and-wasm", "textRendering": true, "resultDocument": "wxdbg.context.v1",
        "operands": [],
        "options": [{"spelling": "--backend", "value": "c|native", "description": "run on this local backend instead of the session's"}],
        "errors": ["browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "invalid_project_config", "no_debugger_target", "read_failed", "unsupported_backend", "unsupported_runtime"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": true, "generationBound": false },
      "schemas": { "request": "RunRequest", "response": "RunResult", "event": "StopEvent" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs; native-cli execution launch",
      "coverage": ["direct-js-api", "cli"]
    },
    {
      "canonical": "continue",
      "category": "control",
      "description": "Resume forward execution until next pause or completion.",
      "directJs": { "names": ["resumeWxdbgCommandWithWatchpoints", "resumeWxdbgCommand"], "facadeNames": ["continue"], "support": "implemented" },
      "agentWire": { "verbs": ["continue"], "events": ["stopped", "exited", "error"], "completion": "event", "capability": "base" },
      "cli": {
        "aliases": ["continue"], "support": "native-and-wasm", "textRendering": true, "resultDocument": "wxdbg.context.v1",
        "operands": [],
        "options": [],
        "errors": ["browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "invalid_project_config", "no_debugger_target", "read_failed", "stale_head", "unsupported_runtime"]
      },
      "state": { "requiresPaused": true, "mutatesExecution": true, "generationBound": true },
      "schemas": { "request": "ContinueRequest", "response": "StopResult", "event": "StopEvent" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs; wire:WxLiveAgent/controller",
      "coverage": ["direct-js-api", "agent-wire", "cli"]
    },
    {
      "canonical": "step.into",
      "category": "control",
      "description": "Resume until the next statement, entering calls.",
      "directJs": { "names": ["resumeWxdbgCommandWithWatchpoints", "resumeWxdbgCommand"], "facadeNames": ["step"], "support": "implemented" },
      "agentWire": { "verbs": ["stepInto"], "events": ["stopped", "exited", "error"], "completion": "event", "capability": "step" },
      "cli": {
        "aliases": ["step"], "support": "native-and-wasm", "textRendering": true, "resultDocument": "wxdbg.context.v1",
        "operands": [],
        "options": [],
        "errors": ["browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "invalid_project_config", "no_debugger_target", "no_head", "read_failed", "stale_head", "unsupported_runtime"]
      },
      "state": { "requiresPaused": true, "mutatesExecution": true, "generationBound": true },
      "schemas": { "request": "StepRequest", "response": "StopResult", "event": "StopEvent" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs; wire:WxLiveAgent/controller",
      "coverage": ["direct-js-api", "agent-wire", "cli"]
    },
    {
      "canonical": "step.over",
      "category": "control",
      "description": "Resume until the next statement at the same or shallower logical depth.",
      "directJs": { "names": ["resumeWxdbgCommandWithWatchpoints", "resumeWxdbgCommand"], "facadeNames": ["next"], "support": "implemented" },
      "agentWire": { "verbs": ["stepOver"], "events": ["stopped", "exited", "error"], "completion": "event", "capability": "step" },
      "cli": {
        "aliases": ["next"], "support": "native-and-wasm", "textRendering": true, "resultDocument": "wxdbg.context.v1",
        "operands": [],
        "options": [],
        "errors": ["browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "invalid_project_config", "no_debugger_target", "no_head", "read_failed", "stale_head", "unsupported_runtime"]
      },
      "state": { "requiresPaused": true, "mutatesExecution": true, "generationBound": true },
      "schemas": { "request": "StepRequest", "response": "StopResult", "event": "StopEvent" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs; wire:WxLiveAgent/controller",
      "coverage": ["direct-js-api", "agent-wire", "cli"]
    },
    {
      "canonical": "step.out",
      "category": "control",
      "description": "Resume until execution exits the current logical depth.",
      "directJs": { "names": ["resumeWxdbgCommandWithWatchpoints", "resumeWxdbgCommand"], "facadeNames": ["out"], "support": "implemented" },
      "agentWire": { "verbs": ["stepOut"], "events": ["stopped", "exited", "error"], "completion": "event", "capability": "step" },
      "cli": {
        "aliases": ["out"], "support": "native-and-wasm", "textRendering": true, "resultDocument": "wxdbg.context.v1",
        "operands": [],
        "options": [],
        "errors": ["browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "invalid_project_config", "no_debugger_target", "no_head", "read_failed", "stale_head", "unsupported_runtime"]
      },
      "state": { "requiresPaused": true, "mutatesExecution": true, "generationBound": true },
      "schemas": { "request": "StepRequest", "response": "StopResult", "event": "StopEvent" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs; wire:WxLiveAgent/controller",
      "coverage": ["direct-js-api", "agent-wire", "cli"]
    },
    {
      "canonical": "pause",
      "category": "control",
      "description": "Request a cooperative pause while execution is running.",
      "directJs": { "names": ["pause"], "facadeNames": ["pause"], "support": "facade" },
      "agentWire": { "verbs": ["pause"], "events": ["stopped", "error"], "completion": "event", "capability": "pause" },
      "cli": {
        "aliases": ["pause"], "support": "native-and-wasm", "sessionless": false, "textRendering": true, "resultDocument": "wxdbg.context.v1",
        "operands": [],
        "options": [{"spelling": "--endpoint", "value": "socket-path", "description": "the live app's WAX_DEBUG_LISTEN socket"}, {"spelling": "--timeout", "value": "seconds", "constant": "kWxdbgPauseTimeoutSeconds", "min": 1, "max": 3600, "description": "how long to wait for the stop"}],
        "errors": ["app_exited", "browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "connect_failed", "handshake_failed", "incompatible_agent", "no_debugger_target", "pause_timeout", "pause_unsupported", "wire_error"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": true, "generationBound": false },
      "schemas": { "request": "PauseRequest", "response": "StopResult", "event": "StopEvent" },
      "owner": "cli:wxdbg_main.c CmdPause; browser facade:wxdbg-agent.mjs worker-control path; wire:WxLiveAgent/controller",
      "coverage": ["agent-wire", "cli", "browser-facade"]
    },
    {
      "canonical": "run.toLocation",
      "category": "control",
      "description": "Run until a specific source location is reached.",
      "directJs": { "names": ["runToLocation"], "facadeNames": ["runToLocation"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["run-to"], "support": "native-and-wasm", "textRendering": true, "resultDocument": "wxdbg.context.v1",
        "operands": [{"name": "location", "required": true, "description": "a source position, <file>:<line>, with the path relative to the project"}],
        "options": [],
        "errors": ["bad_location", "browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "invalid_project_config", "no_debugger_target", "read_failed", "unsupported_runtime"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": true, "generationBound": false },
      "schemas": { "request": "RunToLocationRequest", "response": "StopResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs/wxdbg-session.mjs; native-cli breakpoint/session composition",
      "coverage": ["direct-js-api", "cli"]
    },
    {
      "canonical": "stack",
      "category": "inspect",
      "description": "Read call stack at the current pause.",
      "directJs": { "names": ["stackWxdbgCommand"], "facadeNames": ["stack"], "support": "implemented" },
      "agentWire": { "verbs": ["stack"], "events": ["error"], "completion": "response", "capability": "inspect" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": true, "mutatesExecution": false, "generationBound": true },
      "schemas": { "request": "StackRequest", "response": "StackResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs; wire:WxLiveAgent/controller",
      "coverage": ["direct-js-api", "agent-wire"]
    },
    {
      "canonical": "locals",
      "category": "inspect",
      "description": "Read visible locals for a selected stack frame at the current pause point.",
      "directJs": { "names": ["localsWxdbgCommand"], "facadeNames": ["locals"], "support": "implemented" },
      "agentWire": { "verbs": ["locals"], "events": ["error"], "completion": "response", "capability": "inspect" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": true, "mutatesExecution": false, "generationBound": true },
      "schemas": { "request": "LocalsRequest", "response": "LocalsResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs; shared:DebuggerLocals; wire:WxLiveAgent/controller",
      "coverage": ["direct-js-api", "agent-wire"]
    },
    {
      "canonical": "inspect.object",
      "category": "inspect",
      "description": "Render an object by stable id.",
      "directJs": { "names": ["inspectWxdbgCommand"], "facadeNames": ["inspect"], "support": "implemented" },
      "agentWire": { "verbs": ["object"], "events": ["error"], "completion": "response-plus-blob", "capability": "inspect" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": true, "mutatesExecution": false, "generationBound": true },
      "schemas": { "request": "ObjectInspectRequest", "response": "ObjectInspectResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs/wxdbg-core.wasm; shared:DebuggerInspect/DebuggerJsonRender; wire:WxLiveAgent/controller",
      "coverage": ["direct-js-api", "agent-wire"]
    },
    {
      "canonical": "type.info",
      "category": "inspect",
      "description": "Read type metadata for a debugger type id.",
      "directJs": { "names": ["type"], "facadeNames": ["type"], "support": "implemented" },
      "agentWire": { "verbs": ["type"], "events": ["error"], "completion": "response", "capability": "inspect" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "TypeInfoRequest", "response": "TypeInfoResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs sidecar type index; wire:WxLiveAgent/controller",
      "coverage": ["direct-js-api", "agent-wire"]
    },
    {
      "canonical": "breakpoint.set",
      "category": "breakpoint",
      "description": "Set a source breakpoint.",
      "directJs": { "names": ["setBreakpoint"], "facadeNames": ["break.set"], "support": "implemented" },
      "agentWire": { "verbs": ["setBreakpoint"], "responses": ["breakpoint"], "events": ["error"], "completion": "response", "capability": "breakpoints" },
      "cli": {
        "aliases": ["break add"], "support": "native-and-wasm", "resultDocument": "wxdbg.breakpoints.v1", "textRendering": true,
        "operands": [{"name": "location", "required": true, "description": "a source position, <file>:<line>, with the path relative to the project"}],
        "options": [{"spelling": "--if", "value": "expression", "description": "arm only when the expression holds"}],
        "errors": ["bad_condition", "bad_location", "bad_request", "browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "io_error", "no_debugger_target"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "SetBreakpointRequest", "response": "BreakpointResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs/wxdbg-session.mjs; native/wire:WxLiveAgent/controller",
      "coverage": ["direct-js-api", "agent-wire", "cli"]
    },
    {
      "canonical": "breakpoint.clear",
      "category": "breakpoint",
      "description": "Clear one source breakpoint and any stale condition.",
      "directJs": { "names": ["clearBreakpoint"], "facadeNames": ["break.clear"], "support": "implemented" },
      "agentWire": { "verbs": ["clearBreakpoint"], "responses": ["breakpoint"], "events": ["error"], "completion": "response", "capability": "breakpoints" },
      "cli": {
        "aliases": ["break clear"], "support": "native-and-wasm", "resultDocument": "wxdbg.breakpoints.v1", "textRendering": true,
        "operands": [{"name": "location", "required": false, "description": "a source position, <file>:<line>, with the path relative to the project"}],
        "options": [{"spelling": "--all", "description": "clear every breakpoint instead of one"}],
        "errors": ["bad_location", "bad_request", "browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "io_error", "no_debugger_target"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "ClearBreakpointRequest", "response": "BreakpointResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs/wxdbg-session.mjs; native/wire:WxLiveAgent/controller",
      "coverage": ["direct-js-api", "agent-wire", "cli"]
    },
    {
      "canonical": "breakpoint.clearAll",
      "category": "breakpoint",
      "description": "Clear all configured session breakpoints.",
      "directJs": { "names": ["clearAllBreakpoints"], "facadeNames": ["break.clearAll"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "ClearAllBreakpointsRequest", "response": "BreakpointResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs/wxdbg-session.mjs; native-cli session storage",
      "coverage": ["direct-js-api"]
    },
    {
      "canonical": "breakpoint.list",
      "category": "breakpoint",
      "description": "List configured session breakpoints.",
      "directJs": { "names": ["listBreakpoints"], "facadeNames": ["break.list"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["break list"], "support": "native-and-wasm", "textRendering": true, "resultDocument": "wxdbg.breakpoints.v1",
        "operands": [],
        "options": [],
        "errors": ["bad_request", "browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "io_error", "no_debugger_target"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "ListBreakpointsRequest", "response": "ListBreakpointsResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs/wxdbg-session.mjs; native-cli session storage",
      "coverage": ["direct-js-api", "cli"]
    },
    {
      "canonical": "breakpoint.listBreakable",
      "category": "breakpoint",
      "description": "List source lines that can accept a breakpoint.",
      "directJs": { "names": ["listBreakableLines"], "facadeNames": ["break.listBreakable"], "support": "implemented" },
      "agentWire": { "verbs": ["breakableLines"], "responses": [], "events": ["error"], "completion": "response-plus-blob", "capability": "source" },
      "cli": {
        "aliases": ["break breakable"], "support": "native-and-wasm", "textRendering": true, "resultDocument": "wxdbg.breakable.v1",
        "operands": [{"name": "file", "required": false, "description": "narrow to one source file"}],
        "options": [],
        "errors": ["bad_request", "browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "io_error", "no_breakable_lines", "no_debugger_target"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "ListBreakableLinesRequest", "response": "ListBreakableLinesResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs/wxdbg-session.mjs; wire:active compiler breakable-line provider; native-cli breakable-lines cache",
      "coverage": ["direct-js-api", "agent-wire", "cli"]
    },
    {
      "canonical": "watchpoint.add",
      "category": "watchpoint",
      "description": "Configure break-on-write for one or more target fields.",
      "directJs": { "names": ["watchpointAdd"], "facadeNames": ["watchpoint.add"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["watchpoint add"], "support": "native", "resultDocument": "wxdbg.watchpoints.v1", "textRendering": true,
        "operands": [{"name": "target", "required": true, "multiple": true, "description": "a field to watch, @<sid>.<field> or static.<field>"}],
        "options": [],
        "errors": ["invalid_project_config", "io_error", "out_of_memory", "read_failed", "stale_head", "unsupported_runtime"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "WatchpointAddRequest", "response": "WatchpointConfigResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "native-cli current; direct-js session watch target parser/storage",
      "coverage": ["direct-js-api", "cli"]
    },
    {
      "canonical": "watchpoint.list",
      "category": "watchpoint",
      "description": "List configured break-on-write targets.",
      "directJs": { "names": ["watchpointList"], "facadeNames": ["watchpoint.list"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["watchpoint list"], "support": "native", "textRendering": true, "resultDocument": "wxdbg.watchpoints.v1",
        "operands": [],
        "options": [],
        "errors": ["invalid_project_config", "io_error", "out_of_memory", "read_failed", "stale_head", "unsupported_runtime"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "WatchpointListRequest", "response": "WatchpointListResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "native-cli current; direct-js session watch target parser/storage",
      "coverage": ["direct-js-api", "cli"]
    },
    {
      "canonical": "watchpoint.clear",
      "category": "watchpoint",
      "description": "Clear one or all break-on-write targets.",
      "directJs": { "names": ["watchpointClear"], "facadeNames": ["watchpoint.clear"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["watchpoint clear"], "support": "native", "resultDocument": "wxdbg.watchpoints.v1", "textRendering": true,
        "operands": [{"name": "target", "required": false, "description": "the field to stop watching"}],
        "options": [{"spelling": "--all", "description": "stop watching every field instead of one"}],
        "errors": ["invalid_project_config", "io_error", "out_of_memory", "read_failed", "stale_head", "unsupported_runtime"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "WatchpointClearRequest", "response": "WatchpointConfigResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "native-cli current; direct-js session watch target parser/storage",
      "coverage": ["direct-js-api", "cli"]
    },
    {
      "canonical": "mutationLog.add",
      "category": "mutationLog",
      "description": "Configure log-on-write for one or more target fields.",
      "directJs": { "names": ["mutationLogAdd"], "facadeNames": ["mutationLog.add"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["mutation add"], "support": "native", "resultDocument": "wxdbg.mutations.v1", "textRendering": true,
        "operands": [{"name": "target", "required": true, "multiple": true, "description": "a field to log writes of, @<sid>.<field> or static.<field>"}],
        "options": [],
        "errors": ["invalid_project_config", "io_error", "out_of_memory", "read_failed", "stale_head", "unsupported_runtime"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "MutationLogAddRequest", "response": "MutationLogConfigResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs/wxdbg-session.mjs session-local mutation target config; native-cli persisted .waxdbg/mutations",
      "coverage": ["cli", "direct-js-api"]
    },
    {
      "canonical": "mutationLog.list",
      "category": "mutationLog",
      "description": "List configured log-on-write targets.",
      "directJs": { "names": ["mutationLogList"], "facadeNames": ["mutationLog.list"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["mutation list"], "support": "native", "textRendering": true, "resultDocument": "wxdbg.mutations.v1",
        "operands": [],
        "options": [],
        "errors": ["invalid_project_config", "io_error", "out_of_memory", "read_failed", "stale_head", "unsupported_runtime"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "MutationLogListRequest", "response": "MutationLogListResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs/wxdbg-session.mjs session-local mutation target config; native-cli persisted .waxdbg/mutations",
      "coverage": ["cli", "direct-js-api"]
    },
    {
      "canonical": "mutationLog.clear",
      "category": "mutationLog",
      "description": "Clear one or all log-on-write targets.",
      "directJs": { "names": ["mutationLogClear"], "facadeNames": ["mutationLog.clear"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["mutation clear"], "support": "native", "resultDocument": "wxdbg.mutations.v1", "textRendering": true,
        "operands": [{"name": "target", "required": false, "description": "the field to stop logging"}],
        "options": [{"spelling": "--all", "description": "stop logging every field instead of one"}],
        "errors": ["invalid_project_config", "io_error", "out_of_memory", "read_failed", "stale_head", "unsupported_runtime"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "MutationLogClearRequest", "response": "MutationLogConfigResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs/wxdbg-session.mjs session-local mutation target config; native-cli persisted .waxdbg/mutations",
      "coverage": ["cli", "direct-js-api"]
    },
    {
      "canonical": "mutationLog.read",
      "category": "mutationLog",
      "description": "Read persisted or live mutation log entries.",
      "directJs": { "names": ["readMutationLog"], "facadeNames": ["mutationLog.read"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": { "aliases": ["mutation log"], "support": "native-and-wasm", "resultDocument": "wxdbg.mutation-log.v1", "textRendering": true, "operands": [], "options": [], "errors": ["browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "mutation_log_corrupt", "no_debugger_target"] },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "MutationLogReadRequest", "response": "MutationLogReadResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs/wxdbg-session.mjs latest-run field-write log; native-cli mutation log",
      "coverage": ["direct-js-api", "cli"]
    },
    {
      "canonical": "recording.create",
      "agent": { "browserExecute": true },
      "category": "recording",
      "description": "Create a self-contained recording from a live target, optionally staging typed per-frame channel inputs, and select it as the session's active analysis recording. The native GUI answers with `recordingFile` and `byteLength` rather than the bytes; the page reads them from `session-file/<recordingFile>` relative to the debugger page.",
      "directJs": { "names": ["createRecording"], "facadeNames": ["recording.create"], "support": "implemented" },
      "agentWire": { "verbs": ["createRecording"], "events": ["error"], "completion": "response-plus-blob", "capability": "recording-create" },
      "cli": {
        "aliases": ["recording create"], "support": "native", "targetKinds": ["native-live"], "resultDocument": "wxdbg.recording.v1", "textRendering": true,
        "operands": [{"name": "output", "required": true, "description": "the .wxs file to write"}],
        "options": [{"spelling": "--frames", "value": "N", "constant": "kWxdbgRecordingFrameCount", "min": 1, "max": 2147483647, "description": "how many frames to record"}, {"spelling": "--inputs", "value": "file", "description": "typed channel initial values and per-frame inputs"}, {"spelling": "--keyframe-interval", "value": "K", "constant": "kWxdbgKeyframeInterval", "min": 1, "max": 2147483647, "description": "take a keyframe every K frames"}, {"spelling": "--include-keyframes", "description": "store keyframes in the recording"}, {"spelling": "--no-compress", "description": "write the recording uncompressed"}, {"spelling": "--profile", "description": "write <output>.profile.json from the same frames"}, {"spelling": "--profile-include", "value": "regex", "description": "profile only the functions matching this pattern"}, {"spelling": "--profile-exclude", "value": "regex", "description": "leave the functions matching this pattern out of the profile"}],
        "errors": ["invalid_project_config", "invalid_recording_inputs", "no_sources", "open_session_failed", "out_of_memory", "profile_setup_failed", "profile_write_failed", "run_failed", "session_write_failed", "unsupported_runtime", "write_failed", "write_refused"],
        "notes": "Runs the bound Wax project and writes a .wxs recording; use `waxdbg init` first. Recording stops if Update returns false. The default maximum is 600 frames; a one-shot recording defaults to one frame and only accepts --frames 1. --inputs applies typed channelInitialValues and explicit frameInputs; run `waxdbg recording input-schema` to discover the accepted groups and types. Embedded apps must record through their host. For short recordings, --include-keyframes takes a keyframe every frame unless --keyframe-interval is set. --profile writes <output>.profile.json from the same frames; WAX_PROFILE_OUT overrides that path and WAX_PROFILE_SUMMARY=1 selects summary output.",
        "examples": ["waxdbg recording create rec.wxs --frames 30 --include-keyframes", "waxdbg recording info rec.wxs", "waxdbg recording inspect rec.wxs --frame 0", "waxdbg recording timeline rec.wxs @<stable-id>", "waxdbg recording mutations rec.wxs @<stable-id>.<field>"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": true },
      "schemas": { "request": "CreateRecordingRequest", "response": "CreateRecordingResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "wire:WxLiveAgent/controller; native-cli recording creation; direct-js:wxdbg-session.mjs browser run recording",
      "coverage": ["agent-wire", "cli", "direct-js-api"]
    },
    {
      "canonical": "recording.inputSchema",
      "category": "recording",
      "description": "Compile the bound project and describe the typed channel-input envelope accepted by recording creation.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "controller", "capability": "none" },
      "cli": {
        "aliases": ["recording input-schema"], "support": "native", "targetKinds": ["native-live"], "resultDocument": "wxdbg.recording-input-schema.v1", "textRendering": false,
        "operands": [],
        "options": [],
        "errors": ["open_session_failed", "schema_failed"],
        "notes": "Compiles the bound project and prints the typed channel-input schema accepted by `recording create --inputs`. Use `waxdbg init` first."
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": true },
      "schemas": { "request": "RecordingInputSchemaRequest", "response": "RecordingInputSchemaResult" },
      "validation": { "directJsRequestSchema": false },
      "owner": "native CLI/compiler channel-input schema; native GUI session recording setup",
      "coverage": ["cli", "agent-wire"]
    },
    {
      "canonical": "recording.createProgress",
      "category": "recording",
      "description": "Read the session's in-flight recording creation: its run id, its phase (queued, building, recording, finishing, or idle when none is running), and the frames taken against the frames the recorder will take.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "controller", "capability": "none" },
      "cli": { "aliases": [], "support": "none", "jsonOutput": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "CreateRecordingProgressRequest", "response": "CreateRecordingProgressResult" },
      "validation": { "directJsRequestSchema": false },
      "owner": "native GUI controller recording progress",
      "coverage": ["agent-wire"]
    },
    {
      "canonical": "recording.createStop",
      "category": "recording",
      "description": "Ask the named run to stop after the current frame, keeping or discarding what it captured. Accepted only while that run is still recording, so an accepted stop is one the session will honour.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "controller", "capability": "none" },
      "cli": { "aliases": [], "support": "none", "jsonOutput": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": true, "generationBound": false },
      "schemas": { "request": "CreateRecordingStopRequest", "response": "CreateRecordingStopResult" },
      "validation": { "directJsRequestSchema": false },
      "owner": "native GUI controller recording lifecycle",
      "coverage": ["agent-wire"]
    },
    {
      "canonical": "recording.outputSchema",
      "category": "recording",
      "description": "Compile the bound project and describe the typed app-to-host channel output schema.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["recording output-schema"], "support": "native", "targetKinds": ["native-live"], "resultDocument": "wxdbg.recording-output-schema.v1", "textRendering": false,
        "operands": [],
        "options": [],
        "errors": ["open_session_failed", "schema_failed"],
        "notes": "Compiles the bound project and prints the typed app-to-host channel schema. Use `waxdbg init` first."
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": true },
      "schemas": { "request": "RecordingOutputSchemaRequest", "response": "RecordingOutputSchemaResult" },
      "validation": { "directJsRequestSchema": false },
      "owner": "native CLI/compiler channel-output schema",
      "coverage": ["cli"]
    },
    {
      "canonical": "recording.outputs",
      "category": "recording",
      "description": "Read named API-channel outputs at a completed recording frame.",
      "directJs": {
        "names": [
          "recordingOutputs"
        ],
        "facadeNames": [
          "recording.outputs"
        ],
        "support": "implemented"
      },
      "agentWire": {
        "verbs": [],
        "responses": [],
        "events": [],
        "completion": "none",
        "capability": "none"
      },
      "cli": {
        "aliases": [
          "recording outputs"
        ],
        "support": "sessionless",
        "sessionless": true,
        "resultDocument": "wxdbg.recording-outputs.v1",
        "textRendering": false,
        "operands": [
          {
            "name": "recording",
            "required": true,
            "description": "the .wxs recording to read"
          }
        ],
        "options": [
          {
            "spelling": "--frame",
            "value": "N",
            "constant": "kWxdbgFrame",
            "min": 0,
            "max": 2147483647,
            "required": true,
            "description": "the completed frame whose output values to read"
          }
        ],
        "errors": [
          "compiler_version_mismatch",
          "empty_recording",
          "frame_out_of_range",
          "open_session_failed",
          "output_read_failed",
          "read_failed",
          "replay_failed"
        ]
      },
      "state": {
        "requiresPaused": false,
        "mutatesExecution": false,
        "generationBound": false
      },
      "schemas": {
        "request": "RecordingOutputsRequest",
        "response": "RecordingOutputsResult"
      },
      "validation": {
        "directJsRequestSchema": true
      },
      "owner": "native and browser recording replay with shared typed output renderer",
      "coverage": [
        "direct-js-api",
        "cli"
      ]
    },
    {
      "canonical": "recording.select",
      "category": "recording",
      "description": "Select the session's active analysis recording without creating a replay target or moving execution.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["recording select"], "support": "native-and-wasm", "targetKinds": ["native-live", "native-replay", "browser-wasm"], "resultDocument": "wxdbg.status.v1", "textRendering": true,
        "operands": [{"name": "recording", "required": true, "description": "the .wxs recording to make the active analysis recording"}],
        "options": [],
        "errors": ["compiler_version_mismatch", "read_failed", "session_write_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "RecordingSelectRequest", "response": "RecordingSelectResult" },
      "validation": { "directJsRequestSchema": false },
      "owner": "native CLI active analysis recording selection",
      "coverage": ["cli"]
    },
    {
      "canonical": "recording.open",
      "category": "recording",
      "description": "Activate a recording staged in the debugger session directory in a native GUI replay target. `file` names one .wxs file the page uploaded to, or a run staged under, the session-file route; opening it moves it to a name of the session's own.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "controller", "capability": "timetravel" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": true, "generationBound": false },
      "schemas": { "request": "OpenRecordingRequest", "response": "RecordingInfoResult" },
      "validation": { "directJsRequestSchema": false },
      "owner": "native GUI controller target lifecycle",
      "coverage": ["agent-wire"]
    },
    {
      "canonical": "recording.investigationSources",
      "category": "recording",
      "description": "Read the portable investigation source snapshot from the active native GUI recording.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "controller", "capability": "none" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "RecordingInvestigationSourcesRequest", "response": "RecordingInvestigationSourcesResult" },
      "validation": { "directJsRequestSchema": false },
      "owner": "native GUI host recording container service",
      "coverage": ["agent-wire"]
    },
    {
      "canonical": "recording.exportInvestigations",
      "category": "recording",
      "description": "Create a derived copy of the active native GUI recording with a replacement investigation snapshot.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "controller", "capability": "none" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "RecordingExportInvestigationsRequest", "response": "RecordingExportInvestigationsResult" },
      "validation": { "directJsRequestSchema": false },
      "owner": "native GUI host recording container service",
      "coverage": ["agent-wire"]
    },
    {
      "canonical": "recording.exportInvestigationsChunk",
      "category": "recording",
      "description": "Read the next bounded chunk of a native GUI investigated-recording download.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "controller", "capability": "none" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "RecordingExportInvestigationsChunkRequest", "response": "RecordingExportInvestigationsChunkResult" },
      "validation": { "directJsRequestSchema": false },
      "owner": "native GUI host recording download service",
      "coverage": ["agent-wire"]
    },
    {
      "canonical": "recording.exportInvestigationsClose",
      "category": "recording",
      "description": "Close and remove a native GUI investigated-recording download.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "controller", "capability": "none" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "RecordingExportInvestigationsCloseRequest", "response": "EmptyResult" },
      "validation": { "directJsRequestSchema": false },
      "owner": "native GUI host recording download service",
      "coverage": ["agent-wire"]
    },
    {
      "canonical": "investigation.draftLoad",
      "category": "investigation",
      "description": "Load one authenticated native GUI investigation recovery record.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "controller", "capability": "none" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "InvestigationDraftIdentityRequest", "response": "InvestigationDraftRecord" },
      "validation": { "directJsRequestSchema": false },
      "owner": "native GUI host .waxdbg investigation draft store",
      "coverage": ["agent-wire"]
    },
    {
      "canonical": "investigation.draftSave",
      "category": "investigation",
      "description": "Compare-and-swap one authenticated native GUI investigation recovery record.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "controller", "capability": "none" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "InvestigationDraftSaveRequest", "response": "InvestigationDraftSaveResult" },
      "validation": { "directJsRequestSchema": false },
      "owner": "native GUI host .waxdbg investigation draft store",
      "coverage": ["agent-wire"]
    },
    {
      "canonical": "investigation.draftDelete",
      "category": "investigation",
      "description": "Delete one authenticated native GUI investigation recovery record.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "controller", "capability": "none" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "InvestigationDraftIdentityRequest", "response": "InvestigationDraftSaveResult" },
      "validation": { "directJsRequestSchema": false },
      "owner": "native GUI host .waxdbg investigation draft store",
      "coverage": ["agent-wire"]
    },
    {
      "canonical": "source.draftLoad",
      "category": "source",
      "description": "Load one authenticated native GUI application-source recovery record.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "controller", "capability": "none" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "SourceDraftIdentityRequest", "response": "SourceDraftRecord" },
      "validation": { "directJsRequestSchema": false },
      "owner": "native GUI host .waxdbg source draft store",
      "coverage": ["agent-wire"]
    },
    {
      "canonical": "source.draftSave",
      "category": "source",
      "description": "Compare-and-swap one authenticated native GUI application-source recovery record.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "controller", "capability": "none" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "SourceDraftSaveRequest", "response": "SourceDraftSaveResult" },
      "validation": { "directJsRequestSchema": false },
      "owner": "native GUI host .waxdbg source draft store",
      "coverage": ["agent-wire"]
    },
    {
      "canonical": "source.draftDelete",
      "category": "source",
      "description": "Delete one authenticated native GUI application-source recovery record.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "controller", "capability": "none" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "SourceDraftDeleteRequest", "response": "SourceDraftSaveResult" },
      "validation": { "directJsRequestSchema": false },
      "owner": "native GUI host .waxdbg source draft store",
      "coverage": ["agent-wire"]
    },
    {
      "canonical": "target.openLive",
      "category": "session",
      "description": "Replace a native GUI replay target with a fresh live native target.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "controller", "capability": "base" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": true, "generationBound": false },
      "schemas": { "request": "StatusRequest", "response": "StatusResult" },
      "validation": { "directJsRequestSchema": false },
      "owner": "native GUI controller target lifecycle",
      "coverage": ["agent-wire"]
    },
    {
      "canonical": "recording.continueEdited",
      "category": "recording",
      "description": "Compile the bound project, start it with a fresh heap, and feed it a recording's inputs from frame zero to the requested frame.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["recording continue-edited"], "support": "native", "resultDocument": "wxdbg.recording-continue-edited.v1", "textRendering": false,
        "operands": [{"name": "recording", "required": true, "description": "the .wxs recording to read"}],
        "options": [{"spelling": "--frame", "value": "N", "constant": "kWxdbgFrame", "min": 0, "max": 2147483647, "required": true, "description": "the frame to replay the edited build through"}],
        "errors": []
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "RecordingContinueEditedRequest", "response": "RecordingContinueEditedResult" },
      "validation": { "directJsRequestSchema": false },
      "owner": "WxReplayEngine edited-input replay; native-cli one-shot adapter",
      "coverage": ["cli"]
    },
    {
      "canonical": "source.bundle",
      "category": "source",
      "description": "Read the source bundle for the debug target.",
      "directJs": { "names": ["sourceBundle"], "facadeNames": ["source.bundle"], "support": "implemented" },
      "agentWire": { "verbs": ["sourceBundle"], "events": ["error"], "completion": "response-plus-blob", "capability": "source" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "SourceBundleRequest", "response": "SourceBundleResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs/wxdbg-session.mjs sidecar source bundle; wire:WxLiveAgent/controller",
      "coverage": ["direct-js-api", "agent-wire"]
    },
    {
      "canonical": "source.read",
      "category": "source",
      "description": "Read exact source text for selected debug source paths.",
      "directJs": { "names": ["sourceRead"], "facadeNames": ["source.read"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "source" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "SourceReadRequest", "response": "SourceReadResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs/wxdbg-session.mjs selected sidecar source reads",
      "coverage": ["direct-js-api"]
    },
    {
      "canonical": "source.materialize",
      "category": "source",
      "description": "Mirror the attached target source bundle to a local directory.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["source materialize"], "support": "browser-wasm", "resultDocument": "wxdbg.source-materialize.v2", "textRendering": false,
        "operands": [],
        "options": [{"spelling": "--output", "value": "dir", "required": true, "description": "where to write the sources"}],
        "errors": ["bad_request", "browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "io_error", "no_debugger_target"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "SourceMaterializeRequest", "response": "SourceMaterializeResult" },
      "owner": "native-cli source bundle materializer",
      "coverage": ["cli"]
    },
    {
      "canonical": "agent.bootstrap",
      "category": "automation",
      "description": "Create a local agent workspace for an attached browser target.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["agent bootstrap"], "support": "browser-wasm", "resultDocument": "wxdbg.agent-bootstrap.v1", "textRendering": false,
        "operands": [],
        "options": [{"spelling": "--output", "value": "dir", "required": true, "description": "where to write the briefing"}, {"spelling": "--around", "value": "N", "constant": "kWxdbgBootstrapAround", "min": 0, "max": 50, "default": 0, "atMinimum": "leaves the window out", "description": "source lines on each side of the stop in the embedded stop document", "why": "spelled here rather than inherited from wxdbg.context.v1's own --around because agent bootstrap writes a briefing, not a wxdbg document, so cli.documentOptions cannot reach it"}],
        "errors": ["bad_request", "browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "io_error", "no_debugger_target"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "AgentBootstrapRequest", "response": "AgentBootstrapResult" },
      "owner": "native-cli agent workspace bootstrapper",
      "coverage": ["cli"]
    },
    {
      "canonical": "agent.serve",
      "category": "automation",
      "description": "Serve the local bring-your-own-agent MCP endpoint over stdio.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["agent serve"], "ownsStdout": true, "support": "sessionless", "sessionless": true, "textRendering": false,
        "operands": [],
        "options": [{"spelling": "--agent-name", "value": "name", "description": "how the client is named in the audit log"}, {"spelling": "--grant", "value": "effect", "multiple": true, "description": "grant an effect for the session; repeatable"}, {"spelling": "--grant-ttl-seconds", "value": "N", "constant": "kWxdbgGrantTtlSeconds", "min": 1, "max": 3600, "description": "how long a grant lasts"}, {"spelling": "--command-timeout-ms", "value": "N", "constant": "kWxdbgCommandTimeoutMs", "min": 1, "max": 3600000, "description": "how long one command may run"}],
        "errors": []
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "AgentServeRequest", "response": "AgentServeResult" },
      "owner": "native-cli launcher for the bundled wxdbg MCP stdio server",
      "coverage": ["cli"]
    },
    {
      "canonical": "source.highlights",
      "category": "source",
      "description": "Read syntax/source highlight spans for one source file.",
      "directJs": { "names": ["sourceHighlights"], "facadeNames": ["source.highlights"], "support": "implemented" },
      "agentWire": { "verbs": ["sourceHighlights"], "events": ["error"], "completion": "response-plus-blob", "capability": "source" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "SourceHighlightsRequest", "response": "SourceHighlightsResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "direct-js:wxdbg-api.mjs/wxdbg-session.mjs sidecar source bundle highlights; wire:WxLiveAgent/controller; shared:DebuggerArtifacts",
      "coverage": ["agent-wire", "direct-js-api"]
    },
    {
      "canonical": "replay.frameInfo",
      "category": "replay",
      "description": "Read current replay position metadata.",
      "directJs": { "names": ["frameInfo"], "facadeNames": ["replay.frameInfo"], "support": "implemented" },
      "agentWire": { "verbs": ["frameInfo"], "events": ["error"], "completion": "response", "capability": "timetravel" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": true, "mutatesExecution": false, "generationBound": true },
      "schemas": { "request": "FrameInfoRequest", "response": "FrameInfoResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "wire:WxReplayAgent/WxReplayEngine; browser-session frame readout of the head's position",
      "coverage": ["agent-wire", "direct-js-api"]
    },
    {
      "canonical": "replay.seekFrame",
      "agent": { "browserExecute": true },
      "category": "replay",
      "description": "Bind a recording to the session and move the replay cursor to an absolute frame boundary.",
      "directJs": {
        "names": ["seekFrame"],
        "facadeNames": ["replay.seekFrame"],
        "support": "implemented",
        "state": { "requiresPaused": false, "generationBound": false }
      },
      "agentWire": { "verbs": ["seekFrame"], "events": ["stopped", "error"], "completion": "event", "capability": "timetravel" },
      "cli": {
        "aliases": ["seek"], "support": "native", "textRendering": true, "resultDocument": "wxdbg.context.v1",
        "operands": [{"name": "recording", "required": false, "description": "the .wxs recording to bind; omitted keeps the bound one"}],
        "options": [{"spelling": "--frame", "value": "N", "constant": "kWxdbgFrame", "min": 0, "max": 2147483647, "description": "the frame to land on"}, {"spelling": "--break-on-frame", "value": "N", "constant": "kWxdbgFrame", "min": 0, "max": 2147483647, "multiple": true, "description": "seed the match queue with this frame; repeatable"}],
        "errors": ["read_failed"]
      },
      "state": { "requiresPaused": true, "mutatesExecution": true, "generationBound": true },
      "schemas": { "request": "SeekFrameRequest", "response": "StopResult", "event": "StopEvent" },
      "validation": { "directJsRequestSchema": true },
      "owner": "wire:WxReplayAgent/WxReplayEngine; native-cli scrub; browser-session execution to the frame -- a recording the session holds is the program's own history, so a seek runs to the frame and hands back an ordinary head",
      "coverage": ["agent-wire", "cli", "direct-js-api"]
    },
    {
      "canonical": "replay.stepBack",
      "category": "replay",
      "description": "Step back one statement at the current call depth -- the inverse of next, so it does not descend into a call the forward step passed over.",
      "directJs": { "names": ["stepBack", "stepBackStatement"], "facadeNames": ["replay.stepBack"], "support": "implemented" },
      "agentWire": { "verbs": ["stepBack"], "events": ["stopped", "error"], "completion": "event", "capability": "timetravel" },
      "cli": {
        "aliases": ["step-back"], "support": "native-and-wasm", "textRendering": true, "resultDocument": "wxdbg.context.v1",
        "operands": [],
        "options": [],
        "errors": ["browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "invalid_project_config", "no_debugger_target", "no_head", "read_failed", "stale_head", "unsupported_runtime"]
      },
      "state": { "requiresPaused": true, "mutatesExecution": true, "generationBound": true },
      "schemas": { "request": "StepBackRequest", "response": "StopResult", "event": "StopEvent" },
      "validation": { "directJsRequestSchema": true },
      "owner": "wire:WxReplayAgent/WxReplayEngine; native-cli step-back; browser-session statement re-execution. Every implementation re-executes to the previous statement at the starting call depth.",
      "coverage": ["agent-wire", "cli", "direct-js-api"]
    },
    {
      "canonical": "replay.stepBackInto",
      "category": "replay",
      "description": "Step back one statement in execution order -- the inverse of step, so it descends into the call the forward step passed over.",
      "directJs": { "names": ["stepBackIntoStatement"], "facadeNames": ["replay.stepBackInto"], "support": "implemented" },
      "agentWire": { "verbs": ["stepBackInto"], "events": ["stopped", "error"], "completion": "event", "capability": "timetravel" },
      "cli": {
        "aliases": ["step-back-into"], "support": "native-and-wasm", "textRendering": true, "resultDocument": "wxdbg.context.v1",
        "operands": [],
        "options": [],
        "errors": ["browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "invalid_project_config", "no_debugger_target", "no_head", "read_failed", "stale_head", "unsupported_runtime"]
      },
      "state": { "requiresPaused": true, "mutatesExecution": true, "generationBound": true },
      "schemas": { "request": "StepBackRequest", "response": "StopResult", "event": "StopEvent" },
      "validation": { "directJsRequestSchema": true },
      "owner": "wire:WxReplayAgent/WxReplayEngine; native-cli step-back-into; browser-session statement re-execution. Always executes: there is no frame-cursor reading of the previous statement in execution order.",
      "coverage": ["agent-wire", "cli", "direct-js-api"]
    },
    {
      "canonical": "replay.continueBack",
      "category": "replay",
      "description": "Run backwards to the previous breakpoint hit -- the inverse of continue. Breakpoint hits only: a watchpoint stop between them is not a candidate. Searching a match queue backwards is replay.prevMatch.",
      "directJs": { "names": ["continueBackStatement"], "facadeNames": ["replay.continueBack"], "support": "implemented" },
      "agentWire": { "verbs": ["continueBack"], "events": ["stopped", "error"], "completion": "event", "capability": "timetravel" },
      "cli": {
        "aliases": ["continue-back"], "support": "native-and-wasm", "textRendering": true, "resultDocument": "wxdbg.context.v1",
        "operands": [],
        "options": [],
        "errors": ["browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "invalid_project_config", "no_debugger_target", "no_head", "read_failed", "stale_head", "unsupported_runtime"]
      },
      "state": { "requiresPaused": true, "mutatesExecution": true, "generationBound": true },
      "schemas": { "request": "ContinueBackRequest", "response": "StopResult", "event": "StopEvent" },
      "validation": { "directJsRequestSchema": true },
      "owner": "wire:WxReplayAgent/WxReplayEngine; native-cli continue-back; browser-session re-execution to the previous breakpoint",
      "coverage": ["agent-wire", "cli", "direct-js-api"]
    },
    {
      "canonical": "replay.rollToFrame",
      "category": "replay",
      "description": "Move replay cursor to a frame entry boundary.",
      "directJs": { "names": ["rollToFrame"], "facadeNames": ["replay.rollToFrame"], "support": "implemented" },
      "agentWire": { "verbs": ["rollToFrame"], "events": ["stopped", "error"], "completion": "event", "capability": "timetravel" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": true, "mutatesExecution": true, "generationBound": true },
      "schemas": { "request": "RollToFrameRequest", "response": "StopResult", "event": "StopEvent" },
      "validation": { "directJsRequestSchema": true },
      "owner": "wire:WxReplayAgent/WxReplayEngine; browser-session execution to the frame",
      "coverage": ["agent-wire", "direct-js-api"]
    },
    {
      "canonical": "replay.nextMatch",
      "category": "replay",
      "description": "Move to the next frame in the session match queue seeded by scrub.",
      "directJs": { "names": ["nextMatch"], "facadeNames": ["replay.nextMatch"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["next-match"], "support": "native", "textRendering": true, "resultDocument": "wxdbg.context.v1",
        "operands": [],
        "options": [],
        "errors": ["read_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": true, "generationBound": false },
      "schemas": { "request": "NextMatchRequest", "response": "StopResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "native-cli match queue; browser-session match queue",
      "coverage": ["cli", "direct-js-api"]
    },
    {
      "canonical": "replay.prevMatch",
      "category": "replay",
      "description": "Move to the previous frame in the session match queue seeded by scrub.",
      "directJs": { "names": ["prevMatch"], "facadeNames": ["replay.prevMatch"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["prev-match"], "support": "native", "textRendering": true, "resultDocument": "wxdbg.context.v1",
        "operands": [],
        "options": [],
        "errors": ["read_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": true, "generationBound": false },
      "schemas": { "request": "PrevMatchRequest", "response": "StopResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "native-cli match queue; browser-session match queue",
      "coverage": ["cli", "direct-js-api"]
    },
    {
      "canonical": "recording.repack",
      "category": "recording",
      "description": "Rewrite a recording with fewer keyframes without replaying the application.",
      "directJs": { "names": [], "facadeNames": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["recording repack"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.recording-repack.v1", "textRendering": false,
        "operands": [{"name": "input", "required": true, "description": "the .wxs recording to rewrite"}, {"name": "output", "required": true, "description": "a new .wxs path; existing files are refused"}],
        "options": [{"spelling": "--keep-keyframes", "value": "N", "constant": "kWxdbgKeepKeyframes", "min": 1, "max": 2147483647, "required": true, "description": "maximum keyframes to retain; one keeps the initial replay anchor"}],
        "errors": ["bad_request", "invalid_recording", "out_of_memory", "read_failed", "write_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "RecordingRepackRequest", "response": "RecordingRepackResult" },
      "owner": "recording container rewriter; native-cli adapter",
      "coverage": ["cli"]
    },
    {
      "canonical": "recording.info",
      "agent": { "browserExecute": true },
      "category": "recording",
      "description": "Read recording metadata without replaying program state.",
      "directJs": { "names": ["recordingInfo"], "facadeNames": ["recording.info"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["recording info"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.recording-info.v1", "textRendering": false,
        "operands": [{"name": "recording", "required": true, "description": "the .wxs recording to read"}],
        "options": [],
        "errors": ["bad_request", "read_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "RecordingInfoRequest", "response": "RecordingInfoResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "shared recording metadata reader; native-cli adapter; direct-js:wxdbg-core metadata bridge",
      "coverage": ["direct-js-api", "cli"]
    },
    {
      "canonical": "recording.frames",
      "category": "recording",
      "description": "Read per-frame metadata over a selected frame range.",
      "directJs": { "names": ["recordingFrames"], "facadeNames": ["recording.frames"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["recording frames"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.recording-frames.v1", "textRendering": false,
        "operands": [{"name": "recording", "required": true, "description": "the .wxs recording to read"}],
        "options": [{"spelling": "--frame", "value": "N", "constant": "kWxdbgFrame", "min": 0, "max": 2147483647, "description": "one frame"}, {"spelling": "--range", "value": "A:B", "description": "an inclusive frame range; A: or :B leaves that end open"}],
        "errors": ["bad_request", "read_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "RecordingFramesRequest", "response": "RecordingFramesResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "shared recording metadata reader; native-cli adapter; direct-js:wxdbg-core metadata bridge",
      "coverage": ["direct-js-api", "cli"]
    },
    {
      "canonical": "recording.inspect",
      "category": "recording",
      "description": "Render heap state at a recording frame boundary.",
      "directJs": { "names": ["recordingInspect"], "facadeNames": ["recording.inspect"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["recording inspect"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.recording-inspect.v1", "textRendering": true,
        "operands": [{"name": "recording", "required": true, "description": "the .wxs recording to read"}],
        "options": [{"spelling": "--frame", "value": "N", "constant": "kWxdbgFrame", "min": 0, "max": 2147483647, "description": "the frame to inspect"}, {"spelling": "--range", "value": "A:B", "description": "sweep an inclusive frame range, A: or :B leaving that end open (JSON only)"}, {"spelling": "--object", "value": "@ID", "description": "narrow to one object"}, {"spelling": "--depth", "value": "N", "constant": "kWxdbgObjectDepth", "min": 0, "max": 2147483647, "description": "how many levels of nested objects to render"}, {"spelling": "--fields", "value": "a,b,c", "description": "the fields to include in a range sweep"}, {"spelling": "--show-offsets", "description": "include raw heap byte offsets"}],
        "errors": ["bad_request", "compiler_version_mismatch", "frame_out_of_range", "object_not_found", "open_session_failed", "output_too_large", "read_failed", "replay_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "RecordingInspectRequest", "response": "RecordingInspectResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "shared WxdbgRecordingInspect handler; native-cli adapter; direct-js re-executes wasm app and renders frame snapshots with wxdbg-core",
      "coverage": ["cli", "direct-js-api"]
    },
    {
      "canonical": "recording.types",
      "category": "recording",
      "description": "Read debugger type metadata as a versioned document; an unmatched name returns an empty types array.",
      "directJs": { "names": ["recordingTypes"], "facadeNames": ["recording.types"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["recording types"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.recording-types.v1", "textRendering": false,
        "operands": [{"name": "recording", "required": true, "description": "the .wxs recording to read"}],
        "options": [{"spelling": "--name", "value": "FQN", "description": "one type, by fully qualified name"}],
        "errors": ["bad_request", "dump_failed", "open_session_failed", "read_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "RecordingTypesRequest", "response": "RecordingTypesResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "shared WxdbgRecordingTypes handler; native-cli adapter; direct-js:wxdbg-core manifest type-index bridge",
      "coverage": ["direct-js-api", "cli"]
    },
    {
      "canonical": "recording.queries",
      "category": "recording",
      "description": "Build and list the query roots of a recording's merged query source set, using the session's active recording when the CLI path is omitted. Native CLI precedence is workspace library, embedded recording snapshot, repeatable --query-dir, then repeatable --file; --no-query-library removes only the workspace layer. Browser and direct-JS callers, which read no filesystem, supply the merged set as `sources` buffers instead.",
      "directJs": { "names": ["recordingQueries"], "facadeNames": ["recording.queries"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["recording queries"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.recording-queries.v1", "textRendering": false,
        "operands": [{"name": "recording", "required": false, "description": "the .wxs recording to read; omitted uses the session's active analysis recording"}],
        "options": [{"spelling": "--file", "value": "query.wax", "multiple": true, "description": "a query source file; repeatable"}, {"spelling": "--query-dir", "value": "dir", "multiple": true, "description": "a directory of query sources; repeatable"}, {"spelling": "--no-query-library", "description": "leave out the bound project's query library"}, {"spelling": "--verbose", "description": "include each query root's members"}],
        "errors": ["bad_request", "catalog_failed", "no_recording", "read_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "RecordingQueriesRequest", "response": "RecordingQueriesResult" },
      "owner": "shared compile-plus catalog; native/direct-JS query adapters",
      "validation": { "directJsRequestSchema": true },
      "coverage": ["cli", "direct-js-api"]
    },
    {
      "canonical": "investigation.list",
      "agent": { "browserExecute": true },
      "category": "investigation",
      "description": "Build and list investigations in the merged workspace, embedded-recording, and explicit source set, using the session's active recording when the CLI path is omitted, including callable public members, closed cases, documentation, argument schemas, and result schemas.",
      "directJs": { "names": ["investigationList"], "facadeNames": ["investigation.list"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["investigation list"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.investigation-list.v1", "textRendering": false,
        "operands": [{"name": "recording", "required": false, "description": "the .wxs recording to read; omitted uses the session's active analysis recording"}],
        "options": [{"spelling": "--file", "value": "query.wax", "multiple": true, "description": "a query source file; repeatable"}, {"spelling": "--query-dir", "value": "dir", "multiple": true, "description": "a directory of query sources; repeatable"}, {"spelling": "--no-query-library", "description": "leave out the bound project's query library"}, {"spelling": "--verbose", "description": "include each investigation's members and cases"}],
        "errors": ["bad_request", "catalog_failed", "no_recording", "read_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "RecordingQueriesRequest", "response": "InvestigationListResult" },
      "owner": "shared compiler case-program catalog; native/direct-JS investigation adapters",
      "validation": { "directJsRequestSchema": true },
      "coverage": ["cli", "direct-js-api"]
    },
    {
      "canonical": "investigation.open",
      "category": "investigation",
      "description": "Open the Waxdbg investigations workspace for a recording, optionally focused on one investigation.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["investigation open"], "support": "sessionless", "sessionless": true, "textRendering": true,
        "operands": [{"name": "recording", "required": true, "description": "the .wxs recording to open"}],
        "options": [{"spelling": "--name", "value": "FQN", "description": "the investigation to open"}, {"spelling": "--foreground", "description": "keep the GUI in the foreground"}, {"spelling": "--no-open", "description": "start the GUI server without the desktop window, printing its URL instead"}],
        "errors": ["bad_request", "missing_gui"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "InvestigationOpenRequest", "response": "GuiResult" },
      "owner": "native CLI GUI deep link and the host-side investigation workspace",
      "coverage": ["cli"]
    },
    {
      "canonical": "recording.query",
      "category": "recording",
      "description": "Evaluate ordered typed query roots at a frame or range, compiling the additive source set once and sharing replay. Omit --name only for a sole root. --columns selects tables and projections.",
      "directJs": {
        "names": [
          "recordingQuery"
        ],
        "facadeNames": [
          "recording.query"
        ],
        "support": "implemented"
      },
      "agentWire": { "verbs": ["query"], "responses": [], "events": ["error"], "completion": "response-plus-blob", "capability": "artifacts" },
      "cli": {
        "aliases": [
          "recording query"
        ],
        "support": "sessionless",
        "sessionless": true,
        "resultDocument": "wxdbg.query.v1",
        "textRendering": true,
        "operands": [
          {
            "name": "recording",
            "required": false,
            "description": "the .wxs recording to read; omitted uses the session's active analysis recording"
          }
        ],
        "options": [
          {
            "spelling": "--frame",
            "value": "N",
            "constant": "kWxdbgFrame",
            "min": 0,
            "max": 2147483647,
            "description": "the frame to query"
          },
          {
            "spelling": "--name",
            "value": "FQN",
            "description": "the query root to run",
            "multiple": true
          },
          {
            "spelling": "--file",
            "value": "query.wax",
            "multiple": true,
            "description": "a query source file; repeatable"
          },
          {
            "spelling": "--query-dir",
            "value": "dir",
            "multiple": true,
            "description": "a directory of query sources; repeatable"
          },
          {
            "spelling": "--no-query-library",
            "description": "leave out the bound project's query library"
          },
          {
            "spelling": "--args",
            "value": "json",
            "description": "query arguments as inline JSON"
          },
          {
            "spelling": "--args-file",
            "value": "path",
            "description": "query arguments read from a JSON file"
          },
          {
            "spelling": "--range",
            "value": "A:B",
            "description": "an inclusive frame range; A: or :B leaves that end open"
          },
          {
            "spelling": "--edges",
            "value": "column:rise|fall",
            "description": "report where a column crosses"
          },
          {
            "spelling": "--reduce",
            "value": "column:min|max|count|sum",
            "description": "reduce a column over the range"
          },
          {
            "spelling": "--ranges",
            "value": "column",
            "description": "report the frame ranges where a column holds"
          },
          {
            "spelling": "--where",
            "value": "column",
            "description": "report the frames where a column holds"
          },
          {
            "spelling": "--workers",
            "value": "N",
            "constant": "kWxdbgWorkerCount",
            "min": 1,
            "max": 4096,
            "description": "how many workers to scan with"
          },
          {
            "spelling": "--ndjson",
            "description": "print one JSON object per line"
          },
          {
            "spelling": "--output",
            "value": "file",
            "description": "write the output to a file instead of stdout"
          },
          {
            "spelling": "--columns",
            "description": "flatten rows into columns; implied by column projections"
          },
          {
            "spelling": "--retain-mutations",
            "description": "retain query mutations across frames; requires one worker"
          }
        ],
        "errors": [
          "bad_request",
          "compiler_version_mismatch",
          "frame_out_of_range",
          "no_recording",
          "query_failed",
          "read_failed",
          "io_error"
        ]
      },
      "state": {
        "requiresPaused": false,
        "mutatesExecution": false,
        "generationBound": false
      },
      "schemas": {
        "request": "RecordingQueryRequest",
        "response": "RecordingQueryResult"
      },
      "owner": "private native/WASM replay query images; native/direct-JS recording adapters",
      "validation": {
        "directJsRequestSchema": true
      },
      "coverage": [
        "cli",
        "direct-js-api",
        "agent-wire"
      ]
    },
    {
      "canonical": "investigation.run",
      "agent": { "browserExecute": true },
      "category": "investigation",
      "description": "Invoke one selected investigation member or closed case from the merged workspace, embedded-recording, and explicit source set, using the session's active recording when the CLI path is omitted and replaying its query scans in cloned workers. --name identifies the investigation; --member and --case are mutually exclusive.",
      "directJs": { "names": ["investigationRun"], "facadeNames": ["investigation.run"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["investigation run"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.investigation-run.v1", "textRendering": true,
        "operands": [{"name": "recording", "required": false, "description": "the .wxs recording to read; omitted uses the session's active analysis recording"}],
        "options": [{"spelling": "--name", "value": "FQN", "description": "the investigation to run"}, {"spelling": "--member", "value": "name", "description": "the member to run"}, {"spelling": "--case", "value": "name", "description": "the case to run"}, {"spelling": "--file", "value": "query.wax", "multiple": true, "description": "a query source file; repeatable"}, {"spelling": "--query-dir", "value": "dir", "multiple": true, "description": "a directory of query sources; repeatable"}, {"spelling": "--no-query-library", "description": "leave out the bound project's query library"}, {"spelling": "--args", "value": "json", "description": "query arguments as inline JSON"}, {"spelling": "--args-file", "value": "path", "description": "query arguments read from a JSON file"}, {"spelling": "--workers", "value": "N", "constant": "kWxdbgWorkerCount", "min": 1, "max": 4096, "description": "how many workers to replay with"}, {"spelling": "--bare", "selectsText": true, "description": "print the value alone"}, {"spelling": "--output", "value": "file", "description": "write the output to a file instead of stdout"}],
        "errors": ["bad_request", "compile_failed", "compiler_version_mismatch", "io_error", "no_recording", "read_failed", "run_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "InvestigationRunRequest", "response": "InvestigationRunResult" },
      "owner": "shared WxdbgInvestigationRun handler; recording VM over a compile-plus image; scan engine DbgArtifact_ScanHostRows; direct-JS V instance plus sequential scan provider",
      "validation": { "directJsRequestSchema": true },
      "coverage": ["cli", "direct-js-api"]
    },
    {
      "canonical": "recording.apiMethods",
      "category": "recording",
      "description": "Read host-to-Wax API method metadata embedded in a recording.",
      "directJs": { "names": ["recordingApiMethods"], "facadeNames": ["recording.apiMethods"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["recording api"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.recording-api.v1", "textRendering": false,
        "operands": [{"name": "recording", "required": true, "description": "the .wxs recording to read"}],
        "options": [],
        "errors": ["bad_request", "dump_failed", "open_session_failed", "read_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "RecordingApiMethodsRequest", "response": "RecordingApiMethodsResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "shared WxdbgRecordingApiMethods handler; native-cli adapter; direct-js:wxdbg-core manifest metadata bridge",
      "coverage": ["direct-js-api", "cli"]
    },
    {
      "canonical": "recording.hostFnMethods",
      "category": "recording",
      "description": "Read Wax-to-host function metadata embedded in a recording.",
      "directJs": { "names": ["recordingHostFnMethods"], "facadeNames": ["recording.hostFnMethods"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["recording hosts"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.recording-hosts.v1", "textRendering": false,
        "operands": [{"name": "recording", "required": true, "description": "the .wxs recording to read"}],
        "options": [],
        "errors": ["bad_request", "dump_failed", "open_session_failed", "read_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "RecordingHostFnMethodsRequest", "response": "RecordingHostFnMethodsResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "shared WxdbgRecordingHostFnMethods handler; native-cli adapter; direct-js:wxdbg-core manifest metadata bridge",
      "coverage": ["direct-js-api", "cli"]
    },
    {
      "canonical": "recording.histogram",
      "category": "recording",
      "description": "Read per-type heap count and byte histogram at a recording frame boundary.",
      "directJs": { "names": ["recordingHistogram"], "facadeNames": ["recording.histogram"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["recording histogram"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.recording-histogram.v1", "textRendering": true,
        "operands": [{"name": "recording", "required": true, "description": "the .wxs recording to read"}],
        "options": [{"spelling": "--frame", "value": "N", "constant": "kWxdbgFrame", "min": 0, "max": 2147483647, "required": true, "description": "the frame whose heap to walk"}, {"spelling": "--sort", "value": "count|size|name", "description": "the histogram order"}],
        "errors": ["bad_request", "compiler_version_mismatch", "empty_recording", "frame_out_of_range", "histogram_failed", "open_session_failed", "out_of_memory", "read_failed", "replay_failed", "snapshot_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "RecordingHistogramRequest", "response": "RecordingHistogramResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "shared WxdbgRecordingHistogram handler; native-cli adapter; direct-js:wxdbg-core keyframe histogram bridge",
      "coverage": ["direct-js-api", "cli"]
    },
    {
      "canonical": "artifact.timeline",
      "category": "artifact",
      "description": "Read per-frame object timeline artifact.",
      "directJs": { "names": ["timelineWxdbgCommand"], "facadeNames": ["artifact.timeline"], "support": "implemented" },
      "agentWire": { "verbs": ["timeline"], "events": ["error"], "completion": "response-plus-blob", "capability": "artifacts" },
      "cli": {
        "aliases": ["recording timeline"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.recording-timeline.v1", "textRendering": true,
        "operands": [{"name": "recording", "required": true, "description": "the .wxs recording to read"}],
        "options": [{"spelling": "--object", "value": "@ID", "multiple": true, "required": true, "description": "an object to follow; repeatable"}, {"spelling": "--range", "value": "A:B", "description": "an inclusive frame range; A: or :B leaves that end open"}, {"spelling": "--depth", "value": "N", "constant": "kWxdbgObjectDepth", "min": 0, "max": 2147483647, "description": "how many levels of nested objects to render"}],
        "errors": ["bad_request", "compiler_version_mismatch", "empty_recording", "open_session_failed", "range_out_of_bounds", "read_failed", "replay_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "TimelineRequest", "response": "RecordingTimelineResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "shared WxdbgArtifactTimeline handler; agent-wire builder DebuggerArtifacts; native-cli adapter; direct-js re-executes wasm app and renders stable ids with wxdbg-core",
      "coverage": ["agent-wire", "cli", "direct-js-api"]
    },
    {
      "canonical": "artifact.allocs",
      "category": "artifact",
      "description": "Read allocation/deallocation artifact over a frame range.",
      "directJs": { "names": ["allocs", "allocsWxdbgCommand"], "facadeNames": ["artifact.allocs"], "support": "implemented" },
      "agentWire": { "verbs": ["allocs"], "events": ["error"], "completion": "response-plus-blob", "capability": "artifacts" },
      "cli": {
        "aliases": ["recording allocations"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.recording-allocations.v1", "textRendering": true,
        "operands": [{"name": "recording", "required": true, "description": "the .wxs recording to read"}],
        "options": [{"spelling": "--range", "value": "A:B", "description": "an inclusive frame range; A: or :B leaves that end open"}],
        "errors": ["bad_request", "compiler_version_mismatch", "empty_recording", "open_session_failed", "range_out_of_bounds", "read_failed", "replay_failed", "snapshot_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "AllocsRequest", "response": "RecordingAllocationsResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "shared WxdbgArtifactAllocs handler; agent-wire builder DebuggerArtifacts; native-cli adapter; direct-js re-executes wasm app and diffs per-frame snapshot stable-id tables",
      "coverage": ["agent-wire", "cli", "direct-js-api"]
    },
    {
      "canonical": "artifact.hostCalls",
      "category": "artifact",
      "description": "Read Wax-to-host call artifact for a frame.",
      "directJs": { "names": ["hostCalls", "recordingHostCalls"], "facadeNames": ["artifact.hostCalls"], "support": "implemented" },
      "agentWire": { "verbs": ["hostCalls"], "events": ["error"], "completion": "response-plus-blob", "capability": "artifacts" },
      "cli": {
        "aliases": ["recording calls"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.recording-calls.v1", "textRendering": false,
        "operands": [{"name": "recording", "required": true, "description": "the .wxs recording to read"}],
        "options": [{"spelling": "--frame", "value": "N", "constant": "kWxdbgFrame", "min": 0, "max": 2147483647, "required": true, "description": "the frame whose host calls to list"}],
        "errors": ["bad_request", "frame_out_of_range", "open_session_failed", "read_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "HostCallsRequest", "response": "RecordingCallsResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "shared WxdbgArtifactHostCalls handler; native-cli adapter; builder:DebuggerArtifacts; wxdbg-core recording decoder",
      "coverage": ["agent-wire", "cli", "direct-js-api"]
    },
    {
      "canonical": "artifact.frameChannels",
      "category": "artifact",
      "description": "Read recorded host-channel inputs for a frame.",
      "directJs": { "names": ["recordingFrameChannels"], "facadeNames": ["artifact.frameChannels"], "support": "implemented" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": {
        "aliases": ["recording channels"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.recording-channels.v1", "textRendering": false,
        "operands": [{"name": "recording", "required": true, "description": "the .wxs recording to read"}],
        "options": [{"spelling": "--frame", "value": "N", "constant": "kWxdbgFrame", "min": 0, "max": 2147483647, "required": true, "description": "the frame whose channel values to list"}],
        "errors": ["bad_request", "frame_out_of_range", "read_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "FrameChannelsRequest", "response": "RecordingChannelsResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "shared WxdbgArtifactChannels handler; native-cli adapter; builder:DebuggerArtifacts; wxdbg-core recording decoder",
      "coverage": ["cli", "direct-js-api"]
    },
    {
      "canonical": "artifact.mutations",
      "category": "artifact",
      "description": "Offline replay scan for mutation targets; distinct from mutationLog configuration.",
      "directJs": { "names": ["mutations"], "facadeNames": ["artifact.mutations"], "support": "implemented" },
      "agentWire": { "verbs": ["mutations"], "events": ["error"], "completion": "response-plus-blob", "capability": "artifacts" },
      "cli": {
        "aliases": ["recording mutations"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.recording-mutations.v1", "textRendering": true,
        "operands": [{"name": "recording", "required": true, "description": "the .wxs recording to read"}, {"name": "target", "required": true, "multiple": true, "description": "a field to follow, @<sid>.<field>"}],
        "options": [],
        "errors": ["compile_failed", "compiler_version_mismatch", "empty_recording", "missing_bundle", "open_session_failed", "out_of_memory", "read_failed", "replay_failed", "target_unresolved"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "ArtifactMutationsRequest", "response": "ArtifactMutationsResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "schema:RecordingJsonApi; builder:DebuggerArtifacts; direct-js:wxdbg-api.mjs compiler-service watched replay",
      "coverage": ["agent-wire", "cli", "direct-js-api"]
    },
    {
      "canonical": "artifact.diff",
      "category": "artifact",
      "description": "Read frame-to-frame diff artifact.",
      "directJs": { "names": ["diffWxdbgCommand"], "facadeNames": ["artifact.diff"], "support": "implemented" },
      "agentWire": { "verbs": ["diff"], "events": ["error"], "completion": "response-plus-blob", "capability": "artifacts" },
      "cli": {
        "aliases": ["recording diff"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.recording-diff.v1", "textRendering": true,
        "operands": [{"name": "recording", "required": true, "description": "the .wxs recording to read"}],
        "options": [{"spelling": "--range", "value": "A:B", "description": "the two frames to compare, inclusive"}, {"spelling": "--object", "value": "@ID", "multiple": true, "description": "narrow to this object; repeatable"}, {"spelling": "--depth", "value": "N", "constant": "kWxdbgObjectDepth", "min": 0, "max": 2147483647, "description": "how many levels of nested objects to render"}, {"spelling": "--show-offsets", "description": "include raw heap byte offsets (JSON only)"}],
        "errors": ["bad_request", "compiler_version_mismatch", "empty_recording", "open_session_failed", "range_out_of_bounds", "read_failed", "replay_failed", "snapshot_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "DiffRequest", "response": "RecordingDiffResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "shared WxdbgArtifactDiff handler; agent-wire builder DebuggerArtifacts; native-cli adapter; direct-js:wxdbg-api.mjs endpoint snapshot replay + wxdbg-core snapshot diff",
      "coverage": ["agent-wire", "cli", "direct-js-api"]
    },
    {
      "canonical": "artifact.findFrames",
      "category": "artifact",
      "description": "Find frames matching an inline --where expression or one query root selected from the merged workspace, embedded-recording, and explicit source set, using the session's active recording when the CLI path is omitted. The controller resolves that set and transmits it; the agent never reads a controller-local path.",
      "directJs": { "names": ["findWxdbgCommand"], "facadeNames": ["artifact.findFrames"], "support": "implemented" },
      "agentWire": { "verbs": ["findFrames"], "events": ["error"], "completion": "response-plus-blob", "capability": "artifacts" },
      "cli": {
        "aliases": ["recording find"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.find.v1", "textRendering": true,
        "operands": [{"name": "recording", "required": false, "description": "the .wxs recording to read; omitted uses the session's active analysis recording"}],
        "options": [{"spelling": "--where", "value": "expression", "description": "a boolean Wax expression over the frame"}, {"spelling": "--name", "value": "FQN", "description": "a catalogued query root"}, {"spelling": "--query", "value": "root", "description": "the root inside a single --file"}, {"spelling": "--file", "value": "query.wax", "multiple": true, "description": "a query source file; repeatable"}, {"spelling": "--query-dir", "value": "dir", "multiple": true, "description": "a directory of query sources; repeatable"}, {"spelling": "--no-query-library", "description": "leave out the bound project's query library"}, {"spelling": "--args", "value": "json", "description": "query arguments as inline JSON"}, {"spelling": "--args-file", "value": "path", "description": "query arguments read from a JSON file"}, {"spelling": "--retain-mutations", "description": "keep mutations between frames"}, {"spelling": "--range", "value": "A:B", "description": "an inclusive frame range; A: or :B leaves that end open"}, {"spelling": "--all", "description": "search the full range without a match limit; mutually exclusive with --limit"}, {"spelling": "--limit", "value": "N", "constant": "kWxdbgFindLimit", "default": 100, "min": 1, "max": 2147483647, "description": "stop after N matches; coverage reports whether the range was exhausted"}, {"spelling": "--around", "value": "A:B", "description": "frames of context before and after each match"}, {"spelling": "--invert", "description": "report the frames that do not match"}, {"spelling": "--fail-on-match", "description": "exit nonzero when anything matches"}, {"spelling": "--fail-on-no-match", "description": "exit nonzero when nothing matches"}, {"spelling": "--count", "description": "return the match count and search coverage"}, {"spelling": "--summary", "description": "print a summary of the matches"}, {"spelling": "--ranges", "description": "print the matching frame ranges"}, {"spelling": "--commands", "selectsText": true, "description": "print debugger commands that reach each match"}, {"spelling": "--timeline", "value": "@ID,@ID", "description": "objects to include in the emitted timeline commands"}],
        "errors": ["bad_request", "compile_failed", "compiler_version_mismatch", "empty_recording", "eval_failed", "missing_bundle", "no_recording", "open_session_failed", "out_of_memory", "range_out_of_bounds", "read_failed", "replay_failed", "result_mismatch", "snapshot_create_failed"],
        "notes": "Runs a Wax boolean query over recording frames. Zero matches is a successful query; --fail-on-match and --fail-on-no-match provide CI-friendly exit gates.",
        "examples": ["waxdbg recording find rec.wxs --where \"Invariant()\" --invert", "waxdbg recording find rec.wxs --file failure_predicate.wax --all --commands --around 2:4 --timeline @65", "waxdbg recording find rec.wxs --where \"Invariant()\" --invert --fail-on-match --summary"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "FindFramesRequest", "response": "FindFramesResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "schema:RecordingJsonApi; builder:DebuggerArtifacts; direct-js:query-image replay helper",
      "coverage": ["agent-wire", "cli", "direct-js-api"]
    },
    {
      "canonical": "artifact.waxExprEval",
      "category": "artifact",
      "description": "Pure Wax/debug-expression evaluation over recorded debug data; never arbitrary JavaScript.",
      "directJs": { "names": ["evalWxdbgCommand"], "facadeNames": ["artifact.waxExprEval"], "support": "implemented" },
      "agentWire": { "verbs": ["evalAt"], "events": ["error"], "completion": "response-plus-blob", "capability": "artifacts" },
      "cli": {
        "aliases": ["eval"], "support": "sessionless", "sessionless": true, "resultDocument": "wxdbg.eval.v1", "textRendering": true,
        "operands": [{"name": "recording", "required": true, "description": "the .wxs recording to evaluate against"}, {"name": "expression", "required": false, "description": "the Wax expression to evaluate, with --type"}],
        "options": [{"spelling": "--frame", "value": "N", "constant": "kWxdbgFrame", "min": 0, "max": 2147483647, "required": true, "description": "the frame to evaluate at"}, {"spelling": "--type", "value": "T", "description": "the expression's type: i32, u32, i64, u64, f32, f64, bool, string or object"}, {"spelling": "--file", "value": "query.wax", "description": "an authored query source instead of an inline expression"}, {"spelling": "--query", "value": "name", "description": "the query root to select when --file declares several"}, {"spelling": "--args", "value": "json", "description": "query arguments as inline JSON"}, {"spelling": "--args-file", "value": "path", "description": "query arguments read from a JSON file"}, {"spelling": "--depth", "value": "N", "constant": "kWxdbgObjectDepth", "min": 0, "max": 2147483647, "description": "how many levels of nested objects to render"}],
        "errors": ["compile_failed", "compiler_version_mismatch", "eval_failed", "eval_setup_failed", "frame_out_of_range", "missing_bundle", "open_session_failed", "out_of_memory", "read_failed", "replay_failed", "result_mismatch", "snapshot_create_failed"]
      },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "WaxExprEvalRequest", "response": "EvalResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "schema:RecordingJsonApi; builder:DebuggerArtifacts; direct-js:query-image replay helper",
      "coverage": ["agent-wire", "cli", "direct-js-api"]
    },
    {
      "canonical": "live.eval",
      "category": "inspect",
      "description": "Evaluate a Wax/debug expression against a fork of the current paused live heap.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": ["evalLive"], "events": ["error"], "completion": "response-plus-blob", "capability": "live-eval" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": true, "mutatesExecution": false, "generationBound": true },
      "schemas": { "request": "LiveEvalRequest", "response": "EvalResult" },
      "owner": "wire:WxLiveAgent/controller; builder:DebuggerArtifacts live heap fork",
      "coverage": ["agent-wire"]
    },
    {
      "canonical": "edit.apply",
      "category": "edit",
      "description": "Recompile the project's sources -- from disk, with any transmitted changes laid over them -- against the running build and swap the result into the live target at a frame boundary, keeping its heap. Breakpoints and conditions carry across by file and line. A browser target has no live heap: its session re-executes the program from its input tape for every command, so the edit is that tape replayed through the rebuilt program, landing at the start of the frame after the one the head was stopped in.",
      "directJs": { "names": ["applyEditWxdbgCommand"], "facadeNames": ["edit.apply"], "support": "implemented" },
      "agentWire": { "verbs": ["applyEdit"], "events": ["stopped", "error"], "completion": "response-plus-blob", "capability": "edit" },
      "cli": {
        "aliases": ["edit apply"], "support": "native", "targetKinds": ["native-live"], "resultDocument": "wxdbg.edit-apply.v1", "textRendering": true,
        "operands": [],
        "options": [],
        "errors": ["bad_request", "browser_command_failed", "browser_response_invalid", "browser_response_unsupported", "browser_unavailable", "io_error", "no_debugger_target"],
        "notes": "Recompiles the project's sources from disk against the build the live target is running and swaps them in, keeping the program's heap. A change to a class's fields migrates every live object into the new layout. Breakpoints and conditions carry across by file:line. The edit lands between frames: a target stopped at a breakpoint inside a frame is run to the end of that frame first and the edit lands there; if the same frame stops again -- a breakpoint inside a loop -- nothing is applied and the stop is reported; clear that breakpoint and apply again. Like `pause`, running to the frame boundary waits for the frame to end. An edit that changes a field's type, an api's parameters, or a value struct's layout is refused by name; the target keeps running its previous build. The previous recording ends at the edit and a new one begins. Needs a live target (waxdbg gui) on the generated-C backend."
      },
      "state": { "requiresPaused": true, "mutatesExecution": true, "generationBound": true },
      "schemas": { "request": "EditApplyRequest", "response": "EditApplyResult" },
      "validation": { "directJsRequestSchema": true },
      "owner": "wire:WxLiveAgent/controller; debugger:WxDebugger_ApplyEdit; native-cli edit apply; direct-js:wxdbg-api.mjs/wxdbg-session.mjs rebuild-and-replay",
      "coverage": ["agent-wire", "cli", "direct-js-api"]
    },
    {
      "canonical": "ui.snapshot",
      "agent": { "browserExecute": true },
      "category": "workbench",
      "description": "Read the semantic state of the paired Wax workbench.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "UiSnapshotRequest", "response": "UiSnapshotResult" },
      "owner": "semantic workbench coordinator",
      "coverage": ["browser-workbench"]
    },
    {
      "canonical": "ui.activateView",
      "agent": { "browserExecute": true },
      "category": "workbench",
      "description": "Activate an existing semantic workbench view.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "UiActivateViewRequest", "response": "UiSnapshotResult" },
      "owner": "semantic workbench coordinator",
      "coverage": ["browser-workbench"]
    },
    {
      "canonical": "ui.ping",
      "agent": { "browserExecute": true },
      "category": "workbench",
      "description": "Point out a named workbench view with a dismissible message.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "UiPingRequest", "response": "UiSnapshotResult" },
      "owner": "semantic workbench coordinator",
      "coverage": ["browser-workbench"]
    },
    {
      "canonical": "ui.revealSource",
      "agent": { "browserExecute": true },
      "category": "workbench",
      "description": "Reveal a source location through the workbench source controller.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "UiRevealSourceRequest", "response": "UiSnapshotResult" },
      "owner": "semantic workbench coordinator",
      "coverage": ["browser-workbench"]
    },
    {
      "canonical": "ui.presentEvidence",
      "agent": { "browserExecute": true },
      "category": "workbench",
      "description": "Present versioned investigation evidence in the workbench.",
      "directJs": { "names": [], "support": "none" },
      "agentWire": { "verbs": [], "responses": [], "events": [], "completion": "none", "capability": "none" },
      "cli": { "aliases": [], "support": "none" },
      "state": { "requiresPaused": false, "mutatesExecution": false, "generationBound": false },
      "schemas": { "request": "UiPresentEvidenceRequest", "response": "UiSnapshotResult" },
      "owner": "semantic workbench coordinator",
      "coverage": ["browser-workbench"]
    }
  ],
  "bridge": {
    "protocol": "wxdbg.bridge.v1",
    "request": { "fields": ["id", "sessionId", "command", "args"] },
    "response": { "fields": ["id", "ok", "result", "error"] },
    "event": { "fields": ["type", "payload"] },
    "errorCodes": [
      "bad_request",
      "unauthorized",
      "forbidden_origin",
      "agent_not_connected",
      "agent_disconnected",
      "busy",
      "completed",
      "stale_session",
      "trap",
      "timeout",
      "unsupported"
    ]
  }
}
