@kaeawc/auto-mobile 0.0.14 → 0.0.16

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaeawc/auto-mobile",
3
- "version": "0.0.14",
3
+ "version": "0.0.16",
4
4
  "description": "Mobile device interaction automation via MCP",
5
5
  "scripts": {
6
6
  "test": "bun test",
@@ -73,7 +73,7 @@
73
73
  "access": "public"
74
74
  },
75
75
  "dependencies": {
76
- "@anthropic-ai/sdk": "^0.80.0",
76
+ "@anthropic-ai/sdk": "^0.82.0",
77
77
  "@modelcontextprotocol/sdk": "^1.26.0",
78
78
  "adm-zip": "^0.5.16",
79
79
  "ajv": "^8.18.0",
@@ -62,7 +62,7 @@
62
62
  },
63
63
  {
64
64
  "name": "changeLocalization",
65
- "description": "Change locale, time zone, text direction, and time format",
65
+ "description": "Change locale, time zone, text direction, time format, and calendar system",
66
66
  "inputSchema": {
67
67
  "$schema": "https://json-schema.org/draft/2020-12/schema",
68
68
  "type": "object",
@@ -73,7 +73,7 @@
73
73
  "android",
74
74
  "ios"
75
75
  ],
76
- "description": "Platform"
76
+ "description": "Target platform"
77
77
  },
78
78
  "locale": {
79
79
  "description": "Locale tag (e.g., ar-SA, ja-JP)",
@@ -101,6 +101,16 @@
101
101
  "24"
102
102
  ]
103
103
  },
104
+ "calendarSystem": {
105
+ "description": "Calendar system (e.g., gregory, japanese, buddhist, islamic-civil)",
106
+ "type": "string",
107
+ "minLength": 1
108
+ },
109
+ "restartApp": {
110
+ "description": "Bundle ID of app to terminate and relaunch after locale change (iOS only). Running apps cache locale at launch, so restart is needed for the app to pick up new settings.",
111
+ "type": "string",
112
+ "minLength": 1
113
+ },
104
114
  "sessionUuid": {
105
115
  "description": "Session UUID for device targeting",
106
116
  "type": "string"
@@ -137,7 +147,7 @@
137
147
  "android",
138
148
  "ios"
139
149
  ],
140
- "description": "Platform"
150
+ "description": "Target platform"
141
151
  },
142
152
  "sessionUuid": {
143
153
  "description": "Session UUID for device targeting",
@@ -189,7 +199,7 @@
189
199
  "android",
190
200
  "ios"
191
201
  ],
192
- "description": "Platform"
202
+ "description": "Target platform"
193
203
  },
194
204
  "sessionUuid": {
195
205
  "description": "Session UUID for device targeting",
@@ -478,7 +488,7 @@
478
488
  "android",
479
489
  "ios"
480
490
  ],
481
- "description": "Platform"
491
+ "description": "Target platform"
482
492
  },
483
493
  "sessionUuid": {
484
494
  "description": "Session UUID for device targeting",
@@ -527,7 +537,7 @@
527
537
  "android",
528
538
  "ios"
529
539
  ],
530
- "description": "Platform"
540
+ "description": "Target platform"
531
541
  },
532
542
  "sessionUuid": {
533
543
  "description": "Session UUID for parallel execution",
@@ -674,7 +684,8 @@
674
684
  "enum": [
675
685
  "android",
676
686
  "ios"
677
- ]
687
+ ],
688
+ "description": "Target platform"
678
689
  },
679
690
  "deviceId": {
680
691
  "type": "string"
@@ -1521,7 +1532,7 @@
1521
1532
  "android",
1522
1533
  "ios"
1523
1534
  ],
1524
- "description": "Platform"
1535
+ "description": "Target platform"
1525
1536
  },
1526
1537
  "sessionUuid": {
1527
1538
  "description": "Session UUID for device targeting",
@@ -1571,7 +1582,7 @@
1571
1582
  "android",
1572
1583
  "ios"
1573
1584
  ],
1574
- "description": "Platform"
1585
+ "description": "Target platform"
1575
1586
  },
