@kaeawc/auto-mobile 0.0.15 → 0.0.17

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.15",
3
+ "version": "0.0.17",
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.86.1",
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",
@@ -1654,14 +1670,14 @@
1654
1670
  },
1655
1671
  {
1656
1672
  "name": "installApp",
1657
- "description": "Install APK file",
1673
+ "description": "Install app on device (.apk for Android, .app for iOS simulator, .ipa for iOS physical device)",
1658
1674
  "inputSchema": {
1659
1675
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1660
1676
  "type": "object",
1661
1677
  "properties": {
1662
- "apkPath": {
1678
+ "artifactPath": {
1663
1679
  "type": "string",
1664
- "description": "APK file path"
1680
+ "description": "Path to app artifact (.apk for Android, .app bundle for iOS simulator, .ipa for iOS physical device)"
1665
1681
  },
1666
1682
  "sessionUuid": {
1667
1683
  "description": "Session UUID for device targeting",
@@ -1681,7 +1697,7 @@
1681
1697
  }
1682
1698
  },
1683
1699
  "required": [
1684
- "apkPath"
1700
+ "artifactPath"
1685
1701
  ],
1686
1702
  "additionalProperties": false
1687
1703
  }
@@ -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",
@@ -4142,48 +4299,68 @@
4142
4299
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4143
4300
  "type": "object",
4144
4301
  "properties": {
4145
- "device": {
4302
+ "platform": {
4303
+ "type": "string",
4304
+ "enum": [
4305
+ "android",
4306
+ "ios"
4307
+ ],
4308
+ "description": "Target platform"
4309
+ },
4310
+ "minOsVersion": {
4311
+ "description": "Minimum OS version, inclusive (e.g., '14', '17.2')",
4312
+ "type": "string"
4313
+ },
4314
+ "maxOsVersion": {
4315
+ "description": "Maximum OS version, inclusive (e.g., '15', '18.0')",
4316
+ "type": "string"
4317
+ },
4318
+ "name": {
4319
+ "description": "Device name to match (e.g., 'iPhone 16e', 'Pixel_9_Pro')",
4320
+ "type": "string"
4321
+ },
4322
+ "formFactor": {
4323
+ "description": "Device form factor",
4324
+ "type": "string",
4325
+ "enum": [
4326
+ "phone",
4327
+ "tablet"
4328
+ ]
4329
+ },
4330
+ "screenSize": {
4331
+ "description": "Desired screen dimensions",
4146
4332
  "type": "object",
4147
4333
  "properties": {
4148
- "name": {
4149
- "type": "string",
4150
- "description": "Device name"
4151
- },
4152
- "platform": {
4153
- "type": "string",
4154
- "enum": [
4155
- "android",
4156
- "ios"
4157
- ],
4158
- "description": "Platform"
4159
- },
4160
- "deviceId": {
4161
- "description": "Device ID",
4162
- "type": "string"
4163
- },
4164
- "isRunning": {
4165
- "description": "Running status",
4166
- "type": "boolean"
4334
+ "width": {
4335
+ "type": "number",
4336
+ "description": "Screen width in pixels"
4167
4337
  },
4168
- "source": {
4169
- "description": "Source (local/remote)",
4170
- "type": "string"
4338
+ "height": {
4339
+ "type": "number",
4340
+ "description": "Screen height in pixels"
4171
4341
  }
4172
4342
  },
4173
4343
  "required": [
4174
- "name",
4175
- "platform"
4344
+ "width",
4345
+ "height"
4176
4346
  ],
4177
- "additionalProperties": false,
4178
- "description": "Device to start"
4347
+ "additionalProperties": false
4348
+ },
4349
+ "deviceId": {
4350
+ "description": "Specific device ID (bypasses matching)",
4351
+ "type": "string"
4352
+ },
4353
+ "preferRunning": {
4354
+ "description": "Prefer already-booted device (default true)",
4355
+ "type": "boolean"
4179
4356
  },
4180
4357
  "timeoutMs": {
4181
- "description": "Readiness timeout ms",
4358
+ "description": "Boot timeout in ms",
4182
4359
  "type": "number"
4183
4360
  }
4184
4361
  },
4185
4362
  "required": [
4186
- "device"
4363
+ "platform"
4187
4364
  ],
4188
4365
  "additionalProperties": false
4189
4366
  }
@@ -4352,7 +4529,7 @@
4352
4529
  "android",
4353
4530
  "ios"
4354
4531
  ],
4355
- "description": "Platform"
4532
+ "description": "Target platform"
4356
4533
  },
4357
4534
  "sessionUuid": {
4358
4535
  "description": "Session UUID for device targeting",
@@ -5274,7 +5451,7 @@
5274
5451
  "android",
5275
5452
  "ios"
5276
5453
  ],
5277
- "description": "Platform"
5454
+ "description": "Target platform"
5278
5455
  },
5279
5456
  "sessionUuid": {
5280
5457
  "description": "Session UUID for device targeting",
@@ -5339,14 +5516,15 @@
5339
5516
  ]
5340
5517
  },
