@kaeawc/auto-mobile 0.0.37 → 0.0.38

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.37",
3
+ "version": "0.0.38",
4
4
  "description": "Mobile device interaction automation via MCP",
5
5
  "scripts": {
6
6
  "test": "bun test",
@@ -75,7 +75,7 @@
75
75
  "access": "public"
76
76
  },
77
77
  "dependencies": {
78
- "@anthropic-ai/sdk": "^0.105.0",
78
+ "@anthropic-ai/sdk": "^0.106.0",
79
79
  "@modelcontextprotocol/sdk": "^1.26.0",
80
80
  "adm-zip": "^0.5.16",
81
81
  "ajv": "^8.18.0",
@@ -1,7 +1,282 @@
1
1
  [
2
+ {
3
+ "name": "accessibilityFocus",
4
+ "description": "Set or clear the Android TalkBack accessibility-focus cursor on a target element (Android only). Provide one selector: resourceId, text, or contentDesc. action defaults to 'set'; pass 'clear' to clear the cursor.",
5
+ "inputSchema": {
6
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
7
+ "type": "object",
8
+ "properties": {
9
+ "action": {
10
+ "description": "Set (default) or clear the accessibility (TalkBack) focus cursor",
11
+ "type": "string",
12
+ "enum": [
13
+ "set",
14
+ "clear"
15
+ ]
16
+ },
17
+ "resourceId": {
18
+ "description": "Resource ID of the target element, e.g. com.example:id/title",
19
+ "type": "string"
20
+ },
21
+ "text": {
22
+ "description": "Text of the target element (resolved to a resource-id via the element finder)",
23
+ "type": "string"
24
+ },
25
+ "contentDesc": {
26
+ "description": "Content description of the target element (resolved to a resource-id)",
27
+ "type": "string"
28
+ },
29
+ "platform": {
30
+ "type": "string",
31
+ "enum": [
32
+ "android",
33
+ "ios"
34
+ ],
35
+ "description": "Target platform"
36
+ },
37
+ "sessionUuid": {
38
+ "description": "Session UUID",
39
+ "type": "string"
40
+ },
41
+ "keepScreenAwake": {
42
+ "description": "Keep device awake",
43
+ "type": "boolean"
44
+ },
45
+ "device": {
46
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")",
47
+ "type": "string"
48
+ },
49
+ "deviceId": {
50
+ "description": "Device ID",
51
+ "type": "string"
52
+ }
53
+ },
54
+ "additionalProperties": false
55
+ },
56
+ "outputSchema": {
57
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
58
+ "type": "object",
59
+ "properties": {
60
+ "success": {
61
+ "type": "boolean"
62
+ },
63
+ "error": {
64
+ "type": "string"
65
+ },
66
+ "warning": {
67
+ "type": "string"
68
+ },
69
+ "focusedElement": {
70
+ "type": "object",
71
+ "properties": {
72
+ "bounds": {
73
+ "type": "object",
74
+ "properties": {
75
+ "left": {
76
+ "type": "integer",
77
+ "minimum": -9007199254740991,
78
+ "maximum": 9007199254740991
79
+ },
80
+ "top": {
81
+ "type": "integer",
82
+ "minimum": -9007199254740991,
83
+ "maximum": 9007199254740991
84
+ },
85
+ "right": {
86
+ "type": "integer",
87
+ "minimum": -9007199254740991,
88
+ "maximum": 9007199254740991
89
+ },
90
+ "bottom": {
91
+ "type": "integer",
92
+ "minimum": -9007199254740991,
93
+ "maximum": 9007199254740991
94
+ },
95
+ "centerX": {
96
+ "type": "integer",
97
+ "minimum": -9007199254740991,
98
+ "maximum": 9007199254740991
99
+ },
100
+ "centerY": {
101
+ "type": "integer",
102
+ "minimum": -9007199254740991,
103
+ "maximum": 9007199254740991
104
+ }
105
+ },
106
+ "required": [
107
+ "left",
108
+ "top",
109
+ "right",
110
+ "bottom"
111
+ ],
112
+ "additionalProperties": false
113
+ },
114
+ "text": {
115
+ "type": "string"
116
+ },
117
+ "resource-id": {
118
+ "type": "string"
119
+ },
120
+ "content-desc": {
121
+ "type": "string"
122
+ },
123
+ "class": {
124
+ "type": "string"
125
+ },
126
+ "package": {
127
+ "type": "string"
128
+ },
129
+ "checkable": {
130
+ "anyOf": [
131
+ {
132
+ "type": "boolean"
133
+ },
134
+ {
135
+ "type": "string",
136
+ "const": "true"
137
+ },
138
+ {
139
+ "type": "string",
140
+ "const": "false"
141
+ }
142
+ ]
143
+ },
144
+ "checked": {
145
+ "anyOf": [
146
+ {
147
+ "type": "boolean"
148
+ },
149
+ {
150
+ "type": "string",
151
+ "const": "true"
152
+ },
153
+ {
154
+ "type": "string",
155
+ "const": "false"
156
+ }
157
+ ]
158
+ },
159
+ "clickable": {
160
+ "anyOf": [
161
+ {
162
+ "type": "boolean"
163
+ },
164
+ {
165
+ "type": "string",
166
+ "const": "true"
167
+ },
168
+ {
169
+ "type": "string",
170
+ "const": "false"
171
+ }
172
+ ]
173
+ },
174
+ "enabled": {
175
+ "anyOf": [
176
+ {
177
+ "type": "boolean"
178
+ },
179
+ {
180
+ "type": "string",
181
+ "const": "true"
182
+ },
183
+ {
184
+ "type": "string",
185
+ "const": "false"
186
+ }
187
+ ]
188
+ },
189
+ "focusable": {
190
+ "anyOf": [
191
+ {
192
+ "type": "boolean"
193
+ },
194
+ {
195
+ "type": "string",
196
+ "const": "true"
197
+ },
198
+ {
199
+ "type": "string",
200
+ "const": "false"
201
+ }
202
+ ]
203
+ },
204
+ "focused": {
205
+ "anyOf": [
206
+ {
207
+ "type": "boolean"
208
+ },
209
+ {
210
+ "type": "string",
211
+ "const": "true"
212
+ },
213
+ {
214
+ "type": "string",
215
+ "const": "false"
216
+ }
217
+ ]
218
+ },
219
+ "accessibility-focused": {
220
+ "anyOf": [
221
+ {
222
+ "type": "boolean"
223
+ },
224
+ {
225
+ "type": "string",
226
+ "const": "true"
227
+ },
228
+ {
229
+ "type": "string",
230
+ "const": "false"
231
+ }
232
+ ]
233
+ },
234
+ "scrollable": {
235
+ "anyOf": [
236
+ {
237
+ "type": "boolean"
238
+ },
239
+ {
240
+ "type": "string",
241
+ "const": "true"
242
+ },
243
+ {
244
+ "type": "string",
245
+ "const": "false"
246
+ }
247
+ ]
248
+ },
249
+ "selected": {
250
+ "anyOf": [
251
+ {
252
+ "type": "boolean"
253
+ },
254
+ {
255
+ "type": "string",
256
+ "const": "true"
257
+ },
258
+ {
259
+ "type": "string",
260
+ "const": "false"
261
+ }
262
+ ]
263
+ }
264
+ },
265
+ "required": [
266
+ "bounds"
267
+ ],
268
+ "additionalProperties": {}
269
+ }
270
+ },
271
+ "required": [
272
+ "success"
273
+ ],
274
+ "additionalProperties": {}
275
+ }
276
+ },
2
277
  {
3
278
  "name": "biometricAuth",
4
- "description": "Simulate biometric authentication (fingerprint) on Android emulators, or inject a deterministic result via the AutoMobile SDK on any device. Supports match/fail/cancel/error actions. The SDK broadcast path requires the app to integrate AutoMobileBiometrics.consumeOverride().",
279
+ "description": "Simulate biometric authentication on Android emulators (fingerprint) and the iOS Simulator (Touch ID / Face ID via BiometricKit), or inject a deterministic result via the AutoMobile SDK on any Android device. Supports match/fail on both platforms; cancel/error require the AutoMobileBiometrics SDK (Android only). Physical iOS devices are not supported (no public biometric-injection API).",
5
280
  "inputSchema": {
6
281
  "$schema": "https://json-schema.org/draft/2020-12/schema",
7
282
  "type": "object",
@@ -17,7 +292,7 @@
17
292
  "description": "Biometric action: 'match' triggers successful authentication, 'fail' simulates a non-matching biometric, 'cancel' cancels the prompt, 'error' injects a hard error (requires AutoMobileBiometrics SDK integration in the app)."
18
293
  },
19
294
  "modality": {
20
- "description": "Biometric modality (default: 'any'). Currently only 'fingerprint' is reliably supported on Android emulators. 'face' is not consistently supported.",
295
+ "description": "Biometric modality (default: 'any'). Android emulators reliably support only 'fingerprint'. iOS Simulator supports both: 'fingerprint' -> Touch ID, 'face' -> Face ID, 'any' posts both (the simulator's non-enrolled biometry is a no-op).",
21
296
  "type": "string",
22
297
  "enum": [
23
298
  "any",
@@ -189,17 +464,18 @@
189
464
  "properties": {
190
465
  "action": {
191
466
  "type": "string",
467
+ "description": "Clipboard action: copy=set clipboard, paste=paste into focused field, clear=clear clipboard, get=get clipboard content",
192
468
  "enum": [
193
469
  "copy",
194
470
  "paste",
195
471
  "clear",
196
472
  "get"
197
- ],
198
- "description": "Clipboard action: copy=set clipboard, paste=paste into focused field, clear=clear clipboard, get=get clipboard content"
473
+ ]
199
474
  },
200
475
  "text": {
201
- "description": "Text to copy (required for 'copy' action)",
202
- "type": "string"
476
+ "type": "string",
477
+ "minLength": 1,
478
+ "description": "Text to copy (required for 'copy' action)"
203
479
  },
204
480
  "platform": {
205
481
  "type": "string",
@@ -305,15 +581,16 @@
305
581
  "properties": {
306
582
  "action": {
307
583
  "type": "string",
584
+ "description": "Action to perform",
308
585
  "enum": [
309
586
  "capture",
310
587
  "restore"
311
- ],
312
- "description": "Action to perform"
588
+ ]
313
589
  },
314
590
  "snapshotName": {
315
591
  "description": "Name for the snapshot",
316
- "type": "string"
592
+ "type": "string",
593
+ "minLength": 1
317
594
  },
318
595
  "includeAppData": {
319
596
  "description": "Include app data directories in snapshot",
@@ -4137,7 +4414,7 @@
4137
4414
  },
4138
4415
  {
4139
4416
  "name": "postNotification",
4140
- "description": "Post a notification from the app-under-test when AutoMobile SDK hooks are installed.",
4417
+ "description": "Post a notification: on Android, from the app-under-test when AutoMobile SDK hooks are installed; on the iOS Simulator, deliver a simulated remote push to the given bundle id via 'simctl push' (requires appId; physical iOS devices unsupported).",
4141
4418
  "inputSchema": {
4142
4419
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4143
4420
  "type": "object",
@@ -4165,7 +4442,7 @@
4165
4442
  "type": "string"
4166
4443
  },
4167
4444
  "actions": {
4168
- "description": "Action buttons to include",
4445
+ "description": "Action buttons to include (Android only)",
4169
4446
  "type": "array",
4170
4447
  "items": {
4171
4448
  "type": "object",
@@ -4189,16 +4466,21 @@
4189
4466
  }
4190
4467
  },
4191
4468
  "channelId": {
4192
- "description": "Notification channel ID (Android only)",
4469
+ "description": "Notification channel ID (Android); reused as the APNs category on iOS",
4193
4470
  "type": "string"
4194
4471
  },
4472
+ "appId": {
4473
+ "type": "string",
4474
+ "minLength": 1,
4475
+ "description": "iOS bundle identifier to target (required on iOS; maps to APNs 'Simulator Target Bundle'). Ignored on Android."
4476
+ },
4195
4477
  "platform": {
4196
4478
  "type": "string",
4479
+ "description": "Target platform",
4197
4480
  "enum": [
4198
- "android",
4199
- "ios"
4200
- ],
4201
- "description": "Target platform"
4481
+ "ios",
4482
+ "android"
4483
+ ]
4202
4484
  },
4203
4485
  "sessionUuid": {
4204
4486
  "description": "Session UUID",
@@ -4227,7 +4509,7 @@
4227
4509
  },
4228
4510
  {
4229
4511
  "name": "pressButton",
4230
- "description": "Press hardware button",
4512
+ "description": "Press device or navigation button",
4231
4513
  "inputSchema": {
4232
4514
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4233
4515
  "type": "object",
@@ -4636,7 +4918,7 @@
4636
4918
  },
4637
4919
  {
4638
4920
  "name": "setDeviceState",
4639
- "description": "Set device-level state such as Do Not Disturb",
4921
+ "description": "Set device-level state such as Do Not Disturb. Android supports all four DND modes (off/none/priority/alarms) with read-back verification. iOS DND is simulator-only and binary (on/off) via a registered com.apple.donotdisturb.enabled notifyutil toggle; priority/alarms are applied as plain DND and reported honestly (capability:\"binary\", appliedMode:\"none\", verified:false, warning). Physical iOS devices are unsupported (capability:\"unsupported\") because iOS exposes no public API to set Focus/Do Not Disturb.",
4640
4922
  "inputSchema": {
4641
4923
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4642
4924
  "type": "object",