claude-in-mobile 3.14.0 → 4.0.0-dev

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.
Files changed (385) hide show
  1. package/README.md +61 -574
  2. package/dist/a11y/types.d.ts +1 -1
  3. package/dist/a11y/types.d.ts.map +1 -1
  4. package/dist/adapters/contracts.d.ts +66 -0
  5. package/dist/adapters/contracts.d.ts.map +1 -0
  6. package/dist/adapters/contracts.js +15 -0
  7. package/dist/adapters/contracts.js.map +1 -0
  8. package/dist/adapters/index.d.ts +0 -5
  9. package/dist/adapters/index.d.ts.map +1 -1
  10. package/dist/adapters/index.js +1 -5
  11. package/dist/adapters/index.js.map +1 -1
  12. package/dist/autopilot/explorer.js +1 -1
  13. package/dist/autopilot/explorer.js.map +1 -1
  14. package/dist/autopilot/healer.d.ts +1 -1
  15. package/dist/autopilot/healer.d.ts.map +1 -1
  16. package/dist/autopilot/screen-fingerprint.d.ts +1 -1
  17. package/dist/autopilot/screen-fingerprint.d.ts.map +1 -1
  18. package/dist/autopilot/types.d.ts +1 -1
  19. package/dist/autopilot/types.d.ts.map +1 -1
  20. package/dist/device/client-cache.d.ts +1 -1
  21. package/dist/device/client-cache.d.ts.map +1 -1
  22. package/dist/device/client-cache.js +4 -24
  23. package/dist/device/client-cache.js.map +1 -1
  24. package/dist/device/proxies/desktop-facade.d.ts +5 -8
  25. package/dist/device/proxies/desktop-facade.d.ts.map +1 -1
  26. package/dist/device/proxies/desktop-facade.js +12 -14
  27. package/dist/device/proxies/desktop-facade.js.map +1 -1
  28. package/dist/device-manager.d.ts +16 -16
  29. package/dist/device-manager.d.ts.map +1 -1
  30. package/dist/device-manager.js +23 -17
  31. package/dist/device-manager.js.map +1 -1
  32. package/dist/index.js +21 -6
  33. package/dist/index.js.map +1 -1
  34. package/dist/perf/collector.d.ts +5 -5
  35. package/dist/perf/collector.d.ts.map +1 -1
  36. package/dist/perf/collector.js.map +1 -1
  37. package/dist/runtime/bootstrap.d.ts +7 -0
  38. package/dist/runtime/bootstrap.d.ts.map +1 -1
  39. package/dist/runtime/bootstrap.js +87 -15
  40. package/dist/runtime/bootstrap.js.map +1 -1
  41. package/dist/runtime/cli.d.ts.map +1 -1
  42. package/dist/runtime/cli.js +14 -0
  43. package/dist/runtime/cli.js.map +1 -1
  44. package/dist/runtime/platform-cli.d.ts +24 -0
  45. package/dist/runtime/platform-cli.d.ts.map +1 -0
  46. package/dist/runtime/platform-cli.js +116 -0
  47. package/dist/runtime/platform-cli.js.map +1 -0
  48. package/dist/runtime/platform-config.d.ts +21 -0
  49. package/dist/runtime/platform-config.d.ts.map +1 -0
  50. package/dist/runtime/platform-config.js +71 -0
  51. package/dist/runtime/platform-config.js.map +1 -0
  52. package/dist/tools/browser-tools.js.map +1 -1
  53. package/dist/tools/clipboard-tools.js +1 -1
  54. package/dist/tools/clipboard-tools.js.map +1 -1
  55. package/dist/tools/context/hints.d.ts +1 -1
  56. package/dist/tools/context/hints.d.ts.map +1 -1
  57. package/dist/tools/context/hints.js +1 -1
  58. package/dist/tools/context/hints.js.map +1 -1
  59. package/dist/tools/context/ios-helpers.d.ts +1 -1
  60. package/dist/tools/context/ios-helpers.d.ts.map +1 -1
  61. package/dist/tools/context/shared-state-class.d.ts +1 -1
  62. package/dist/tools/context/shared-state-class.d.ts.map +1 -1
  63. package/dist/tools/context/shared-state.d.ts +1 -1
  64. package/dist/tools/context/shared-state.d.ts.map +1 -1
  65. package/dist/tools/context.d.ts +2 -1
  66. package/dist/tools/context.d.ts.map +1 -1
  67. package/dist/tools/context.js +17 -9
  68. package/dist/tools/context.js.map +1 -1
  69. package/dist/tools/desktop-tools.d.ts.map +1 -1
  70. package/dist/tools/desktop-tools.js.map +1 -1
  71. package/dist/tools/flow/common.js +1 -1
  72. package/dist/tools/flow/common.js.map +1 -1
  73. package/dist/tools/flow/run.js +1 -1
  74. package/dist/tools/flow/run.js.map +1 -1
  75. package/dist/tools/helpers/get-elements.d.ts +1 -1
  76. package/dist/tools/helpers/get-elements.d.ts.map +1 -1
  77. package/dist/tools/helpers/get-elements.js +1 -1
  78. package/dist/tools/helpers/get-elements.js.map +1 -1
  79. package/dist/tools/helpers/resolve-element.js +1 -1
  80. package/dist/tools/helpers/resolve-element.js.map +1 -1
  81. package/dist/tools/screenshot-tools.js +1 -1
  82. package/dist/tools/screenshot-tools.js.map +1 -1
  83. package/dist/tools/ui/analyze.js +1 -1
  84. package/dist/tools/ui/analyze.js.map +1 -1
  85. package/dist/tools/ui/assert.js +1 -1
  86. package/dist/tools/ui/assert.js.map +1 -1
  87. package/dist/tools/ui/find.js +1 -1
  88. package/dist/tools/ui/find.js.map +1 -1
  89. package/dist/tools/ui/tree.js +1 -1
  90. package/dist/tools/ui/tree.js.map +1 -1
  91. package/dist/tools/ui/wait.js +1 -1
  92. package/dist/tools/ui/wait.js.map +1 -1
  93. package/dist/ui-tree/ui-parser/diff-engine.d.ts.map +1 -0
  94. package/dist/ui-tree/ui-parser/diff-engine.js.map +1 -0
  95. package/dist/ui-tree/ui-parser/element-builder.d.ts.map +1 -0
  96. package/dist/ui-tree/ui-parser/element-builder.js.map +1 -0
  97. package/dist/ui-tree/ui-parser/element-finders.d.ts.map +1 -0
  98. package/dist/ui-tree/ui-parser/element-finders.js.map +1 -0
  99. package/dist/ui-tree/ui-parser/formatters/compact.d.ts.map +1 -0
  100. package/dist/ui-tree/ui-parser/formatters/compact.js.map +1 -0
  101. package/dist/ui-tree/ui-parser/formatters/full.d.ts.map +1 -0
  102. package/dist/ui-tree/ui-parser/formatters/full.js.map +1 -0
  103. package/dist/ui-tree/ui-parser/formatters/index.d.ts.map +1 -0
  104. package/dist/ui-tree/ui-parser/formatters/index.js.map +1 -0
  105. package/dist/ui-tree/ui-parser/formatters/semantic.d.ts.map +1 -0
  106. package/dist/ui-tree/ui-parser/formatters/semantic.js.map +1 -0
  107. package/dist/ui-tree/ui-parser/node-parser.d.ts.map +1 -0
  108. package/dist/ui-tree/ui-parser/node-parser.js.map +1 -0
  109. package/dist/ui-tree/ui-parser/screen-analyzer.d.ts.map +1 -0
  110. package/dist/ui-tree/ui-parser/screen-analyzer.js.map +1 -0
  111. package/dist/ui-tree/ui-parser/types.d.ts.map +1 -0
  112. package/dist/ui-tree/ui-parser/types.js.map +1 -0
  113. package/dist/ui-tree/ui-parser.d.ts.map +1 -0
  114. package/dist/ui-tree/ui-parser.js.map +1 -0
  115. package/dist/ui-tree/ui-scoring.d.ts.map +1 -0
  116. package/dist/ui-tree/ui-scoring.js.map +1 -0
  117. package/dist/ui-tree/ui-tree-cache.d.ts.map +1 -0
  118. package/dist/ui-tree/ui-tree-cache.js.map +1 -0
  119. package/dist/utils/image/annotate.d.ts +1 -1
  120. package/dist/utils/image/annotate.d.ts.map +1 -1
  121. package/package.json +11 -6
  122. package/dist/adapters/android-adapter.d.ts +0 -64
  123. package/dist/adapters/android-adapter.d.ts.map +0 -1
  124. package/dist/adapters/android-adapter.js +0 -164
  125. package/dist/adapters/android-adapter.js.map +0 -1
  126. package/dist/adapters/aurora-adapter.d.ts +0 -56
  127. package/dist/adapters/aurora-adapter.d.ts.map +0 -1
  128. package/dist/adapters/aurora-adapter.js +0 -118
  129. package/dist/adapters/aurora-adapter.js.map +0 -1
  130. package/dist/adapters/browser-adapter.d.ts +0 -51
  131. package/dist/adapters/browser-adapter.d.ts.map +0 -1
  132. package/dist/adapters/browser-adapter.js +0 -223
  133. package/dist/adapters/browser-adapter.js.map +0 -1
  134. package/dist/adapters/desktop-adapter.d.ts +0 -64
  135. package/dist/adapters/desktop-adapter.d.ts.map +0 -1
  136. package/dist/adapters/desktop-adapter.js +0 -202
  137. package/dist/adapters/desktop-adapter.js.map +0 -1
  138. package/dist/adapters/ios-adapter.d.ts +0 -60
  139. package/dist/adapters/ios-adapter.d.ts.map +0 -1
  140. package/dist/adapters/ios-adapter.js +0 -146
  141. package/dist/adapters/ios-adapter.js.map +0 -1
  142. package/dist/adb/client.d.ts +0 -238
  143. package/dist/adb/client.d.ts.map +0 -1
  144. package/dist/adb/client.js +0 -462
  145. package/dist/adb/client.js.map +0 -1
  146. package/dist/adb/exec.d.ts +0 -23
  147. package/dist/adb/exec.d.ts.map +0 -1
  148. package/dist/adb/exec.js +0 -98
  149. package/dist/adb/exec.js.map +0 -1
  150. package/dist/adb/index.d.ts +0 -5
  151. package/dist/adb/index.d.ts.map +0 -1
  152. package/dist/adb/index.js +0 -3
  153. package/dist/adb/index.js.map +0 -1
  154. package/dist/adb/keycodes.d.ts +0 -22
  155. package/dist/adb/keycodes.d.ts.map +0 -1
  156. package/dist/adb/keycodes.js +0 -69
  157. package/dist/adb/keycodes.js.map +0 -1
  158. package/dist/adb/logcat.d.ts +0 -23
  159. package/dist/adb/logcat.d.ts.map +0 -1
  160. package/dist/adb/logcat.js +0 -40
  161. package/dist/adb/logcat.js.map +0 -1
  162. package/dist/adb/parsers.d.ts +0 -60
  163. package/dist/adb/parsers.d.ts.map +0 -1
  164. package/dist/adb/parsers.js +0 -118
  165. package/dist/adb/parsers.js.map +0 -1
  166. package/dist/adb/resolver.d.ts +0 -24
  167. package/dist/adb/resolver.d.ts.map +0 -1
  168. package/dist/adb/resolver.js +0 -130
  169. package/dist/adb/resolver.js.map +0 -1
  170. package/dist/adb/text-escape.d.ts +0 -23
  171. package/dist/adb/text-escape.d.ts.map +0 -1
  172. package/dist/adb/text-escape.js +0 -41
  173. package/dist/adb/text-escape.js.map +0 -1
  174. package/dist/adb/ui-parser/diff-engine.d.ts.map +0 -1
  175. package/dist/adb/ui-parser/diff-engine.js.map +0 -1
  176. package/dist/adb/ui-parser/element-builder.d.ts.map +0 -1
  177. package/dist/adb/ui-parser/element-builder.js.map +0 -1
  178. package/dist/adb/ui-parser/element-finders.d.ts.map +0 -1
  179. package/dist/adb/ui-parser/element-finders.js.map +0 -1
  180. package/dist/adb/ui-parser/formatters/compact.d.ts.map +0 -1
  181. package/dist/adb/ui-parser/formatters/compact.js.map +0 -1
  182. package/dist/adb/ui-parser/formatters/full.d.ts.map +0 -1
  183. package/dist/adb/ui-parser/formatters/full.js.map +0 -1
  184. package/dist/adb/ui-parser/formatters/index.d.ts.map +0 -1
  185. package/dist/adb/ui-parser/formatters/index.js.map +0 -1
  186. package/dist/adb/ui-parser/formatters/semantic.d.ts.map +0 -1
  187. package/dist/adb/ui-parser/formatters/semantic.js.map +0 -1
  188. package/dist/adb/ui-parser/node-parser.d.ts.map +0 -1
  189. package/dist/adb/ui-parser/node-parser.js.map +0 -1
  190. package/dist/adb/ui-parser/screen-analyzer.d.ts.map +0 -1
  191. package/dist/adb/ui-parser/screen-analyzer.js.map +0 -1
  192. package/dist/adb/ui-parser/types.d.ts.map +0 -1
  193. package/dist/adb/ui-parser/types.js.map +0 -1
  194. package/dist/adb/ui-parser.d.ts.map +0 -1
  195. package/dist/adb/ui-parser.js.map +0 -1
  196. package/dist/adb/ui-scoring.d.ts.map +0 -1
  197. package/dist/adb/ui-scoring.js.map +0 -1
  198. package/dist/adb/ui-tree-cache.d.ts.map +0 -1
  199. package/dist/adb/ui-tree-cache.js.map +0 -1
  200. package/dist/adb/webview.d.ts +0 -59
  201. package/dist/adb/webview.d.ts.map +0 -1
  202. package/dist/adb/webview.js +0 -169
  203. package/dist/adb/webview.js.map +0 -1
  204. package/dist/aurora/client.d.ts +0 -180
  205. package/dist/aurora/client.d.ts.map +0 -1
  206. package/dist/aurora/client.js +0 -324
  207. package/dist/aurora/client.js.map +0 -1
  208. package/dist/aurora/index.d.ts +0 -2
  209. package/dist/aurora/index.d.ts.map +0 -1
  210. package/dist/aurora/index.js +0 -2
  211. package/dist/aurora/index.js.map +0 -1
  212. package/dist/browser/cdp-helpers.d.ts +0 -17
  213. package/dist/browser/cdp-helpers.d.ts.map +0 -1
  214. package/dist/browser/cdp-helpers.js +0 -79
  215. package/dist/browser/cdp-helpers.js.map +0 -1
  216. package/dist/browser/cdp-types.d.ts +0 -167
  217. package/dist/browser/cdp-types.d.ts.map +0 -1
  218. package/dist/browser/cdp-types.js +0 -9
  219. package/dist/browser/cdp-types.js.map +0 -1
  220. package/dist/browser/client.d.ts +0 -29
  221. package/dist/browser/client.d.ts.map +0 -1
  222. package/dist/browser/client.js +0 -391
  223. package/dist/browser/client.js.map +0 -1
  224. package/dist/browser/index.d.ts +0 -5
  225. package/dist/browser/index.d.ts.map +0 -1
  226. package/dist/browser/index.js +0 -4
  227. package/dist/browser/index.js.map +0 -1
  228. package/dist/browser/key-map.d.ts +0 -16
  229. package/dist/browser/key-map.d.ts.map +0 -1
  230. package/dist/browser/key-map.js +0 -35
  231. package/dist/browser/key-map.js.map +0 -1
  232. package/dist/browser/session-manager.d.ts +0 -21
  233. package/dist/browser/session-manager.d.ts.map +0 -1
  234. package/dist/browser/session-manager.js +0 -109
  235. package/dist/browser/session-manager.js.map +0 -1
  236. package/dist/browser/snapshot-builder.d.ts +0 -4
  237. package/dist/browser/snapshot-builder.d.ts.map +0 -1
  238. package/dist/browser/snapshot-builder.js +0 -76
  239. package/dist/browser/snapshot-builder.js.map +0 -1
  240. package/dist/browser/types.d.ts +0 -75
  241. package/dist/browser/types.d.ts.map +0 -1
  242. package/dist/browser/types.js +0 -11
  243. package/dist/browser/types.js.map +0 -1
  244. package/dist/desktop/client.d.ts +0 -196
  245. package/dist/desktop/client.d.ts.map +0 -1
  246. package/dist/desktop/client.js +0 -540
  247. package/dist/desktop/client.js.map +0 -1
  248. package/dist/desktop/gradle.d.ts +0 -45
  249. package/dist/desktop/gradle.d.ts.map +0 -1
  250. package/dist/desktop/gradle.js +0 -234
  251. package/dist/desktop/gradle.js.map +0 -1
  252. package/dist/desktop/index.d.ts +0 -7
  253. package/dist/desktop/index.d.ts.map +0 -1
  254. package/dist/desktop/index.js +0 -7
  255. package/dist/desktop/index.js.map +0 -1
  256. package/dist/desktop/launch-options.d.ts +0 -13
  257. package/dist/desktop/launch-options.d.ts.map +0 -1
  258. package/dist/desktop/launch-options.js +0 -54
  259. package/dist/desktop/launch-options.js.map +0 -1
  260. package/dist/desktop/launchers.d.ts +0 -52
  261. package/dist/desktop/launchers.d.ts.map +0 -1
  262. package/dist/desktop/launchers.js +0 -125
  263. package/dist/desktop/launchers.js.map +0 -1
  264. package/dist/desktop/log-ring.d.ts +0 -21
  265. package/dist/desktop/log-ring.d.ts.map +0 -1
  266. package/dist/desktop/log-ring.js +0 -45
  267. package/dist/desktop/log-ring.js.map +0 -1
  268. package/dist/desktop/permission-allowlist.d.ts +0 -47
  269. package/dist/desktop/permission-allowlist.d.ts.map +0 -1
  270. package/dist/desktop/permission-allowlist.js +0 -148
  271. package/dist/desktop/permission-allowlist.js.map +0 -1
  272. package/dist/desktop/types.d.ts +0 -177
  273. package/dist/desktop/types.d.ts.map +0 -1
  274. package/dist/desktop/types.js +0 -5
  275. package/dist/desktop/types.js.map +0 -1
  276. package/dist/ios/client.d.ts +0 -204
  277. package/dist/ios/client.d.ts.map +0 -1
  278. package/dist/ios/client.js +0 -483
  279. package/dist/ios/client.js.map +0 -1
  280. package/dist/ios/go-ios/client.d.ts +0 -23
  281. package/dist/ios/go-ios/client.d.ts.map +0 -1
  282. package/dist/ios/go-ios/client.js +0 -51
  283. package/dist/ios/go-ios/client.js.map +0 -1
  284. package/dist/ios/go-ios/index.d.ts +0 -4
  285. package/dist/ios/go-ios/index.d.ts.map +0 -1
  286. package/dist/ios/go-ios/index.js +0 -3
  287. package/dist/ios/go-ios/index.js.map +0 -1
  288. package/dist/ios/go-ios/parsers.d.ts +0 -28
  289. package/dist/ios/go-ios/parsers.d.ts.map +0 -1
  290. package/dist/ios/go-ios/parsers.js +0 -71
  291. package/dist/ios/go-ios/parsers.js.map +0 -1
  292. package/dist/ios/index.d.ts +0 -2
  293. package/dist/ios/index.d.ts.map +0 -1
  294. package/dist/ios/index.js +0 -2
  295. package/dist/ios/index.js.map +0 -1
  296. package/dist/ios/keymap.d.ts +0 -20
  297. package/dist/ios/keymap.d.ts.map +0 -1
  298. package/dist/ios/keymap.js +0 -33
  299. package/dist/ios/keymap.js.map +0 -1
  300. package/dist/ios/simctl-commands.d.ts +0 -35
  301. package/dist/ios/simctl-commands.d.ts.map +0 -1
  302. package/dist/ios/simctl-commands.js +0 -60
  303. package/dist/ios/simctl-commands.js.map +0 -1
  304. package/dist/ios/simctl-exec.d.ts +0 -19
  305. package/dist/ios/simctl-exec.d.ts.map +0 -1
  306. package/dist/ios/simctl-exec.js +0 -55
  307. package/dist/ios/simctl-exec.js.map +0 -1
  308. package/dist/ios/simctl-parsers.d.ts +0 -10
  309. package/dist/ios/simctl-parsers.d.ts.map +0 -1
  310. package/dist/ios/simctl-parsers.js +0 -29
  311. package/dist/ios/simctl-parsers.js.map +0 -1
  312. package/dist/ios/types.d.ts +0 -8
  313. package/dist/ios/types.d.ts.map +0 -1
  314. package/dist/ios/types.js +0 -2
  315. package/dist/ios/types.js.map +0 -1
  316. package/dist/ios/wda/index.d.ts +0 -4
  317. package/dist/ios/wda/index.d.ts.map +0 -1
  318. package/dist/ios/wda/index.js +0 -4
  319. package/dist/ios/wda/index.js.map +0 -1
  320. package/dist/ios/wda/wda-client.d.ts +0 -33
  321. package/dist/ios/wda/wda-client.d.ts.map +0 -1
  322. package/dist/ios/wda/wda-client.js +0 -250
  323. package/dist/ios/wda/wda-client.js.map +0 -1
  324. package/dist/ios/wda/wda-manager.d.ts +0 -34
  325. package/dist/ios/wda/wda-manager.d.ts.map +0 -1
  326. package/dist/ios/wda/wda-manager.js +0 -392
  327. package/dist/ios/wda/wda-manager.js.map +0 -1
  328. package/dist/ios/wda/wda-types.d.ts +0 -39
  329. package/dist/ios/wda/wda-types.d.ts.map +0 -1
  330. package/dist/ios/wda/wda-types.js +0 -2
  331. package/dist/ios/wda/wda-types.js.map +0 -1
  332. package/dist/ios/wda-errors.d.ts +0 -8
  333. package/dist/ios/wda-errors.d.ts.map +0 -1
  334. package/dist/ios/wda-errors.js +0 -13
  335. package/dist/ios/wda-errors.js.map +0 -1
  336. package/dist/ios/wda-payloads.d.ts +0 -32
  337. package/dist/ios/wda-payloads.d.ts.map +0 -1
  338. package/dist/ios/wda-payloads.js +0 -31
  339. package/dist/ios/wda-payloads.js.map +0 -1
  340. package/dist/plugins/android/index.d.ts +0 -23
  341. package/dist/plugins/android/index.d.ts.map +0 -1
  342. package/dist/plugins/android/index.js +0 -45
  343. package/dist/plugins/android/index.js.map +0 -1
  344. package/dist/plugins/aurora/index.d.ts +0 -17
  345. package/dist/plugins/aurora/index.d.ts.map +0 -1
  346. package/dist/plugins/aurora/index.js +0 -27
  347. package/dist/plugins/aurora/index.js.map +0 -1
  348. package/dist/plugins/desktop/index.d.ts +0 -18
  349. package/dist/plugins/desktop/index.d.ts.map +0 -1
  350. package/dist/plugins/desktop/index.js +0 -28
  351. package/dist/plugins/desktop/index.js.map +0 -1
  352. package/dist/plugins/ios/index.d.ts +0 -17
  353. package/dist/plugins/ios/index.d.ts.map +0 -1
  354. package/dist/plugins/ios/index.js +0 -36
  355. package/dist/plugins/ios/index.js.map +0 -1
  356. package/dist/plugins/web/index.d.ts +0 -17
  357. package/dist/plugins/web/index.d.ts.map +0 -1
  358. package/dist/plugins/web/index.js +0 -27
  359. package/dist/plugins/web/index.js.map +0 -1
  360. /package/dist/{adb → ui-tree}/ui-parser/diff-engine.d.ts +0 -0
  361. /package/dist/{adb → ui-tree}/ui-parser/diff-engine.js +0 -0
  362. /package/dist/{adb → ui-tree}/ui-parser/element-builder.d.ts +0 -0
  363. /package/dist/{adb → ui-tree}/ui-parser/element-builder.js +0 -0
  364. /package/dist/{adb → ui-tree}/ui-parser/element-finders.d.ts +0 -0
  365. /package/dist/{adb → ui-tree}/ui-parser/element-finders.js +0 -0
  366. /package/dist/{adb → ui-tree}/ui-parser/formatters/compact.d.ts +0 -0
  367. /package/dist/{adb → ui-tree}/ui-parser/formatters/compact.js +0 -0
  368. /package/dist/{adb → ui-tree}/ui-parser/formatters/full.d.ts +0 -0
  369. /package/dist/{adb → ui-tree}/ui-parser/formatters/full.js +0 -0
  370. /package/dist/{adb → ui-tree}/ui-parser/formatters/index.d.ts +0 -0
  371. /package/dist/{adb → ui-tree}/ui-parser/formatters/index.js +0 -0
  372. /package/dist/{adb → ui-tree}/ui-parser/formatters/semantic.d.ts +0 -0
  373. /package/dist/{adb → ui-tree}/ui-parser/formatters/semantic.js +0 -0
  374. /package/dist/{adb → ui-tree}/ui-parser/node-parser.d.ts +0 -0
  375. /package/dist/{adb → ui-tree}/ui-parser/node-parser.js +0 -0
  376. /package/dist/{adb → ui-tree}/ui-parser/screen-analyzer.d.ts +0 -0
  377. /package/dist/{adb → ui-tree}/ui-parser/screen-analyzer.js +0 -0
  378. /package/dist/{adb → ui-tree}/ui-parser/types.d.ts +0 -0
  379. /package/dist/{adb → ui-tree}/ui-parser/types.js +0 -0
  380. /package/dist/{adb → ui-tree}/ui-parser.d.ts +0 -0
  381. /package/dist/{adb → ui-tree}/ui-parser.js +0 -0
  382. /package/dist/{adb → ui-tree}/ui-scoring.d.ts +0 -0
  383. /package/dist/{adb → ui-tree}/ui-scoring.js +0 -0
  384. /package/dist/{adb → ui-tree}/ui-tree-cache.d.ts +0 -0
  385. /package/dist/{adb → ui-tree}/ui-tree-cache.js +0 -0