1576
1587
  "sessionUuid": {
1577
1588
  "description": "Session UUID for device targeting",
@@ -1606,6 +1617,7 @@
1606
1617
  "properties": {
1607
1618
  "text": {
1608
1619
  "type": "string",
1620
+ "minLength": 1,
1609
1621
  "description": "Text to input"
1610
1622
  },
1611
1623
  "imeAction": {
@@ -1620,13 +1632,17 @@
1620
1632
  "previous"
1621
1633
  ]
1622
1634
  },
1635
+ "dismissKeyboard": {
1636
+ "description": "(Android only) Dismiss soft keyboard after input (default: false). Ignored on iOS.",
1637
+ "type": "boolean"
1638
+ },
1623
1639
  "platform": {
1624
1640
  "type": "string",
1625
1641
  "enum": [
1626
1642
  "android",
1627
1643
  "ios"
1628
1644
  ],
1629
- "description": "Platform"
1645
+ "description": "Target platform"
1630
1646
  },
1631
1647
  "sessionUuid": {
1632
1648
  "description": "Session UUID for device targeting",
@@ -1708,7 +1724,7 @@
1708
1724
  "android",
1709
1725
  "ios"
1710
1726
  ],
1711
- "description": "Platform"
1727
+ "description": "Target platform"
1712
1728
  },
1713
1729
  "sessionUuid": {
1714
1730
  "description": "Session UUID for device targeting",
@@ -1758,7 +1774,7 @@
1758
1774
  "android",
1759
1775
  "ios"
1760
1776
  ],
1761
- "description": "Platform"
1777
+ "description": "Target platform"
1762
1778
  }
1763
1779
  },
1764
1780
  "required": [
@@ -1840,7 +1856,7 @@
1840
1856
  "android",
1841
1857
  "ios"
1842
1858
  ],
1843
- "description": "Platform"
1859
+ "description": "Target platform"
1844
1860
  }
1845
1861
  },
1846
1862
  "required": [
@@ -1857,12 +1873,12 @@
1857
1873
  "type": "object",
1858
1874
  "properties": {
1859
1875
  "platform": {
1860
- "description": "Platform",
1861
1876
  "type": "string",
1862
1877
  "enum": [
1863
1878
  "android",
1864
1879
  "ios"
1865
- ]
1880
+ ],
1881
+ "description": "Target platform"
1866
1882
  }
1867
1883
  },
1868
1884
  "additionalProperties": false
@@ -1881,7 +1897,7 @@
1881
1897
  "android",
1882
1898
  "ios"
1883
1899
  ],
1884
- "description": "Platform"
1900
+ "description": "Target platform"
1885
1901
  },
1886
1902
  "waitFor": {
1887
1903
  "description": "Wait for element to appear before returning observation",
@@ -2654,12 +2670,78 @@
2654
2670
  ],
2655
2671
  "additionalProperties": {}
2656
2672
  }
2673
+ },
2674
+ "media": {
2675
+ "type": "array",
2676
+ "items": {
2677
+ "type": "object",
2678
+ "properties": {
2679
+ "viewId": {
2680
+ "type": "string"
2681
+ },
2682
+ "className": {
2683
+ "type": "string"
2684
+ },
2685
+ "mediaType": {
2686
+ "type": "string",
2687
+ "enum": [
2688
+ "image",
2689
+ "video",
2690
+ "loading",
2691
+ "mixed"
2692
+ ]
2693
+ },
2694
+ "bounds": {
2695
+ "type": "object",
2696
+ "properties": {
2697
+ "left": {
2698
+ "type": "number"
2699
+ },
2700
+ "top": {
2701
+ "type": "number"
2702
+ },
2703
+ "right": {
2704
+ "type": "number"
2705
+ },
2706
+ "bottom": {
2707
+ "type": "number"
2708
+ }
2709
+ },
2710
+ "required": [
2711
+ "left",
2712
+ "top",
2713
+ "right",
2714
+ "bottom"
2715
+ ],
2716
+ "additionalProperties": false
2717
+ },
2718
+ "contentDescription": {
2719
+ "type": "string"
2720
+ },
2721
+ "resourceId": {
2722
+ "type": "string"
2723
+ },
2724
+ "sourceUrl": {
2725
+ "type": "string"
2726
+ },
2727
+ "isLoading": {
2728
+ "type": "boolean"
2729
+ }
2730
+ },
2731
+ "required": [
2732
+ "className",
2733
+ "mediaType",
2734
+ "bounds"
2735
+ ],
2736
+ "additionalProperties": false
2737
+ }
2657
2738
  }
2658
2739
  },
2659
2740
  "required": [
2660
2741
  "clickable",
2661
2742
  "scrollable",
2662
- "text"
2743
+ "text",
2744
+ "media"
2663
2745
  ],
