Add optional ensure_state, gesture region and final value feedback shared by Flash and Pro. Preserve completed inputs when verification fails and stop repeated ineffective strategies. Regenerate pinned tool schemas for the new optional arguments.
4547 lines
114 KiB
JSON
4547 lines
114 KiB
JSON
{
|
|
"action_sequence": {
|
|
"description": "Execute validated short gesture steps consecutively; stop at the first failure.",
|
|
"inputSchema": {
|
|
"$defs": {
|
|
"ClickStep": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"action": {
|
|
"const": "click",
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"target": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 2,
|
|
"minItems": 2,
|
|
"type": "array"
|
|
},
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
}
|
|
],
|
|
"description": "Prefer an exact observed resource_id: resolve its live bounds before tapping, refusing absent/ambiguous targets. Otherwise use [x,y] in coordinate_space; never mix screenshot pixels with normalized coordinates.",
|
|
"title": "Target"
|
|
},
|
|
"target_description": {
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"title": "Target Description",
|
|
"type": "string"
|
|
},
|
|
"coordinate_space": {
|
|
"default": "normalized",
|
|
"enum": [
|
|
"normalized",
|
|
"pixel"
|
|
],
|
|
"title": "Coordinate Space",
|
|
"type": "string"
|
|
},
|
|
"times": {
|
|
"default": 1,
|
|
"description": "Consecutive taps within this ONE member, e.g. 10 for a scale +/- button; no model turns between taps.",
|
|
"maximum": 10,
|
|
"minimum": 1,
|
|
"title": "Times",
|
|
"type": "integer"
|
|
},
|
|
"delay_ms": {
|
|
"default": 100,
|
|
"maximum": 1000,
|
|
"minimum": 0,
|
|
"title": "Delay Ms",
|
|
"type": "integer"
|
|
},
|
|
"unless_visible": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"description": "Exact previously observed resource_id inside a toggled panel (not the opener). Skip this opener click when that control is already visible; otherwise click. Avoid closing a still-open panel.",
|
|
"title": "Unless Visible"
|
|
}
|
|
},
|
|
"required": [
|
|
"action",
|
|
"target",
|
|
"target_description"
|
|
],
|
|
"title": "ClickStep",
|
|
"type": "object"
|
|
},
|
|
"ControlActionStep": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"action": {
|
|
"const": "control_action",
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"request": {
|
|
"$ref": "#/$defs/SequenceControlRequest"
|
|
}
|
|
},
|
|
"required": [
|
|
"action",
|
|
"request"
|
|
],
|
|
"title": "ControlActionStep",
|
|
"type": "object"
|
|
},
|
|
"ControlCondition": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"state": {
|
|
"enum": [
|
|
"checked",
|
|
"unchecked",
|
|
"selected",
|
|
"unselected",
|
|
"text",
|
|
"content_desc",
|
|
"value"
|
|
],
|
|
"title": "State",
|
|
"type": "string"
|
|
},
|
|
"expected_text": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 4096,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Expected Text"
|
|
},
|
|
"expected_value": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Expected Value"
|
|
},
|
|
"tolerance": {
|
|
"default": 0,
|
|
"minimum": 0,
|
|
"title": "Tolerance",
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"state"
|
|
],
|
|
"title": "ControlCondition",
|
|
"type": "object"
|
|
},
|
|
"ControlSelector": {
|
|
"additionalProperties": false,
|
|
"description": "Every supplied attribute is an exact AND match against a fresh native node.",
|
|
"properties": {
|
|
"resource_id": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Resource Id"
|
|
},
|
|
"text": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 4096,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Text"
|
|
},
|
|
"content_desc": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Content Desc"
|
|
},
|
|
"class_name": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Class Name"
|
|
},
|
|
"package_name": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Package Name"
|
|
},
|
|
"bounds": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 4,
|
|
"minItems": 4,
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Bounds"
|
|
}
|
|
},
|
|
"title": "ControlSelector",
|
|
"type": "object"
|
|
},
|
|
"DragCalibration": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"axis": {
|
|
"enum": [
|
|
"x",
|
|
"y"
|
|
],
|
|
"title": "Axis",
|
|
"type": "string"
|
|
},
|
|
"mode": {
|
|
"description": "thumb moves a handle to a value; pan moves a scale under a fixed indicator.",
|
|
"enum": [
|
|
"thumb",
|
|
"pan"
|
|
],
|
|
"title": "Mode",
|
|
"type": "string"
|
|
},
|
|
"anchors": {
|
|
"items": {
|
|
"$ref": "#/$defs/ScaleAnchor"
|
|
},
|
|
"maxItems": 2,
|
|
"minItems": 2,
|
|
"title": "Anchors",
|
|
"type": "array"
|
|
},
|
|
"target_value": {
|
|
"title": "Target Value",
|
|
"type": "number"
|
|
},
|
|
"indicator_position": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"description": "Required for pan: the fixed indicator's observed axis position.",
|
|
"title": "Indicator Position"
|
|
},
|
|
"tolerance": {
|
|
"anyOf": [
|
|
{
|
|
"minimum": 0,
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"description": "Allowed value error. Reject a plan whose pixel rounding exceeds it; this is geometric error only, not proof of application precision.",
|
|
"title": "Tolerance"
|
|
},
|
|
"min_movement_px": {
|
|
"anyOf": [
|
|
{
|
|
"exclusiveMinimum": 0,
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"description": "Previously measured minimum effective drag distance in pixels. If this calibrated move is smaller, refuse input and zoom first. Never guess a device-wide threshold.",
|
|
"title": "Min Movement Px"
|
|
}
|
|
},
|
|
"required": [
|
|
"axis",
|
|
"mode",
|
|
"anchors",
|
|
"target_value"
|
|
],
|
|
"title": "DragCalibration",
|
|
"type": "object"
|
|
},
|
|
"DragStep": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"start": {
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 2,
|
|
"minItems": 2,
|
|
"title": "Start",
|
|
"type": "array"
|
|
},
|
|
"target_description": {
|
|
"minLength": 1,
|
|
"title": "Target Description",
|
|
"type": "string"
|
|
},
|
|
"end": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 2,
|
|
"minItems": 2,
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"description": "Exact endpoint; MUST be null when calibration is supplied.",
|
|
"title": "End"
|
|
},
|
|
"coordinate_space": {
|
|
"default": "normalized",
|
|
"enum": [
|
|
"normalized",
|
|
"pixel"
|
|
],
|
|
"title": "Coordinate Space",
|
|
"type": "string"
|
|
},
|
|
"duration_ms": {
|
|
"default": 300,
|
|
"maximum": 10000,
|
|
"minimum": 1,
|
|
"title": "Duration Ms",
|
|
"type": "integer"
|
|
},
|
|
"region": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 4,
|
|
"minItems": 4,
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"description": "Observed gesture surface rectangle in coordinate_space, excluding date/navigation rails and unrelated overlays.",
|
|
"title": "Region"
|
|
},
|
|
"calibration": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/$defs/DragCalibration"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"description": "Computes the endpoint from observed anchors; then set end=null."
|
|
},
|
|
"require_visible": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"description": "Exact previously observed resource_id of a panel control. Check live visibility before dragging; refuse input if absent. Use for auto-hiding controls.",
|
|
"title": "Require Visible"
|
|
},
|
|
"action": {
|
|
"const": "drag",
|
|
"title": "Action",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"start",
|
|
"target_description",
|
|
"action"
|
|
],
|
|
"title": "DragStep",
|
|
"type": "object"
|
|
},
|
|
"EnsureVisibleStep": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"action": {
|
|
"const": "ensure_visible",
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"target": {
|
|
"description": "Panel control resource_id copied VERBATIM from observed elements, including the ':id/' separator. Never rewrite it as ':id:' or guess an ID.",
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"title": "Target",
|
|
"type": "string"
|
|
},
|
|
"opener": {
|
|
"description": "UI opener resource_id copied VERBATIM from observed elements, including ':id/' (not ':id:'). Tap ONCE only if target is absent; never use a business submission as an opener.",
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"title": "Opener",
|
|
"type": "string"
|
|
},
|
|
"target_description": {
|
|
"minLength": 1,
|
|
"title": "Target Description",
|
|
"type": "string"
|
|
},
|
|
"timeout_ms": {
|
|
"default": 1500,
|
|
"description": "Bounded live-UI wait AFTER opening, without extra model turns or repeated opener taps.",
|
|
"maximum": 3000,
|
|
"minimum": 100,
|
|
"title": "Timeout Ms",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"action",
|
|
"target",
|
|
"opener",
|
|
"target_description"
|
|
],
|
|
"title": "EnsureVisibleStep",
|
|
"type": "object"
|
|
},
|
|
"PinchStep": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"center": {
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 2,
|
|
"minItems": 2,
|
|
"title": "Center",
|
|
"type": "array"
|
|
},
|
|
"start_span": {
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 20000,
|
|
"title": "Start Span",
|
|
"type": "integer"
|
|
},
|
|
"end_span": {
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 20000,
|
|
"title": "End Span",
|
|
"type": "integer"
|
|
},
|
|
"angle_degrees": {
|
|
"default": 0,
|
|
"maximum": 360,
|
|
"minimum": -360,
|
|
"title": "Angle Degrees",
|
|
"type": "number"
|
|
},
|
|
"rotation_degrees": {
|
|
"default": 0,
|
|
"maximum": 360,
|
|
"minimum": -360,
|
|
"title": "Rotation Degrees",
|
|
"type": "number"
|
|
},
|
|
"duration_ms": {
|
|
"default": 800,
|
|
"maximum": 10000,
|
|
"minimum": 1,
|
|
"title": "Duration Ms",
|
|
"type": "integer"
|
|
},
|
|
"coordinate_space": {
|
|
"default": "normalized",
|
|
"enum": [
|
|
"normalized",
|
|
"pixel"
|
|
],
|
|
"title": "Coordinate Space",
|
|
"type": "string"
|
|
},
|
|
"target_description": {
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"title": "Target Description",
|
|
"type": "string"
|
|
},
|
|
"require_visible": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Require Visible"
|
|
},
|
|
"region": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 4,
|
|
"minItems": 4,
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"description": "Observed zoom surface bounds in coordinate_space; not the whole screen or date rail. Both fingers must remain inside.",
|
|
"title": "Region"
|
|
},
|
|
"action": {
|
|
"const": "pinch",
|
|
"title": "Action",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"center",
|
|
"start_span",
|
|
"end_span",
|
|
"target_description",
|
|
"action"
|
|
],
|
|
"title": "PinchStep",
|
|
"type": "object"
|
|
},
|
|
"ScaleAnchor": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"position": {
|
|
"description": "Observed axis coordinate in the selected coordinate space.",
|
|
"title": "Position",
|
|
"type": "number"
|
|
},
|
|
"value": {
|
|
"description": "Observed scale value, in one consistent numeric unit.",
|
|
"title": "Value",
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"position",
|
|
"value"
|
|
],
|
|
"title": "ScaleAnchor",
|
|
"type": "object"
|
|
},
|
|
"SequenceControlRequest": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"selector": {
|
|
"$ref": "#/$defs/ControlSelector"
|
|
},
|
|
"action": {
|
|
"enum": [
|
|
"click",
|
|
"long_click",
|
|
"focus",
|
|
"show_on_screen",
|
|
"set_progress",
|
|
"scroll_forward",
|
|
"scroll_backward",
|
|
"scroll_up",
|
|
"scroll_down",
|
|
"scroll_left",
|
|
"scroll_right",
|
|
"set_selection",
|
|
"replace_selection",
|
|
"set_text",
|
|
"ime_enter"
|
|
],
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"expected_token": {
|
|
"anyOf": [
|
|
{
|
|
"pattern": "^[a-f0-9]{64}$",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Expected Token"
|
|
},
|
|
"value": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Value"
|
|
},
|
|
"text": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 1024,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Text"
|
|
},
|
|
"selection_start": {
|
|
"anyOf": [
|
|
{
|
|
"minimum": 0,
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Selection Start"
|
|
},
|
|
"selection_end": {
|
|
"anyOf": [
|
|
{
|
|
"minimum": 0,
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Selection End"
|
|
},
|
|
"ensure_state": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/$defs/ControlCondition"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"description": "Desired observed state: skip an already satisfied action; otherwise write ONCE and verify by read-only polling. Never infer state from an icon or missing attributes."
|
|
},
|
|
"verify_timeout_ms": {
|
|
"default": 1500,
|
|
"maximum": 3000,
|
|
"minimum": 1,
|
|
"title": "Verify Timeout Ms",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"selector",
|
|
"action"
|
|
],
|
|
"title": "SequenceControlRequest",
|
|
"type": "object"
|
|
},
|
|
"TouchFrame": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"at_ms": {
|
|
"maximum": 10000,
|
|
"minimum": 0,
|
|
"title": "At Ms",
|
|
"type": "integer"
|
|
},
|
|
"points": {
|
|
"items": {
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 2,
|
|
"minItems": 2,
|
|
"type": "array"
|
|
},
|
|
"maxItems": 5,
|
|
"minItems": 1,
|
|
"title": "Points",
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"at_ms",
|
|
"points"
|
|
],
|
|
"title": "TouchFrame",
|
|
"type": "object"
|
|
},
|
|
"TouchGestureStep": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"frames": {
|
|
"items": {
|
|
"$ref": "#/$defs/TouchFrame"
|
|
},
|
|
"maxItems": 32,
|
|
"minItems": 2,
|
|
"title": "Frames",
|
|
"type": "array"
|
|
},
|
|
"coordinate_space": {
|
|
"default": "normalized",
|
|
"enum": [
|
|
"normalized",
|
|
"pixel"
|
|
],
|
|
"title": "Coordinate Space",
|
|
"type": "string"
|
|
},
|
|
"target_description": {
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"title": "Target Description",
|
|
"type": "string"
|
|
},
|
|
"require_visible": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Require Visible"
|
|
},
|
|
"region": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 4,
|
|
"minItems": 4,
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"description": "Observed gesture surface bounds in coordinate_space; every finger path must stay inside it.",
|
|
"title": "Region"
|
|
},
|
|
"action": {
|
|
"const": "touch_gesture",
|
|
"title": "Action",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"frames",
|
|
"target_description",
|
|
"action"
|
|
],
|
|
"title": "TouchGestureStep",
|
|
"type": "object"
|
|
},
|
|
"ValueFeedback": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"selector": {
|
|
"$ref": "#/$defs/ControlSelector",
|
|
"description": "Unique, observed persistent value readout, not a transient drag tooltip. Copy its stable selector, excluding changing text."
|
|
},
|
|
"value_format": {
|
|
"description": "range reads native range.current; number requires an entire numeric text; clock requires exactly one HH:MM:SS in readable text and returns seconds since midnight.",
|
|
"enum": [
|
|
"range",
|
|
"number",
|
|
"clock"
|
|
],
|
|
"title": "Value Format",
|
|
"type": "string"
|
|
},
|
|
"target_value": {
|
|
"title": "Target Value",
|
|
"type": "number"
|
|
},
|
|
"tolerance": {
|
|
"minimum": 0,
|
|
"title": "Tolerance",
|
|
"type": "number"
|
|
},
|
|
"stable_ms": {
|
|
"default": 1000,
|
|
"maximum": 5000,
|
|
"minimum": 100,
|
|
"title": "Stable Ms",
|
|
"type": "integer"
|
|
},
|
|
"timeout_ms": {
|
|
"default": 3000,
|
|
"maximum": 10000,
|
|
"minimum": 200,
|
|
"title": "Timeout Ms",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"selector",
|
|
"value_format",
|
|
"target_value",
|
|
"tolerance"
|
|
],
|
|
"title": "ValueFeedback",
|
|
"type": "object"
|
|
},
|
|
"WaitStep": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"action": {
|
|
"const": "wait",
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"time_in_ms": {
|
|
"maximum": 10000,
|
|
"minimum": 0,
|
|
"title": "Time In Ms",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"action",
|
|
"time_in_ms"
|
|
],
|
|
"title": "WaitStep",
|
|
"type": "object"
|
|
},
|
|
"WaitUntilStep": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"selector": {
|
|
"$ref": "#/$defs/ControlSelector"
|
|
},
|
|
"state": {
|
|
"enum": [
|
|
"visible",
|
|
"absent",
|
|
"enabled",
|
|
"disabled",
|
|
"checked",
|
|
"unchecked",
|
|
"selected",
|
|
"unselected",
|
|
"text",
|
|
"content_desc",
|
|
"value",
|
|
"stable"
|
|
],
|
|
"title": "State",
|
|
"type": "string"
|
|
},
|
|
"expected_text": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 4096,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Expected Text"
|
|
},
|
|
"expected_value": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Expected Value"
|
|
},
|
|
"tolerance": {
|
|
"default": 0,
|
|
"minimum": 0,
|
|
"title": "Tolerance",
|
|
"type": "number"
|
|
},
|
|
"stable_ms": {
|
|
"default": 300,
|
|
"maximum": 5000,
|
|
"minimum": 0,
|
|
"title": "Stable Ms",
|
|
"type": "integer"
|
|
},
|
|
"timeout_ms": {
|
|
"default": 1500,
|
|
"maximum": 3000,
|
|
"minimum": 1,
|
|
"title": "Timeout Ms",
|
|
"type": "integer"
|
|
},
|
|
"poll_interval_ms": {
|
|
"default": 200,
|
|
"maximum": 1000,
|
|
"minimum": 50,
|
|
"title": "Poll Interval Ms",
|
|
"type": "integer"
|
|
},
|
|
"action": {
|
|
"const": "wait_until",
|
|
"title": "Action",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"selector",
|
|
"state",
|
|
"action"
|
|
],
|
|
"title": "WaitUntilStep",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"properties": {
|
|
"steps": {
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/$defs/ClickStep"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/DragStep"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/WaitStep"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/EnsureVisibleStep"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/PinchStep"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/TouchGestureStep"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/ControlActionStep"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/WaitUntilStep"
|
|
}
|
|
]
|
|
},
|
|
"title": "Steps",
|
|
"type": "array"
|
|
},
|
|
"feedback": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/$defs/ValueFeedback"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null
|
|
}
|
|
},
|
|
"required": [
|
|
"steps"
|
|
],
|
|
"title": "action_sequenceArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"drag": {
|
|
"description": "Drag with exact coordinates or an observed two-anchor calibration.",
|
|
"inputSchema": {
|
|
"$defs": {
|
|
"ControlSelector": {
|
|
"additionalProperties": false,
|
|
"description": "Every supplied attribute is an exact AND match against a fresh native node.",
|
|
"properties": {
|
|
"resource_id": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Resource Id"
|
|
},
|
|
"text": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 4096,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Text"
|
|
},
|
|
"content_desc": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Content Desc"
|
|
},
|
|
"class_name": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Class Name"
|
|
},
|
|
"package_name": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Package Name"
|
|
},
|
|
"bounds": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 4,
|
|
"minItems": 4,
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Bounds"
|
|
}
|
|
},
|
|
"title": "ControlSelector",
|
|
"type": "object"
|
|
},
|
|
"DragCalibration": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"axis": {
|
|
"enum": [
|
|
"x",
|
|
"y"
|
|
],
|
|
"title": "Axis",
|
|
"type": "string"
|
|
},
|
|
"mode": {
|
|
"description": "thumb moves a handle to a value; pan moves a scale under a fixed indicator.",
|
|
"enum": [
|
|
"thumb",
|
|
"pan"
|
|
],
|
|
"title": "Mode",
|
|
"type": "string"
|
|
},
|
|
"anchors": {
|
|
"items": {
|
|
"$ref": "#/$defs/ScaleAnchor"
|
|
},
|
|
"maxItems": 2,
|
|
"minItems": 2,
|
|
"title": "Anchors",
|
|
"type": "array"
|
|
},
|
|
"target_value": {
|
|
"title": "Target Value",
|
|
"type": "number"
|
|
},
|
|
"indicator_position": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"description": "Required for pan: the fixed indicator's observed axis position.",
|
|
"title": "Indicator Position"
|
|
},
|
|
"tolerance": {
|
|
"anyOf": [
|
|
{
|
|
"minimum": 0,
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"description": "Allowed value error. Reject a plan whose pixel rounding exceeds it; this is geometric error only, not proof of application precision.",
|
|
"title": "Tolerance"
|
|
},
|
|
"min_movement_px": {
|
|
"anyOf": [
|
|
{
|
|
"exclusiveMinimum": 0,
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"description": "Previously measured minimum effective drag distance in pixels. If this calibrated move is smaller, refuse input and zoom first. Never guess a device-wide threshold.",
|
|
"title": "Min Movement Px"
|
|
}
|
|
},
|
|
"required": [
|
|
"axis",
|
|
"mode",
|
|
"anchors",
|
|
"target_value"
|
|
],
|
|
"title": "DragCalibration",
|
|
"type": "object"
|
|
},
|
|
"ScaleAnchor": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"position": {
|
|
"description": "Observed axis coordinate in the selected coordinate space.",
|
|
"title": "Position",
|
|
"type": "number"
|
|
},
|
|
"value": {
|
|
"description": "Observed scale value, in one consistent numeric unit.",
|
|
"title": "Value",
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"position",
|
|
"value"
|
|
],
|
|
"title": "ScaleAnchor",
|
|
"type": "object"
|
|
},
|
|
"ValueFeedback": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"selector": {
|
|
"$ref": "#/$defs/ControlSelector",
|
|
"description": "Unique, observed persistent value readout, not a transient drag tooltip. Copy its stable selector, excluding changing text."
|
|
},
|
|
"value_format": {
|
|
"description": "range reads native range.current; number requires an entire numeric text; clock requires exactly one HH:MM:SS in readable text and returns seconds since midnight.",
|
|
"enum": [
|
|
"range",
|
|
"number",
|
|
"clock"
|
|
],
|
|
"title": "Value Format",
|
|
"type": "string"
|
|
},
|
|
"target_value": {
|
|
"title": "Target Value",
|
|
"type": "number"
|
|
},
|
|
"tolerance": {
|
|
"minimum": 0,
|
|
"title": "Tolerance",
|
|
"type": "number"
|
|
},
|
|
"stable_ms": {
|
|
"default": 1000,
|
|
"maximum": 5000,
|
|
"minimum": 100,
|
|
"title": "Stable Ms",
|
|
"type": "integer"
|
|
},
|
|
"timeout_ms": {
|
|
"default": 3000,
|
|
"maximum": 10000,
|
|
"minimum": 200,
|
|
"title": "Timeout Ms",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"selector",
|
|
"value_format",
|
|
"target_value",
|
|
"tolerance"
|
|
],
|
|
"title": "ValueFeedback",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"properties": {
|
|
"start": {
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"title": "Start",
|
|
"type": "array"
|
|
},
|
|
"target_description": {
|
|
"title": "Target Description",
|
|
"type": "string"
|
|
},
|
|
"end": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "End"
|
|
},
|
|
"coordinate_space": {
|
|
"default": "normalized",
|
|
"enum": [
|
|
"normalized",
|
|
"pixel"
|
|
],
|
|
"title": "Coordinate Space",
|
|
"type": "string"
|
|
},
|
|
"duration_ms": {
|
|
"default": 300,
|
|
"title": "Duration Ms",
|
|
"type": "integer"
|
|
},
|
|
"region": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 4,
|
|
"minItems": 4,
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Region"
|
|
},
|
|
"feedback": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/$defs/ValueFeedback"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null
|
|
},
|
|
"calibration": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/$defs/DragCalibration"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null
|
|
},
|
|
"require_visible": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Require Visible"
|
|
}
|
|
},
|
|
"required": [
|
|
"start",
|
|
"target_description"
|
|
],
|
|
"title": "dragArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"click": {
|
|
"description": "Tap at a 0-1000 normalized [x, y] coordinate.",
|
|
"inputSchema": {
|
|
"properties": {
|
|
"target": {
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"title": "Target",
|
|
"type": "array"
|
|
},
|
|
"times": {
|
|
"default": 1,
|
|
"title": "Times",
|
|
"type": "integer"
|
|
},
|
|
"delay_ms": {
|
|
"default": 100,
|
|
"title": "Delay Ms",
|
|
"type": "integer"
|
|
},
|
|
"expected_resource_id": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Expected Resource Id"
|
|
}
|
|
},
|
|
"required": [
|
|
"target"
|
|
],
|
|
"title": "clickArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"click_sequence": {
|
|
"description": "Tap a series of 0-1000 normalized [x, y] points in one atomic burst.",
|
|
"inputSchema": {
|
|
"properties": {
|
|
"sequence": {
|
|
"items": {
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"title": "Sequence",
|
|
"type": "array"
|
|
},
|
|
"delay_ms": {
|
|
"default": 50,
|
|
"title": "Delay Ms",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"sequence"
|
|
],
|
|
"title": "click_sequenceArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"long_press": {
|
|
"description": "Long-press at a 0-1000 normalized [x, y] coordinate.",
|
|
"inputSchema": {
|
|
"properties": {
|
|
"target": {
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"title": "Target",
|
|
"type": "array"
|
|
},
|
|
"duration_ms": {
|
|
"default": 1000,
|
|
"title": "Duration Ms",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"target"
|
|
],
|
|
"title": "long_pressArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"input_text": {
|
|
"description": "Type text, optionally focusing a 0-1000 normalized [x, y] target first.",
|
|
"inputSchema": {
|
|
"properties": {
|
|
"text": {
|
|
"title": "Text",
|
|
"type": "string"
|
|
},
|
|
"target": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Target"
|
|
},
|
|
"clear_exist": {
|
|
"default": true,
|
|
"title": "Clear Exist",
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
],
|
|
"title": "input_textArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"swipe": {
|
|
"description": "Swipe between two 0-1000 normalized [x, y] points.",
|
|
"inputSchema": {
|
|
"properties": {
|
|
"start": {
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"title": "Start",
|
|
"type": "array"
|
|
},
|
|
"end": {
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"title": "End",
|
|
"type": "array"
|
|
},
|
|
"duration_ms": {
|
|
"default": 800,
|
|
"title": "Duration Ms",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"start",
|
|
"end"
|
|
],
|
|
"title": "swipeArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"press_key": {
|
|
"description": "Press a device key (home, back, enter, delete, tab, search, menu, app_switch).",
|
|
"inputSchema": {
|
|
"properties": {
|
|
"key": {
|
|
"title": "Key",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"key"
|
|
],
|
|
"title": "press_keyArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"manage_app": {
|
|
"description": "Launch or stop an app by human-readable name or package.",
|
|
"inputSchema": {
|
|
"properties": {
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"app_name": {
|
|
"title": "App Name",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"action",
|
|
"app_name"
|
|
],
|
|
"title": "manage_appArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"wait_for_delay": {
|
|
"description": "Wait for a fixed number of milliseconds.",
|
|
"inputSchema": {
|
|
"properties": {
|
|
"time_in_ms": {
|
|
"title": "Time In Ms",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"time_in_ms"
|
|
],
|
|
"title": "wait_for_delayArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"wait_for_text": {
|
|
"description": "Wait for text to appear on or disappear from the screen.",
|
|
"inputSchema": {
|
|
"properties": {
|
|
"text": {
|
|
"title": "Text",
|
|
"type": "string"
|
|
},
|
|
"wait_state": {
|
|
"default": "appear",
|
|
"title": "Wait State",
|
|
"type": "string"
|
|
},
|
|
"timeout_ms": {
|
|
"default": 5000,
|
|
"title": "Timeout Ms",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
],
|
|
"title": "wait_for_textArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"open_link": {
|
|
"description": "Open a URL on the device.",
|
|
"inputSchema": {
|
|
"properties": {
|
|
"url": {
|
|
"title": "Url",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"url"
|
|
],
|
|
"title": "open_linkArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"erase_one_char": {
|
|
"description": "Erase a single character in the focused field.",
|
|
"inputSchema": {
|
|
"properties": {},
|
|
"title": "erase_one_charArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"focus_and_clear_text": {
|
|
"description": "Focus the field at a 0-1000 normalized [x, y] and clear its text.",
|
|
"inputSchema": {
|
|
"properties": {
|
|
"target": {
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"title": "Target",
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"target"
|
|
],
|
|
"title": "focus_and_clear_textArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"pinch": {
|
|
"description": "[ACTION] Synchronized two-finger pinch/rotation on an observed canvas. center and spans use coordinate_space: pixel is current screenshot pixels; normalized is 0..1000, with spans measured against the SHORT screen edge to preserve angles. angle_degrees starts from the horizontal axis, positive clockwise; rotation_degrees adds rotation. All paths are validated before input; off-screen paths fail without clamping. The span ratio is a gesture instruction, not proof of the app's resulting scale. Small spans may stay below the app's recognition threshold; choose a sufficiently large safe span inside the observed canvas and read the actual post-action ticks/value before recalibrating a precise drag.",
|
|
"inputSchema": {
|
|
"properties": {
|
|
"center": {
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 2,
|
|
"minItems": 2,
|
|
"title": "Center",
|
|
"type": "array"
|
|
},
|
|
"start_span": {
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 20000,
|
|
"title": "Start Span",
|
|
"type": "integer"
|
|
},
|
|
"end_span": {
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 20000,
|
|
"title": "End Span",
|
|
"type": "integer"
|
|
},
|
|
"target_description": {
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"title": "Target Description",
|
|
"type": "string"
|
|
},
|
|
"angle_degrees": {
|
|
"default": 0,
|
|
"maximum": 360,
|
|
"minimum": -360,
|
|
"title": "Angle Degrees",
|
|
"type": "number"
|
|
},
|
|
"rotation_degrees": {
|
|
"default": 0,
|
|
"maximum": 360,
|
|
"minimum": -360,
|
|
"title": "Rotation Degrees",
|
|
"type": "number"
|
|
},
|
|
"duration_ms": {
|
|
"default": 800,
|
|
"maximum": 10000,
|
|
"minimum": 1,
|
|
"title": "Duration Ms",
|
|
"type": "integer"
|
|
},
|
|
"coordinate_space": {
|
|
"default": "normalized",
|
|
"enum": [
|
|
"normalized",
|
|
"pixel"
|
|
],
|
|
"title": "Coordinate Space",
|
|
"type": "string"
|
|
},
|
|
"require_visible": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Require Visible"
|
|
},
|
|
"region": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 4,
|
|
"minItems": 4,
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Region"
|
|
}
|
|
},
|
|
"required": [
|
|
"center",
|
|
"start_span",
|
|
"end_span",
|
|
"target_description"
|
|
],
|
|
"title": "pinchArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"touch_gesture": {
|
|
"description": "[ACTION] Continuous synchronized native touch paths with 1..5 fingers. frames contain at_ms and points; times strictly increase from 0 to at most 10000ms, same finger count in every frame. Equal adjacent points hold contact; later points move WITHOUT lifting, enabling hold-then-drag and multi-segment gestures. Use 2..32 frames, observed geometry and explicit coordinate_space. All frames are validated before input. Completion reports Android gesture dispatch; verify that the app actually received the input and produced the intended effect.",
|
|
"inputSchema": {
|
|
"$defs": {
|
|
"TouchFrame": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"at_ms": {
|
|
"maximum": 10000,
|
|
"minimum": 0,
|
|
"title": "At Ms",
|
|
"type": "integer"
|
|
},
|
|
"points": {
|
|
"items": {
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 2,
|
|
"minItems": 2,
|
|
"type": "array"
|
|
},
|
|
"maxItems": 5,
|
|
"minItems": 1,
|
|
"title": "Points",
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"at_ms",
|
|
"points"
|
|
],
|
|
"title": "TouchFrame",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"properties": {
|
|
"frames": {
|
|
"items": {
|
|
"$ref": "#/$defs/TouchFrame"
|
|
},
|
|
"maxItems": 32,
|
|
"minItems": 2,
|
|
"title": "Frames",
|
|
"type": "array"
|
|
},
|
|
"target_description": {
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"title": "Target Description",
|
|
"type": "string"
|
|
},
|
|
"coordinate_space": {
|
|
"default": "normalized",
|
|
"enum": [
|
|
"normalized",
|
|
"pixel"
|
|
],
|
|
"title": "Coordinate Space",
|
|
"type": "string"
|
|
},
|
|
"require_visible": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Require Visible"
|
|
},
|
|
"region": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 4,
|
|
"minItems": 4,
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Region"
|
|
}
|
|
},
|
|
"required": [
|
|
"frames",
|
|
"target_description"
|
|
],
|
|
"title": "touch_gestureArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"read_control": {
|
|
"description": "[OBSERVE] Read ONE live native control by exact AND selector copied from the current UI. Use resource_id/text/content_desc/class_name and optional package_name/bounds to disambiguate. Returns current range/value, supported native actions, editable selection (UTF-16 offsets), identity token and visible subtree content_signature. Missing or ambiguous controls fail explicitly. Custom canvas controls may expose no range/actions; then use calibrated gestures and visual verification.",
|
|
"inputSchema": {
|
|
"$defs": {
|
|
"ControlSelector": {
|
|
"additionalProperties": false,
|
|
"description": "Every supplied attribute is an exact AND match against a fresh native node.",
|
|
"properties": {
|
|
"resource_id": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Resource Id"
|
|
},
|
|
"text": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 4096,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Text"
|
|
},
|
|
"content_desc": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Content Desc"
|
|
},
|
|
"class_name": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Class Name"
|
|
},
|
|
"package_name": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Package Name"
|
|
},
|
|
"bounds": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 4,
|
|
"minItems": 4,
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Bounds"
|
|
}
|
|
},
|
|
"title": "ControlSelector",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"properties": {
|
|
"selector": {
|
|
"$ref": "#/$defs/ControlSelector"
|
|
}
|
|
},
|
|
"required": [
|
|
"selector"
|
|
],
|
|
"title": "read_controlArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"control_action": {
|
|
"description": "[ACTION] Perform ONE supported native action on a freshly resolved unique control. Read_control first; copy selector exactly and optionally expected_token to reject stale evidence. For a desired state use ensure_state (checked/selected/text/content_desc/value), then verify_timeout_ms: skip an already satisfied state, otherwise write ONCE and poll read-only. Copy observed state semantics; do not assume selected means paused. Bind a stable selector excluding text/content_desc that the action changes. A failed postcondition does not undo the completed input and must not cause an automatic second toggle. action=set_progress requires a finite in-range value; set_selection requires selection_start/end in UTF-16 code units (never split an emoji). set_text and replace_selection require text, including empty text; whitespace is preserved. Other actions take no text/value/selection. ime_enter invokes the advertised IME submit action. Unsupported actions fail without coordinate fallback or replay. Focus or selection changes may move the target; before subsequent edits, use wait_until state=stable when needed. STALE means no action started; observe again before rebuilding the request. Never resend an unknown write. An accepted action is not business verification; inspect the returned/current state.",
|
|
"inputSchema": {
|
|
"$defs": {
|
|
"ControlCondition": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"state": {
|
|
"enum": [
|
|
"checked",
|
|
"unchecked",
|
|
"selected",
|
|
"unselected",
|
|
"text",
|
|
"content_desc",
|
|
"value"
|
|
],
|
|
"title": "State",
|
|
"type": "string"
|
|
},
|
|
"expected_text": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 4096,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Expected Text"
|
|
},
|
|
"expected_value": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Expected Value"
|
|
},
|
|
"tolerance": {
|
|
"default": 0,
|
|
"minimum": 0,
|
|
"title": "Tolerance",
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"state"
|
|
],
|
|
"title": "ControlCondition",
|
|
"type": "object"
|
|
},
|
|
"ControlSelector": {
|
|
"additionalProperties": false,
|
|
"description": "Every supplied attribute is an exact AND match against a fresh native node.",
|
|
"properties": {
|
|
"resource_id": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Resource Id"
|
|
},
|
|
"text": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 4096,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Text"
|
|
},
|
|
"content_desc": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Content Desc"
|
|
},
|
|
"class_name": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Class Name"
|
|
},
|
|
"package_name": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Package Name"
|
|
},
|
|
"bounds": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 4,
|
|
"minItems": 4,
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Bounds"
|
|
}
|
|
},
|
|
"title": "ControlSelector",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"properties": {
|
|
"selector": {
|
|
"$ref": "#/$defs/ControlSelector"
|
|
},
|
|
"action": {
|
|
"enum": [
|
|
"click",
|
|
"long_click",
|
|
"focus",
|
|
"show_on_screen",
|
|
"set_progress",
|
|
"scroll_forward",
|
|
"scroll_backward",
|
|
"scroll_up",
|
|
"scroll_down",
|
|
"scroll_left",
|
|
"scroll_right",
|
|
"set_selection",
|
|
"replace_selection",
|
|
"set_text",
|
|
"ime_enter"
|
|
],
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"expected_token": {
|
|
"anyOf": [
|
|
{
|
|
"pattern": "^[a-f0-9]{64}$",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Expected Token"
|
|
},
|
|
"value": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Value"
|
|
},
|
|
"text": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 65536,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Text"
|
|
},
|
|
"selection_start": {
|
|
"anyOf": [
|
|
{
|
|
"minimum": 0,
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Selection Start"
|
|
},
|
|
"selection_end": {
|
|
"anyOf": [
|
|
{
|
|
"minimum": 0,
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Selection End"
|
|
},
|
|
"ensure_state": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/$defs/ControlCondition"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null
|
|
},
|
|
"verify_timeout_ms": {
|
|
"default": 1500,
|
|
"maximum": 3000,
|
|
"minimum": 1,
|
|
"title": "Verify Timeout Ms",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"selector",
|
|
"action"
|
|
],
|
|
"title": "control_actionArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"wait_until": {
|
|
"description": "[OBSERVE] Bounded polling of a unique live native control, replacing blind delays. state=text requires exact expected_text; value requires expected_value and optional tolerance. stable requires at least two unchanged native observations for stable_ms, not pixel stability. Other states inspect visible/enabled/checked/selected or absence. Ambiguity, unavailable page or transport failure never counts as absence. timeout_ms is at most 30000; no input is dispatched.",
|
|
"inputSchema": {
|
|
"$defs": {
|
|
"ControlSelector": {
|
|
"additionalProperties": false,
|
|
"description": "Every supplied attribute is an exact AND match against a fresh native node.",
|
|
"properties": {
|
|
"resource_id": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Resource Id"
|
|
},
|
|
"text": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 4096,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Text"
|
|
},
|
|
"content_desc": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Content Desc"
|
|
},
|
|
"class_name": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Class Name"
|
|
},
|
|
"package_name": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Package Name"
|
|
},
|
|
"bounds": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 4,
|
|
"minItems": 4,
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Bounds"
|
|
}
|
|
},
|
|
"title": "ControlSelector",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"properties": {
|
|
"selector": {
|
|
"$ref": "#/$defs/ControlSelector"
|
|
},
|
|
"state": {
|
|
"enum": [
|
|
"visible",
|
|
"absent",
|
|
"enabled",
|
|
"disabled",
|
|
"checked",
|
|
"unchecked",
|
|
"selected",
|
|
"unselected",
|
|
"text",
|
|
"content_desc",
|
|
"value",
|
|
"stable"
|
|
],
|
|
"title": "State",
|
|
"type": "string"
|
|
},
|
|
"expected_text": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 4096,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Expected Text"
|
|
},
|
|
"expected_value": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Expected Value"
|
|
},
|
|
"tolerance": {
|
|
"default": 0,
|
|
"minimum": 0,
|
|
"title": "Tolerance",
|
|
"type": "number"
|
|
},
|
|
"stable_ms": {
|
|
"default": 300,
|
|
"maximum": 5000,
|
|
"minimum": 0,
|
|
"title": "Stable Ms",
|
|
"type": "integer"
|
|
},
|
|
"timeout_ms": {
|
|
"default": 5000,
|
|
"maximum": 30000,
|
|
"minimum": 1,
|
|
"title": "Timeout Ms",
|
|
"type": "integer"
|
|
},
|
|
"poll_interval_ms": {
|
|
"default": 200,
|
|
"maximum": 1000,
|
|
"minimum": 50,
|
|
"title": "Poll Interval Ms",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"selector",
|
|
"state"
|
|
],
|
|
"title": "wait_untilArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"scroll_to": {
|
|
"description": "[ACTION] Bounded native scrolling INSIDE a uniquely observed container until its scoped target becomes visible. Copy exact container and target selectors; direction is forward/backward/up/down/left/right. After each scroll, container content and the scoped target's visibility/identity must remain unchanged for settle_ms before success or another scroll. Stops at max_scrolls, timeout, unsupported action or no content progress. Retains every scroll receipt and never repeats unacknowledged input. Finding a target does not click it or verify a business outcome.",
|
|
"inputSchema": {
|
|
"$defs": {
|
|
"ControlSelector": {
|
|
"additionalProperties": false,
|
|
"description": "Every supplied attribute is an exact AND match against a fresh native node.",
|
|
"properties": {
|
|
"resource_id": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Resource Id"
|
|
},
|
|
"text": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 4096,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Text"
|
|
},
|
|
"content_desc": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Content Desc"
|
|
},
|
|
"class_name": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Class Name"
|
|
},
|
|
"package_name": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 512,
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Package Name"
|
|
},
|
|
"bounds": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"maxItems": 4,
|
|
"minItems": 4,
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Bounds"
|
|
}
|
|
},
|
|
"title": "ControlSelector",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"properties": {
|
|
"container": {
|
|
"$ref": "#/$defs/ControlSelector"
|
|
},
|
|
"target": {
|
|
"$ref": "#/$defs/ControlSelector"
|
|
},
|
|
"direction": {
|
|
"default": "forward",
|
|
"enum": [
|
|
"forward",
|
|
"backward",
|
|
"up",
|
|
"down",
|
|
"left",
|
|
"right"
|
|
],
|
|
"title": "Direction",
|
|
"type": "string"
|
|
},
|
|
"max_scrolls": {
|
|
"default": 10,
|
|
"maximum": 20,
|
|
"minimum": 1,
|
|
"title": "Max Scrolls",
|
|
"type": "integer"
|
|
},
|
|
"timeout_ms": {
|
|
"default": 10000,
|
|
"maximum": 30000,
|
|
"minimum": 1,
|
|
"title": "Timeout Ms",
|
|
"type": "integer"
|
|
},
|
|
"settle_ms": {
|
|
"default": 300,
|
|
"maximum": 3000,
|
|
"minimum": 50,
|
|
"title": "Settle Ms",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"container",
|
|
"target"
|
|
],
|
|
"title": "scroll_toArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Outcome of one device action, independent of any transport or agent.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode"
|
|
},
|
|
"action": {
|
|
"title": "Action",
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Detail"
|
|
},
|
|
"normalized_coordinates": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Normalized Coordinates"
|
|
},
|
|
"duration_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Duration Ms"
|
|
},
|
|
"metadata": {
|
|
"additionalProperties": true,
|
|
"title": "Metadata",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"code",
|
|
"action",
|
|
"message"
|
|
],
|
|
"title": "ActionResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"observe_screen": {
|
|
"description": "Capture and index the current screen (adapter-internal).",
|
|
"inputSchema": {
|
|
"properties": {
|
|
"settle_ms": {
|
|
"default": 400,
|
|
"title": "Settle Ms",
|
|
"type": "integer"
|
|
},
|
|
"include_image": {
|
|
"default": false,
|
|
"title": "Include Image",
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"title": "observe_screenArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": {
|
|
"$defs": {
|
|
"ActionCode": {
|
|
"description": "Machine-readable outcome classification for a device action.",
|
|
"enum": [
|
|
"OK",
|
|
"INVALID_ARGS",
|
|
"TARGET_NOT_FOUND",
|
|
"DEVICE_ERROR",
|
|
"PACKAGE_NOT_FOUND",
|
|
"TIMEOUT",
|
|
"UNSUPPORTED"
|
|
],
|
|
"title": "ActionCode",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Post-action observation: persisted screenshot plus the parsed element list.",
|
|
"properties": {
|
|
"ok": {
|
|
"title": "Ok",
|
|
"type": "boolean"
|
|
},
|
|
"code": {
|
|
"$ref": "#/$defs/ActionCode",
|
|
"default": "OK"
|
|
},
|
|
"message": {
|
|
"default": "",
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"screenshot_path": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Screenshot Path"
|
|
},
|
|
"image_name": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Image Name"
|
|
},
|
|
"width": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Width"
|
|
},
|
|
"height": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Height"
|
|
},
|
|
"elements_text": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Elements Text"
|
|
},
|
|
"elements": {
|
|
"items": {
|
|
"additionalProperties": true,
|
|
"type": "object"
|
|
},
|
|
"title": "Elements",
|
|
"type": "array"
|
|
},
|
|
"hierarchy_ok": {
|
|
"default": true,
|
|
"title": "Hierarchy Ok",
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok"
|
|
],
|
|
"title": "ObserveResult",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"take_screenshot": {
|
|
"description": "Return the current screen as base64 (adapter-internal, no persistence).",
|
|
"inputSchema": {
|
|
"properties": {
|
|
"timeout_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Timeout Ms"
|
|
}
|
|
},
|
|
"title": "take_screenshotArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": null
|
|
},
|
|
"get_ui_hierarchy": {
|
|
"description": "Return the raw UI element hierarchy (adapter-internal).",
|
|
"inputSchema": {
|
|
"properties": {
|
|
"timeout_ms": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"title": "Timeout Ms"
|
|
}
|
|
},
|
|
"title": "get_ui_hierarchyArguments",
|
|
"type": "object"
|
|
},
|
|
"outputSchema": null
|
|
}
|
|
}
|