package/README.md CHANGED
@@ -1,603 +1,90 @@
1
- # Claude Mobile
1
+ # claude-in-mobile 4.0.0-dev — modular / plugin edition
2
2
 
3
- > **Known Issue Homebrew upgrade not working?**
4
- > Some users may see `already installed` with an old version when running `brew upgrade claude-in-mobile`. This happens when the local tap points to the wrong repository. Fix:
5
- > ```bash
6
- > brew untap alexgladkov/claude-in-mobile
7
- > brew tap alexgladkov/claude-in-mobile
8
- > brew install claude-in-mobile
9
- > ```
3
+ > **Pre-release (`dev` tag).** The stable line is 3.x. This 4.0.0-dev artifact
4
+ > is an experiment: the base package is **slim** and each platform ships as a
5
+ > separate plugin you install on demand. Try it, break it, send feedback.
6
+ > `npm i -g claude-in-mobile` still gives you stable 3.x.
10
7
 
11
- MCP server for mobile, desktop, and browser automation — Android (ADB), iOS Simulator (simctl + WDA), Desktop (any macOS app), Aurora OS (audb), and Browser (CDP). Like [Claude in Chrome](https://www.anthropic.com/news/claude-for-chrome) but for devices, apps, and browsers.
8
+ ## What changed
12
9
 
13
- Control your Android phone, emulator, iOS Simulator, desktop app, Aurora device, or headless browser with natural language through Claude.
10
+ In 3.x the single `claude-in-mobile` package bundled every platform
11
+ (Android, iOS, Web, Desktop, Aurora). In 4.0.0 the base is **slim** —
12
+ kernel + built-in tools + REPL only — and platforms are delivered as
13
+ separate packages, loaded **on demand**:
14
14
 
15
- ---
16
-
17
- ## Table of Contents
18
-
19
- - [Quick Start](#quick-start)
20
- - [Features at a Glance](#features-at-a-glance)
21
- - [Quality Engineering](#quality-engineering)
22
- - [Installation](#installation)
23
- - [Homebrew (macOS)](#homebrew-macos)
24
- - [One-liner (any client)](#one-liner-any-client)
25
- - [Claude Code](#claude-code)
26
- - [OpenCode](#opencode)
27
- - [Other Agents (Pi, Qwen, Gemini, Codex, Cursor)](#other-agents)
28
- - [From npm / source](#from-npm--source)
29
- - [Windows](#windows)
30
- - [Platform Guides](#platform-guides)
31
- - [Android](#android)
32
- - [iOS](#ios)
33
- - [Desktop](#desktop)
34
- - [Browser](#browser)
35
- - [Aurora OS](#aurora-os)
36
- - [Tools Reference](#tools-reference)
37
- - [Core Meta-Tools](#core-meta-tools)
38
- - [Optional Modules](#optional-modules)
39
- - [Flow Tools](#flow-tools)
40
- - [Native CLI](#native-cli)
41
- - [Architecture](#architecture)
42
- - [License](#license)
43
-
44
- ---
45
-
46
- ## Quick Start
47
-
48
- ```bash
49
- # Install via Homebrew (macOS)
50
- brew tap AlexGladkov/claude-in-mobile https://github.com/AlexGladkov/claude-in-mobile
51
- brew install claude-in-mobile
52
-
53
- # Verify dependencies
54
- claude-in-mobile doctor
55
-
56
- # Add to Claude Code
57
- claude mcp add --scope user --transport stdio mobile -- npx claude-in-mobile@latest
58
- ```
59
-
60
- Then talk to Claude naturally:
61
-
62
- ```
63
- "Take a screenshot of the Android emulator"
64
- "Tap on the Login button"
65
- "Type hello in the search field"
66
- "Switch to iOS simulator"
67
- ```
68
-
69
- ---
70
-
71
- ## Features at a Glance
72
-
73
- | Feature | Description |
74
- |---------|-------------|
75
- | **Unified API** | Same 8 meta-tools work across Android, iOS, Desktop, Aurora, and Browser |
76
- | **Token-optimized** | 8 meta-tools + 3 optional modules instead of 81 tools (~85% token reduction) |
77
- | **Dynamic modules** | Browser, Desktop, Store load on demand — default tool list stays lean |
78
- | **Smart screenshots** | Auto-compressed for optimal LLM processing |
79
- | **Annotated screenshots** | Colored bounding boxes + numbered element labels |
80
- | **Security hardened** | Shell injection protection, URL validation, path traversal blocking |
81
- | **Structured errors** | Typed error codes with auto-recovery hints |
82
- | **Multi-device parallel** | Run actions on multiple devices simultaneously |
83
- | **Flow engine** | Batch, conditional loops, and fan-out flows |
84
- | **Permission management** | Grant/revoke/reset app permissions (Android + iOS) |
85
- | **Store publishing** | Google Play, Huawei AppGallery, RuStore |
86
- | **Telemetry** | Per-tool call metrics via `system(action:'metrics')` |
87
- | **Doctor command** | `claude-in-mobile doctor` — checks all dependencies at once |
88
-
89
- ---
90
-
91
- ## Quality Engineering
92
-
93
- Advanced testing and monitoring built into Claude Mobile:
94
-
95
- | Feature | What it does | How to use |
96
- |---------|-------------|------------|
97
- | **Accessibility Auditing** | WCAG 2.2 checks: missing labels, touch targets < 48px, focus order, duplicates | `accessibility(action:'audit')` |
98
- | **Visual Regression** | Baseline screenshots + pixel-level diff detection | `visual(action:'baseline_save')`, `visual(action:'compare')` |
99
- | **Test Recorder** | Record taps/swipes/input, replay without code | `recorder(action:'start')`, `recorder(action:'play')` |
100
- | **Multi-Device Sync** | Barrier-based coordination for parallel testing | `sync(action:'create')`, `sync(action:'barrier')` |
101
- | **App Autopilot** | Autonomous BFS/DFS exploration with self-healing locators | `autopilot(action:'explore')` |
102
- | **Performance Monitor** | Real-time memory, CPU, FPS tracking with snapshots | `performance(action:'start')`, `performance(action:'snapshot')` |
103
-
104
- ---
105
-
106
- ## Installation
107
-
108
- ### Homebrew (macOS)
109
-
110
- ```bash
111
- brew tap AlexGladkov/claude-in-mobile https://github.com/AlexGladkov/claude-in-mobile
112
- brew install claude-in-mobile
113
15
  ```
114
-
115
- Verify setup:
116
-
117
- ```bash
118
- claude-in-mobile doctor
16
+ claude-in-mobile # slim base (no platforms)
17
+ @claude-in-mobile/plugin-android # Android (ADB)
18
+ @claude-in-mobile/plugin-ios # iOS (simctl + WebDriverAgent + go-ios)
19
+ @claude-in-mobile/plugin-web # Web (Chrome DevTools Protocol)
20
+ @claude-in-mobile/plugin-desktop # Desktop (Compose)
21
+ @claude-in-mobile/plugin-aurora # Aurora OS (audb)
22
+ @claude-in-mobile/plugin-all # meta: every platform at once
119
23
  ```
120
24
 
121
- ### One-liner (any client)
25
+ By default **no platforms are loaded** — you enable only what you need.
122
26
 
123
- Auto-detects installed clients via [add-mcp](https://github.com/neondatabase/add-mcp):
27
+ ## Install
124
28
 
125
- ```bash
126
- npx add-mcp claude-in-mobile -y
127
- ```
29
+ ```sh
30
+ # 1. base (slim) — pre-release, needs the `dev` tag
31
+ npm i -g claude-in-mobile@dev
128
32
 
129
- Target a specific client:
33
+ # 2. add the platform(s) you need
34
+ npm i -g @claude-in-mobile/plugin-ios@dev
35
+ claude-in-mobile install ios
130
36
 
131
- ```bash
132
- npx add-mcp claude-in-mobile -a claude-code -y
133
- npx add-mcp claude-in-mobile -a opencode -y
134
- npx add-mcp claude-in-mobile -a cursor -y
37
+ # …or everything at once
38
+ npm i -g @claude-in-mobile/plugin-all@dev
39
+ claude-in-mobile install all
135
40
  ```
136
41
 
137
- ### Claude Code
42
+ `install` records the enabled set in `~/.claude-in-mobile/config.json`; the
43
+ MCP server loads exactly those platforms on its next start. Override per-run
44
+ with `CLAUDE_IN_MOBILE_PLATFORMS=ios,web` (csv / `all` / `none`).
138
45
 
139
- ```bash
140
- # Project-local
141
- claude mcp add --transport stdio mobile -- npx claude-in-mobile@latest
46
+ ## CLI
142
47
 
143
- # Global (all projects)
144
- claude mcp add --scope user --transport stdio mobile -- npx claude-in-mobile@latest
48
+ ```sh
49
+ claude-in-mobile platforms # list enabled + available
50
+ claude-in-mobile install <p|all> # enable platform(s)
51
+ claude-in-mobile uninstall <p> # disable platform(s)
52
+ claude-in-mobile doctor [p...] # check external toolchains (adb/xcrun/…)
145
53
  ```
146
54
 
147
- #### Claude Code Plugin
55
+ A platform tool invoked without its plugin installed returns an actionable
56
+ "Platform '<p>' is not installed — run `claude-in-mobile install <p>`" error.
148
57
 
149
- ```bash
150
- claude plugin marketplace add AlexGladkov/claude-in-mobile
151
- claude plugin install claude-in-mobile@claude-in-mobile
152
- ```
58
+ ## External toolchains (per platform)
153
59
 
154
- ### OpenCode
60
+ | Platform | Needs |
61
+ |----------|-------|
62
+ | android | `adb` (Android platform-tools) |
63
+ | ios | Xcode CLT (`xcrun`); physical devices also need `go-ios` (`npm i -g go-ios`) |
64
+ | web | Chrome/Chromium (launched on demand) |
65
+ | desktop | JDK (desktop companion) |
66
+ | aurora | Aurora Flutter SDK (`audb`) |
155
67
 
156
- Two modes:
68
+ Run `claude-in-mobile doctor` to check them.
157
69
 
158
- **A) MCP server** (Node.js):
70
+ ## MCP client config
159
71
 
160
- ```bash
161
- opencode mcp add
162
- # Choose local MCP → npx -y claude-in-mobile
163
- ```
72
+ Point your MCP client at the base binary as usual — platforms are resolved
73
+ from your enabled set, not from the client config:
164
74
 
165
- Or in `opencode.json`:
166
-
167
- ```json
75
+ ```jsonc
168
76
  {
169
- "$schema": "https://opencode.ai/config.json",
170
- "mcp": {
171
- "mobile": {
172
- "type": "local",
173
- "command": ["npx", "-y", "claude-in-mobile"],
174
- "enabled": true
175
- }
77
+ "mcpServers": {
78
+ "mobile": { "command": "claude-in-mobile" }
176
79
  }
177
80
  }
178
81
  ```
179
82
 
180
- **B) Native CLI + Skill** (no Node.js needed):
181
-
182
- ```bash
183
- claude-in-mobile setup opencode # project-local
184
- claude-in-mobile setup opencode --global # user-wide
185
- ```
186
-
187
- ### Other Agents
188
-
189
- Native CLI skill works with any agent that supports Agent Skills:
190
-
191
- ```bash
192
- claude-in-mobile setup pi --global # Pi
193
- claude-in-mobile setup qwen --global # Qwen Code
194
- claude-in-mobile setup gemini --global # Gemini CLI
195
- claude-in-mobile setup codex --global # Codex
196
- claude-in-mobile setup cursor --global # Cursor
197
- ```
198
-
199
- Drop `--global` for project-local install. Restart the agent after setup.
200
-
201
- <details>
202
- <summary>MCP server config for Qwen / Gemini / Codex / Cursor</summary>
203
-
204
- **Qwen Code** — `.qwen/settings.json` or `~/.qwen/settings.json`:
205
-
206
- ```json
207
- { "mcpServers": { "mobile": { "command": "npx", "args": ["-y", "claude-in-mobile"] } } }
208
- ```
209
-
210
- **Gemini CLI** — `.gemini/settings.json` or `~/.gemini/settings.json`:
211
-
212
- ```json
213
- { "mcpServers": { "mobile": { "command": "npx", "args": ["-y", "claude-in-mobile"] } } }
214
- ```
215
-
216
- **Codex**:
217
-
218
- ```bash
219
- codex mcp add mobile -- npx -y claude-in-mobile
220
- ```
221
-
222
- **Cursor** — `.cursor/mcp.json`:
223
-
224
- ```json
225
- { "mcpServers": { "mobile": { "command": "npx", "args": ["-y", "claude-in-mobile"] } } }
226
- ```
227
-
228
- </details>
229
-
230
- ### From npm / source
231
-
232
- ```bash
233
- # npm (no install)
234
- npx claude-in-mobile
235
-
236
- # From source
237
- git clone https://github.com/AlexGladkov/claude-in-mobile.git
238
- cd claude-in-mobile
239
- npm install
240
- npm run build:all
241
- ```
242
-
243
- Using a local build with any MCP client:
244
-
245
- ```json
246
- { "mcpServers": { "mobile": { "command": "node", "args": ["/path/to/claude-in-mobile/dist/index.js"] } } }
247
- ```
248
-
249
- ### Windows
250
-
251
- ```bash
252
- claude mcp add --transport stdio mobile -- cmd /c npx claude-in-mobile@latest
253
- ```
254
-
255
- ---
256
-
257
- ## Platform Guides
258
-
259
- ### Android
260
-
261
- **Requirements:**
262
- - ADB installed (auto-discovered or set `ADB_PATH`)
263
- - USB debugging enabled on device, or running emulator
264
-
265
- **ADB discovery order:**
266
-
267
- | Priority | Location |
268
- |----------|----------|
269
- | 1 | `ADB_PATH` env var |
270
- | 2 | `$ANDROID_HOME/platform-tools/adb` |
271
- | 3 | `$ANDROID_SDK_ROOT/platform-tools/adb` |
272
- | 4 | OS default: `~/Library/Android/sdk` (macOS), `%LOCALAPPDATA%\Android\Sdk` (Windows), `~/Android/Sdk` (Linux) |
273
- | 5 | `adb` from `PATH` |
274
-
275
- If none found → `[ADB_NOT_INSTALLED]` error with probed paths.
276
-
277
- **Examples:**
278
-
279
- ```
280
- "Show connected devices"
281
- "Take a screenshot on Android"
282
- "Tap on Settings"
283
- "Swipe down to scroll"
284
- "Type 'hello' in the search field"
285
- "Press the back button"
286
- "Grant camera permission to com.example.app"
287
- "Launch com.example.app"
288
- ```
289
-
290
- **CLI:**
291
-
292
- ```bash
293
- claude-in-mobile screenshot android
294
- claude-in-mobile tap android 540 960
295
- claude-in-mobile input android "hello world"
296
- claude-in-mobile ui-dump android | grep "Login"
297
- ```
298
-
299
- #### Coordinate space (raw `x`/`y` in tap / swipe / long_press)
300
-
301
- When you call an input tool with raw `x`/`y` (or `x1`/`y1`/`x2`/`y2` for swipe), the values are interpreted in **the most recent screenshot's pixel space** and auto-scaled to device coordinates before dispatch. The scale comes from the last `screen_capture` call: e.g., capture at `preset='low'` (270×480) on a 1080×2400 device sets a 4× factor, so `tap(135, 240)` becomes `tap(540, 960)` on the device.
302
-
303
- This is convenient for the common flow `screen_capture → reason about pixel → tap`, but has two gotchas worth knowing:
304
-
305
- - **Coordinates from `ui_find` / `ui_tree` are device coordinates**, not screenshot coordinates. They come from `uiautomator` which always reports in device space. If the most recent screenshot was at a low preset, passing those device coords as raw `x`/`y` will over-scale them. Prefer `index`, `text`, or `resourceId` for ui-sourced taps to avoid the issue entirely.
306
- - **No screenshot taken yet?** Then there's no scale stored, and raw `x`/`y` are passed through 1:1 as device coords.
307
-
308
- The cleanest mental model: *raw coords match whatever pixel space you're looking at on screen* (your last screenshot). For everything else, use the resolver fields (`index`, `text`, `resourceId`, `label`).
309
-
310
- ---
311
-
312
- ### iOS
313
-
314
- **Requirements:**
315
- - macOS with Xcode
316
- - iOS Simulator (no physical device support yet)
317
- - WebDriverAgent for full UI inspection (optional but recommended)
318
-
319
- **WebDriverAgent setup:**
320
-
321
- ```bash
322
- # Automatic (via Appium)
323
- npm install -g appium
324
- appium driver install xcuitest
325
-
326
- # Or set custom path
327
- export WDA_PATH=/path/to/WebDriverAgent
328
- ```
329
-
330
- On first use, WDA is auto-built (~2 min one-time), launched on simulator, and connected on port 8100+.
331
-
332
- **What WDA enables:**
333
- - `ui(action:'tree')` — full accessibility tree
334
- - `ui(action:'find')` — element discovery by label/text
335
- - `input(action:'tap', label:'...')` — element-based tapping
336
- - Improved swipe and gesture simulation
337
-
338
- **Troubleshooting:**
339
-
340
- ```bash
341
- # Install Xcode CLI tools
342
- xcode-select --install
343
-
344
- # Accept license
345
- sudo xcodebuild -license accept
346
-
347
- # Check simulator is booted
348
- xcrun simctl list | grep Booted
349
-
350
- # Check port
351
- lsof -i :8100
352
- ```
353
-
354
- <details>
355
- <summary>Manual WDA test</summary>
356
-
357
- ```bash
358
- cd ~/.appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent
359
- xcodebuild test -project WebDriverAgent.xcodeproj \
360
- -scheme WebDriverAgentRunner \
361
- -destination 'platform=iOS Simulator,id=<DEVICE_UDID>'
362
- ```
363
-
364
- </details>
365
-
366
- **Examples:**
367
-
368
- ```
369
- "Take a screenshot on iOS"
370
- "Open Safari on iOS"
371
- "Tap on the Login button"
372
- "Type my email in the text field"
373
- "Swipe left on the card"
374
- "Reset all permissions for com.apple.Maps"
375
- ```
376
-
377
- ---
378
-
379
- ### Desktop
380
-
381
- **Requirements:**
382
- - macOS (Windows/Linux planned)
383
- - Accessibility permissions: System Settings → Privacy & Security → Accessibility
384
- - JDK 17+ (for building Desktop companion)
385
-
386
- **Supported apps:** Any macOS application — SwiftUI, AppKit, Electron, Compose Desktop.
387
-
388
- **Launch modes:**
389
-
390
- | Mode | Example |
391
- |------|---------|
392
- | By `bundleId` | `desktop(action:'launch', bundleId:'com.apple.Calculator')` |
393
- | By `.app` path | `desktop(action:'launch', appPath:'/Applications/Slack.app')` |
394
- | Attach by PID | `desktop(action:'launch', pid:12345)` |
395
-
396
- **Enable the module first:**
397
-
398
- ```
399
- "Enable desktop module"
400
- ```
401
-
402
- Or it auto-enables on first `desktop(...)` call.
403
-
404
- **Examples:**
405
-
406
- ```
407
- "Launch Calculator"
408
- "Take a screenshot of the desktop app"
409
- "Get window list"
410
- "Resize window to 1280x720"
411
- "Tap at 100, 200 on desktop"
412
- "Get clipboard content"
413
- "Get performance metrics"
414
- "Stop the desktop app"
415
- ```
416
-
417
- > Full API documentation: [docs/SPEC_DESKTOP.md](docs/SPEC_DESKTOP.md)
418
-
419
- ---
420
-
421
- ### Browser
422
-
423
- **Requirements:**
424
- - Chrome or Chromium installed (or set `CHROME_PATH`)
425
-
426
- Browser automation via Chrome DevTools Protocol (CDP). The `browser` module loads on demand.
427
-
428
- **Examples:**
429
-
430
- ```
431
- "Open https://example.com in the browser"
432
- "Click the Sign In button"
433
- "Fill the email field with test@example.com"
434
- "Take a browser screenshot"
435
- "Execute JS: document.title"
436
- "Wait for the loading spinner to disappear"
437
- ```
438
-
439
- **Available actions:**
440
-
441
- | Action | Description |
442
- |--------|-------------|
443
- | `open` | Open URL in new session |
444
- | `navigate` | Go to URL in existing session |
445
- | `click` | Click element by ref |
446
- | `fill` | Type into input field |
447
- | `fill_form` | Fill multiple fields at once |
448
- | `press_key` | Keyboard input |
449
- | `snapshot` | DOM snapshot with element refs |
450
- | `screenshot` | Visual screenshot |
451
- | `evaluate` | Run JavaScript |
452
- | `wait_for_selector` | Wait for element to appear |
453
- | `close` | Close session |
454
- | `list_sessions` | Show active sessions |
455
- | `clear_session` | Reset cookies/storage |
456
-
457
- ---
458
-
459
- ### Aurora OS
460
-
461
- **Requirements:**
462
- - `audb` CLI: `cargo install audb-client`
463
- - SSH-enabled Aurora OS device
464
- - Python on device for tap/swipe: `devel-su pkcon install python`
465
-
466
- **Examples:**
467
-
468
- ```
469
- "List Aurora devices"
470
- "Take a screenshot on Aurora"
471
- "Tap at 100, 200 on Aurora"
472
- "Launch ru.example.app on Aurora"
473
- "List installed apps on Aurora"
474
- "Get logs from Aurora device"
475
- "Push file.txt to /home/defaultuser/"
476
- ```
477
-
478
- ---
479
-
480
- ## Tools Reference
481
-
482
- v3.8.0 provides **8 core meta-tools** + **3 optional modules**. Each meta-tool uses an `action` parameter.
483
-
484
- ### Core Meta-Tools
485
-
486
- | Meta-Tool | Actions | Description |
487
- |-----------|---------|-------------|
488
- | `device` | `list`, `set`, `set_target`, `get_target`, `enable_module`, `disable_module`, `list_modules` | Device management, module control |
489
- | `input` | `tap`, `double_tap`, `long_press`, `swipe`, `text`, `key` | Touch and keyboard input |
490
- | `screen` | `capture`, `annotate` | Screenshots and visual annotation |
491
- | `ui` | `tree`, `find`, `find_tap`, `tap_text`, `analyze`, `wait`, `assert_visible`, `assert_gone` | UI hierarchy, element interaction |
492
- | `app` | `launch`, `stop`, `install`, `list` | App lifecycle |
493
- | `system` | `activity`, `shell`, `wait`, `open_url`, `logs`, `clear_logs`, `info`, `webview`, `clipboard_*`, `permission_*`, `file_*`, `metrics`, `reset_metrics` | System ops, clipboard, permissions, files, telemetry |
494
- | `flow_batch` | — | Execute multiple commands in one round-trip (max 50) |
495
- | `flow_run` | — | Multi-step automation with conditionals and loops (max 20 steps) |
496
-
497
- ### Optional Modules
498
-
499
- Load on demand via `device(action:'enable_module', module:'<name>')` or auto-enable on first call.
500
-
501
- | Module | Actions | Description |
502
- |--------|---------|-------------|
503
- | `browser` | `open`, `close`, `list_sessions`, `navigate`, `click`, `fill`, `fill_form`, `press_key`, `snapshot`, `screenshot`, `evaluate`, `wait_for_selector`, `clear_session` | Chrome/Chromium via CDP |
504
- | `desktop` | `launch`, `stop`, `windows`, `focus`, `resize`, `clipboard_get`, `clipboard_set`, `performance`, `monitors` | Any macOS app |
505
- | `store` | `upload`, `set_notes`, `submit`, `get_releases`, `discard`, `promote`, `halt_rollout`, `get_versions` | Google Play, Huawei AppGallery, RuStore |
506
-
507
- ### Flow Tools
508
-
509
- | Tool | Description |
510
- |------|-------------|
511
- | `flow_batch` | Sequential execution, one round-trip (max 50 commands) |
512
- | `flow_run` | Multi-step flows with `if_not_found`, `repeat`, `on_error` (max 20 steps) |
513
- | `flow_parallel` | Same action on multiple devices via `Promise.allSettled` (max 10) |
514
-
515
- ### Backward Compatibility
516
-
517
- All v3.0/v3.1 tool names work as aliases: `tap` → `input(action:'tap')`, `screenshot` → `screen(action:'capture')`, `launch_app` → `app(action:'launch')`, etc.
518
-
519
- ---
520
-
521
- ## Native CLI
522
-
523
- 2 MB Rust binary. No Node.js, no dependencies.
524
-
525
- ### Install
526
-
527
- ```bash
528
- brew tap AlexGladkov/claude-in-mobile
529
- brew install claude-in-mobile
530
- ```
531
-
532
- Or download from [Releases](https://github.com/AlexGladkov/claude-in-mobile/releases).
533
-
534
- ### Why use the CLI
535
-
536
- | | CLI | MCP Server |
537
- |---|---|---|
538
- | **Install** | `brew install` or copy binary | `npx` / npm |
539
- | **Dependencies** | None | Node.js |
540
- | **Startup** | ~5ms | ~500ms |
541
- | **Use from terminal** | Direct commands | Needs MCP client |
542
- | **CI/CD** | Exit codes, stdout/stderr | Not designed for CI |
543
- | **Token cost** | Skill loads on demand | Schema always present |
544
-
545
- ### Test script example
546
-
547
- ```bash
548
- #!/bin/bash
549
- claude-in-mobile launch android com.example.app
550
- claude-in-mobile wait 2000
551
- claude-in-mobile tap android 0 0 --text "Login"
552
- claude-in-mobile input android "test@example.com"
553
- claude-in-mobile screenshot android -o result.png
554
- claude-in-mobile ui-dump android | grep "Welcome" && echo "PASS" || echo "FAIL"
555
- ```
556
-
557
- ### Store management (CLI)
558
-
559
- ```bash
560
- claude-in-mobile store upload --package com.example.app --file app.aab
561
- claude-in-mobile huawei upload --package com.example.app --file app.aab
562
- claude-in-mobile rustore upload --package com.example.app --file app.apk
563
- ```
564
-
565
- ### Doctor
566
-
567
- Check all dependencies at once:
568
-
569
- ```bash
570
- claude-in-mobile doctor
571
- ```
572
-
573
- Checks: ADB, ANDROID_HOME, Xcode, simctl, Appium, WDA, JDK, audb-client, Chrome. Color-coded output with fix suggestions.
574
-
575
- ---
576
-
577
- ## Architecture
578
-
579
- ```
580
- ┌─────────────┐ ┌──────────────────┐ ┌─────────────────┐
581
- │ Claude Code │────▶│ │────▶│ Android (ADB) │
582
- ├─────────────┤ │ Claude Mobile │ ├─────────────────┤
583
- │ OpenCode │────▶│ MCP Server │────▶│ iOS (simctl+WDA)│
584
- ├─────────────┤ │ │ ├─────────────────┤
585
- │ Cursor │────▶│ 8 meta-tools │────▶│ Desktop (macOS) │
586
- ├─────────────┤ │ + 3 modules │ ├─────────────────┤
587
- │ Qwen/Gemini │────▶│ │────▶│ Aurora (audb) │
588
- ├─────────────┤ │ Auto-detects │ ├─────────────────┤
589
- │ Any MCP │────▶│ platform │────▶│ Browser (CDP) │
590
- └─────────────┘ └──────────────────┘ └─────────────────┘
591
- ```
592
-
593
- 1. Client sends commands via MCP protocol (8 meta-tools + 3 optional modules)
594
- 2. Server routes to platform adapter (ADB, simctl+WDA, Desktop, audb, CDP)
595
- 3. Commands execute on device/app/browser
596
- 4. Results (screenshots, UI trees, metrics) return to client
597
- 5. Modules auto-enable on first call — no manual setup needed
598
-
599
- ---
600
-
601
- ## License
83
+ ## Status / caveats (4.0.0-dev)
602
84
 
603
- MIT
85
+ - Experimental pre-release; API and packaging may change before 4.0.0 final.
86
+ - All five platforms are physically split into separate packages; the base
87
+ bundle contains none of them.
88
+ - `claude-in-mobile-lite` is temporarily disabled (being migrated to the
89
+ plugin model).
90
+ - Stable production: **3.x** (`npm i -g claude-in-mobile`).
@@ -1,4 +1,4 @@
1
- import type { UiElement } from "../adb/ui-parser.js";
1
+ import type { UiElement } from "../ui-tree/ui-parser.js";
2
2
  export type A11ySeverity = "critical" | "serious" | "moderate" | "minor";
3
3
  export type WcagLevel = "A" | "AA" | "AAA";
4
4
  export interface A11yIssue {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/a11y/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/a11y/types.ts"],"names":[],"mappings":"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"}