feat: add gesture sequences and calibrated pixel drags

This commit is contained in:
chenmingxuan committed 2026-11-02 11:53:27 +08:00
1 parent 2a3bbaa3fb
commit 479a185192
31 files changed
+2440 -44

No files matched your search

@@ -1,4 +1,570 @@
{
"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": {
"items": {
"type": "integer"
},
"maxItems": 2,
"minItems": 2,
"title": "Target",
"type": "array"
},
"target_description": {
"minLength": 1,
"title": "Target Description",
"type": "string"
},
"coordinate_space": {
"default": "normalized",
"enum": [
"normalized",
"pixel"
],
"title": "Coordinate Space",
"type": "string"
}
},
"required": [
"action",
"target",
"target_description"
],
"title": "ClickStep",
"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"
}
},
"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"
},
"calibration": {
"anyOf": [
{
"$ref": "#/$defs/DragCalibration"
},
{
"type": "null"
}
],
"default": null,
"description": "Computes the endpoint from observed anchors; then set end=null."
},
"action": {
"const": "drag",
"title": "Action",
"type": "string"
}
},
"required": [
"start",
"target_description",
"action"
],
"title": "DragStep",
"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"
},
"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"
}
},
"properties": {
"steps": {
"items": {
"anyOf": [
{
"$ref": "#/$defs/ClickStep"
},
{
"$ref": "#/$defs/DragStep"
},
{
"$ref": "#/$defs/WaitStep"
}
]
},
"title": "Steps",
"type": "array"
}
},
"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": {
"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"
}
},
"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"
}
},
"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"
},
"calibration": {
"anyOf": [
{
"$ref": "#/$defs/DragCalibration"
},
{
"type": "null"
}
],
"default": null
}
},
"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": {
@@ -99,6 +665,11 @@
],
"default": null,
"title": "Duration Ms"
},
"metadata": {
"additionalProperties": true,
"title": "Metadata",
"type": "object"
}
},
"required": [
@@ -209,6 +780,11 @@
],
"default": null,
"title": "Duration Ms"
},
"metadata": {
"additionalProperties": true,
"title": "Metadata",
"type": "object"
}
},
"required": [
@@ -316,6 +892,11 @@
],
"default": null,
"title": "Duration Ms"
},
"metadata": {
"additionalProperties": true,
"title": "Metadata",
"type": "object"
}
},
"required": [
@@ -435,6 +1016,11 @@
],
"default": null,
"title": "Duration Ms"
},
"metadata": {
"additionalProperties": true,
"title": "Metadata",
"type": "object"
}
},
"required": [
@@ -550,6 +1136,11 @@
],
"default": null,
"title": "Duration Ms"
},
"metadata": {
"additionalProperties": true,
"title": "Metadata",
"type": "object"
}
},
"required": [
@@ -649,6 +1240,11 @@
],
"default": null,
"title": "Duration Ms"
},
"metadata": {
"additionalProperties": true,
"title": "Metadata",
"type": "object"
}
},
"required": [
@@ -753,6 +1349,11 @@
],
"default": null,
"title": "Duration Ms"
},
"metadata": {
"additionalProperties": true,
"title": "Metadata",
"type": "object"
}
},
"required": [
@@ -852,6 +1453,11 @@
],
"default": null,
"title": "Duration Ms"
},
"metadata": {
"additionalProperties": true,
"title": "Metadata",
"type": "object"
}
},
"required": [
@@ -961,6 +1567,11 @@
],
"default": null,
"title": "Duration Ms"
},
"metadata": {
"additionalProperties": true,
"title": "Metadata",
"type": "object"
}
},
"required": [
@@ -1060,6 +1671,11 @@
],
"default": null,
"title": "Duration Ms"
},
"metadata": {
"additionalProperties": true,
"title": "Metadata",
"type": "object"
}
},
"required": [
@@ -1151,6 +1767,11 @@
],
"default": null,
"title": "Duration Ms"
},
"metadata": {
"additionalProperties": true,
"title": "Metadata",
"type": "object"
}
},
"required": [
@@ -1253,6 +1874,11 @@
],
"default": null,
"title": "Duration Ms"
},
"metadata": {
"additionalProperties": true,
"title": "Metadata",
"type": "object"
}
},
"required": [