2664
2746
  "additionalProperties": false
2665
2747
  },
@@ -3605,7 +3687,7 @@
3605
3687
  "android",
3606
3688
  "ios"
3607
3689
  ],
3608
- "description": "Platform"
3690
+ "description": "Target platform"
3609
3691
  },
3610
3692
  "sessionUuid": {
3611
3693
  "description": "Session UUID for device targeting",
@@ -3711,7 +3793,7 @@
3711
3793
  "android",
3712
3794
  "ios"
3713
3795
  ],
3714
- "description": "Platform"
3796
+ "description": "Target platform"
3715
3797
  },
3716
3798
  "sessionUuid": {
3717
3799
  "description": "Session UUID for device targeting",
@@ -3800,7 +3882,7 @@
3800
3882
  "android",
3801
3883
  "ios"
3802
3884
  ],
3803
- "description": "Platform"
3885
+ "description": "Target platform"
3804
3886
  },
3805
3887
  "sessionUuid": {
3806
3888
  "description": "Session UUID for device targeting",
@@ -3853,7 +3935,7 @@
3853
3935
  "android",
3854
3936
  "ios"
3855
3937
  ],
3856
- "description": "Platform"
3938
+ "description": "Target platform"
3857
3939
  },
3858
3940
  "sessionUuid": {
3859
3941
  "description": "Session UUID for device targeting",
@@ -3905,7 +3987,7 @@
3905
3987
  "android",
3906
3988
  "ios"
3907
3989
  ],
3908
- "description": "Platform"
3990
+ "description": "Target platform"
3909
3991
  },
3910
3992
  "sessionUuid": {
3911
3993
  "description": "Session UUID for device targeting",
@@ -3944,7 +4026,7 @@
3944
4026
  "android",
3945
4027
  "ios"
3946
4028
  ],
3947
- "description": "Platform"
4029
+ "description": "Target platform"
3948
4030
  },
3949
4031
  "sessionUuid": {
3950
4032
  "description": "Session UUID for device targeting",
@@ -3969,6 +4051,81 @@
3969
4051
  "additionalProperties": false
3970
4052
  }
3971
4053
  },
4054
+ {
4055
+ "name": "recordSteps",
4056
+ "description": "Record MCP tool calls as a replayable YAML test plan. Actions: 'begin' starts capturing plan-relevant tool calls, 'end' stops and exports the plan as YAML (both require the 'mcp-recording' feature flag), 'status' checks if a recording session is active (always available, even when the flag is off).",
4057
+ "inputSchema": {
4058
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4059
+ "type": "object",
4060
+ "properties": {
4061
+ "action": {
4062
+ "type": "string",
4063
+ "enum": [
4064
+ "begin",
4065
+ "end",
4066
+ "status"
4067
+ ],
4068
+ "description": "begin: start capturing tool calls. end: stop and export the recorded plan as YAML. status: check if a recording session is active."
4069
+ },
4070
+ "planName": {
4071
+ "description": "Name for the exported plan (kebab-case recommended, auto-generated if not specified). Only used with action 'end'.",
4072
+ "type": "string"
4073
+ }
4074
+ },
4075
+ "required": [
4076
+ "action"
4077
+ ],
4078
+ "additionalProperties": false
4079
+ },
4080
+ "outputSchema": {
4081
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4082
+ "type": "object",
4083
+ "properties": {
4084
+ "success": {
4085
+ "type": "boolean"
4086
+ },
4087
+ "action": {
4088
+ "type": "string",
4089
+ "enum": [
4090
+ "begin",
4091
+ "end",
4092
+ "status"
4093
+ ]
4094
+ },
4095
+ "recording": {
4096
+ "type": "boolean"
4097
+ },
4098
+ "startedAt": {
4099
+ "type": "string"
4100
+ },
4101
+ "alreadyActive": {
4102
+ "type": "boolean"
4103
+ },
4104
+ "currentStepCount": {
4105
+ "type": "number"
4106
+ },
4107
+ "planName": {
4108
+ "type": "string"
4109
+ },
4110
+ "planContent": {
4111
+ "type": "string"
4112
+ },
4113
+ "stepCount": {
4114
+ "type": "number"
4115
+ },
4116
+ "durationMs": {
4117
+ "type": "number"
4118
+ },
4119
+ "error": {
4120
+ "type": "string"
4121
+ }
4122
+ },
4123
+ "required": [
4124
+ "success"
4125
+ ],
4126
+ "additionalProperties": false
4127
+ }
4128
+ },
3972
4129
  {
3973
4130
  "name": "rotate",
3974
4131
  "description": "Rotate device orientation",
@@ -3990,7 +4147,7 @@
3990
4147
  "android",
3991
4148
  "ios"
3992
4149
  ],
