addedInput schema / properties / noRecord
Added value: +{
+ "description": "Do not record this action.",
+ "type": "boolean"
+}
changedInput schema / properties / platform / enum
Previous value: -[
- "apple",
- "android",
- "linux",
- "web",
- "ios",
- "macos"
-]New value: +[
+ "apple",
+ "android",
+ "vega",
+ "linux",
+ "web",
+ "ios",
+ "macos"
+]
changedInput schema / properties / serial / description
Previous value: -"Android serial selector."New value: +"Android device or Vega VVD serial selector."
addedInput schema / properties / settle
Added value: +{
+ "description": "After the action, wait for the UI to go quiet and return the settled diff vs the pre-action tree in the same response. Best-effort; never fails the action.",
+ "type": "boolean"
+}
addedInput schema / properties / settleQuietMs
Added value: +{
+ "description": "Settle: quiet window in milliseconds (default 500).",
+ "minimum": 0,
+ "type": "integer"
+}
addedInput schema / properties / timeoutMs
Added value: +{
+ "description": "Settle: wait deadline in milliseconds (default 10000).",
+ "minimum": 1,
+ "type": "integer"
+}
removedOutput schema / oneOf
Removed value: -[
- {
- "properties": {
- "backendResult": {
- "additionalProperties": true,
- "description": "Raw backend result passthrough.",
- "type": "object"
- },
- "durationMs": {
- "type": "number"
- },
- "kind": {
- "const": "point",
- "type": "string"
- },
- "message": {
- "type": "string"
- },
- "point": {
- "properties": {
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "x",
- "y"
- ],
- "type": "object"
- },
- "warning": {
- "type": "string"
- }
- },
- "required": [
- "kind",
- "point"
- ],
- "type": "object"
- },
- {
- "properties": {
- "backendResult": {
- "additionalProperties": true,
- "description": "Raw backend result passthrough.",
- "type": "object"
- },
- "durationMs": {
- "type": "number"
- },
- "hint": {
- "type": "string"
- },
- "kind": {
- "const": "ref",
- "type": "string"
- },
- "message": {
- "type": "string"
- },
- "node": {
- "description": "Resolved snapshot node for the matched element.",
- "properties": {
- "appName": {
- "type": "string"
- },
- "bundleId": {
- "type": "string"
- },
- "depth": {
- "type": "number"
- },
- "enabled": {
- "type": "boolean"
- },
- "focused": {
- "type": "boolean"
- },
- "hiddenContentAbove": {
- "type": "boolean"
- },
- "hiddenContentBelow": {
- "type": "boolean"
- },
- "hittable": {
- "type": "boolean"
- },
- "identifier": {
- "type": "string"
- },
- "index": {
- "type": "number"
- },
- "interactionBlocked": {
- "enum": [
- "covered"
- ],
- "type": "string"
- },
- "label": {
- "type": "string"
- },
- "parentIndex": {
- "type": "number"
- },
- "pid": {
- "type": "number"
- },
- "presentationHints": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "rect": {
- "properties": {
- "height": {
- "type": "number"
- },
- "width": {
- "type": "number"
- },
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "x",
- "y",
- "width",
- "height"
- ],
- "type": "object"
- },
- "ref": {
- "description": "Stable snapshot ref such as e12.",
- "type": "string"
- },
- "role": {
- "type": "string"
- },
- "selected": {
- "type": "boolean"
- },
- "subrole": {
- "type": "string"
- },
- "surface": {
- "type": "string"
- },
- "type": {
- "type": "string"
- },
- "value": {
- "type": "string"
- },
- "visibleToUser": {
- "type": "boolean"
- },
- "windowTitle": {
- "type": "string"
- }
- },
- "required": [
- "index",
- "ref"
- ],
- "type": "object"
- },
- "point": {
- "properties": {
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "x",
- "y"
- ],
- "type": "object"
- },
- "refLabel": {
- "type": "string"
- },
- "selectorChain": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "target": {
- "properties": {
- "kind": {
- "const": "ref",
- "type": "string"
- },
- "ref": {
- "type": "string"
- }
- },
- "required": [
- "kind",
- "ref"
- ],
- "type": "object"
- },
- "targetHittable": {
- "type": "boolean"
- },
- "warning": {
- "type": "string"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- },
- {
- "properties": {
- "backendResult": {
- "additionalProperties": true,
- "description": "Raw backend result passthrough.",
- "type": "object"
- },
- "durationMs": {
- "type": "number"
- },
- "hint": {
- "type": "string"
- },
- "kind": {
- "const": "selector",
- "type": "string"
- },
- "message": {
- "type": "string"
- },
- "node": {
- "description": "Resolved snapshot node for the matched element.",
- "properties": {
- "appName": {
- "type": "string"
- },
- "bundleId": {
- "type": "string"
- },
- "depth": {
- "type": "number"
- },
- "enabled": {
- "type": "boolean"
- },
- "focused": {
- "type": "boolean"
- },
- "hiddenContentAbove": {
- "type": "boolean"
- },
- "hiddenContentBelow": {
- "type": "boolean"
- },
- "hittable": {
- "type": "boolean"
- },
- "identifier": {
- "type": "string"
- },
- "index": {
- "type": "number"
- },
- "interactionBlocked": {
- "enum": [
- "covered"
- ],
- "type": "string"
- },
- "label": {
- "type": "string"
- },
- "parentIndex": {
- "type": "number"
- },
- "pid": {
- "type": "number"
- },
- "presentationHints": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "rect": {
- "properties": {
- "height": {
- "type": "number"
- },
- "width": {
- "type": "number"
- },
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "x",
- "y",
- "width",
- "height"
- ],
- "type": "object"
- },
- "ref": {
- "description": "Stable snapshot ref such as e12.",
- "type": "string"
- },
- "role": {
- "type": "string"
- },
- "selected": {
- "type": "boolean"
- },
- "subrole": {
- "type": "string"
- },
- "surface": {
- "type": "string"
- },
- "type": {
- "type": "string"
- },
- "value": {
- "type": "string"
- },
- "visibleToUser": {
- "type": "boolean"
- },
- "windowTitle": {
- "type": "string"
- }
- },
- "required": [
- "index",
- "ref"
- ],
- "type": "object"
- },
- "point": {
- "properties": {
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "x",
- "y"
- ],
- "type": "object"
- },
- "refLabel": {
- "type": "string"
- },
- "selectorChain": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "target": {
- "properties": {
- "kind": {
- "const": "selector",
- "type": "string"
- },
- "selector": {
- "type": "string"
- }
- },
- "required": [
- "kind",
- "selector"
- ],
- "type": "object"
- },
- "targetHittable": {
- "type": "boolean"
- },
- "warning": {
- "type": "string"
- }
- },
- "required": [
- "kind",
- "point",
- "target",
- "node",
- "selectorChain"
- ],
- "type": "object"
- }
-]
addedOutput schema / properties
Added value: +{
+ "cost": {
+ "properties": {
+ "nodeCount": {
+ "description": "Number of nodes in the original node tree when the response carries one.",
+ "type": "number"
+ },
+ "runnerRoundTrips": {
+ "description": "Number of real runner round-trips made while serving the request.",
+ "type": "number"
+ },
+ "wallClockMs": {
+ "description": "Total wall-clock time for the request in milliseconds.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "wallClockMs",
+ "runnerRoundTrips"
+ ],
+ "type": "object"
+ },
+ "durationMs": {
+ "type": "number"
+ },
+ "evidence": {
+ "properties": {
+ "changedFromBefore": {
+ "description": "Whether the post-action digest differs from the pre-action capture digest. false is evidence, not failure.",
+ "type": "boolean"
+ },
+ "digest": {
+ "description": "Order-independent digest of the post-action node multiset.",
+ "type": "string"
+ },
+ "foregroundApp": {
+ "description": "Foreground app bundle id or name, when the capture carries it.",
+ "type": "string"
+ },
+ "interactiveNodeCount": {
+ "description": "Subset of nodeCount the platform reports as hittable.",
+ "type": "number"
+ },
+ "nodeCount": {
+ "description": "Node count in the post-action interactive-only capture.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "nodeCount",
+ "interactiveNodeCount",
+ "digest",
+ "changedFromBefore"
+ ],
+ "type": "object"
+ },
+ "gesture": {
+ "const": "longpress",
+ "type": "string"
+ },
+ "hint": {
+ "type": "string"
+ },
+ "maestroFallbackReason": {
+ "const": "non-hittable-coordinate",
+ "type": "string"
+ },
+ "maestroNonHittableCoordinateFallbackAllowed": {
+ "description": "Whether the direct iOS Maestro coordinate fallback was allowed for this selector.",
+ "type": "boolean"
+ },
+ "maestroNonHittableCoordinateFallbackUsed": {
+ "description": "Whether the direct iOS Maestro coordinate fallback was actually used.",
+ "type": "boolean"
+ },
+ "message": {
+ "type": "string"
+ },
+ "ref": {
+ "description": "Snapshot ref without the @ prefix when the target was an @ref.",
+ "type": "string"
+ },
+ "refLabel": {
+ "type": "string"
+ },
+ "referenceHeight": {
+ "description": "Reference frame height for visualizing the interaction point.",
+ "type": "number"
+ },
+ "referenceWidth": {
+ "description": "Reference frame width for visualizing the interaction point.",
+ "type": "number"
+ },
+ "resolution": {
+ "description": "Pre-action disclosure of how the acting path resolved its target. Absent when resolutionDisclosure is inapplicable for the path.",
+ "oneOf": [
+ {
+ "properties": {
+ "kind": {
+ "const": "unique",
+ "type": "string"
+ },
+ "phase": {
+ "const": "pre-action",
+ "type": "string"
+ },
+ "source": {
+ "const": "runtime",
+ "type": "string"
+ }
+ },
+ "required": [
+ "source",
+ "phase",
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "alternatives": {
+ "description": "At most 5 losing candidates, document order. Present at default/full response levels and omitted in digest. The winner is never included.",
+ "items": {
+ "properties": {
+ "diagnosticRef": {
+ "description": "Opaque non-@ diagnostic token. Never a snapshot ref: not issued via refsGeneration and cannot be pinned or reused as an @ref target. UTF-8 truncated to 256 bytes.",
+ "type": "string"
+ },
+ "label": {
+ "description": "UTF-8 truncated to 256 bytes.",
+ "type": "string"
+ },
+ "role": {
+ "description": "UTF-8 truncated to 256 bytes.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "diagnosticRef"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "disambiguated",
+ "type": "string"
+ },
+ "matchCount": {
+ "description": "Total matches resolveSelectorChain found before disambiguation.",
+ "type": "number"
+ },
+ "phase": {
+ "const": "pre-action",
+ "type": "string"
+ },
+ "source": {
+ "const": "runtime",
+ "type": "string"
+ },
+ "tiebreak": {
+ "description": "The comparison that decided the winner.",
+ "enum": [
+ "visible",
+ "deepest",
+ "smallest-area"
+ ],
+ "type": "string"
+ },
+ "winnerDiagnostic": {
+ "properties": {
+ "diagnosticRef": {
+ "description": "Opaque non-@ diagnostic token. Never a snapshot ref: not issued via refsGeneration and cannot be pinned or reused as an @ref target. UTF-8 truncated to 256 bytes.",
+ "type": "string"
+ },
+ "label": {
+ "description": "UTF-8 truncated to 256 bytes.",
+ "type": "string"
+ },
+ "role": {
+ "description": "UTF-8 truncated to 256 bytes.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "diagnosticRef"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "source",
+ "phase",
+ "kind",
+ "matchCount",
+ "winnerDiagnostic",
+ "tiebreak"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "exact",
+ "type": "string"
+ },
+ "phase": {
+ "const": "pre-action",
+ "type": "string"
+ },
+ "source": {
+ "const": "ref",
+ "type": "string"
+ }
+ },
+ "required": [
+ "source",
+ "phase",
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "label-fallback",
+ "type": "string"
+ },
+ "phase": {
+ "const": "pre-action",
+ "type": "string"
+ },
+ "source": {
+ "const": "ref",
+ "type": "string"
+ }
+ },
+ "required": [
+ "source",
+ "phase",
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "not-observed",
+ "type": "string"
+ },
+ "source": {
+ "const": "direct-ios",
+ "type": "string"
+ }
+ },
+ "required": [
+ "source",
+ "kind"
+ ],
+ "type": "object"
+ }
+ ],
+ "type": "object"
+ },
+ "selector": {
+ "description": "Selector expression when the target was a selector.",
+ "type": "string"
+ },
+ "selectorChain": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "settle": {
+ "properties": {
+ "captures": {
+ "type": "number"
+ },
+ "diff": {
+ "description": "Settled diff vs the pre-action tree (changed lines only).",
+ "properties": {
+ "lines": {
+ "items": {
+ "properties": {
+ "kind": {
+ "enum": [
+ "added",
+ "removed"
+ ],
+ "type": "string"
+ },
+ "ref": {
+ "description": "Plain ref body (e12) for added lines.",
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "text"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "summary": {
+ "properties": {
+ "additions": {
+ "type": "number"
+ },
+ "removals": {
+ "type": "number"
+ },
+ "unchanged": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "additions",
+ "removals",
+ "unchanged"
+ ],
+ "type": "object"
+ },
+ "truncated": {
+ "description": "Lines were capped to the response bound.",
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "summary",
+ "lines"
+ ],
+ "type": "object"
+ },
+ "hint": {
+ "type": "string"
+ },
+ "quietMs": {
+ "type": "number"
+ },
+ "refs": {
+ "items": {
+ "properties": {
+ "ref": {
+ "description": "Plain ref body (e12) minted from the stored settled tree.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "ref"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "refsGeneration": {
+ "description": "Snapshot generation of the stored settled tree; refs on added diff lines were minted from it.",
+ "type": "number"
+ },
+ "settled": {
+ "description": "Whether the UI held the quiet window before the deadline. false is advisory, not failure.",
+ "type": "boolean"
+ },
+ "tail": {
+ "description": "Unchanged interactive refs tail: still-present, actionable elements from the settled tree, attached only when diff carries zero added-line refs (a modal-dismiss/toast-only diff).",
+ "items": {
+ "properties": {
+ "label": {
+ "type": "string"
+ },
+ "ref": {
+ "description": "Plain ref body (e12) minted from the stored settled tree.",
+ "type": "string"
+ },
+ "role": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "ref",
+ "role"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "tailTruncated": {
+ "description": "Present (true) when tail candidates exceeded the response cap.",
+ "type": "boolean"
+ },
+ "timeoutMs": {
+ "type": "number"
+ },
+ "waitedMs": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "settled",
+ "waitedMs",
+ "captures",
+ "quietMs",
+ "timeoutMs"
+ ],
+ "type": "object"
+ },
+ "targetHittable": {
+ "type": "boolean"
+ },
+ "targetKind": {
+ "description": "Resolved interaction target kind.",
+ "enum": [
+ "point",
+ "ref",
+ "selector"
+ ],
+ "type": "string"
+ },
+ "warning": {
+ "type": "string"
+ },
+ "x": {
+ "description": "Resolved interaction x coordinate when available.",
+ "type": "number"
+ },
+ "y": {
+ "description": "Resolved interaction y coordinate when available.",
+ "type": "number"
+ }
+}
addedOutput schema / required
Added value: +[
+ "targetKind"
+]