5341
5518
  "action": {
5519
+ "default": "tap",
5520
+ "description": "Action type (default: tap)",
5342
5521
  "type": "string",
5343
5522
  "enum": [
5344
5523
  "tap",
5345
5524
  "doubleTap",
5346
5525
  "longPress",
5347
5526
  "focus"
5348
- ],
5349
- "description": "Action type"
5527
+ ]
5350
5528
  },
5351
5529
  "selectionStrategy": {
5352
5530
  "description": "Element selection strategy when multiple matches are found (default: first)",
@@ -5379,7 +5557,7 @@
5379
5557
  "android",
5380
5558
  "ios"
5381
5559
  ],
5382
- "description": "Platform"
5560
+ "description": "Target platform"
5383
5561
  },
5384
5562
  "elementId": {
5385
5563
  "type": "string",
@@ -5404,12 +5582,26 @@
5404
5582
  "deviceId": {
5405
5583
  "description": "Device identifier for targeting a specific device",
5406
5584
  "type": "string"
5585
+ },
5586
+ "tapClickableParent": {
5587
+ "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.",
5588
+ "type": "boolean"
5589
+ },
5590
+ "clickable": {
5591
+ "type": "boolean",
5592
+ "const": true,
5593
+ "description": "Select clickable elements. Use with selectionStrategy: 'first' to tap the first clickable item in a list without knowing its text or ID."
5594
+ },
5595
+ "scrollableContainer": {
5596
+ "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.",
5597
+ "type": "boolean"
5598
+ },
5599
+ "siblingOfText": {
5600
+ "type": "string",
5601
+ "minLength": 1,
5602
+ "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
5603
  }
5408
5604
  },
5409
- "required": [
5410
- "action",
5411
- "platform"
5412
- ],
5413
5605
  "additionalProperties": false
5414
5606
  },
5415
5607
  "outputSchema": {
@@ -6421,6 +6613,44 @@
6421
6613
  "additionalProperties": false
6422
6614
  }
6423
6615
  },
6616
+ {
6617
+ "name": "uninstallApp",
6618
+ "description": "Uninstall app by package name or bundle identifier",
6619
+ "inputSchema": {
6620
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
6621
+ "type": "object",
6622
+ "properties": {
6623
+ "appId": {
6624
+ "type": "string",
6625
+ "description": "App package ID or bundle identifier to uninstall"
6626
+ },
6627
+ "keepData": {
6628
+ "description": "Keep app data after uninstall (Android only, default false)",
6629
+ "type": "boolean"
6630
+ },
6631
+ "sessionUuid": {
6632
+ "description": "Session UUID for device targeting",
6633
+ "type": "string"
6634
+ },
6635
+ "keepScreenAwake": {
6636
+ "description": "Keep physical Android devices awake during the session (default: true)",
6637
+ "type": "boolean"
6638
+ },
6639
+ "device": {
6640
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")",
6641
+ "type": "string"
6642
+ },
6643
+ "deviceId": {
6644
+ "description": "Device identifier for targeting a specific device",
6645
+ "type": "string"
6646
+ }
6647
+ },
6648
+ "required": [
6649
+ "appId"
6650
+ ],
6651
+ "additionalProperties": false
6652
+ }
6653
+ },
6424
6654
  {
6425
6655
  "name": "videoRecording",
6426
6656
  "description": "Start or stop a low-overhead video recording for the active device.",