3993
- "description": "Platform"
4150
+ "description": "Target platform"
3994
4151
  },
3995
4152
  "sessionUuid": {
3996
4153
  "description": "Session UUID for device targeting",
@@ -4029,7 +4186,7 @@
4029
4186
  "android",
4030
4187
  "ios"
4031
4188
  ],
4032
- "description": "Platform"
4189
+ "description": "Target platform"
4033
4190
  },
4034
4191
  "sessionUuid": {
4035
4192
  "description": "Session UUID for device targeting",
@@ -4071,7 +4228,7 @@
4071
4228
  "android",
4072
4229
  "ios"
4073
4230
  ],
4074
- "description": "Platform"
4231
+ "description": "Target platform"
4075
4232
  },
4076
4233
  "sessionUuid": {
4077
4234
  "description": "Session UUID for device targeting",
@@ -4110,7 +4267,7 @@
4110
4267
  "android",
4111
4268
  "ios"
4112
4269
  ],
4113
- "description": "Platform"
4270
+ "description": "Target platform"
4114
4271
  },
4115
4272
  "sessionUuid": {
4116
4273
  "description": "Session UUID for device targeting",
@@ -4155,7 +4312,7 @@
4155
4312
  "android",
4156
4313
  "ios"
4157
4314
  ],
4158
- "description": "Platform"
4315
+ "description": "Target platform"
4159
4316
  },
4160
4317
  "deviceId": {
4161
4318
  "description": "Device ID",
@@ -4352,7 +4509,7 @@
4352
4509
  "android",
4353
4510
  "ios"
4354
4511
  ],
4355
- "description": "Platform"
4512
+ "description": "Target platform"
4356
4513
  },
4357
4514
  "sessionUuid": {
4358
4515
  "description": "Session UUID for device targeting",
@@ -5274,7 +5431,7 @@
5274
5431
  "android",
5275
5432
  "ios"
5276
5433
  ],
5277
- "description": "Platform"
5434
+ "description": "Target platform"
5278
5435
  },
5279
5436
  "sessionUuid": {
5280
5437
  "description": "Session UUID for device targeting",
@@ -5339,14 +5496,15 @@
5339
5496
  ]
5340
5497
  },
5341
5498
  "action": {
5499
+ "default": "tap",
5500
+ "description": "Action type (default: tap)",
5342
5501
  "type": "string",
5343
5502
  "enum": [
5344
5503
  "tap",
5345
5504
  "doubleTap",
5346
5505
  "longPress",
5347
5506
  "focus"
5348
- ],
5349
- "description": "Action type"
5507
+ ]
5350
5508
  },
5351
5509
  "selectionStrategy": {
5352
5510
  "description": "Element selection strategy when multiple matches are found (default: first)",
@@ -5379,7 +5537,7 @@
5379
5537
  "android",
5380
5538
  "ios"
5381
5539
  ],
5382
- "description": "Platform"
5540
+ "description": "Target platform"
5383
5541
  },
5384
5542
  "elementId": {
5385
5543
  "type": "string",
@@ -5404,12 +5562,26 @@
5404
5562
  "deviceId": {
5405
5563
  "description": "Device identifier for targeting a specific device",
5406
5564
  "type": "string"
5565
+ },
5566
+ "tapClickableParent": {
5567
+ "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.",
5568
+ "type": "boolean"
5569
+ },
5570
+ "clickable": {
5571
+ "type": "boolean",
5572
+ "const": true,
5573
+ "description": "Select clickable elements. Use with selectionStrategy: 'first' to tap the first clickable item in a list without knowing its text or ID."
5574
+ },
5575
+ "scrollableContainer": {
5576
+ "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.",
5577
+ "type": "boolean"
5578
+ },
5579
+ "siblingOfText": {
5580
+ "type": "string",
5581
+ "minLength": 1,
5582
+ "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."
5407
5583
  }
5408
5584
  },
5409
- "required": [
5410
- "action",
5411
- "platform"
5412
- ],
5413
5585
  "additionalProperties": false
5414
5586
  },
5415
5587
  "outputSchema": {