@kaeawc/auto-mobile 0.0.28 → 0.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1623,11 +1623,11 @@
1623
1623
  },
1624
1624
  "elementId": {
1625
1625
  "type": "string",
1626
- "description": "Element resource ID / accessibility identifier"
1626
+ "description": "Element resource-id (e.g. \"com.app:id/btn_login\"). Only use for resource-id values."
1627
1627
  },
1628
1628
  "text": {
1629
1629
  "type": "string",
1630
- "description": "Element text"
1630
+ "description": "Element text, content-desc, or placeholder value from observe output."
1631
1631
  },
1632
1632
  "container": {
1633
1633
  "description": "Container selector object to scope search. Provide { \"elementId\": \"<id>\" } or { \"text\": \"<text>\" }.",
@@ -5961,13 +5961,1133 @@
5961
5961
  "additionalProperties": false
5962
5962
  }
5963
5963
  },
5964
+ {
5965
+ "name": "tapAny",
5966
+ "description": "Tap any clickable element without knowing its text or ID. Good for tapping the first list item. Use container to scope, selectionStrategy to pick 'first' (default) or 'random', and scrollableContainer: true to limit to list/RecyclerView items.",
5967
+ "inputSchema": {
5968
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
5969
+ "type": "object",
5970
+ "properties": {
5971
+ "container": {
5972
+ "description": "Container selector object to scope search. Provide { \"elementId\": \"<id>\" } or { \"text\": \"<text>\" }.",
5973
+ "anyOf": [
5974
+ {
5975
+ "type": "object",
5976
+ "properties": {
5977
+ "elementId": {
5978
+ "type": "string",
5979
+ "description": "Container resource ID"
5980
+ }
5981
+ },
5982
+ "required": [
5983
+ "elementId"
5984
+ ],
5985
+ "additionalProperties": false
5986
+ },
5987
+ {
5988
+ "type": "object",
5989
+ "properties": {
5990
+ "text": {
5991
+ "type": "string",
5992
+ "description": "Container text"
5993
+ }
5994
+ },
5995
+ "required": [
5996
+ "text"
5997
+ ],
5998
+ "additionalProperties": false
5999
+ }
6000
+ ]
6001
+ },
6002
+ "selectionStrategy": {
6003
+ "description": "Element selection strategy: 'first' (default) or 'random'",
6004
+ "type": "string",
6005
+ "enum": [
6006
+ "first",
6007
+ "random"
6008
+ ]
6009
+ },
6010
+ "scrollableContainer": {
6011
+ "description": "Only search within scrollable containers (lists/RecyclerViews). Use this to avoid tapping search bars or other clickable UI elements when you want the first list item.",
6012
+ "type": "boolean"
6013
+ },
6014
+ "action": {
6015
+ "default": "tap",
6016
+ "description": "Action type (default: tap)",
6017
+ "type": "string",
6018
+ "enum": [
6019
+ "tap",
6020
+ "doubleTap",
6021
+ "longPress"
6022
+ ]
6023
+ },
6024
+ "duration": {
6025
+ "description": "Long press duration (ms)",
6026
+ "type": "number"
6027
+ },
6028
+ "searchUntil": {
6029
+ "description": "Poll for clickable element before tapping",
6030
+ "type": "object",
6031
+ "properties": {
6032
+ "duration": {
6033
+ "description": "Polling duration (ms, default: 500)",
6034
+ "type": "number",
6035
+ "minimum": 100,
6036
+ "maximum": 12000
6037
+ }
6038
+ },
6039
+ "additionalProperties": false
6040
+ },
6041
+ "platform": {
6042
+ "type": "string",
6043
+ "enum": [
6044
+ "android",
6045
+ "ios"
6046
+ ],
6047
+ "description": "Target platform"
6048
+ },
6049
+ "sessionUuid": {
6050
+ "description": "Session UUID",
6051
+ "type": "string"
6052
+ },
6053
+ "keepScreenAwake": {
6054
+ "description": "Keep device awake",
6055
+ "type": "boolean"
6056
+ },
6057
+ "device": {
6058
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")",
6059
+ "type": "string"
6060
+ },
6061
+ "deviceId": {
6062
+ "description": "Device ID",
6063
+ "type": "string"
6064
+ }
6065
+ },
6066
+ "required": [
6067
+ "action",
6068
+ "platform"
6069
+ ],
6070
+ "additionalProperties": false
6071
+ },
6072
+ "outputSchema": {
6073
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
6074
+ "type": "object",
6075
+ "properties": {
6076
+ "success": {
6077
+ "type": "boolean"
6078
+ },
6079
+ "action": {
6080
+ "type": "string",
6081
+ "enum": [
6082
+ "tap",
6083
+ "doubleTap",
6084
+ "longPress",
6085
+ "focus"
6086
+ ]
6087
+ },
6088
+ "message": {
6089
+ "type": "string"
6090
+ },
6091
+ "element": {
6092
+ "type": "object",
6093
+ "properties": {
6094
+ "bounds": {
6095
+ "type": "object",
6096
+ "properties": {
6097
+ "left": {
6098
+ "type": "integer",
6099
+ "minimum": -9007199254740991,
6100
+ "maximum": 9007199254740991
6101
+ },
6102
+ "top": {
6103
+ "type": "integer",
6104
+ "minimum": -9007199254740991,
6105
+ "maximum": 9007199254740991
6106
+ },
6107
+ "right": {
6108
+ "type": "integer",
6109
+ "minimum": -9007199254740991,
6110
+ "maximum": 9007199254740991
6111
+ },
6112
+ "bottom": {
6113
+ "type": "integer",
6114
+ "minimum": -9007199254740991,
6115
+ "maximum": 9007199254740991
6116
+ },
6117
+ "centerX": {
6118
+ "type": "integer",
6119
+ "minimum": -9007199254740991,
6120
+ "maximum": 9007199254740991
6121
+ },
6122
+ "centerY": {
6123
+ "type": "integer",
6124
+ "minimum": -9007199254740991,
6125
+ "maximum": 9007199254740991
6126
+ }
6127
+ },
6128
+ "required": [
6129
+ "left",
6130
+ "top",
6131
+ "right",
6132
+ "bottom"
6133
+ ],
6134
+ "additionalProperties": false
6135
+ },
6136
+ "text": {
6137
+ "type": "string"
6138
+ },
6139
+ "resource-id": {
6140
+ "type": "string"
6141
+ },
6142
+ "content-desc": {
6143
+ "type": "string"
6144
+ },
6145
+ "class": {
6146
+ "type": "string"
6147
+ },
6148
+ "package": {
6149
+ "type": "string"
6150
+ },
6151
+ "checkable": {
6152
+ "anyOf": [
6153
+ {
6154
+ "type": "boolean"
6155
+ },
6156
+ {
6157
+ "type": "string",
6158
+ "const": "true"
6159
+ },
6160
+ {
6161
+ "type": "string",
6162
+ "const": "false"
6163
+ }
6164
+ ]
6165
+ },
6166
+ "checked": {
6167
+ "anyOf": [
6168
+ {
6169
+ "type": "boolean"
6170
+ },
6171
+ {
6172
+ "type": "string",
6173
+ "const": "true"
6174
+ },
6175
+ {
6176
+ "type": "string",
6177
+ "const": "false"
6178
+ }
6179
+ ]
6180
+ },
6181
+ "clickable": {
6182
+ "anyOf": [
6183
+ {
6184
+ "type": "boolean"
6185
+ },
6186
+ {
6187
+ "type": "string",
6188
+ "const": "true"
6189
+ },
6190
+ {
6191
+ "type": "string",
6192
+ "const": "false"
6193
+ }
6194
+ ]
6195
+ },
6196
+ "enabled": {
6197
+ "anyOf": [
6198
+ {
6199
+ "type": "boolean"
6200
+ },
6201
+ {
6202
+ "type": "string",
6203
+ "const": "true"
6204
+ },
6205
+ {
6206
+ "type": "string",
6207
+ "const": "false"
6208
+ }
6209
+ ]
6210
+ },
6211
+ "focusable": {
6212
+ "anyOf": [
6213
+ {
6214
+ "type": "boolean"
6215
+ },
6216
+ {
6217
+ "type": "string",
6218
+ "const": "true"
6219
+ },
6220
+ {
6221
+ "type": "string",
6222
+ "const": "false"
6223
+ }
6224
+ ]
6225
+ },
6226
+ "focused": {
6227
+ "anyOf": [
6228
+ {
6229
+ "type": "boolean"
6230
+ },
6231
+ {
6232
+ "type": "string",
6233
+ "const": "true"
6234
+ },
6235
+ {
6236
+ "type": "string",
6237
+ "const": "false"
6238
+ }
6239
+ ]
6240
+ },
6241
+ "accessibility-focused": {
6242
+ "anyOf": [
6243
+ {
6244
+ "type": "boolean"
6245
+ },
6246
+ {
6247
+ "type": "string",
6248
+ "const": "true"
6249
+ },
6250
+ {
6251
+ "type": "string",
6252
+ "const": "false"
6253
+ }
6254
+ ]
6255
+ },
6256
+ "scrollable": {
6257
+ "anyOf": [
6258
+ {
6259
+ "type": "boolean"
6260
+ },
6261
+ {
6262
+ "type": "string",
6263
+ "const": "true"
6264
+ },
6265
+ {
6266
+ "type": "string",
6267
+ "const": "false"
6268
+ }
6269
+ ]
6270
+ },
6271
+ "selected": {
6272
+ "anyOf": [
6273
+ {
6274
+ "type": "boolean"
6275
+ },
6276
+ {
6277
+ "type": "string",
6278
+ "const": "true"
6279
+ },
6280
+ {
6281
+ "type": "string",
6282
+ "const": "false"
6283
+ }
6284
+ ]
6285
+ }
6286
+ },
6287
+ "required": [
6288
+ "bounds"
6289
+ ],
6290
+ "additionalProperties": {}
6291
+ },
6292
+ "observation": {
6293
+ "type": "object",
6294
+ "properties": {
6295
+ "selectedElements": {
6296
+ "type": "array",
6297
+ "items": {
6298
+ "type": "object",
6299
+ "properties": {
6300
+ "text": {
6301
+ "type": "string"
6302
+ },
6303
+ "resourceId": {
6304
+ "type": "string"
6305
+ },
6306
+ "contentDesc": {
6307
+ "type": "string"
6308
+ },
6309
+ "bounds": {
6310
+ "type": "object",
6311
+ "properties": {
6312
+ "left": {
6313
+ "type": "integer",
6314
+ "minimum": -9007199254740991,
6315
+ "maximum": 9007199254740991
6316
+ },
6317
+ "top": {
6318
+ "type": "integer",
6319
+ "minimum": -9007199254740991,
6320
+ "maximum": 9007199254740991
6321
+ },
6322
+ "right": {
6323
+ "type": "integer",
6324
+ "minimum": -9007199254740991,
6325
+ "maximum": 9007199254740991
6326
+ },
6327
+ "bottom": {
6328
+ "type": "integer",
6329
+ "minimum": -9007199254740991,
6330
+ "maximum": 9007199254740991
6331
+ },
6332
+ "centerX": {
6333
+ "type": "integer",
6334
+ "minimum": -9007199254740991,
6335
+ "maximum": 9007199254740991
6336
+ },
6337
+ "centerY": {
6338
+ "type": "integer",
6339
+ "minimum": -9007199254740991,
6340
+ "maximum": 9007199254740991
6341
+ }
6342
+ },
6343
+ "required": [
6344
+ "left",
6345
+ "top",
6346
+ "right",
6347
+ "bottom"
6348
+ ],
6349
+ "additionalProperties": false
6350
+ },
6351
+ "indexInMatches": {
6352
+ "type": "integer",
6353
+ "minimum": -9007199254740991,
6354
+ "maximum": 9007199254740991
6355
+ },
6356
+ "totalMatches": {
6357
+ "type": "integer",
6358
+ "minimum": -9007199254740991,
6359
+ "maximum": 9007199254740991
6360
+ },
6361
+ "selectionStrategy": {
6362
+ "type": "string"
6363
+ },
6364
+ "selectedState": {
6365
+ "type": "object",
6366
+ "properties": {
6367
+ "method": {
6368
+ "type": "string",
6369
+ "enum": [
6370
+ "accessibility",
6371
+ "visual"
6372
+ ]
6373
+ },
6374
+ "confidence": {
6375
+ "type": "number"
6376
+ },
6377
+ "reason": {
6378
+ "type": "string"
6379
+ }
6380
+ },
6381
+ "required": [
6382
+ "method",
6383
+ "confidence"
6384
+ ],
6385
+ "additionalProperties": false
6386
+ }
6387
+ },
6388
+ "additionalProperties": {}
6389
+ }
6390
+ },
6391
+ "focusedElement": {
6392
+ "type": "object",
6393
+ "properties": {
6394
+ "bounds": {
6395
+ "type": "object",
6396
+ "properties": {
6397
+ "left": {
6398
+ "type": "integer",
6399
+ "minimum": -9007199254740991,
6400
+ "maximum": 9007199254740991
6401
+ },
6402
+ "top": {
6403
+ "type": "integer",
6404
+ "minimum": -9007199254740991,
6405
+ "maximum": 9007199254740991
6406
+ },
6407
+ "right": {
6408
+ "type": "integer",
6409
+ "minimum": -9007199254740991,
6410
+ "maximum": 9007199254740991
6411
+ },
6412
+ "bottom": {
6413
+ "type": "integer",
6414
+ "minimum": -9007199254740991,
6415
+ "maximum": 9007199254740991
6416
+ },
6417
+ "centerX": {
6418
+ "type": "integer",
6419
+ "minimum": -9007199254740991,
6420
+ "maximum": 9007199254740991
6421
+ },
6422
+ "centerY": {
6423
+ "type": "integer",
6424
+ "minimum": -9007199254740991,
6425
+ "maximum": 9007199254740991
6426
+ }
6427
+ },
6428
+ "required": [
6429
+ "left",
6430
+ "top",
6431
+ "right",
6432
+ "bottom"
6433
+ ],
6434
+ "additionalProperties": false
6435
+ },
6436
+ "text": {
6437
+ "type": "string"
6438
+ },
6439
+ "resource-id": {
6440
+ "type": "string"
6441
+ },
6442
+ "content-desc": {
6443
+ "type": "string"
6444
+ },
6445
+ "class": {
6446
+ "type": "string"
6447
+ },
6448
+ "package": {
6449
+ "type": "string"
6450
+ },
6451
+ "checkable": {
6452
+ "anyOf": [
6453
+ {
6454
+ "type": "boolean"
6455
+ },
6456
+ {
6457
+ "type": "string",
6458
+ "const": "true"
6459
+ },
6460
+ {
6461
+ "type": "string",
6462
+ "const": "false"
6463
+ }
6464
+ ]
6465
+ },
6466
+ "checked": {
6467
+ "anyOf": [
6468
+ {
6469
+ "type": "boolean"
6470
+ },
6471
+ {
6472
+ "type": "string",
6473
+ "const": "true"
6474
+ },
6475
+ {
6476
+ "type": "string",
6477
+ "const": "false"
6478
+ }
6479
+ ]
6480
+ },
6481
+ "clickable": {
6482
+ "anyOf": [
6483
+ {
6484
+ "type": "boolean"
6485
+ },
6486
+ {
6487
+ "type": "string",
6488
+ "const": "true"
6489
+ },
6490
+ {
6491
+ "type": "string",
6492
+ "const": "false"
6493
+ }
6494
+ ]
6495
+ },
6496
+ "enabled": {
6497
+ "anyOf": [
6498
+ {
6499
+ "type": "boolean"
6500
+ },
6501
+ {
6502
+ "type": "string",
6503
+ "const": "true"
6504
+ },
6505
+ {
6506
+ "type": "string",
6507
+ "const": "false"
6508
+ }
6509
+ ]
6510
+ },
6511
+ "focusable": {
6512
+ "anyOf": [
6513
+ {
6514
+ "type": "boolean"
6515
+ },
6516
+ {
6517
+ "type": "string",
6518
+ "const": "true"
6519
+ },
6520
+ {
6521
+ "type": "string",
6522
+ "const": "false"
6523
+ }
6524
+ ]
6525
+ },
6526
+ "focused": {
6527
+ "anyOf": [
6528
+ {
6529
+ "type": "boolean"
6530
+ },
6531
+ {
6532
+ "type": "string",
6533
+ "const": "true"
6534
+ },
6535
+ {
6536
+ "type": "string",
6537
+ "const": "false"
6538
+ }
6539
+ ]
6540
+ },
6541
+ "accessibility-focused": {
6542
+ "anyOf": [
6543
+ {
6544
+ "type": "boolean"
6545
+ },
6546
+ {
6547
+ "type": "string",
6548
+ "const": "true"
6549
+ },
6550
+ {
6551
+ "type": "string",
6552
+ "const": "false"
6553
+ }
6554
+ ]
6555
+ },
6556
+ "scrollable": {
6557
+ "anyOf": [
6558
+ {
6559
+ "type": "boolean"
6560
+ },
6561
+ {
6562
+ "type": "string",
6563
+ "const": "true"
6564
+ },
6565
+ {
6566
+ "type": "string",
6567
+ "const": "false"
6568
+ }
6569
+ ]
6570
+ },
6571
+ "selected": {
6572
+ "anyOf": [
6573
+ {
6574
+ "type": "boolean"
6575
+ },
6576
+ {
6577
+ "type": "string",
6578
+ "const": "true"
6579
+ },
6580
+ {
6581
+ "type": "string",
6582
+ "const": "false"
6583
+ }
6584
+ ]
6585
+ }
6586
+ },
6587
+ "required": [
6588
+ "bounds"
6589
+ ],
6590
+ "additionalProperties": {}
6591
+ },
6592
+ "accessibilityFocusedElement": {
6593
+ "type": "object",
6594
+ "properties": {
6595
+ "bounds": {
6596
+ "type": "object",
6597
+ "properties": {
6598
+ "left": {
6599
+ "type": "integer",
6600
+ "minimum": -9007199254740991,
6601
+ "maximum": 9007199254740991
6602
+ },
6603
+ "top": {
6604
+ "type": "integer",
6605
+ "minimum": -9007199254740991,
6606
+ "maximum": 9007199254740991
6607
+ },
6608
+ "right": {
6609
+ "type": "integer",
6610
+ "minimum": -9007199254740991,
6611
+ "maximum": 9007199254740991
6612
+ },
6613
+ "bottom": {
6614
+ "type": "integer",
6615
+ "minimum": -9007199254740991,
6616
+ "maximum": 9007199254740991
6617
+ },
6618
+ "centerX": {
6619
+ "type": "integer",
6620
+ "minimum": -9007199254740991,
6621
+ "maximum": 9007199254740991
6622
+ },
6623
+ "centerY": {
6624
+ "type": "integer",
6625
+ "minimum": -9007199254740991,
6626
+ "maximum": 9007199254740991
6627
+ }
6628
+ },
6629
+ "required": [
6630
+ "left",
6631
+ "top",
6632
+ "right",
6633
+ "bottom"
6634
+ ],
6635
+ "additionalProperties": false
6636
+ },
6637
+ "text": {
6638
+ "type": "string"
6639
+ },
6640
+ "resource-id": {
6641
+ "type": "string"
6642
+ },
6643
+ "content-desc": {
6644
+ "type": "string"
6645
+ },
6646
+ "class": {
6647
+ "type": "string"
6648
+ },
6649
+ "package": {
6650
+ "type": "string"
6651
+ },
6652
+ "checkable": {
6653
+ "anyOf": [
6654
+ {
6655
+ "type": "boolean"
6656
+ },
6657
+ {
6658
+ "type": "string",
6659
+ "const": "true"
6660
+ },
6661
+ {
6662
+ "type": "string",
6663
+ "const": "false"
6664
+ }
6665
+ ]
6666
+ },
6667
+ "checked": {
6668
+ "anyOf": [
6669
+ {
6670
+ "type": "boolean"
6671
+ },
6672
+ {
6673
+ "type": "string",
6674
+ "const": "true"
6675
+ },
6676
+ {
6677
+ "type": "string",
6678
+ "const": "false"
6679
+ }
6680
+ ]
6681
+ },
6682
+ "clickable": {
6683
+ "anyOf": [
6684
+ {
6685
+ "type": "boolean"
6686
+ },
6687
+ {
6688
+ "type": "string",
6689
+ "const": "true"
6690
+ },
6691
+ {
6692
+ "type": "string",
6693
+ "const": "false"
6694
+ }
6695
+ ]
6696
+ },
6697
+ "enabled": {
6698
+ "anyOf": [
6699
+ {
6700
+ "type": "boolean"
6701
+ },
6702
+ {
6703
+ "type": "string",
6704
+ "const": "true"
6705
+ },
6706
+ {
6707
+ "type": "string",
6708
+ "const": "false"
6709
+ }
6710
+ ]
6711
+ },
6712
+ "focusable": {
6713
+ "anyOf": [
6714
+ {
6715
+ "type": "boolean"
6716
+ },
6717
+ {
6718
+ "type": "string",
6719
+ "const": "true"
6720
+ },
6721
+ {
6722
+ "type": "string",
6723
+ "const": "false"
6724
+ }
6725
+ ]
6726
+ },
6727
+ "focused": {
6728
+ "anyOf": [
6729
+ {
6730
+ "type": "boolean"
6731
+ },
6732
+ {
6733
+ "type": "string",
6734
+ "const": "true"
6735
+ },
6736
+ {
6737
+ "type": "string",
6738
+ "const": "false"
6739
+ }
6740
+ ]
6741
+ },
6742
+ "accessibility-focused": {
6743
+ "anyOf": [
6744
+ {
6745
+ "type": "boolean"
6746
+ },
6747
+ {
6748
+ "type": "string",
6749
+ "const": "true"
6750
+ },
6751
+ {
6752
+ "type": "string",
6753
+ "const": "false"
6754
+ }
6755
+ ]
6756
+ },
6757
+ "scrollable": {
6758
+ "anyOf": [
6759
+ {
6760
+ "type": "boolean"
6761
+ },
6762
+ {
6763
+ "type": "string",
6764
+ "const": "true"
6765
+ },
6766
+ {
6767
+ "type": "string",
6768
+ "const": "false"
6769
+ }
6770
+ ]
6771
+ },
6772
+ "selected": {
6773
+ "anyOf": [
6774
+ {
6775
+ "type": "boolean"
6776
+ },
6777
+ {
6778
+ "type": "string",
6779
+ "const": "true"
6780
+ },
6781
+ {
6782
+ "type": "string",
6783
+ "const": "false"
6784
+ }
6785
+ ]
6786
+ }
6787
+ },
6788
+ "required": [
6789
+ "bounds"
6790
+ ],
6791
+ "additionalProperties": {}
6792
+ },
6793
+ "activeWindow": {
6794
+ "type": "object",
6795
+ "properties": {
6796
+ "appId": {
6797
+ "type": "string"
6798
+ },
6799
+ "activityName": {
6800
+ "type": "string"
6801
+ },
6802
+ "layoutSeqSum": {
6803
+ "type": "integer",
6804
+ "minimum": -9007199254740991,
6805
+ "maximum": 9007199254740991
6806
+ },
6807
+ "type": {
6808
+ "type": "string"
6809
+ }
6810
+ },
6811
+ "additionalProperties": {}
6812
+ }
6813
+ },
6814
+ "additionalProperties": {}
6815
+ },
6816
+ "selectedElement": {
6817
+ "type": "object",
6818
+ "properties": {
6819
+ "text": {
6820
+ "type": "string"
6821
+ },
6822
+ "resourceId": {
6823
+ "type": "string"
6824
+ },
6825
+ "contentDesc": {
6826
+ "type": "string"
6827
+ },
6828
+ "bounds": {
6829
+ "type": "object",
6830
+ "properties": {
6831
+ "left": {
6832
+ "type": "integer",
6833
+ "minimum": -9007199254740991,
6834
+ "maximum": 9007199254740991
6835
+ },
6836
+ "top": {
6837
+ "type": "integer",
6838
+ "minimum": -9007199254740991,
6839
+ "maximum": 9007199254740991
6840
+ },
6841
+ "right": {
6842
+ "type": "integer",
6843
+ "minimum": -9007199254740991,
6844
+ "maximum": 9007199254740991
6845
+ },
6846
+ "bottom": {
6847
+ "type": "integer",
6848
+ "minimum": -9007199254740991,
6849
+ "maximum": 9007199254740991
6850
+ },
6851
+ "centerX": {
6852
+ "type": "integer",
6853
+ "minimum": -9007199254740991,
6854
+ "maximum": 9007199254740991
6855
+ },
6856
+ "centerY": {
6857
+ "type": "integer",
6858
+ "minimum": -9007199254740991,
6859
+ "maximum": 9007199254740991
6860
+ }
6861
+ },
6862
+ "required": [
6863
+ "left",
6864
+ "top",
6865
+ "right",
6866
+ "bottom"
6867
+ ],
6868
+ "additionalProperties": false
6869
+ },
6870
+ "indexInMatches": {
6871
+ "type": "integer",
6872
+ "minimum": -9007199254740991,
6873
+ "maximum": 9007199254740991
6874
+ },
6875
+ "totalMatches": {
6876
+ "type": "integer",
6877
+ "minimum": -9007199254740991,
6878
+ "maximum": 9007199254740991
6879
+ },
6880
+ "selectionStrategy": {
6881
+ "type": "string"
6882
+ },
6883
+ "selectedState": {
6884
+ "type": "object",
6885
+ "properties": {
6886
+ "method": {
6887
+ "type": "string",
6888
+ "enum": [
6889
+ "accessibility",
6890
+ "visual"
6891
+ ]
6892
+ },
6893
+ "confidence": {
6894
+ "type": "number"
6895
+ },
6896
+ "reason": {
6897
+ "type": "string"
6898
+ }
6899
+ },
6900
+ "required": [
6901
+ "method",
6902
+ "confidence"
6903
+ ],
6904
+ "additionalProperties": false
6905
+ }
6906
+ },
6907
+ "additionalProperties": {}
6908
+ },
6909
+ "selectedElements": {
6910
+ "type": "array",
6911
+ "items": {
6912
+ "type": "object",
6913
+ "properties": {
6914
+ "text": {
6915
+ "type": "string"
6916
+ },
6917
+ "resourceId": {
6918
+ "type": "string"
6919
+ },
6920
+ "contentDesc": {
6921
+ "type": "string"
6922
+ },
6923
+ "bounds": {
6924
+ "type": "object",
6925
+ "properties": {
6926
+ "left": {
6927
+ "type": "integer",
6928
+ "minimum": -9007199254740991,
6929
+ "maximum": 9007199254740991
6930
+ },
6931
+ "top": {
6932
+ "type": "integer",
6933
+ "minimum": -9007199254740991,
6934
+ "maximum": 9007199254740991
6935
+ },
6936
+ "right": {
6937
+ "type": "integer",
6938
+ "minimum": -9007199254740991,
6939
+ "maximum": 9007199254740991
6940
+ },
6941
+ "bottom": {
6942
+ "type": "integer",
6943
+ "minimum": -9007199254740991,
6944
+ "maximum": 9007199254740991
6945
+ },
6946
+ "centerX": {
6947
+ "type": "integer",
6948
+ "minimum": -9007199254740991,
6949
+ "maximum": 9007199254740991
6950
+ },
6951
+ "centerY": {
6952
+ "type": "integer",
6953
+ "minimum": -9007199254740991,
6954
+ "maximum": 9007199254740991
6955
+ }
6956
+ },
6957
+ "required": [
6958
+ "left",
6959
+ "top",
6960
+ "right",
6961
+ "bottom"
6962
+ ],
6963
+ "additionalProperties": false
6964
+ },
6965
+ "indexInMatches": {
6966
+ "type": "integer",
6967
+ "minimum": -9007199254740991,
6968
+ "maximum": 9007199254740991
6969
+ },
6970
+ "totalMatches": {
6971
+ "type": "integer",
6972
+ "minimum": -9007199254740991,
6973
+ "maximum": 9007199254740991
6974
+ },
6975
+ "selectionStrategy": {
6976
+ "type": "string"
6977
+ },
6978
+ "selectedState": {
6979
+ "type": "object",
6980
+ "properties": {
6981
+ "method": {
6982
+ "type": "string",
6983
+ "enum": [
6984
+ "accessibility",
6985
+ "visual"
6986
+ ]
6987
+ },
6988
+ "confidence": {
6989
+ "type": "number"
6990
+ },
6991
+ "reason": {
6992
+ "type": "string"
6993
+ }
6994
+ },
6995
+ "required": [
6996
+ "method",
6997
+ "confidence"
6998
+ ],
6999
+ "additionalProperties": false
7000
+ }
7001
+ },
7002
+ "additionalProperties": {}
7003
+ }
7004
+ },
7005
+ "error": {
7006
+ "type": "string"
7007
+ },
7008
+ "pressRecognized": {
7009
+ "type": "boolean"
7010
+ },
7011
+ "contextMenuOpened": {
7012
+ "type": "boolean"
7013
+ },
7014
+ "selectionStarted": {
7015
+ "type": "boolean"
7016
+ },
7017
+ "searchUntil": {
7018
+ "type": "object",
7019
+ "properties": {
7020
+ "durationMs": {
7021
+ "type": "integer",
7022
+ "minimum": -9007199254740991,
7023
+ "maximum": 9007199254740991
7024
+ },
7025
+ "requestCount": {
7026
+ "type": "integer",
7027
+ "minimum": -9007199254740991,
7028
+ "maximum": 9007199254740991
7029
+ },
7030
+ "changeCount": {
7031
+ "type": "integer",
7032
+ "minimum": -9007199254740991,
7033
+ "maximum": 9007199254740991
7034
+ }
7035
+ },
7036
+ "additionalProperties": false
7037
+ },
7038
+ "debug": {}
7039
+ },
7040
+ "required": [
7041
+ "success",
7042
+ "action"
7043
+ ],
7044
+ "additionalProperties": {}
7045
+ }
7046
+ },
5964
7047
  {
5965
7048
  "name": "tapOn",
5966
- "description": "Tap UI elements by text or ID (returns selectedElement metadata)",
7049
+ "description": "Tap a specific UI element identified by text or resource-id.\nProvide a selector: { \"text\": \"Login\" } or { \"elementId\": \"com.app:id/btn\" }.\nSet sibling: true to tap a clickable sibling adjacent to the matched element (e.g., a checkbox next to a label).\ncontent-desc values from observe should be passed as text, not elementId.",
5967
7050
  "inputSchema": {
5968
7051
  "$schema": "https://json-schema.org/draft/2020-12/schema",
5969
7052
  "type": "object",
5970
7053
  "properties": {
7054
+ "selector": {
7055
+ "anyOf": [
7056
+ {
7057
+ "type": "object",
7058
+ "properties": {
7059
+ "elementId": {
7060
+ "type": "string",
7061
+ "minLength": 1,
7062
+ "description": "Element resource-id (e.g. \"com.app:id/btn_login\"). Only use for resource-id values."
7063
+ }
7064
+ },
7065
+ "required": [
7066
+ "elementId"
7067
+ ],
7068
+ "additionalProperties": false
7069
+ },
7070
+ {
7071
+ "type": "object",
7072
+ "properties": {
7073
+ "text": {
7074
+ "type": "string",
7075
+ "minLength": 1,
7076
+ "description": "Element text, content-desc, or placeholder value from observe output."
7077
+ }
7078
+ },
7079
+ "required": [
7080
+ "text"
7081
+ ],
7082
+ "additionalProperties": false
7083
+ }
7084
+ ],
7085
+ "description": "Element to tap. Provide exactly one of elementId or text."
7086
+ },
7087
+ "sibling": {
7088
+ "description": "When true, tap a clickable sibling of the matched element instead of the element itself. Useful for tapping checkboxes, icons, or buttons adjacent to a text label.",
7089
+ "type": "boolean"
7090
+ },
5971
7091
  "container": {
5972
7092
  "description": "Container selector object to scope search. Provide { \"elementId\": \"<id>\" } or { \"text\": \"<text>\" }.",
5973
7093
  "anyOf": [
@@ -6055,14 +7175,6 @@
6055
7175
  ],
6056
7176
  "description": "Target platform"
6057
7177
  },
6058
- "elementId": {
6059
- "type": "string",
6060
- "description": "Element resource ID / accessibility identifier"
6061
- },
6062
- "text": {
6063
- "type": "string",
6064
- "description": "Element text"
6065
- },
6066
7178
  "sessionUuid": {
6067
7179
  "description": "Session UUID",
6068
7180
  "type": "string"
@@ -6078,26 +7190,13 @@
6078
7190
  "deviceId": {
6079
7191
  "description": "Device ID",
6080
7192
  "type": "string"
6081
- },
6082
- "tapClickableParent": {
6083
- "description": "Tap the nearest clickable parent that contains the text element. Useful for list items where the clickable row doesn't have a resource-id but contains children with text.",
6084
- "type": "boolean"
6085
- },
6086
- "clickable": {
6087
- "type": "boolean",
6088
- "const": true,
6089
- "description": "Select clickable elements. Use with selectionStrategy: 'first' to tap the first clickable item in a list without knowing its text or ID."
6090
- },
6091
- "scrollableContainer": {
6092
- "description": "Only search within scrollable containers (lists/RecyclerViews). Use this to avoid tapping search bars or other clickable UI elements when you want the first list item.",
6093
- "type": "boolean"
6094
- },
6095
- "siblingOfText": {
6096
- "type": "string",
6097
- "minLength": 1,
6098
- "description": "Find a clickable element that is a sibling of an element containing this text. Useful for tapping checkboxes, icons, or buttons next to a specific text label."
6099
7193
  }
6100
7194
  },
7195
+ "required": [
7196
+ "selector",
7197
+ "action",
7198
+ "platform"
7199
+ ],
6101
7200
  "additionalProperties": false
6102
7201
  },
6103
7202
  "outputSchema": {