claude-in-mobile 3.13.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 (383) 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/plugins/repl/client.d.ts +15 -1
  38. package/dist/plugins/repl/client.d.ts.map +1 -1
  39. package/dist/plugins/repl/client.js +65 -8
  40. package/dist/plugins/repl/client.js.map +1 -1
  41. package/dist/plugins/repl/index.d.ts +2 -0
  42. package/dist/plugins/repl/index.d.ts.map +1 -1
  43. package/dist/plugins/repl/index.js +22 -3
  44. package/dist/plugins/repl/index.js.map +1 -1
  45. package/dist/plugins/repl/types.d.ts +6 -0
  46. package/dist/plugins/repl/types.d.ts.map +1 -1
  47. package/dist/runtime/bootstrap.d.ts +7 -0
  48. package/dist/runtime/bootstrap.d.ts.map +1 -1
  49. package/dist/runtime/bootstrap.js +87 -15
  50. package/dist/runtime/bootstrap.js.map +1 -1
  51. package/dist/runtime/cli.d.ts.map +1 -1
  52. package/dist/runtime/cli.js +14 -0
  53. package/dist/runtime/cli.js.map +1 -1
  54. package/dist/runtime/platform-cli.d.ts +24 -0
  55. package/dist/runtime/platform-cli.d.ts.map +1 -0
  56. package/dist/runtime/platform-cli.js +116 -0
  57. package/dist/runtime/platform-cli.js.map +1 -0
  58. package/dist/runtime/platform-config.d.ts +21 -0
  59. package/dist/runtime/platform-config.d.ts.map +1 -0
  60. package/dist/runtime/platform-config.js +71 -0
  61. package/dist/runtime/platform-config.js.map +1 -0
  62. package/dist/tools/browser-tools.js.map +1 -1
  63. package/dist/tools/clipboard-tools.js +1 -1
  64. package/dist/tools/clipboard-tools.js.map +1 -1
  65. package/dist/tools/context/hints.d.ts +1 -1
  66. package/dist/tools/context/hints.d.ts.map +1 -1
  67. package/dist/tools/context/hints.js +1 -1
  68. package/dist/tools/context/hints.js.map +1 -1
  69. package/dist/tools/context/ios-helpers.d.ts +1 -1
  70. package/dist/tools/context/ios-helpers.d.ts.map +1 -1
  71. package/dist/tools/context/shared-state-class.d.ts +1 -1
  72. package/dist/tools/context/shared-state-class.d.ts.map +1 -1
  73. package/dist/tools/context/shared-state.d.ts +1 -1
  74. package/dist/tools/context/shared-state.d.ts.map +1 -1
  75. package/dist/tools/context.d.ts +2 -1
  76. package/dist/tools/context.d.ts.map +1 -1
  77. package/dist/tools/context.js +17 -9
  78. package/dist/tools/context.js.map +1 -1
  79. package/dist/tools/desktop-tools.d.ts.map +1 -1
  80. package/dist/tools/desktop-tools.js.map +1 -1
  81. package/dist/tools/flow/common.js +1 -1
  82. package/dist/tools/flow/common.js.map +1 -1
  83. package/dist/tools/flow/run.js +1 -1
  84. package/dist/tools/flow/run.js.map +1 -1
  85. package/dist/tools/helpers/get-elements.d.ts +1 -1
  86. package/dist/tools/helpers/get-elements.d.ts.map +1 -1
  87. package/dist/tools/helpers/get-elements.js +1 -1
  88. package/dist/tools/helpers/get-elements.js.map +1 -1
  89. package/dist/tools/helpers/resolve-element.js +1 -1
  90. package/dist/tools/helpers/resolve-element.js.map +1 -1
  91. package/dist/tools/screenshot-tools.js +1 -1
  92. package/dist/tools/screenshot-tools.js.map +1 -1
  93. package/dist/tools/ui/analyze.js +1 -1
  94. package/dist/tools/ui/analyze.js.map +1 -1
  95. package/dist/tools/ui/assert.js +1 -1
  96. package/dist/tools/ui/assert.js.map +1 -1
  97. package/dist/tools/ui/find.js +1 -1
  98. package/dist/tools/ui/find.js.map +1 -1
  99. package/dist/tools/ui/tree.js +1 -1
  100. package/dist/tools/ui/tree.js.map +1 -1
  101. package/dist/tools/ui/wait.js +1 -1
  102. package/dist/tools/ui/wait.js.map +1 -1
  103. package/dist/ui-tree/ui-parser/diff-engine.d.ts.map +1 -0
  104. package/dist/ui-tree/ui-parser/diff-engine.js.map +1 -0
  105. package/dist/ui-tree/ui-parser/element-builder.d.ts.map +1 -0
  106. package/dist/ui-tree/ui-parser/element-builder.js.map +1 -0
  107. package/dist/ui-tree/ui-parser/element-finders.d.ts.map +1 -0
  108. package/dist/ui-tree/ui-parser/element-finders.js.map +1 -0
  109. package/dist/ui-tree/ui-parser/formatters/compact.d.ts.map +1 -0
  110. package/dist/ui-tree/ui-parser/formatters/compact.js.map +1 -0
  111. package/dist/ui-tree/ui-parser/formatters/full.d.ts.map +1 -0
  112. package/dist/ui-tree/ui-parser/formatters/full.js.map +1 -0
  113. package/dist/ui-tree/ui-parser/formatters/index.d.ts.map +1 -0
  114. package/dist/ui-tree/ui-parser/formatters/index.js.map +1 -0
  115. package/dist/ui-tree/ui-parser/formatters/semantic.d.ts.map +1 -0
  116. package/dist/ui-tree/ui-parser/formatters/semantic.js.map +1 -0
  117. package/dist/ui-tree/ui-parser/node-parser.d.ts.map +1 -0
  118. package/dist/ui-tree/ui-parser/node-parser.js.map +1 -0
  119. package/dist/ui-tree/ui-parser/screen-analyzer.d.ts.map +1 -0
  120. package/dist/ui-tree/ui-parser/screen-analyzer.js.map +1 -0
  121. package/dist/ui-tree/ui-parser/types.d.ts.map +1 -0
  122. package/dist/ui-tree/ui-parser/types.js.map +1 -0
  123. package/dist/ui-tree/ui-parser.d.ts.map +1 -0
  124. package/dist/ui-tree/ui-parser.js.map +1 -0
  125. package/dist/ui-tree/ui-scoring.d.ts.map +1 -0
  126. package/dist/ui-tree/ui-scoring.js.map +1 -0
  127. package/dist/ui-tree/ui-tree-cache.d.ts.map +1 -0
  128. package/dist/ui-tree/ui-tree-cache.js.map +1 -0
  129. package/dist/utils/image/annotate.d.ts +1 -1
  130. package/dist/utils/image/annotate.d.ts.map +1 -1
  131. package/package.json +11 -6
  132. package/dist/adapters/android-adapter.d.ts +0 -64
  133. package/dist/adapters/android-adapter.d.ts.map +0 -1
  134. package/dist/adapters/android-adapter.js +0 -164
  135. package/dist/adapters/android-adapter.js.map +0 -1
  136. package/dist/adapters/aurora-adapter.d.ts +0 -56
  137. package/dist/adapters/aurora-adapter.d.ts.map +0 -1
  138. package/dist/adapters/aurora-adapter.js +0 -118
  139. package/dist/adapters/aurora-adapter.js.map +0 -1
  140. package/dist/adapters/browser-adapter.d.ts +0 -51
  141. package/dist/adapters/browser-adapter.d.ts.map +0 -1
  142. package/dist/adapters/browser-adapter.js +0 -223
  143. package/dist/adapters/browser-adapter.js.map +0 -1
  144. package/dist/adapters/desktop-adapter.d.ts +0 -64
  145. package/dist/adapters/desktop-adapter.d.ts.map +0 -1
  146. package/dist/adapters/desktop-adapter.js +0 -202
  147. package/dist/adapters/desktop-adapter.js.map +0 -1
  148. package/dist/adapters/ios-adapter.d.ts +0 -60
  149. package/dist/adapters/ios-adapter.d.ts.map +0 -1
  150. package/dist/adapters/ios-adapter.js +0 -146
  151. package/dist/adapters/ios-adapter.js.map +0 -1
  152. package/dist/adb/client.d.ts +0 -238
  153. package/dist/adb/client.d.ts.map +0 -1
  154. package/dist/adb/client.js +0 -462
  155. package/dist/adb/client.js.map +0 -1
  156. package/dist/adb/exec.d.ts +0 -23
  157. package/dist/adb/exec.d.ts.map +0 -1
  158. package/dist/adb/exec.js +0 -98
  159. package/dist/adb/exec.js.map +0 -1
  160. package/dist/adb/index.d.ts +0 -5
  161. package/dist/adb/index.d.ts.map +0 -1
  162. package/dist/adb/index.js +0 -3
  163. package/dist/adb/index.js.map +0 -1
  164. package/dist/adb/keycodes.d.ts +0 -22
  165. package/dist/adb/keycodes.d.ts.map +0 -1
  166. package/dist/adb/keycodes.js +0 -69
  167. package/dist/adb/keycodes.js.map +0 -1
  168. package/dist/adb/logcat.d.ts +0 -23
  169. package/dist/adb/logcat.d.ts.map +0 -1
  170. package/dist/adb/logcat.js +0 -40
  171. package/dist/adb/logcat.js.map +0 -1
  172. package/dist/adb/parsers.d.ts +0 -60
  173. package/dist/adb/parsers.d.ts.map +0 -1
  174. package/dist/adb/parsers.js +0 -118
  175. package/dist/adb/parsers.js.map +0 -1
  176. package/dist/adb/resolver.d.ts +0 -24
  177. package/dist/adb/resolver.d.ts.map +0 -1
  178. package/dist/adb/resolver.js +0 -130
  179. package/dist/adb/resolver.js.map +0 -1
  180. package/dist/adb/text-escape.d.ts +0 -23
  181. package/dist/adb/text-escape.d.ts.map +0 -1
  182. package/dist/adb/text-escape.js +0 -41
  183. package/dist/adb/text-escape.js.map +0 -1
  184. package/dist/adb/ui-parser/diff-engine.d.ts.map +0 -1
  185. package/dist/adb/ui-parser/diff-engine.js.map +0 -1
  186. package/dist/adb/ui-parser/element-builder.d.ts.map +0 -1
  187. package/dist/adb/ui-parser/element-builder.js.map +0 -1
  188. package/dist/adb/ui-parser/element-finders.d.ts.map +0 -1
  189. package/dist/adb/ui-parser/element-finders.js.map +0 -1
  190. package/dist/adb/ui-parser/formatters/compact.d.ts.map +0 -1
  191. package/dist/adb/ui-parser/formatters/compact.js.map +0 -1
  192. package/dist/adb/ui-parser/formatters/full.d.ts.map +0 -1
  193. package/dist/adb/ui-parser/formatters/full.js.map +0 -1
  194. package/dist/adb/ui-parser/formatters/index.d.ts.map +0 -1
  195. package/dist/adb/ui-parser/formatters/index.js.map +0 -1
  196. package/dist/adb/ui-parser/formatters/semantic.d.ts.map +0 -1
  197. package/dist/adb/ui-parser/formatters/semantic.js.map +0 -1
  198. package/dist/adb/ui-parser/node-parser.d.ts.map +0 -1
  199. package/dist/adb/ui-parser/node-parser.js.map +0 -1
  200. package/dist/adb/ui-parser/screen-analyzer.d.ts.map +0 -1
  201. package/dist/adb/ui-parser/screen-analyzer.js.map +0 -1
  202. package/dist/adb/ui-parser/types.d.ts.map +0 -1
  203. package/dist/adb/ui-parser/types.js.map +0 -1
  204. package/dist/adb/ui-parser.d.ts.map +0 -1
  205. package/dist/adb/ui-parser.js.map +0 -1
  206. package/dist/adb/ui-scoring.d.ts.map +0 -1
  207. package/dist/adb/ui-scoring.js.map +0 -1
  208. package/dist/adb/ui-tree-cache.d.ts.map +0 -1
  209. package/dist/adb/ui-tree-cache.js.map +0 -1
  210. package/dist/adb/webview.d.ts +0 -59
  211. package/dist/adb/webview.d.ts.map +0 -1
  212. package/dist/adb/webview.js +0 -169
  213. package/dist/adb/webview.js.map +0 -1
  214. package/dist/aurora/client.d.ts +0 -180
  215. package/dist/aurora/client.d.ts.map +0 -1
  216. package/dist/aurora/client.js +0 -324
  217. package/dist/aurora/client.js.map +0 -1
  218. package/dist/aurora/index.d.ts +0 -2
  219. package/dist/aurora/index.d.ts.map +0 -1
  220. package/dist/aurora/index.js +0 -2
  221. package/dist/aurora/index.js.map +0 -1
  222. package/dist/browser/cdp-helpers.d.ts +0 -17
  223. package/dist/browser/cdp-helpers.d.ts.map +0 -1
  224. package/dist/browser/cdp-helpers.js +0 -79
  225. package/dist/browser/cdp-helpers.js.map +0 -1
  226. package/dist/browser/cdp-types.d.ts +0 -167
  227. package/dist/browser/cdp-types.d.ts.map +0 -1
  228. package/dist/browser/cdp-types.js +0 -9
  229. package/dist/browser/cdp-types.js.map +0 -1
  230. package/dist/browser/client.d.ts +0 -29
  231. package/dist/browser/client.d.ts.map +0 -1
  232. package/dist/browser/client.js +0 -391
  233. package/dist/browser/client.js.map +0 -1
  234. package/dist/browser/index.d.ts +0 -5
  235. package/dist/browser/index.d.ts.map +0 -1
  236. package/dist/browser/index.js +0 -4
  237. package/dist/browser/index.js.map +0 -1
  238. package/dist/browser/key-map.d.ts +0 -16
  239. package/dist/browser/key-map.d.ts.map +0 -1
  240. package/dist/browser/key-map.js +0 -35
  241. package/dist/browser/key-map.js.map +0 -1
  242. package/dist/browser/session-manager.d.ts +0 -21
  243. package/dist/browser/session-manager.d.ts.map +0 -1
  244. package/dist/browser/session-manager.js +0 -109
  245. package/dist/browser/session-manager.js.map +0 -1
  246. package/dist/browser/snapshot-builder.d.ts +0 -4
  247. package/dist/browser/snapshot-builder.d.ts.map +0 -1
  248. package/dist/browser/snapshot-builder.js +0 -76
  249. package/dist/browser/snapshot-builder.js.map +0 -1
  250. package/dist/browser/types.d.ts +0 -75
  251. package/dist/browser/types.d.ts.map +0 -1
  252. package/dist/browser/types.js +0 -11
  253. package/dist/browser/types.js.map +0 -1
  254. package/dist/desktop/client.d.ts +0 -196
  255. package/dist/desktop/client.d.ts.map +0 -1
  256. package/dist/desktop/client.js +0 -540
  257. package/dist/desktop/client.js.map +0 -1
  258. package/dist/desktop/gradle.d.ts +0 -45
  259. package/dist/desktop/gradle.d.ts.map +0 -1
  260. package/dist/desktop/gradle.js +0 -234
  261. package/dist/desktop/gradle.js.map +0 -1
  262. package/dist/desktop/index.d.ts +0 -7
  263. package/dist/desktop/index.d.ts.map +0 -1
  264. package/dist/desktop/index.js +0 -7
  265. package/dist/desktop/index.js.map +0 -1
  266. package/dist/desktop/launch-options.d.ts +0 -13
  267. package/dist/desktop/launch-options.d.ts.map +0 -1
  268. package/dist/desktop/launch-options.js +0 -54
  269. package/dist/desktop/launch-options.js.map +0 -1
  270. package/dist/desktop/launchers.d.ts +0 -52
  271. package/dist/desktop/launchers.d.ts.map +0 -1
  272. package/dist/desktop/launchers.js +0 -125
  273. package/dist/desktop/launchers.js.map +0 -1
  274. package/dist/desktop/log-ring.d.ts +0 -21
  275. package/dist/desktop/log-ring.d.ts.map +0 -1
  276. package/dist/desktop/log-ring.js +0 -45
  277. package/dist/desktop/log-ring.js.map +0 -1
  278. package/dist/desktop/permission-allowlist.d.ts +0 -47
  279. package/dist/desktop/permission-allowlist.d.ts.map +0 -1
  280. package/dist/desktop/permission-allowlist.js +0 -148
  281. package/dist/desktop/permission-allowlist.js.map +0 -1
  282. package/dist/desktop/types.d.ts +0 -177
  283. package/dist/desktop/types.d.ts.map +0 -1
  284. package/dist/desktop/types.js +0 -5
  285. package/dist/desktop/types.js.map +0 -1
  286. package/dist/ios/client.d.ts +0 -194
  287. package/dist/ios/client.d.ts.map +0 -1
  288. package/dist/ios/client.js +0 -457
  289. package/dist/ios/client.js.map +0 -1
  290. package/dist/ios/index.d.ts +0 -2
  291. package/dist/ios/index.d.ts.map +0 -1
  292. package/dist/ios/index.js +0 -2
  293. package/dist/ios/index.js.map +0 -1
  294. package/dist/ios/keymap.d.ts +0 -20
  295. package/dist/ios/keymap.d.ts.map +0 -1
  296. package/dist/ios/keymap.js +0 -33
  297. package/dist/ios/keymap.js.map +0 -1
  298. package/dist/ios/simctl-commands.d.ts +0 -35
  299. package/dist/ios/simctl-commands.d.ts.map +0 -1
  300. package/dist/ios/simctl-commands.js +0 -60
  301. package/dist/ios/simctl-commands.js.map +0 -1
  302. package/dist/ios/simctl-exec.d.ts +0 -19
  303. package/dist/ios/simctl-exec.d.ts.map +0 -1
  304. package/dist/ios/simctl-exec.js +0 -55
  305. package/dist/ios/simctl-exec.js.map +0 -1
  306. package/dist/ios/simctl-parsers.d.ts +0 -10
  307. package/dist/ios/simctl-parsers.d.ts.map +0 -1
  308. package/dist/ios/simctl-parsers.js +0 -29
  309. package/dist/ios/simctl-parsers.js.map +0 -1
  310. package/dist/ios/types.d.ts +0 -8
  311. package/dist/ios/types.d.ts.map +0 -1
  312. package/dist/ios/types.js +0 -2
  313. package/dist/ios/types.js.map +0 -1
  314. package/dist/ios/wda/index.d.ts +0 -4
  315. package/dist/ios/wda/index.d.ts.map +0 -1
  316. package/dist/ios/wda/index.js +0 -4
  317. package/dist/ios/wda/index.js.map +0 -1
  318. package/dist/ios/wda/wda-client.d.ts +0 -27
  319. package/dist/ios/wda/wda-client.d.ts.map +0 -1
  320. package/dist/ios/wda/wda-client.js +0 -237
  321. package/dist/ios/wda/wda-client.js.map +0 -1
  322. package/dist/ios/wda/wda-manager.d.ts +0 -18
  323. package/dist/ios/wda/wda-manager.d.ts.map +0 -1
  324. package/dist/ios/wda/wda-manager.js +0 -238
  325. package/dist/ios/wda/wda-manager.js.map +0 -1
  326. package/dist/ios/wda/wda-types.d.ts +0 -39
  327. package/dist/ios/wda/wda-types.d.ts.map +0 -1
  328. package/dist/ios/wda/wda-types.js +0 -2
  329. package/dist/ios/wda/wda-types.js.map +0 -1
  330. package/dist/ios/wda-errors.d.ts +0 -8
  331. package/dist/ios/wda-errors.d.ts.map +0 -1
  332. package/dist/ios/wda-errors.js +0 -13
  333. package/dist/ios/wda-errors.js.map +0 -1
  334. package/dist/ios/wda-payloads.d.ts +0 -32
  335. package/dist/ios/wda-payloads.d.ts.map +0 -1
  336. package/dist/ios/wda-payloads.js +0 -31
  337. package/dist/ios/wda-payloads.js.map +0 -1
  338. package/dist/plugins/android/index.d.ts +0 -23
  339. package/dist/plugins/android/index.d.ts.map +0 -1
  340. package/dist/plugins/android/index.js +0 -45
  341. package/dist/plugins/android/index.js.map +0 -1
  342. package/dist/plugins/aurora/index.d.ts +0 -17
  343. package/dist/plugins/aurora/index.d.ts.map +0 -1
  344. package/dist/plugins/aurora/index.js +0 -27
  345. package/dist/plugins/aurora/index.js.map +0 -1
  346. package/dist/plugins/desktop/index.d.ts +0 -18
  347. package/dist/plugins/desktop/index.d.ts.map +0 -1
  348. package/dist/plugins/desktop/index.js +0 -28
  349. package/dist/plugins/desktop/index.js.map +0 -1
  350. package/dist/plugins/ios/index.d.ts +0 -17
  351. package/dist/plugins/ios/index.d.ts.map +0 -1
  352. package/dist/plugins/ios/index.js +0 -36
  353. package/dist/plugins/ios/index.js.map +0 -1
  354. package/dist/plugins/web/index.d.ts +0 -17
  355. package/dist/plugins/web/index.d.ts.map +0 -1
  356. package/dist/plugins/web/index.js +0 -27
  357. package/dist/plugins/web/index.js.map +0 -1
  358. /package/dist/{adb → ui-tree}/ui-parser/diff-engine.d.ts +0 -0
  359. /package/dist/{adb → ui-tree}/ui-parser/diff-engine.js +0 -0
  360. /package/dist/{adb → ui-tree}/ui-parser/element-builder.d.ts +0 -0
  361. /package/dist/{adb → ui-tree}/ui-parser/element-builder.js +0 -0
  362. /package/dist/{adb → ui-tree}/ui-parser/element-finders.d.ts +0 -0
  363. /package/dist/{adb → ui-tree}/ui-parser/element-finders.js +0 -0
  364. /package/dist/{adb → ui-tree}/ui-parser/formatters/compact.d.ts +0 -0
  365. /package/dist/{adb → ui-tree}/ui-parser/formatters/compact.js +0 -0
  366. /package/dist/{adb → ui-tree}/ui-parser/formatters/full.d.ts +0 -0
  367. /package/dist/{adb → ui-tree}/ui-parser/formatters/full.js +0 -0
  368. /package/dist/{adb → ui-tree}/ui-parser/formatters/index.d.ts +0 -0
  369. /package/dist/{adb → ui-tree}/ui-parser/formatters/index.js +0 -0
  370. /package/dist/{adb → ui-tree}/ui-parser/formatters/semantic.d.ts +0 -0
  371. /package/dist/{adb → ui-tree}/ui-parser/formatters/semantic.js +0 -0
  372. /package/dist/{adb → ui-tree}/ui-parser/node-parser.d.ts +0 -0
  373. /package/dist/{adb → ui-tree}/ui-parser/node-parser.js +0 -0
  374. /package/dist/{adb → ui-tree}/ui-parser/screen-analyzer.d.ts +0 -0
  375. /package/dist/{adb → ui-tree}/ui-parser/screen-analyzer.js +0 -0
  376. /package/dist/{adb → ui-tree}/ui-parser/types.d.ts +0 -0
  377. /package/dist/{adb → ui-tree}/ui-parser/types.js +0 -0
  378. /package/dist/{adb → ui-tree}/ui-parser.d.ts +0 -0
  379. /package/dist/{adb → ui-tree}/ui-parser.js +0 -0
  380. /package/dist/{adb → ui-tree}/ui-scoring.d.ts +0 -0
  381. /package/dist/{adb → ui-tree}/ui-scoring.js +0 -0
  382. /package/dist/{adb → ui-tree}/ui-tree-cache.d.ts +0 -0
  383. /package/dist/{adb → ui-tree}/ui-tree-cache.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/adb/client.ts"],"names":[],"mappings":"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"}
@@ -1,462 +0,0 @@
1
- import { execFileSync } from "child_process";
2
- import { resolveAdbPath } from "./resolver.js";
3
- import { validatePackageName, validatePermission, validateDeviceId } from "../utils/sanitize.js";
4
- import { EXEC_TIMEOUT_MS, execAdb, execAdbAsync, execAdbRaw, execAdbRawAsync, } from "./exec.js";
5
- import { escapeAndroidInputText, splitArgs } from "./text-escape.js";
6
- import { UiTreeCache } from "./ui-tree-cache.js";
7
- import { ANDROID_KEYCODES, ANDROID_KEYCODES_FAST, resolveKeyCode } from "./keycodes.js";
8
- import { parseDevicesOutput, parseScreenSize, parseCurrentActivityFromActivities, parseCurrentFocusFromWindows, parseFocusFromDumpsysWindow, parseClipboardBroadcast, parseLaunchActivity, stripDumpPrefix, splitActionAndUiXml, } from "./parsers.js";
9
- import { buildLogcatArgs, filterLogsByPackage } from "./logcat.js";
10
- // Re-export helpers so existing imports of `src/adb/client.js` keep working.
11
- export { escapeAndroidInputText, splitArgs } from "./text-escape.js";
12
- export { UiTreeCache } from "./ui-tree-cache.js";
13
- export { ANDROID_KEYCODES, ANDROID_KEYCODES_FAST, resolveKeyCode } from "./keycodes.js";
14
- export { EXEC_TIMEOUT_MS, EXEC_RAW_TIMEOUT_MS, execAdb, execAdbAsync, execAdbRaw, execAdbRawAsync, } from "./exec.js";
15
- export class AdbClient {
16
- deviceId;
17
- // Turbo: UI tree TTL cache (active only when turbo=true is passed)
18
- uiTreeCache = new UiTreeCache(500);
19
- constructor(deviceId) {
20
- if (deviceId) {
21
- validateDeviceId(deviceId);
22
- }
23
- this.deviceId = deviceId;
24
- }
25
- get deviceFlag() {
26
- return this.deviceId ? `-s ${this.deviceId}` : "";
27
- }
28
- /**
29
- * SECURITY: All adb invocations route through this argv-form path (execFileSync — no /bin/sh -c).
30
- * Shell metacharacters in `args` are passed as literal argv slots, not parsed by the host shell.
31
- * This structurally prevents host-side OS Command Injection (CWE-78) — see issue #40.
32
- */
33
- execArgs(args, deviceIdOverride) {
34
- return execAdb(args, deviceIdOverride ?? this.deviceId);
35
- }
36
- execArgsRaw(args, deviceIdOverride) {
37
- return execAdbRaw(args, deviceIdOverride ?? this.deviceId);
38
- }
39
- async execArgsAsync(args, deviceIdOverride) {
40
- return execAdbAsync(args, deviceIdOverride ?? this.deviceId);
41
- }
42
- /**
43
- * Execute ADB command and return stdout as string.
44
- * SECURITY: Command is whitespace-split into argv tokens — shell metachars in the input
45
- * are NOT interpreted (no /bin/sh -c). For commands needing spaces inside an argument
46
- * (e.g. text input with spaces), use the new argv-form via internal helpers.
47
- */
48
- exec(command, deviceIdOverride) {
49
- return this.execArgs(splitArgs(command), deviceIdOverride);
50
- }
51
- /**
52
- * Execute ADB command and return raw bytes (for screenshots)
53
- */
54
- execRaw(command, deviceIdOverride) {
55
- return this.execArgsRaw(splitArgs(command), deviceIdOverride);
56
- }
57
- /**
58
- * Execute ADB command async (non-blocking)
59
- */
60
- async execAsync(command, deviceIdOverride) {
61
- return this.execArgsAsync(splitArgs(command), deviceIdOverride);
62
- }
63
- /**
64
- * Execute ADB command async and return raw bytes (for screenshots)
65
- */
66
- async execRawAsync(command, deviceIdOverride) {
67
- return execAdbRawAsync(splitArgs(command), deviceIdOverride ?? this.deviceId);
68
- }
69
- /**
70
- * Get list of connected devices
71
- */
72
- getDevices() {
73
- const adbBin = resolveAdbPath();
74
- const output = execFileSync(adbBin, ["devices", "-l"], { encoding: "utf-8", timeout: EXEC_TIMEOUT_MS });
75
- return parseDevicesOutput(output);
76
- }
77
- /**
78
- * Set active device
79
- */
80
- setDevice(deviceId) {
81
- validateDeviceId(deviceId);
82
- this.deviceId = deviceId;
83
- }
84
- /**
85
- * Get currently configured device ID
86
- */
87
- getDeviceId() {
88
- return this.deviceId;
89
- }
90
- /**
91
- * Take screenshot and return raw PNG buffer
92
- */
93
- screenshotRaw() {
94
- return this.execRaw("exec-out screencap -p");
95
- }
96
- /**
97
- * Take screenshot async (non-blocking)
98
- */
99
- async screenshotRawAsync() {
100
- return this.execRawAsync("exec-out screencap -p");
101
- }
102
- /**
103
- * Take screenshot and return as base64 PNG (legacy)
104
- */
105
- screenshot() {
106
- return this.screenshotRaw().toString("base64");
107
- }
108
- /**
109
- * Tap at coordinates
110
- */
111
- tap(x, y) {
112
- this.exec(`shell input tap ${x} ${y}`);
113
- }
114
- /**
115
- * Double tap at coordinates.
116
- * Device-side composition via single sh -c argv slot — host shell never parses the metachars.
117
- * Inputs are validated numerics; user-controlled strings never reach this code path.
118
- */
119
- doubleTap(x, y, intervalMs = 100) {
120
- const xi = Math.trunc(x);
121
- const yi = Math.trunc(y);
122
- const seconds = (Math.max(0, intervalMs) / 1000).toFixed(2);
123
- const deviceCmd = `input tap ${xi} ${yi} && sleep ${seconds} && input tap ${xi} ${yi}`;
124
- this.execArgs(["shell", "sh", "-c", deviceCmd]);
125
- }
126
- /**
127
- * Select all text in focused input
128
- */
129
- selectAll() {
130
- this.exec("shell input keyevent 256"); // MOVE_HOME
131
- this.exec("shell input keyevent 268"); // SHIFT+MOVE_END
132
- }
133
- /**
134
- * Copy to clipboard
135
- */
136
- copyToClipboard() {
137
- this.exec("shell input keyevent 278"); // KEYCODE_COPY
138
- }
139
- /**
140
- * Paste from clipboard
141
- */
142
- pasteFromClipboard() {
143
- this.exec("shell input keyevent 279"); // KEYCODE_PASTE
144
- }
145
- /**
146
- * Get clipboard text
147
- */
148
- getClipboardText() {
149
- try {
150
- return this.exec("shell cmd clipboard get-primary-clip");
151
- }
152
- catch {
153
- try {
154
- const result = this.exec("shell am broadcast -a clipper.get");
155
- return parseClipboardBroadcast(result) ?? "(clipboard not available)";
156
- }
157
- catch {
158
- return "(clipboard access not available — requires API 29+ or clipper app)";
159
- }
160
- }
161
- }
162
- /**
163
- * Long press at coordinates
164
- */
165
- longPress(x, y, durationMs = 1000) {
166
- this.exec(`shell input swipe ${x} ${y} ${x} ${y} ${durationMs}`);
167
- }
168
- /**
169
- * Swipe gesture
170
- */
171
- swipe(x1, y1, x2, y2, durationMs = 300) {
172
- this.exec(`shell input swipe ${x1} ${y1} ${x2} ${y2} ${durationMs}`);
173
- }
174
- /**
175
- * Swipe in direction (uses screen center)
176
- */
177
- swipeDirection(direction, distance = 800) {
178
- // Get screen size
179
- const { width, height } = parseScreenSize(this.exec("shell wm size"));
180
- const centerX = Math.floor(width / 2);
181
- const centerY = Math.floor(height / 2);
182
- const coords = {
183
- up: [centerX, centerY + distance / 2, centerX, centerY - distance / 2],
184
- down: [centerX, centerY - distance / 2, centerX, centerY + distance / 2],
185
- left: [centerX + distance / 2, centerY, centerX - distance / 2, centerY],
186
- right: [centerX - distance / 2, centerY, centerX + distance / 2, centerY],
187
- };
188
- const [x1, y1, x2, y2] = coords[direction];
189
- this.swipe(x1, y1, x2, y2);
190
- }
191
- /**
192
- * Input text.
193
- * The full `shell input text "<escaped>"` string passes as a SINGLE argv slot to adb,
194
- * so the host shell never parses it (host-side CWE-78 closed). adb ships the string
195
- * verbatim to the device shell, which parses the double-quoted form safely thanks to
196
- * the per-character escape below.
197
- */
198
- inputText(text) {
199
- const escaped = escapeAndroidInputText(text);
200
- this.execArgs(["shell", `input text "${escaped}"`]);
201
- }
202
- /**
203
- * Press key by name or keycode
204
- */
205
- pressKey(key) {
206
- const keyCode = resolveKeyCode(key, ANDROID_KEYCODES);
207
- this.exec(`shell input keyevent ${keyCode}`);
208
- }
209
- /**
210
- * Invalidate the turbo UI tree cache.
211
- * Call after actions that mutate the screen (tap, swipe, input, etc.)
212
- * so the next getUiHierarchy call fetches fresh data.
213
- */
214
- invalidateUiTreeCache() {
215
- this.uiTreeCache.invalidate();
216
- }
217
- /**
218
- * Get UI hierarchy XML (sync — blocks event loop)
219
- */
220
- getUiHierarchy(turbo) {
221
- if (turbo) {
222
- const cached = this.uiTreeCache.get();
223
- if (cached !== null)
224
- return cached;
225
- }
226
- let xml;
227
- if (turbo) {
228
- // Single ADB call: pipe XML directly to stdout
229
- xml = stripDumpPrefix(this.exec("exec-out uiautomator dump /dev/tty"));
230
- }
231
- else {
232
- this.exec("shell uiautomator dump /sdcard/ui.xml");
233
- xml = this.exec("shell cat /sdcard/ui.xml");
234
- }
235
- this.uiTreeCache.set(xml);
236
- return xml;
237
- }
238
- /**
239
- * Get UI hierarchy XML async (non-blocking)
240
- */
241
- async getUiHierarchyAsync(turbo) {
242
- if (turbo) {
243
- const cached = this.uiTreeCache.get();
244
- if (cached !== null)
245
- return cached;
246
- }
247
- let xml;
248
- if (turbo) {
249
- // Single ADB call: pipe XML directly to stdout
250
- xml = stripDumpPrefix(await this.execAsync("exec-out uiautomator dump /dev/tty"));
251
- }
252
- else {
253
- await this.execAsync("shell uiautomator dump /sdcard/ui.xml");
254
- xml = await this.execAsync("shell cat /sdcard/ui.xml");
255
- }
256
- this.uiTreeCache.set(xml);
257
- return xml;
258
- }
259
- /**
260
- * Execute an action + uiautomator dump in a single adb shell invocation (turbo only).
261
- * Reduces two process spawns to one, saving ~150-300ms per step.
262
- * Returns { actionOutput: string; uiXml: string }.
263
- *
264
- * SECURITY: Device-side composition via single sh -c argv slot — host shell never parses
265
- * the metachars. `actionCommand` originates from internal turbo helpers (tap/swipe/press),
266
- * which validate numeric inputs; user-controlled strings do not reach this path.
267
- */
268
- async execWithUiDump(actionCommand, deviceIdOverride) {
269
- const combined = `${actionCommand} && uiautomator dump /dev/tty`;
270
- const raw = await this.execArgsAsync(["shell", "sh", "-c", combined], deviceIdOverride);
271
- return splitActionAndUiXml(raw);
272
- }
273
- /**
274
- * Tap at coordinates (async, non-blocking — for turbo mode).
275
- */
276
- async tapAsync(x, y, deviceIdOverride) {
277
- await this.execAsync(`shell input tap ${x} ${y}`, deviceIdOverride);
278
- }
279
- /**
280
- * Swipe gesture (async, non-blocking — for turbo mode).
281
- */
282
- async swipeAsync(x1, y1, x2, y2, durationMs = 300, deviceIdOverride) {
283
- await this.execAsync(`shell input swipe ${x1} ${y1} ${x2} ${y2} ${durationMs}`, deviceIdOverride);
284
- }
285
- /**
286
- * Press key (async, non-blocking — for turbo mode).
287
- */
288
- async pressKeyAsync(key, deviceIdOverride) {
289
- const keyCode = resolveKeyCode(key, ANDROID_KEYCODES_FAST);
290
- await this.execAsync(`shell input keyevent ${keyCode}`, deviceIdOverride);
291
- }
292
- /**
293
- * Input text (async, non-blocking — for turbo mode).
294
- */
295
- async inputTextAsync(text, deviceIdOverride) {
296
- const escaped = escapeAndroidInputText(text);
297
- await this.execArgsAsync(["shell", `input text "${escaped}"`], deviceIdOverride);
298
- }
299
- /**
300
- * Launch app by package name
301
- */
302
- launchApp(packageName) {
303
- validatePackageName(packageName);
304
- // Try to get launch activity
305
- try {
306
- const output = this.exec(`shell cmd package resolve-activity --brief ${packageName}`);
307
- const activity = parseLaunchActivity(output);
308
- if (activity) {
309
- this.exec(`shell am start -n ${activity}`);
310
- return `Launched ${activity}`;
311
- }
312
- }
313
- catch {
314
- // Fallback: use monkey to launch
315
- }
316
- this.exec(`shell monkey -p ${packageName} -c android.intent.category.LAUNCHER 1`);
317
- return `Launched ${packageName}`;
318
- }
319
- /**
320
- * Stop app
321
- */
322
- stopApp(packageName) {
323
- validatePackageName(packageName);
324
- this.exec(`shell am force-stop ${packageName}`);
325
- }
326
- /**
327
- * Clear app data
328
- */
329
- clearAppData(packageName) {
330
- validatePackageName(packageName);
331
- this.exec(`shell pm clear ${packageName}`);
332
- }
333
- /**
334
- * Grant runtime permission to app
335
- */
336
- grantPermission(packageName, permission) {
337
- validatePackageName(packageName);
338
- validatePermission(permission);
339
- this.exec(`shell pm grant ${packageName} ${permission}`);
340
- }
341
- /**
342
- * Revoke runtime permission from app
343
- */
344
- revokePermission(packageName, permission) {
345
- validatePackageName(packageName);
346
- validatePermission(permission);
347
- this.exec(`shell pm revoke ${packageName} ${permission}`);
348
- }
349
- /**
350
- * Reset all permissions for app (clears app data)
351
- */
352
- resetPermissions(packageName) {
353
- validatePackageName(packageName);
354
- this.exec(`shell pm reset-permissions ${packageName}`);
355
- }
356
- /**
357
- * Install APK
358
- */
359
- installApk(apkPath) {
360
- return this.execArgs(["install", "-r", apkPath]);
361
- }
362
- /**
363
- * Uninstall app
364
- */
365
- uninstallApp(packageName) {
366
- validatePackageName(packageName);
367
- return this.exec(`uninstall ${packageName}`);
368
- }
369
- /**
370
- * Get current activity
371
- */
372
- getCurrentActivity() {
373
- try {
374
- const output = this.exec("shell dumpsys activity activities");
375
- const resumed = parseCurrentActivityFromActivities(output);
376
- if (resumed)
377
- return resumed;
378
- // Fallback: try getting current focus from window manager
379
- const wmOutput = this.exec("shell dumpsys window windows");
380
- const focused = parseCurrentFocusFromWindows(wmOutput);
381
- if (focused)
382
- return focused;
383
- return "unknown";
384
- }
385
- catch {
386
- // Try alternative method — Node-side filter replaces device-side `| grep`.
387
- try {
388
- const output = this.execArgs(["shell", "dumpsys", "window"]);
389
- return parseFocusFromDumpsysWindow(output) ?? "unknown";
390
- }
391
- catch {
392
- return "unknown (could not determine)";
393
- }
394
- }
395
- }
396
- /**
397
- * Get screen size
398
- */
399
- getScreenSize() {
400
- return parseScreenSize(this.exec("shell wm size"));
401
- }
402
- /**
403
- * Wait for device
404
- */
405
- waitForDevice() {
406
- this.exec("wait-for-device");
407
- }
408
- /**
409
- * Execute shell command
410
- */
411
- shell(command) {
412
- return this.exec(`shell ${command}`);
413
- }
414
- /**
415
- * Get device logs (logcat)
416
- * @param options - filter options
417
- */
418
- getLogs(options = {}) {
419
- const args = buildLogcatArgs(options);
420
- const output = this.execArgs(args);
421
- return options.package ? filterLogsByPackage(output, options.package) : output;
422
- }
423
- /**
424
- * Clear logcat buffer
425
- */
426
- clearLogs() {
427
- this.exec("logcat -c");
428
- }
429
- /**
430
- * Get network stats (first 100 lines).
431
- * Node-side filter replaces device-side `| head -100` so we can use argv-form (no shell pipe).
432
- */
433
- getNetworkStats() {
434
- const output = this.execArgs(["shell", "dumpsys", "netstats"]);
435
- return output.split("\n").slice(0, 100).join("\n");
436
- }
437
- /**
438
- * Get battery info
439
- */
440
- getBatteryInfo() {
441
- return this.exec("shell dumpsys battery");
442
- }
443
- /**
444
- * Get memory info
445
- */
446
- getMemoryInfo(packageName) {
447
- if (packageName) {
448
- validatePackageName(packageName);
449
- return this.execArgs(["shell", "dumpsys", "meminfo", packageName]);
450
- }
451
- const output = this.execArgs(["shell", "cat", "/proc/meminfo"]);
452
- return output.split("\n").slice(0, 20).join("\n");
453
- }
454
- /**
455
- * Get CPU info (first 20 lines).
456
- */
457
- getCpuInfo() {
458
- const output = this.execArgs(["shell", "top", "-n", "1"]);
459
- return output.split("\n").slice(0, 20).join("\n");
460
- }
461
- }
462
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/adb/client.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- /**
2
- * Low-level adb invocation helpers.
3
- *
4
- * All public surfaces here go through execFile / execFileSync — never `/bin/sh -c`.
5
- * Shell metacharacters in `args` are passed as literal argv slots, not parsed by
6
- * the host shell. This structurally prevents host-side OS Command Injection
7
- * (CWE-78) — see issue #40.
8
- */
9
- /** Default timeout for text adb commands (`shell ...`, `devices`, etc.). */
10
- export declare const EXEC_TIMEOUT_MS = 15000;
11
- /** Extended timeout for raw byte adb commands (screenshots, file pulls). */
12
- export declare const EXEC_RAW_TIMEOUT_MS = 30000;
13
- /** Build the `-s <id>` argv slice for an optional device override. */
14
- export declare function deviceArgs(deviceId: string | undefined): string[];
15
- /** Synchronous text invocation: returns trimmed stdout. */
16
- export declare function execAdb(args: string[], deviceId: string | undefined): string;
17
- /** Synchronous raw-bytes invocation (e.g. PNG screenshot). */
18
- export declare function execAdbRaw(args: string[], deviceId: string | undefined): Buffer;
19
- /** Asynchronous text invocation. */
20
- export declare function execAdbAsync(args: string[], deviceId: string | undefined): Promise<string>;
21
- /** Asynchronous raw-bytes invocation. */
22
- export declare function execAdbRawAsync(args: string[], deviceId: string | undefined): Promise<Buffer>;
23
- //# sourceMappingURL=exec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/adb/exec.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,4EAA4E;AAC5E,eAAO,MAAM,eAAe,QAAS,CAAC;AAEtC,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAK1C,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAEjE;AAED,2DAA2D;AAC3D,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAY5E;AAED,8DAA8D;AAC9D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAW/E;AAED,oCAAoC;AACpC,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAahG;AAED,yCAAyC;AACzC,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAanG"}
package/dist/adb/exec.js DELETED
@@ -1,98 +0,0 @@
1
- /**
2
- * Low-level adb invocation helpers.
3
- *
4
- * All public surfaces here go through execFile / execFileSync — never `/bin/sh -c`.
5
- * Shell metacharacters in `args` are passed as literal argv slots, not parsed by
6
- * the host shell. This structurally prevents host-side OS Command Injection
7
- * (CWE-78) — see issue #40.
8
- */
9
- import { execFile, execFileSync } from "child_process";
10
- import { promisify } from "util";
11
- import { classifyAdbError } from "../errors.js";
12
- import { resolveAdbPath } from "./resolver.js";
13
- const execFileAsync = promisify(execFile);
14
- /** Default timeout for text adb commands (`shell ...`, `devices`, etc.). */
15
- export const EXEC_TIMEOUT_MS = 15_000;
16
- /** Extended timeout for raw byte adb commands (screenshots, file pulls). */
17
- export const EXEC_RAW_TIMEOUT_MS = 30_000;
18
- /** Cap stdout buffers at 50 MiB — sufficient for a 4K PNG screenshot. */
19
- const MAX_BUFFER = 50 * 1024 * 1024;
20
- /** Build the `-s <id>` argv slice for an optional device override. */
21
- export function deviceArgs(deviceId) {
22
- return deviceId ? ["-s", deviceId] : [];
23
- }
24
- /** Synchronous text invocation: returns trimmed stdout. */
25
- export function execAdb(args, deviceId) {
26
- const adbBin = resolveAdbPath();
27
- const fullArgs = [...deviceArgs(deviceId), ...args];
28
- try {
29
- return execFileSync(adbBin, fullArgs, {
30
- encoding: "utf-8",
31
- timeout: EXEC_TIMEOUT_MS,
32
- maxBuffer: MAX_BUFFER,
33
- }).trim();
34
- }
35
- catch (error) {
36
- throw translateExecError(error, fullArgs, EXEC_TIMEOUT_MS);
37
- }
38
- }
39
- /** Synchronous raw-bytes invocation (e.g. PNG screenshot). */
40
- export function execAdbRaw(args, deviceId) {
41
- const adbBin = resolveAdbPath();
42
- const fullArgs = [...deviceArgs(deviceId), ...args];
43
- try {
44
- return execFileSync(adbBin, fullArgs, {
45
- timeout: EXEC_RAW_TIMEOUT_MS,
46
- maxBuffer: MAX_BUFFER,
47
- });
48
- }
49
- catch (error) {
50
- throw translateExecError(error, fullArgs, EXEC_RAW_TIMEOUT_MS);
51
- }
52
- }
53
- /** Asynchronous text invocation. */
54
- export async function execAdbAsync(args, deviceId) {
55
- const adbBin = resolveAdbPath();
56
- const fullArgs = [...deviceArgs(deviceId), ...args];
57
- try {
58
- const { stdout } = await execFileAsync(adbBin, fullArgs, {
59
- timeout: EXEC_TIMEOUT_MS,
60
- maxBuffer: MAX_BUFFER,
61
- encoding: "utf-8",
62
- });
63
- return stdout.trim();
64
- }
65
- catch (error) {
66
- throw translateExecError(error, fullArgs, EXEC_TIMEOUT_MS);
67
- }
68
- }
69
- /** Asynchronous raw-bytes invocation. */
70
- export async function execAdbRawAsync(args, deviceId) {
71
- const adbBin = resolveAdbPath();
72
- const fullArgs = [...deviceArgs(deviceId), ...args];
73
- try {
74
- const { stdout } = await execFileAsync(adbBin, fullArgs, {
75
- timeout: EXEC_RAW_TIMEOUT_MS,
76
- maxBuffer: MAX_BUFFER,
77
- encoding: "buffer",
78
- });
79
- return stdout;
80
- }
81
- catch (error) {
82
- throw translateExecError(error, fullArgs, EXEC_RAW_TIMEOUT_MS);
83
- }
84
- }
85
- /**
86
- * Convert a child_process error into a typed MobileError (via classifyAdbError) or
87
- * a clear timeout message. The display string mirrors what a developer would type
88
- * at a terminal: `adb -s <id> <args>`.
89
- */
90
- function translateExecError(error, fullArgs, timeoutMs) {
91
- const e = error;
92
- const display = `adb ${fullArgs.join(" ")}`;
93
- if (e.killed === true || e.signal === "SIGTERM") {
94
- return new Error(`ADB command timed out after ${timeoutMs}ms: ${display}. Device may be disconnected or screen locked.`);
95
- }
96
- return classifyAdbError(e.stderr?.toString() ?? e.message ?? String(error), display);
97
- }
98
- //# sourceMappingURL=exec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/adb/exec.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export { AdbClient } from "./client.js";
2
- export type { Device } from "./client.js";
3
- export { parseUiHierarchy, findByText, findByResourceId, findByClassName, findClickable, findElements, formatElement, formatUiTree, } from "./ui-parser.js";
4
- export type { Bounds, UiElement } from "./ui-parser.js";
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/adb/index.js DELETED
@@ -1,3 +0,0 @@
1
- export { AdbClient } from "./client.js";
2
- export { parseUiHierarchy, findByText, findByResourceId, findByClassName, findClickable, findElements, formatElement, formatUiTree, } from "./ui-parser.js";
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,GACb,MAAM,gBAAgB,CAAC"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Android KeyEvent constants used by AdbClient.pressKey / pressKeyAsync.
3
- *
4
- * Values mirror `android.view.KeyEvent.KEYCODE_*` and are the integers consumed
5
- * by `adb shell input keyevent <code>`. Two maps are kept on purpose:
6
- *
7
- * - `ANDROID_KEYCODES` — the full set used by the sync pressKey path.
8
- * - `ANDROID_KEYCODES_FAST` — a smaller hot-path subset used by the async
9
- * "turbo" pressKey to avoid building the larger map on every call.
10
- *
11
- * `resolveKeyCode` accepts a symbolic name (case-insensitive) or a raw numeric
12
- * string, validating both into a finite integer.
13
- */
14
- export declare const ANDROID_KEYCODES: Record<string, number>;
15
- export declare const ANDROID_KEYCODES_FAST: Record<string, number>;
16
- /**
17
- * Translate a symbolic key name or numeric string into the corresponding
18
- * Android keyevent integer. Throws if `key` is neither a known name nor a
19
- * parsable integer.
20
- */
21
- export declare function resolveKeyCode(key: string, table?: Record<string, number>): number;
22
- //# sourceMappingURL=keycodes.d.ts.map