claude-in-mobile 3.11.5 → 3.13.0

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 (749) hide show
  1. package/dist/adapters/platform-adapter.d.ts +8 -0
  2. package/dist/adapters/platform-adapter.d.ts.map +1 -1
  3. package/dist/adapters/platform-adapter.js +29 -0
  4. package/dist/adapters/platform-adapter.js.map +1 -1
  5. package/dist/adb/client.d.ts +7 -16
  6. package/dist/adb/client.d.ts.map +1 -1
  7. package/dist/adb/client.js +50 -274
  8. package/dist/adb/client.js.map +1 -1
  9. package/dist/adb/commands.d.ts +35 -0
  10. package/dist/adb/commands.d.ts.map +1 -0
  11. package/dist/adb/commands.js +35 -0
  12. package/dist/adb/commands.js.map +1 -0
  13. package/dist/adb/exec.d.ts +23 -0
  14. package/dist/adb/exec.d.ts.map +1 -0
  15. package/dist/adb/exec.js +98 -0
  16. package/dist/adb/exec.js.map +1 -0
  17. package/dist/adb/keycodes.d.ts +22 -0
  18. package/dist/adb/keycodes.d.ts.map +1 -0
  19. package/dist/adb/keycodes.js +69 -0
  20. package/dist/adb/keycodes.js.map +1 -0
  21. package/dist/adb/logcat.d.ts +23 -0
  22. package/dist/adb/logcat.d.ts.map +1 -0
  23. package/dist/adb/logcat.js +40 -0
  24. package/dist/adb/logcat.js.map +1 -0
  25. package/dist/adb/parsers.d.ts +60 -0
  26. package/dist/adb/parsers.d.ts.map +1 -0
  27. package/dist/adb/parsers.js +118 -0
  28. package/dist/adb/parsers.js.map +1 -0
  29. package/dist/adb/text-escape.d.ts +23 -0
  30. package/dist/adb/text-escape.d.ts.map +1 -0
  31. package/dist/adb/text-escape.js +41 -0
  32. package/dist/adb/text-escape.js.map +1 -0
  33. package/dist/adb/ui-parser/diff-engine.d.ts +12 -0
  34. package/dist/adb/ui-parser/diff-engine.d.ts.map +1 -0
  35. package/dist/adb/ui-parser/diff-engine.js +71 -0
  36. package/dist/adb/ui-parser/diff-engine.js.map +1 -0
  37. package/dist/adb/ui-parser/element-builder.d.ts +12 -0
  38. package/dist/adb/ui-parser/element-builder.d.ts.map +1 -0
  39. package/dist/adb/ui-parser/element-builder.js +12 -0
  40. package/dist/adb/ui-parser/element-builder.js.map +1 -0
  41. package/dist/adb/ui-parser/element-finders.d.ts +51 -0
  42. package/dist/adb/ui-parser/element-finders.d.ts.map +1 -0
  43. package/dist/adb/ui-parser/element-finders.js +132 -0
  44. package/dist/adb/ui-parser/element-finders.js.map +1 -0
  45. package/dist/adb/ui-parser/formatters/compact.d.ts +7 -0
  46. package/dist/adb/ui-parser/formatters/compact.d.ts.map +1 -0
  47. package/dist/adb/ui-parser/formatters/compact.js +43 -0
  48. package/dist/adb/ui-parser/formatters/compact.js.map +1 -0
  49. package/dist/adb/ui-parser/formatters/full.d.ts +18 -0
  50. package/dist/adb/ui-parser/formatters/full.d.ts.map +1 -0
  51. package/dist/adb/ui-parser/formatters/full.js +124 -0
  52. package/dist/adb/ui-parser/formatters/full.js.map +1 -0
  53. package/dist/adb/ui-parser/formatters/index.d.ts +12 -0
  54. package/dist/adb/ui-parser/formatters/index.d.ts.map +1 -0
  55. package/dist/adb/ui-parser/formatters/index.js +13 -0
  56. package/dist/adb/ui-parser/formatters/index.js.map +1 -0
  57. package/dist/adb/ui-parser/formatters/semantic.d.ts +4 -0
  58. package/dist/adb/ui-parser/formatters/semantic.d.ts.map +1 -0
  59. package/dist/adb/ui-parser/formatters/semantic.js +37 -0
  60. package/dist/adb/ui-parser/formatters/semantic.js.map +1 -0
  61. package/dist/adb/ui-parser/node-parser.d.ts +12 -0
  62. package/dist/adb/ui-parser/node-parser.d.ts.map +1 -0
  63. package/dist/adb/ui-parser/node-parser.js +140 -0
  64. package/dist/adb/ui-parser/node-parser.js.map +1 -0
  65. package/dist/adb/ui-parser/screen-analyzer.d.ts +27 -0
  66. package/dist/adb/ui-parser/screen-analyzer.d.ts.map +1 -0
  67. package/dist/adb/ui-parser/screen-analyzer.js +209 -0
  68. package/dist/adb/ui-parser/screen-analyzer.js.map +1 -0
  69. package/dist/adb/ui-parser/types.d.ts +99 -0
  70. package/dist/adb/ui-parser/types.d.ts.map +1 -0
  71. package/dist/adb/ui-parser/types.js +9 -0
  72. package/dist/adb/ui-parser/types.js.map +1 -0
  73. package/dist/adb/ui-parser.d.ts +12 -203
  74. package/dist/adb/ui-parser.d.ts.map +1 -1
  75. package/dist/adb/ui-parser.js +13 -786
  76. package/dist/adb/ui-parser.js.map +1 -1
  77. package/dist/adb/ui-scoring.d.ts +35 -0
  78. package/dist/adb/ui-scoring.d.ts.map +1 -0
  79. package/dist/adb/ui-scoring.js +61 -0
  80. package/dist/adb/ui-scoring.js.map +1 -0
  81. package/dist/adb/ui-tree-cache.d.ts +22 -0
  82. package/dist/adb/ui-tree-cache.d.ts.map +1 -0
  83. package/dist/adb/ui-tree-cache.js +33 -0
  84. package/dist/adb/ui-tree-cache.js.map +1 -0
  85. package/dist/browser/cdp-helpers.d.ts +17 -0
  86. package/dist/browser/cdp-helpers.d.ts.map +1 -0
  87. package/dist/browser/cdp-helpers.js +79 -0
  88. package/dist/browser/cdp-helpers.js.map +1 -0
  89. package/dist/browser/cdp-types.d.ts +1 -0
  90. package/dist/browser/cdp-types.d.ts.map +1 -1
  91. package/dist/browser/client.d.ts +0 -4
  92. package/dist/browser/client.d.ts.map +1 -1
  93. package/dist/browser/client.js +51 -201
  94. package/dist/browser/client.js.map +1 -1
  95. package/dist/browser/index.d.ts +1 -1
  96. package/dist/browser/index.js +1 -1
  97. package/dist/browser/key-map.d.ts +16 -0
  98. package/dist/browser/key-map.d.ts.map +1 -0
  99. package/dist/browser/key-map.js +35 -0
  100. package/dist/browser/key-map.js.map +1 -0
  101. package/dist/browser/snapshot-builder.d.ts +4 -0
  102. package/dist/browser/snapshot-builder.d.ts.map +1 -0
  103. package/dist/browser/snapshot-builder.js +76 -0
  104. package/dist/browser/snapshot-builder.js.map +1 -0
  105. package/dist/browser/types.d.ts +1 -1
  106. package/dist/browser/types.d.ts.map +1 -1
  107. package/dist/browser/types.js +8 -6
  108. package/dist/browser/types.js.map +1 -1
  109. package/dist/constants/timeouts.d.ts +59 -0
  110. package/dist/constants/timeouts.d.ts.map +1 -0
  111. package/dist/constants/timeouts.js +59 -0
  112. package/dist/constants/timeouts.js.map +1 -0
  113. package/dist/constants/truncation.d.ts +12 -0
  114. package/dist/constants/truncation.d.ts.map +1 -0
  115. package/dist/constants/truncation.js +12 -0
  116. package/dist/constants/truncation.js.map +1 -0
  117. package/dist/desktop/client.d.ts +13 -9
  118. package/dist/desktop/client.d.ts.map +1 -1
  119. package/dist/desktop/client.js +58 -325
  120. package/dist/desktop/client.js.map +1 -1
  121. package/dist/desktop/launch-options.d.ts +13 -0
  122. package/dist/desktop/launch-options.d.ts.map +1 -0
  123. package/dist/desktop/launch-options.js +54 -0
  124. package/dist/desktop/launch-options.js.map +1 -0
  125. package/dist/desktop/launchers.d.ts +52 -0
  126. package/dist/desktop/launchers.d.ts.map +1 -0
  127. package/dist/desktop/launchers.js +125 -0
  128. package/dist/desktop/launchers.js.map +1 -0
  129. package/dist/desktop/log-ring.d.ts +21 -0
  130. package/dist/desktop/log-ring.d.ts.map +1 -0
  131. package/dist/desktop/log-ring.js +45 -0
  132. package/dist/desktop/log-ring.js.map +1 -0
  133. package/dist/desktop/permission-allowlist.d.ts +47 -0
  134. package/dist/desktop/permission-allowlist.d.ts.map +1 -0
  135. package/dist/desktop/permission-allowlist.js +148 -0
  136. package/dist/desktop/permission-allowlist.js.map +1 -0
  137. package/dist/device/client-cache.d.ts +22 -0
  138. package/dist/device/client-cache.d.ts.map +1 -0
  139. package/dist/device/client-cache.js +50 -0
  140. package/dist/device/client-cache.js.map +1 -0
  141. package/dist/device/device-resolver.d.ts +51 -0
  142. package/dist/device/device-resolver.d.ts.map +1 -0
  143. package/dist/device/device-resolver.js +63 -0
  144. package/dist/device/device-resolver.js.map +1 -0
  145. package/dist/device/kernel-device-locator.d.ts +39 -0
  146. package/dist/device/kernel-device-locator.d.ts.map +1 -0
  147. package/dist/device/kernel-device-locator.js +29 -0
  148. package/dist/device/kernel-device-locator.js.map +1 -0
  149. package/dist/device/proxies/app-proxy.d.ts +17 -0
  150. package/dist/device/proxies/app-proxy.d.ts.map +1 -0
  151. package/dist/device/proxies/app-proxy.js +36 -0
  152. package/dist/device/proxies/app-proxy.js.map +1 -0
  153. package/dist/device/proxies/desktop-facade.d.ts +42 -0
  154. package/dist/device/proxies/desktop-facade.d.ts.map +1 -0
  155. package/dist/device/proxies/desktop-facade.js +105 -0
  156. package/dist/device/proxies/desktop-facade.js.map +1 -0
  157. package/dist/device/proxies/device-facade.d.ts +47 -0
  158. package/dist/device/proxies/device-facade.d.ts.map +1 -0
  159. package/dist/device/proxies/device-facade.js +94 -0
  160. package/dist/device/proxies/device-facade.js.map +1 -0
  161. package/dist/device/proxies/input-proxy.d.ts +22 -0
  162. package/dist/device/proxies/input-proxy.d.ts.map +1 -0
  163. package/dist/device/proxies/input-proxy.js +42 -0
  164. package/dist/device/proxies/input-proxy.js.map +1 -0
  165. package/dist/device/proxies/log-proxy.d.ts +24 -0
  166. package/dist/device/proxies/log-proxy.d.ts.map +1 -0
  167. package/dist/device/proxies/log-proxy.js +44 -0
  168. package/dist/device/proxies/log-proxy.js.map +1 -0
  169. package/dist/device/proxies/permission-proxy.d.ts +16 -0
  170. package/dist/device/proxies/permission-proxy.d.ts.map +1 -0
  171. package/dist/device/proxies/permission-proxy.js +38 -0
  172. package/dist/device/proxies/permission-proxy.js.map +1 -0
  173. package/dist/device/proxies/screen-proxy.d.ts +30 -0
  174. package/dist/device/proxies/screen-proxy.d.ts.map +1 -0
  175. package/dist/device/proxies/screen-proxy.js +39 -0
  176. package/dist/device/proxies/screen-proxy.js.map +1 -0
  177. package/dist/device-manager.d.ts +58 -69
  178. package/dist/device-manager.d.ts.map +1 -1
  179. package/dist/device-manager.js +126 -352
  180. package/dist/device-manager.js.map +1 -1
  181. package/dist/errors/a11y.d.ts +8 -0
  182. package/dist/errors/a11y.d.ts.map +1 -0
  183. package/dist/errors/a11y.js +12 -0
  184. package/dist/errors/a11y.js.map +1 -0
  185. package/dist/errors/adb.d.ts +9 -0
  186. package/dist/errors/adb.d.ts.map +1 -0
  187. package/dist/errors/adb.js +37 -0
  188. package/dist/errors/adb.js.map +1 -0
  189. package/dist/errors/asc.d.ts +31 -0
  190. package/dist/errors/asc.d.ts.map +1 -0
  191. package/dist/errors/asc.js +59 -0
  192. package/dist/errors/asc.js.map +1 -0
  193. package/dist/errors/autopilot.d.ts +14 -0
  194. package/dist/errors/autopilot.d.ts.map +1 -0
  195. package/dist/errors/autopilot.js +22 -0
  196. package/dist/errors/autopilot.js.map +1 -0
  197. package/dist/errors/base.d.ts +20 -0
  198. package/dist/errors/base.d.ts.map +1 -0
  199. package/dist/errors/base.js +55 -0
  200. package/dist/errors/base.js.map +1 -0
  201. package/dist/errors/browser.d.ts +23 -0
  202. package/dist/errors/browser.d.ts.map +1 -0
  203. package/dist/errors/browser.js +37 -0
  204. package/dist/errors/browser.js.map +1 -0
  205. package/dist/errors/device.d.ts +17 -0
  206. package/dist/errors/device.d.ts.map +1 -0
  207. package/dist/errors/device.js +29 -0
  208. package/dist/errors/device.js.map +1 -0
  209. package/dist/errors/index.d.ts +21 -0
  210. package/dist/errors/index.d.ts.map +1 -0
  211. package/dist/errors/index.js +21 -0
  212. package/dist/errors/index.js.map +1 -0
  213. package/dist/errors/ios.d.ts +12 -0
  214. package/dist/errors/ios.d.ts.map +1 -0
  215. package/dist/errors/ios.js +30 -0
  216. package/dist/errors/ios.js.map +1 -0
  217. package/dist/errors/perf.d.ts +11 -0
  218. package/dist/errors/perf.d.ts.map +1 -0
  219. package/dist/errors/perf.js +17 -0
  220. package/dist/errors/perf.js.map +1 -0
  221. package/dist/errors/protocol.d.ts +8 -0
  222. package/dist/errors/protocol.d.ts.map +1 -0
  223. package/dist/errors/protocol.js +12 -0
  224. package/dist/errors/protocol.js.map +1 -0
  225. package/dist/errors/recorder.d.ts +17 -0
  226. package/dist/errors/recorder.d.ts.map +1 -0
  227. package/dist/errors/recorder.js +27 -0
  228. package/dist/errors/recorder.js.map +1 -0
  229. package/dist/errors/sync.d.ts +14 -0
  230. package/dist/errors/sync.d.ts.map +1 -0
  231. package/dist/errors/sync.js +22 -0
  232. package/dist/errors/sync.js.map +1 -0
  233. package/dist/errors/visual.d.ts +14 -0
  234. package/dist/errors/visual.d.ts.map +1 -0
  235. package/dist/errors/visual.js +22 -0
  236. package/dist/errors/visual.js.map +1 -0
  237. package/dist/errors.d.ts +4 -143
  238. package/dist/errors.d.ts.map +1 -1
  239. package/dist/errors.js +4 -292
  240. package/dist/errors.js.map +1 -1
  241. package/dist/index.js +32 -413
  242. package/dist/index.js.map +1 -1
  243. package/dist/ios/build/classify-build-error.d.ts +31 -0
  244. package/dist/ios/build/classify-build-error.d.ts.map +1 -0
  245. package/dist/ios/build/classify-build-error.js +115 -0
  246. package/dist/ios/build/classify-build-error.js.map +1 -0
  247. package/dist/ios/build/exec.d.ts +24 -0
  248. package/dist/ios/build/exec.d.ts.map +1 -0
  249. package/dist/ios/build/exec.js +33 -0
  250. package/dist/ios/build/exec.js.map +1 -0
  251. package/dist/ios/build/export-options.d.ts +23 -0
  252. package/dist/ios/build/export-options.d.ts.map +1 -0
  253. package/dist/ios/build/export-options.js +48 -0
  254. package/dist/ios/build/export-options.js.map +1 -0
  255. package/dist/ios/build/index.d.ts +14 -0
  256. package/dist/ios/build/index.d.ts.map +1 -0
  257. package/dist/ios/build/index.js +14 -0
  258. package/dist/ios/build/index.js.map +1 -0
  259. package/dist/ios/build/project-detector.d.ts +30 -0
  260. package/dist/ios/build/project-detector.d.ts.map +1 -0
  261. package/dist/ios/build/project-detector.js +148 -0
  262. package/dist/ios/build/project-detector.js.map +1 -0
  263. package/dist/ios/build/upload.d.ts +30 -0
  264. package/dist/ios/build/upload.d.ts.map +1 -0
  265. package/dist/ios/build/upload.js +113 -0
  266. package/dist/ios/build/upload.js.map +1 -0
  267. package/dist/ios/build/xcode-build.d.ts +35 -0
  268. package/dist/ios/build/xcode-build.d.ts.map +1 -0
  269. package/dist/ios/build/xcode-build.js +109 -0
  270. package/dist/ios/build/xcode-build.js.map +1 -0
  271. package/dist/ios/client.d.ts +7 -34
  272. package/dist/ios/client.d.ts.map +1 -1
  273. package/dist/ios/client.js +31 -181
  274. package/dist/ios/client.js.map +1 -1
  275. package/dist/ios/keymap.d.ts +20 -0
  276. package/dist/ios/keymap.d.ts.map +1 -0
  277. package/dist/ios/keymap.js +33 -0
  278. package/dist/ios/keymap.js.map +1 -0
  279. package/dist/ios/simctl-commands.d.ts +35 -0
  280. package/dist/ios/simctl-commands.d.ts.map +1 -0
  281. package/dist/ios/simctl-commands.js +60 -0
  282. package/dist/ios/simctl-commands.js.map +1 -0
  283. package/dist/ios/simctl-exec.d.ts +19 -0
  284. package/dist/ios/simctl-exec.d.ts.map +1 -0
  285. package/dist/ios/simctl-exec.js +55 -0
  286. package/dist/ios/simctl-exec.js.map +1 -0
  287. package/dist/ios/simctl-parsers.d.ts +10 -0
  288. package/dist/ios/simctl-parsers.d.ts.map +1 -0
  289. package/dist/ios/simctl-parsers.js +29 -0
  290. package/dist/ios/simctl-parsers.js.map +1 -0
  291. package/dist/ios/types.d.ts +8 -0
  292. package/dist/ios/types.d.ts.map +1 -0
  293. package/dist/ios/types.js +2 -0
  294. package/dist/ios/types.js.map +1 -0
  295. package/dist/ios/wda-errors.d.ts +8 -0
  296. package/dist/ios/wda-errors.d.ts.map +1 -0
  297. package/dist/ios/wda-errors.js +13 -0
  298. package/dist/ios/wda-errors.js.map +1 -0
  299. package/dist/ios/wda-payloads.d.ts +32 -0
  300. package/dist/ios/wda-payloads.d.ts.map +1 -0
  301. package/dist/ios/wda-payloads.js +31 -0
  302. package/dist/ios/wda-payloads.js.map +1 -0
  303. package/dist/kernel/external-loader.d.ts +47 -0
  304. package/dist/kernel/external-loader.d.ts.map +1 -0
  305. package/dist/kernel/external-loader.js +158 -0
  306. package/dist/kernel/external-loader.js.map +1 -0
  307. package/dist/platform-types.d.ts +34 -0
  308. package/dist/platform-types.d.ts.map +1 -0
  309. package/dist/platform-types.js +22 -0
  310. package/dist/platform-types.js.map +1 -0
  311. package/dist/plugins/builtin-tools/index.d.ts +40 -0
  312. package/dist/plugins/builtin-tools/index.d.ts.map +1 -0
  313. package/dist/plugins/builtin-tools/index.js +98 -0
  314. package/dist/plugins/builtin-tools/index.js.map +1 -0
  315. package/dist/runtime/bootstrap.d.ts +10 -0
  316. package/dist/runtime/bootstrap.d.ts.map +1 -1
  317. package/dist/runtime/bootstrap.js +21 -0
  318. package/dist/runtime/bootstrap.js.map +1 -1
  319. package/dist/runtime/cli.d.ts +12 -0
  320. package/dist/runtime/cli.d.ts.map +1 -0
  321. package/dist/runtime/cli.js +67 -0
  322. package/dist/runtime/cli.js.map +1 -0
  323. package/dist/runtime/mcp-instructions.d.ts +4 -0
  324. package/dist/runtime/mcp-instructions.d.ts.map +1 -0
  325. package/dist/runtime/mcp-instructions.js +28 -0
  326. package/dist/runtime/mcp-instructions.js.map +1 -0
  327. package/dist/runtime/mcp-server.d.ts +24 -0
  328. package/dist/runtime/mcp-server.d.ts.map +1 -0
  329. package/dist/runtime/mcp-server.js +138 -0
  330. package/dist/runtime/mcp-server.js.map +1 -0
  331. package/dist/runtime/runtime-context.d.ts +26 -0
  332. package/dist/runtime/runtime-context.d.ts.map +1 -0
  333. package/dist/runtime/runtime-context.js +36 -0
  334. package/dist/runtime/runtime-context.js.map +1 -0
  335. package/dist/store/app-store-connect.d.ts +64 -0
  336. package/dist/store/app-store-connect.d.ts.map +1 -0
  337. package/dist/store/app-store-connect.js +196 -0
  338. package/dist/store/app-store-connect.js.map +1 -0
  339. package/dist/store/asc-jwt.d.ts +36 -0
  340. package/dist/store/asc-jwt.d.ts.map +1 -0
  341. package/dist/store/asc-jwt.js +50 -0
  342. package/dist/store/asc-jwt.js.map +1 -0
  343. package/dist/tools/accessibility-tools.d.ts.map +1 -1
  344. package/dist/tools/accessibility-tools.js +70 -133
  345. package/dist/tools/accessibility-tools.js.map +1 -1
  346. package/dist/tools/app-tools.d.ts.map +1 -1
  347. package/dist/tools/app-tools.js +70 -95
  348. package/dist/tools/app-tools.js.map +1 -1
  349. package/dist/tools/appstore-tools.d.ts +13 -0
  350. package/dist/tools/appstore-tools.d.ts.map +1 -0
  351. package/dist/tools/appstore-tools.js +268 -0
  352. package/dist/tools/appstore-tools.js.map +1 -0
  353. package/dist/tools/aurora-tools.d.ts.map +1 -1
  354. package/dist/tools/aurora-tools.js +32 -34
  355. package/dist/tools/aurora-tools.js.map +1 -1
  356. package/dist/tools/autopilot-tools.d.ts.map +1 -1
  357. package/dist/tools/autopilot-tools.js +114 -166
  358. package/dist/tools/autopilot-tools.js.map +1 -1
  359. package/dist/tools/browser-tools.d.ts.map +1 -1
  360. package/dist/tools/browser-tools.js +204 -247
  361. package/dist/tools/browser-tools.js.map +1 -1
  362. package/dist/tools/clipboard-tools.d.ts.map +1 -1
  363. package/dist/tools/clipboard-tools.js +51 -69
  364. package/dist/tools/clipboard-tools.js.map +1 -1
  365. package/dist/tools/common-schema.d.ts +23 -0
  366. package/dist/tools/common-schema.d.ts.map +1 -0
  367. package/dist/tools/common-schema.js +32 -0
  368. package/dist/tools/common-schema.js.map +1 -0
  369. package/dist/tools/context/shared-state-class.d.ts +23 -0
  370. package/dist/tools/context/shared-state-class.d.ts.map +1 -0
  371. package/dist/tools/context/shared-state-class.js +30 -0
  372. package/dist/tools/context/shared-state-class.js.map +1 -0
  373. package/dist/tools/context/shared-state.d.ts +4 -2
  374. package/dist/tools/context/shared-state.d.ts.map +1 -1
  375. package/dist/tools/context/shared-state.js +12 -21
  376. package/dist/tools/context/shared-state.js.map +1 -1
  377. package/dist/tools/define-tool.d.ts +29 -0
  378. package/dist/tools/define-tool.d.ts.map +1 -0
  379. package/dist/tools/define-tool.js +46 -0
  380. package/dist/tools/define-tool.js.map +1 -0
  381. package/dist/tools/desktop-tools.d.ts.map +1 -1
  382. package/dist/tools/desktop-tools.js +112 -154
  383. package/dist/tools/desktop-tools.js.map +1 -1
  384. package/dist/tools/device-tools.d.ts.map +1 -1
  385. package/dist/tools/device-tools.js +46 -78
  386. package/dist/tools/device-tools.js.map +1 -1
  387. package/dist/tools/flow/batch.d.ts +2 -0
  388. package/dist/tools/flow/batch.d.ts.map +1 -0
  389. package/dist/tools/flow/batch.js +126 -0
  390. package/dist/tools/flow/batch.js.map +1 -0
  391. package/dist/tools/flow/common.d.ts +105 -0
  392. package/dist/tools/flow/common.d.ts.map +1 -0
  393. package/dist/tools/flow/common.js +210 -0
  394. package/dist/tools/flow/common.js.map +1 -0
  395. package/dist/tools/flow/parallel.d.ts +2 -0
  396. package/dist/tools/flow/parallel.d.ts.map +1 -0
  397. package/dist/tools/flow/parallel.js +59 -0
  398. package/dist/tools/flow/parallel.js.map +1 -0
  399. package/dist/tools/flow/run.d.ts +2 -0
  400. package/dist/tools/flow/run.d.ts.map +1 -0
  401. package/dist/tools/flow/run.js +264 -0
  402. package/dist/tools/flow/run.js.map +1 -0
  403. package/dist/tools/flow-tools.d.ts.map +1 -1
  404. package/dist/tools/flow-tools.js +4 -650
  405. package/dist/tools/flow-tools.js.map +1 -1
  406. package/dist/tools/helpers/dispatch.d.ts +25 -0
  407. package/dist/tools/helpers/dispatch.d.ts.map +1 -0
  408. package/dist/tools/helpers/dispatch.js +20 -0
  409. package/dist/tools/helpers/dispatch.js.map +1 -0
  410. package/dist/tools/huawei-tools.d.ts.map +1 -1
  411. package/dist/tools/huawei-tools.js +41 -69
  412. package/dist/tools/huawei-tools.js.map +1 -1
  413. package/dist/tools/intent-tools.d.ts.map +1 -1
  414. package/dist/tools/intent-tools.js +170 -264
  415. package/dist/tools/intent-tools.js.map +1 -1
  416. package/dist/tools/interaction-tools.d.ts.map +1 -1
  417. package/dist/tools/interaction-tools.js +137 -176
  418. package/dist/tools/interaction-tools.js.map +1 -1
  419. package/dist/tools/meta/accessibility-meta.d.ts +1 -1
  420. package/dist/tools/meta/accessibility-meta.d.ts.map +1 -1
  421. package/dist/tools/meta/autopilot-meta.d.ts +1 -1
  422. package/dist/tools/meta/autopilot-meta.d.ts.map +1 -1
  423. package/dist/tools/meta/desktop-meta.d.ts +1 -1
  424. package/dist/tools/meta/desktop-meta.d.ts.map +1 -1
  425. package/dist/tools/meta/flow-meta.d.ts +1 -1
  426. package/dist/tools/meta/flow-meta.d.ts.map +1 -1
  427. package/dist/tools/meta/index.d.ts +67 -0
  428. package/dist/tools/meta/index.d.ts.map +1 -0
  429. package/dist/tools/meta/index.js +176 -0
  430. package/dist/tools/meta/index.js.map +1 -0
  431. package/dist/tools/meta/input-meta.d.ts +1 -1
  432. package/dist/tools/meta/input-meta.d.ts.map +1 -1
  433. package/dist/tools/meta/intent-meta.d.ts +1 -1
  434. package/dist/tools/meta/intent-meta.d.ts.map +1 -1
  435. package/dist/tools/meta/network-meta.d.ts +1 -1
  436. package/dist/tools/meta/network-meta.d.ts.map +1 -1
  437. package/dist/tools/meta/performance-meta.d.ts +1 -1
  438. package/dist/tools/meta/performance-meta.d.ts.map +1 -1
  439. package/dist/tools/meta/recorder-meta.d.ts +1 -1
  440. package/dist/tools/meta/recorder-meta.d.ts.map +1 -1
  441. package/dist/tools/meta/sandbox-meta.d.ts +1 -1
  442. package/dist/tools/meta/sandbox-meta.d.ts.map +1 -1
  443. package/dist/tools/meta/screen-meta.d.ts +1 -1
  444. package/dist/tools/meta/screen-meta.d.ts.map +1 -1
  445. package/dist/tools/meta/sensor-meta.d.ts +1 -1
  446. package/dist/tools/meta/sensor-meta.d.ts.map +1 -1
  447. package/dist/tools/meta/store-meta.d.ts.map +1 -1
  448. package/dist/tools/meta/store-meta.js +40 -9
  449. package/dist/tools/meta/store-meta.js.map +1 -1
  450. package/dist/tools/meta/sync-meta.d.ts +1 -1
  451. package/dist/tools/meta/sync-meta.d.ts.map +1 -1
  452. package/dist/tools/meta/ui-meta.d.ts +1 -1
  453. package/dist/tools/meta/ui-meta.d.ts.map +1 -1
  454. package/dist/tools/meta/visual-meta.d.ts +1 -1
  455. package/dist/tools/meta/visual-meta.d.ts.map +1 -1
  456. package/dist/tools/network-tools.d.ts +0 -8
  457. package/dist/tools/network-tools.d.ts.map +1 -1
  458. package/dist/tools/network-tools.js +89 -184
  459. package/dist/tools/network-tools.js.map +1 -1
  460. package/dist/tools/performance/baseline.d.ts +2 -0
  461. package/dist/tools/performance/baseline.d.ts.map +1 -0
  462. package/dist/tools/performance/baseline.js +53 -0
  463. package/dist/tools/performance/baseline.js.map +1 -0
  464. package/dist/tools/performance/common.d.ts +47 -0
  465. package/dist/tools/performance/common.d.ts.map +1 -0
  466. package/dist/tools/performance/common.js +276 -0
  467. package/dist/tools/performance/common.js.map +1 -0
  468. package/dist/tools/performance/compare.d.ts +2 -0
  469. package/dist/tools/performance/compare.d.ts.map +1 -0
  470. package/dist/tools/performance/compare.js +58 -0
  471. package/dist/tools/performance/compare.js.map +1 -0
  472. package/dist/tools/performance/crashes.d.ts +2 -0
  473. package/dist/tools/performance/crashes.d.ts.map +1 -0
  474. package/dist/tools/performance/crashes.js +27 -0
  475. package/dist/tools/performance/crashes.js.map +1 -0
  476. package/dist/tools/performance/framestats.d.ts +2 -0
  477. package/dist/tools/performance/framestats.d.ts.map +1 -0
  478. package/dist/tools/performance/framestats.js +45 -0
  479. package/dist/tools/performance/framestats.js.map +1 -0
  480. package/dist/tools/performance/monitor.d.ts +2 -0
  481. package/dist/tools/performance/monitor.d.ts.map +1 -0
  482. package/dist/tools/performance/monitor.js +61 -0
  483. package/dist/tools/performance/monitor.js.map +1 -0
  484. package/dist/tools/performance/snapshot.d.ts +2 -0
  485. package/dist/tools/performance/snapshot.d.ts.map +1 -0
  486. package/dist/tools/performance/snapshot.js +26 -0
  487. package/dist/tools/performance/snapshot.js.map +1 -0
  488. package/dist/tools/performance-tools.d.ts.map +1 -1
  489. package/dist/tools/performance-tools.js +12 -578
  490. package/dist/tools/performance-tools.js.map +1 -1
  491. package/dist/tools/permission-tools.d.ts.map +1 -1
  492. package/dist/tools/permission-tools.js +44 -56
  493. package/dist/tools/permission-tools.js.map +1 -1
  494. package/dist/tools/recorder/capture.d.ts +6 -0
  495. package/dist/tools/recorder/capture.d.ts.map +1 -0
  496. package/dist/tools/recorder/capture.js +51 -0
  497. package/dist/tools/recorder/capture.js.map +1 -0
  498. package/dist/tools/recorder/index.d.ts +4 -0
  499. package/dist/tools/recorder/index.d.ts.map +1 -0
  500. package/dist/tools/recorder/index.js +4 -0
  501. package/dist/tools/recorder/index.js.map +1 -0
  502. package/dist/tools/recorder/playback.d.ts +26 -0
  503. package/dist/tools/recorder/playback.d.ts.map +1 -0
  504. package/dist/tools/recorder/playback.js +123 -0
  505. package/dist/tools/recorder/playback.js.map +1 -0
  506. package/dist/tools/recorder/redaction.d.ts +6 -0
  507. package/dist/tools/recorder/redaction.d.ts.map +1 -0
  508. package/dist/tools/recorder/redaction.js +58 -0
  509. package/dist/tools/recorder/redaction.js.map +1 -0
  510. package/dist/tools/recorder/tools.d.ts +3 -0
  511. package/dist/tools/recorder/tools.d.ts.map +1 -0
  512. package/dist/tools/recorder/tools.js +335 -0
  513. package/dist/tools/recorder/tools.js.map +1 -0
  514. package/dist/tools/recorder-state.d.ts +22 -0
  515. package/dist/tools/recorder-state.d.ts.map +1 -0
  516. package/dist/tools/recorder-state.js +18 -0
  517. package/dist/tools/recorder-state.js.map +1 -0
  518. package/dist/tools/recorder-tools.d.ts +3 -4
  519. package/dist/tools/recorder-tools.d.ts.map +1 -1
  520. package/dist/tools/recorder-tools.js +11 -597
  521. package/dist/tools/recorder-tools.js.map +1 -1
  522. package/dist/tools/registry-types.d.ts +15 -0
  523. package/dist/tools/registry-types.d.ts.map +1 -0
  524. package/dist/tools/registry-types.js +2 -0
  525. package/dist/tools/registry-types.js.map +1 -0
  526. package/dist/tools/registry.d.ts +11 -31
  527. package/dist/tools/registry.d.ts.map +1 -1
  528. package/dist/tools/registry.js +39 -219
  529. package/dist/tools/registry.js.map +1 -1
  530. package/dist/tools/rustore-tools.d.ts.map +1 -1
  531. package/dist/tools/rustore-tools.js +50 -86
  532. package/dist/tools/rustore-tools.js.map +1 -1
  533. package/dist/tools/sandbox/file-list.d.ts +2 -0
  534. package/dist/tools/sandbox/file-list.d.ts.map +1 -0
  535. package/dist/tools/sandbox/file-list.js +48 -0
  536. package/dist/tools/sandbox/file-list.js.map +1 -0
  537. package/dist/tools/sandbox/file-read.d.ts +2 -0
  538. package/dist/tools/sandbox/file-read.d.ts.map +1 -0
  539. package/dist/tools/sandbox/file-read.js +61 -0
  540. package/dist/tools/sandbox/file-read.js.map +1 -0
  541. package/dist/tools/sandbox/helpers.d.ts +22 -0
  542. package/dist/tools/sandbox/helpers.d.ts.map +1 -0
  543. package/dist/tools/sandbox/helpers.js +78 -0
  544. package/dist/tools/sandbox/helpers.js.map +1 -0
  545. package/dist/tools/sandbox/index.d.ts +7 -0
  546. package/dist/tools/sandbox/index.d.ts.map +1 -0
  547. package/dist/tools/sandbox/index.js +7 -0
  548. package/dist/tools/sandbox/index.js.map +1 -0
  549. package/dist/tools/sandbox/prefs-read.d.ts +2 -0
  550. package/dist/tools/sandbox/prefs-read.d.ts.map +1 -0
  551. package/dist/tools/sandbox/prefs-read.js +111 -0
  552. package/dist/tools/sandbox/prefs-read.js.map +1 -0
  553. package/dist/tools/sandbox/prefs-write.d.ts +2 -0
  554. package/dist/tools/sandbox/prefs-write.d.ts.map +1 -0
  555. package/dist/tools/sandbox/prefs-write.js +109 -0
  556. package/dist/tools/sandbox/prefs-write.js.map +1 -0
  557. package/dist/tools/sandbox/sqlite-query.d.ts +2 -0
  558. package/dist/tools/sandbox/sqlite-query.d.ts.map +1 -0
  559. package/dist/tools/sandbox/sqlite-query.js +75 -0
  560. package/dist/tools/sandbox/sqlite-query.js.map +1 -0
  561. package/dist/tools/sandbox/tools.d.ts +3 -0
  562. package/dist/tools/sandbox/tools.d.ts.map +1 -0
  563. package/dist/tools/sandbox/tools.js +13 -0
  564. package/dist/tools/sandbox/tools.js.map +1 -0
  565. package/dist/tools/sandbox-tools.d.ts +1 -2
  566. package/dist/tools/sandbox-tools.d.ts.map +1 -1
  567. package/dist/tools/sandbox-tools.js +3 -547
  568. package/dist/tools/sandbox-tools.js.map +1 -1
  569. package/dist/tools/screenshot-tools.d.ts.map +1 -1
  570. package/dist/tools/screenshot-tools.js +77 -100
  571. package/dist/tools/screenshot-tools.js.map +1 -1
  572. package/dist/tools/sensor/battery.d.ts +2 -0
  573. package/dist/tools/sensor/battery.d.ts.map +1 -0
  574. package/dist/tools/sensor/battery.js +75 -0
  575. package/dist/tools/sensor/battery.js.map +1 -0
  576. package/dist/tools/sensor/constants.d.ts +11 -0
  577. package/dist/tools/sensor/constants.d.ts.map +1 -0
  578. package/dist/tools/sensor/constants.js +24 -0
  579. package/dist/tools/sensor/constants.js.map +1 -0
  580. package/dist/tools/sensor/helpers.d.ts +7 -0
  581. package/dist/tools/sensor/helpers.d.ts.map +1 -0
  582. package/dist/tools/sensor/helpers.js +39 -0
  583. package/dist/tools/sensor/helpers.js.map +1 -0
  584. package/dist/tools/sensor/index.d.ts +7 -0
  585. package/dist/tools/sensor/index.d.ts.map +1 -0
  586. package/dist/tools/sensor/index.js +7 -0
  587. package/dist/tools/sensor/index.js.map +1 -0
  588. package/dist/tools/sensor/location.d.ts +2 -0
  589. package/dist/tools/sensor/location.d.ts.map +1 -0
  590. package/dist/tools/sensor/location.js +64 -0
  591. package/dist/tools/sensor/location.js.map +1 -0
  592. package/dist/tools/sensor/notifications-parser.d.ts +9 -0
  593. package/dist/tools/sensor/notifications-parser.d.ts.map +1 -0
  594. package/dist/tools/sensor/notifications-parser.js +53 -0
  595. package/dist/tools/sensor/notifications-parser.js.map +1 -0
  596. package/dist/tools/sensor/notifications.d.ts +2 -0
  597. package/dist/tools/sensor/notifications.d.ts.map +1 -0
  598. package/dist/tools/sensor/notifications.js +54 -0
  599. package/dist/tools/sensor/notifications.js.map +1 -0
  600. package/dist/tools/sensor/thermal.d.ts +2 -0
  601. package/dist/tools/sensor/thermal.d.ts.map +1 -0
  602. package/dist/tools/sensor/thermal.js +60 -0
  603. package/dist/tools/sensor/thermal.js.map +1 -0
  604. package/dist/tools/sensor/tools.d.ts +3 -0
  605. package/dist/tools/sensor/tools.d.ts.map +1 -0
  606. package/dist/tools/sensor/tools.js +11 -0
  607. package/dist/tools/sensor/tools.js.map +1 -0
  608. package/dist/tools/sensor-tools.d.ts +14 -2
  609. package/dist/tools/sensor-tools.d.ts.map +1 -1
  610. package/dist/tools/sensor-tools.js +11 -470
  611. package/dist/tools/sensor-tools.js.map +1 -1
  612. package/dist/tools/store-tools.d.ts.map +1 -1
  613. package/dist/tools/store-tools.js +78 -135
  614. package/dist/tools/store-tools.js.map +1 -1
  615. package/dist/tools/sync/assert-cross.d.ts +2 -0
  616. package/dist/tools/sync/assert-cross.d.ts.map +1 -0
  617. package/dist/tools/sync/assert-cross.js +99 -0
  618. package/dist/tools/sync/assert-cross.js.map +1 -0
  619. package/dist/tools/sync/common.d.ts +74 -0
  620. package/dist/tools/sync/common.d.ts.map +1 -0
  621. package/dist/tools/sync/common.js +286 -0
  622. package/dist/tools/sync/common.js.map +1 -0
  623. package/dist/tools/sync/create-group.d.ts +2 -0
  624. package/dist/tools/sync/create-group.d.ts.map +1 -0
  625. package/dist/tools/sync/create-group.js +52 -0
  626. package/dist/tools/sync/create-group.js.map +1 -0
  627. package/dist/tools/sync/destroy.d.ts +2 -0
  628. package/dist/tools/sync/destroy.d.ts.map +1 -0
  629. package/dist/tools/sync/destroy.js +20 -0
  630. package/dist/tools/sync/destroy.js.map +1 -0
  631. package/dist/tools/sync/list.d.ts +2 -0
  632. package/dist/tools/sync/list.d.ts.map +1 -0
  633. package/dist/tools/sync/list.js +22 -0
  634. package/dist/tools/sync/list.js.map +1 -0
  635. package/dist/tools/sync/run.d.ts +2 -0
  636. package/dist/tools/sync/run.d.ts.map +1 -0
  637. package/dist/tools/sync/run.js +44 -0
  638. package/dist/tools/sync/run.js.map +1 -0
  639. package/dist/tools/sync/status.d.ts +2 -0
  640. package/dist/tools/sync/status.d.ts.map +1 -0
  641. package/dist/tools/sync/status.js +33 -0
  642. package/dist/tools/sync/status.js.map +1 -0
  643. package/dist/tools/sync-tools.d.ts.map +1 -1
  644. package/dist/tools/sync-tools.js +13 -585
  645. package/dist/tools/sync-tools.js.map +1 -1
  646. package/dist/tools/system-tools.d.ts.map +1 -1
  647. package/dist/tools/system-tools.js +213 -282
  648. package/dist/tools/system-tools.js.map +1 -1
  649. package/dist/tools/tool-registry.d.ts +50 -0
  650. package/dist/tools/tool-registry.d.ts.map +1 -0
  651. package/dist/tools/tool-registry.js +224 -0
  652. package/dist/tools/tool-registry.js.map +1 -0
  653. package/dist/tools/ui/analyze.d.ts +2 -0
  654. package/dist/tools/ui/analyze.d.ts.map +1 -0
  655. package/dist/tools/ui/analyze.js +52 -0
  656. package/dist/tools/ui/analyze.js.map +1 -0
  657. package/dist/tools/ui/assert.d.ts +3 -0
  658. package/dist/tools/ui/assert.d.ts.map +1 -0
  659. package/dist/tools/ui/assert.js +61 -0
  660. package/dist/tools/ui/assert.js.map +1 -0
  661. package/dist/tools/ui/find.d.ts +4 -0
  662. package/dist/tools/ui/find.d.ts.map +1 -0
  663. package/dist/tools/ui/find.js +128 -0
  664. package/dist/tools/ui/find.js.map +1 -0
  665. package/dist/tools/ui/index.d.ts +6 -0
  666. package/dist/tools/ui/index.d.ts.map +1 -0
  667. package/dist/tools/ui/index.js +6 -0
  668. package/dist/tools/ui/index.js.map +1 -0
  669. package/dist/tools/ui/tree.d.ts +2 -0
  670. package/dist/tools/ui/tree.d.ts.map +1 -0
  671. package/dist/tools/ui/tree.js +60 -0
  672. package/dist/tools/ui/tree.js.map +1 -0
  673. package/dist/tools/ui/wait.d.ts +2 -0
  674. package/dist/tools/ui/wait.d.ts.map +1 -0
  675. package/dist/tools/ui/wait.js +56 -0
  676. package/dist/tools/ui/wait.js.map +1 -0
  677. package/dist/tools/ui-tools.d.ts +13 -0
  678. package/dist/tools/ui-tools.d.ts.map +1 -1
  679. package/dist/tools/ui-tools.js +22 -387
  680. package/dist/tools/ui-tools.js.map +1 -1
  681. package/dist/tools/visual-tools.d.ts.map +1 -1
  682. package/dist/tools/visual-tools.js +141 -193
  683. package/dist/tools/visual-tools.js.map +1 -1
  684. package/dist/utils/image/annotate.d.ts +9 -0
  685. package/dist/utils/image/annotate.d.ts.map +1 -0
  686. package/dist/utils/image/annotate.js +56 -0
  687. package/dist/utils/image/annotate.js.map +1 -0
  688. package/dist/utils/image/backend.d.ts +7 -0
  689. package/dist/utils/image/backend.d.ts.map +1 -0
  690. package/dist/utils/image/backend.js +25 -0
  691. package/dist/utils/image/backend.js.map +1 -0
  692. package/dist/utils/image/compare.d.ts +13 -0
  693. package/dist/utils/image/compare.d.ts.map +1 -0
  694. package/dist/utils/image/compare.js +72 -0
  695. package/dist/utils/image/compare.js.map +1 -0
  696. package/dist/utils/image/compress.d.ts +10 -0
  697. package/dist/utils/image/compress.d.ts.map +1 -0
  698. package/dist/utils/image/compress.js +132 -0
  699. package/dist/utils/image/compress.js.map +1 -0
  700. package/dist/utils/image/drawing.d.ts +19 -0
  701. package/dist/utils/image/drawing.d.ts.map +1 -0
  702. package/dist/utils/image/drawing.js +101 -0
  703. package/dist/utils/image/drawing.js.map +1 -0
  704. package/dist/utils/image/encode.d.ts +8 -0
  705. package/dist/utils/image/encode.d.ts.map +1 -0
  706. package/dist/utils/image/encode.js +10 -0
  707. package/dist/utils/image/encode.js.map +1 -0
  708. package/dist/utils/image/index.d.ts +10 -0
  709. package/dist/utils/image/index.d.ts.map +1 -0
  710. package/dist/utils/image/index.js +9 -0
  711. package/dist/utils/image/index.js.map +1 -0
  712. package/dist/utils/image/overlay.d.ts +10 -0
  713. package/dist/utils/image/overlay.d.ts.map +1 -0
  714. package/dist/utils/image/overlay.js +128 -0
  715. package/dist/utils/image/overlay.js.map +1 -0
  716. package/dist/utils/image/types.d.ts +62 -0
  717. package/dist/utils/image/types.d.ts.map +1 -0
  718. package/dist/utils/image/types.js +12 -0
  719. package/dist/utils/image/types.js.map +1 -0
  720. package/dist/utils/image.d.ts +16 -86
  721. package/dist/utils/image.d.ts.map +1 -1
  722. package/dist/utils/image.js +15 -527
  723. package/dist/utils/image.js.map +1 -1
  724. package/dist/utils/parse-common-args.d.ts +14 -0
  725. package/dist/utils/parse-common-args.d.ts.map +1 -0
  726. package/dist/utils/parse-common-args.js +16 -0
  727. package/dist/utils/parse-common-args.js.map +1 -0
  728. package/dist/utils/run-tool-safely.d.ts +15 -0
  729. package/dist/utils/run-tool-safely.d.ts.map +1 -0
  730. package/dist/utils/run-tool-safely.js +31 -0
  731. package/dist/utils/run-tool-safely.js.map +1 -0
  732. package/dist/utils/sanitize.d.ts +4 -0
  733. package/dist/utils/sanitize.d.ts.map +1 -1
  734. package/dist/utils/sanitize.js +31 -1
  735. package/dist/utils/sanitize.js.map +1 -1
  736. package/dist/utils/sleep.d.ts +2 -0
  737. package/dist/utils/sleep.d.ts.map +1 -0
  738. package/dist/utils/sleep.js +3 -0
  739. package/dist/utils/sleep.js.map +1 -0
  740. package/dist/utils/tool-result.d.ts +26 -0
  741. package/dist/utils/tool-result.d.ts.map +1 -0
  742. package/dist/utils/tool-result.js +26 -0
  743. package/dist/utils/tool-result.js.map +1 -0
  744. package/node_modules/@claude-in-mobile/plugin-api/dist/index.d.ts +1 -1
  745. package/node_modules/@claude-in-mobile/plugin-api/dist/index.d.ts.map +1 -1
  746. package/node_modules/@claude-in-mobile/plugin-api/dist/index.js +1 -0
  747. package/node_modules/@claude-in-mobile/plugin-api/dist/index.js.map +1 -1
  748. package/node_modules/@claude-in-mobile/plugin-api/package.json +1 -1
  749. package/package.json +13 -5
@@ -70,6 +70,14 @@ export declare function hasAppManagement(adapter: CorePlatformAdapter): adapter
70
70
  export declare function hasPermissions(adapter: CorePlatformAdapter): adapter is CorePlatformAdapter & PermissionAdapter;
71
71
  export declare function hasShell(adapter: CorePlatformAdapter): adapter is CorePlatformAdapter & ShellAdapter;
72
72
  export declare function hasSyncScreenshot(adapter: CorePlatformAdapter): adapter is CorePlatformAdapter & SyncScreenshotAdapter;
73
+ export declare class CapabilityNotSupportedError extends Error {
74
+ readonly platform: Platform;
75
+ readonly capability: string;
76
+ constructor(platform: Platform, capability: string);
77
+ }
78
+ export declare function requireAppManagement(adapter: CorePlatformAdapter): CorePlatformAdapter & AppManagementAdapter;
79
+ export declare function requirePermissions(adapter: CorePlatformAdapter): CorePlatformAdapter & PermissionAdapter;
80
+ export declare function requireShell(adapter: CorePlatformAdapter): CorePlatformAdapter & ShellAdapter;
73
81
  /**
74
82
  * Legacy full interface -- the intersection of ALL capabilities.
75
83
  *
@@ -1 +1 @@
1
- {"version":3,"file":"platform-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/platform-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/platform-adapter.ts"],"names":[],"mappings":"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"}
@@ -36,4 +36,33 @@ export function hasShell(adapter) {
36
36
  export function hasSyncScreenshot(adapter) {
37
37
  return "screenshotRaw" in adapter;
38
38
  }
39
+ // ============ Capability requirement helpers ============
40
+ export class CapabilityNotSupportedError extends Error {
41
+ platform;
42
+ capability;
43
+ constructor(platform, capability) {
44
+ super(`Capability '${capability}' is not supported on platform '${platform}'.`);
45
+ this.platform = platform;
46
+ this.capability = capability;
47
+ this.name = "CapabilityNotSupportedError";
48
+ }
49
+ }
50
+ export function requireAppManagement(adapter) {
51
+ if (!hasAppManagement(adapter)) {
52
+ throw new CapabilityNotSupportedError(adapter.platform, "AppManagement");
53
+ }
54
+ return adapter;
55
+ }
56
+ export function requirePermissions(adapter) {
57
+ if (!hasPermissions(adapter)) {
58
+ throw new CapabilityNotSupportedError(adapter.platform, "Permissions");
59
+ }
60
+ return adapter;
61
+ }
62
+ export function requireShell(adapter) {
63
+ if (!hasShell(adapter)) {
64
+ throw new CapabilityNotSupportedError(adapter.platform, "Shell");
65
+ }
66
+ return adapter;
67
+ }
39
68
  //# sourceMappingURL=platform-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform-adapter.js","sourceRoot":"","sources":["../../src/adapters/platform-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AA4EH,wCAAwC;AAExC,MAAM,UAAU,gBAAgB,CAAC,OAA4B;IAC3D,OAAO,CACL,WAAW,IAAI,OAAO;QACtB,SAAS,IAAI,OAAO;QACpB,YAAY,IAAI,OAAO,CACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAA4B;IACzD,OAAO,CACL,iBAAiB,IAAI,OAAO;QAC5B,kBAAkB,IAAI,OAAO;QAC7B,kBAAkB,IAAI,OAAO,CAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAA4B;IACnD,OAAO,CACL,OAAO,IAAI,OAAO;QAClB,SAAS,IAAI,OAAO;QACpB,WAAW,IAAI,OAAO,CACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAA4B;IAC5D,OAAO,eAAe,IAAI,OAAO,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"platform-adapter.js","sourceRoot":"","sources":["../../src/adapters/platform-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AA4EH,wCAAwC;AAExC,MAAM,UAAU,gBAAgB,CAAC,OAA4B;IAC3D,OAAO,CACL,WAAW,IAAI,OAAO;QACtB,SAAS,IAAI,OAAO;QACpB,YAAY,IAAI,OAAO,CACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAA4B;IACzD,OAAO,CACL,iBAAiB,IAAI,OAAO;QAC5B,kBAAkB,IAAI,OAAO;QAC7B,kBAAkB,IAAI,OAAO,CAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAA4B;IACnD,OAAO,CACL,OAAO,IAAI,OAAO;QAClB,SAAS,IAAI,OAAO;QACpB,WAAW,IAAI,OAAO,CACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAA4B;IAC5D,OAAO,eAAe,IAAI,OAAO,CAAC;AACpC,CAAC;AAED,2DAA2D;AAE3D,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACxB;IAAoC;IAAhE,YAA4B,QAAkB,EAAkB,UAAkB;QAChF,KAAK,CAAC,eAAe,UAAU,mCAAmC,QAAQ,IAAI,CAAC,CAAC;QADtD,aAAQ,GAAR,QAAQ,CAAU;QAAkB,eAAU,GAAV,UAAU,CAAQ;QAEhF,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AAED,MAAM,UAAU,oBAAoB,CAClC,OAA4B;IAE5B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,2BAA2B,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAA4B;IAE5B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,2BAA2B,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,OAA4B;IAE5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,2BAA2B,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,3 +1,8 @@
1
+ import { type LogcatOptions } from "./logcat.js";
2
+ export { escapeAndroidInputText, splitArgs } from "./text-escape.js";
3
+ export { UiTreeCache } from "./ui-tree-cache.js";
4
+ export { ANDROID_KEYCODES, ANDROID_KEYCODES_FAST, resolveKeyCode } from "./keycodes.js";
5
+ export { EXEC_TIMEOUT_MS, EXEC_RAW_TIMEOUT_MS, execAdb, execAdbAsync, execAdbRaw, execAdbRawAsync, } from "./exec.js";
1
6
  export interface Device {
2
7
  id: string;
3
8
  state: string;
@@ -5,12 +10,9 @@ export interface Device {
5
10
  }
6
11
  export declare class AdbClient {
7
12
  private deviceId?;
8
- private uiTreeCache;
9
- private uiTreeCacheTTL;
13
+ private readonly uiTreeCache;
10
14
  constructor(deviceId?: string);
11
15
  private get deviceFlag();
12
- /** Build device-flag argv slice for a specific deviceId override or fall back to instance default. */
13
- private deviceArgs;
14
16
  /**
15
17
  * SECURITY: All adb invocations route through this argv-form path (execFileSync — no /bin/sh -c).
16
18
  * Shell metacharacters in `args` are passed as literal argv slots, not parsed by the host shell.
@@ -118,11 +120,6 @@ export declare class AdbClient {
118
120
  * so the next getUiHierarchy call fetches fresh data.
119
121
  */
120
122
  invalidateUiTreeCache(): void;
121
- /**
122
- * Strip the "UI hierachy dumped to: /dev/tty" prefix that some devices
123
- * prepend when dumping to stdout via /dev/tty.
124
- */
125
- private stripDumpPrefix;
126
123
  /**
127
124
  * Get UI hierarchy XML (sync — blocks event loop)
128
125
  */
@@ -215,13 +212,7 @@ export declare class AdbClient {
215
212
  * Get device logs (logcat)
216
213
  * @param options - filter options
217
214
  */
218
- getLogs(options?: {
219
- tag?: string;
220
- level?: "V" | "D" | "I" | "W" | "E" | "F";
221
- lines?: number;
222
- since?: string;
223
- package?: string;
224
- }): string;
215
+ getLogs(options?: LogcatOptions): string;
225
216
  /**
226
217
  * Clear logcat buffer
227
218
  */
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/adb/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/adb/client.ts"],"names":[],"mappings":"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"}
@@ -1,47 +1,21 @@
1
- import { execFile, execFileSync } from "child_process";
2
- import { promisify } from "util";
3
- import { classifyAdbError } from "../errors.js";
1
+ import { execFileSync } from "child_process";
4
2
  import { resolveAdbPath } from "./resolver.js";
5
- import { validatePackageName, validatePermission, validateDeviceId, validateLogTag, validateLogTimestamp } from "../utils/sanitize.js";
6
- const execFileAsync = promisify(execFile);
7
- const EXEC_TIMEOUT_MS = 15_000; // 15s for text commands
8
- const EXEC_RAW_TIMEOUT_MS = 30_000; // 30s for binary (screenshots)
9
- /**
10
- * Split a whitespace-separated command into argv tokens.
11
- * Safe for commands that do not contain shell-quoted strings.
12
- * For commands with spaces inside arguments (e.g. text input), use execArgs() directly.
13
- */
14
- function splitArgs(command) {
15
- return command.split(/\s+/).filter(Boolean);
16
- }
17
- /**
18
- * Escape user text for safe embedding inside a double-quoted `input text "..."` on the
19
- * device shell. The OUTER context (host shell) never parses this string — it travels as a
20
- * single argv slot to adb (see inputText/inputTextAsync). Escaping covers only device-side
21
- * shell metacharacters within double quotes plus Android `input`'s `%s`-for-space quirk.
22
- */
23
- function escapeAndroidInputText(text) {
24
- return text
25
- .replace(/[\n\r]/g, "")
26
- .replace(/\\/g, "\\\\")
27
- .replace(/"/g, '\\"')
28
- .replace(/'/g, "\\'")
29
- .replace(/`/g, "\\`")
30
- .replace(/\$/g, "\\$")
31
- .replace(/ /g, "%s")
32
- .replace(/&/g, "\\&")
33
- .replace(/\(/g, "\\(")
34
- .replace(/\)/g, "\\)")
35
- .replace(/</g, "\\<")
36
- .replace(/>/g, "\\>")
37
- .replace(/\|/g, "\\|")
38
- .replace(/;/g, "\\;");
39
- }
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";
40
15
  export class AdbClient {
41
16
  deviceId;
42
17
  // Turbo: UI tree TTL cache (active only when turbo=true is passed)
43
- uiTreeCache = null;
44
- uiTreeCacheTTL = 500; // ms
18
+ uiTreeCache = new UiTreeCache(500);
45
19
  constructor(deviceId) {
46
20
  if (deviceId) {
47
21
  validateDeviceId(deviceId);
@@ -51,72 +25,19 @@ export class AdbClient {
51
25
  get deviceFlag() {
52
26
  return this.deviceId ? `-s ${this.deviceId}` : "";
53
27
  }
54
- /** Build device-flag argv slice for a specific deviceId override or fall back to instance default. */
55
- deviceArgs(deviceIdOverride) {
56
- const id = deviceIdOverride ?? this.deviceId;
57
- return id ? ["-s", id] : [];
58
- }
59
28
  /**
60
29
  * SECURITY: All adb invocations route through this argv-form path (execFileSync — no /bin/sh -c).
61
30
  * Shell metacharacters in `args` are passed as literal argv slots, not parsed by the host shell.
62
31
  * This structurally prevents host-side OS Command Injection (CWE-78) — see issue #40.
63
32
  */
64
33
  execArgs(args, deviceIdOverride) {
65
- const adbBin = resolveAdbPath();
66
- const fullArgs = [...this.deviceArgs(deviceIdOverride), ...args];
67
- try {
68
- return execFileSync(adbBin, fullArgs, {
69
- encoding: "utf-8",
70
- timeout: EXEC_TIMEOUT_MS,
71
- maxBuffer: 50 * 1024 * 1024,
72
- }).trim();
73
- }
74
- catch (error) {
75
- const e = error;
76
- const display = `adb ${fullArgs.join(" ")}`;
77
- if (e.killed === true || e.signal === "SIGTERM") {
78
- throw new Error(`ADB command timed out after ${EXEC_TIMEOUT_MS}ms: ${display}. Device may be disconnected or screen locked.`);
79
- }
80
- throw classifyAdbError(e.stderr?.toString() ?? e.message ?? String(error), display);
81
- }
34
+ return execAdb(args, deviceIdOverride ?? this.deviceId);
82
35
  }
83
36
  execArgsRaw(args, deviceIdOverride) {
84
- const adbBin = resolveAdbPath();
85
- const fullArgs = [...this.deviceArgs(deviceIdOverride), ...args];
86
- try {
87
- return execFileSync(adbBin, fullArgs, {
88
- timeout: EXEC_RAW_TIMEOUT_MS,
89
- maxBuffer: 50 * 1024 * 1024,
90
- });
91
- }
92
- catch (error) {
93
- const e = error;
94
- const display = `adb ${fullArgs.join(" ")}`;
95
- if (e.killed === true || e.signal === "SIGTERM") {
96
- throw new Error(`ADB command timed out after ${EXEC_RAW_TIMEOUT_MS}ms: ${display}. Device may be disconnected or screen locked.`);
97
- }
98
- throw classifyAdbError(e.stderr?.toString() ?? e.message ?? String(error), display);
99
- }
37
+ return execAdbRaw(args, deviceIdOverride ?? this.deviceId);
100
38
  }
101
39
  async execArgsAsync(args, deviceIdOverride) {
102
- const adbBin = resolveAdbPath();
103
- const fullArgs = [...this.deviceArgs(deviceIdOverride), ...args];
104
- try {
105
- const { stdout } = await execFileAsync(adbBin, fullArgs, {
106
- timeout: EXEC_TIMEOUT_MS,
107
- maxBuffer: 50 * 1024 * 1024,
108
- encoding: "utf-8",
109
- });
110
- return stdout.trim();
111
- }
112
- catch (error) {
113
- const e = error;
114
- const display = `adb ${fullArgs.join(" ")}`;
115
- if (e.killed === true || e.signal === "SIGTERM") {
116
- throw new Error(`ADB command timed out after ${EXEC_TIMEOUT_MS}ms: ${display}. Device may be disconnected or screen locked.`);
117
- }
118
- throw classifyAdbError(e.stderr?.toString() ?? e.message ?? String(error), display);
119
- }
40
+ return execAdbAsync(args, deviceIdOverride ?? this.deviceId);
120
41
  }
121
42
  /**
122
43
  * Execute ADB command and return stdout as string.
@@ -143,24 +64,7 @@ export class AdbClient {
143
64
  * Execute ADB command async and return raw bytes (for screenshots)
144
65
  */
145
66
  async execRawAsync(command, deviceIdOverride) {
146
- const adbBin = resolveAdbPath();
147
- const fullArgs = [...this.deviceArgs(deviceIdOverride), ...splitArgs(command)];
148
- try {
149
- const { stdout } = await execFileAsync(adbBin, fullArgs, {
150
- timeout: EXEC_RAW_TIMEOUT_MS,
151
- maxBuffer: 50 * 1024 * 1024,
152
- encoding: "buffer",
153
- });
154
- return stdout;
155
- }
156
- catch (error) {
157
- const e = error;
158
- const display = `adb ${fullArgs.join(" ")}`;
159
- if (e.killed === true || e.signal === "SIGTERM") {
160
- throw new Error(`ADB command timed out after ${EXEC_RAW_TIMEOUT_MS}ms: ${display}. Device may be disconnected or screen locked.`);
161
- }
162
- throw classifyAdbError(e.stderr?.toString() ?? e.message ?? String(error), display);
163
- }
67
+ return execAdbRawAsync(splitArgs(command), deviceIdOverride ?? this.deviceId);
164
68
  }
165
69
  /**
166
70
  * Get list of connected devices
@@ -168,20 +72,7 @@ export class AdbClient {
168
72
  getDevices() {
169
73
  const adbBin = resolveAdbPath();
170
74
  const output = execFileSync(adbBin, ["devices", "-l"], { encoding: "utf-8", timeout: EXEC_TIMEOUT_MS });
171
- const lines = output.split("\n").slice(1); // Skip header
172
- return lines
173
- .filter(line => line.trim())
174
- .map(line => {
175
- const parts = line.split(/\s+/);
176
- const id = parts[0];
177
- const state = parts[1];
178
- const modelMatch = line.match(/model:(\S+)/);
179
- return {
180
- id,
181
- state,
182
- model: modelMatch?.[1]
183
- };
184
- });
75
+ return parseDevicesOutput(output);
185
76
  }
186
77
  /**
187
78
  * Set active device
@@ -261,8 +152,7 @@ export class AdbClient {
261
152
  catch {
262
153
  try {
263
154
  const result = this.exec("shell am broadcast -a clipper.get");
264
- const match = result.match(/data="([^"]*)"/);
265
- return match?.[1] ?? "(clipboard not available)";
155
+ return parseClipboardBroadcast(result) ?? "(clipboard not available)";
266
156
  }
267
157
  catch {
268
158
  return "(clipboard access not available — requires API 29+ or clipper app)";
@@ -286,10 +176,7 @@ export class AdbClient {
286
176
  */
287
177
  swipeDirection(direction, distance = 800) {
288
178
  // Get screen size
289
- const sizeOutput = this.exec("shell wm size");
290
- const match = sizeOutput.match(/(\d+)x(\d+)/);
291
- const width = match ? parseInt(match[1]) : 1080;
292
- const height = match ? parseInt(match[2]) : 1920;
179
+ const { width, height } = parseScreenSize(this.exec("shell wm size"));
293
180
  const centerX = Math.floor(width / 2);
294
181
  const centerY = Math.floor(height / 2);
295
182
  const coords = {
@@ -316,47 +203,7 @@ export class AdbClient {
316
203
  * Press key by name or keycode
317
204
  */
318
205
  pressKey(key) {
319
- const keyCodes = {
320
- "BACK": 4,
321
- "HOME": 3,
322
- "MENU": 82,
323
- "ENTER": 66,
324
- "TAB": 61,
325
- "DELETE": 67,
326
- "BACKSPACE": 67,
327
- "POWER": 26,
328
- "VOLUME_UP": 24,
329
- "VOLUME_DOWN": 25,
330
- "VOLUME_MUTE": 164,
331
- "CAMERA": 27,
332
- "APP_SWITCH": 187,
333
- "DPAD_UP": 19,
334
- "DPAD_DOWN": 20,
335
- "DPAD_LEFT": 21,
336
- "DPAD_RIGHT": 22,
337
- "DPAD_CENTER": 23,
338
- "SEARCH": 84,
339
- "ESCAPE": 111,
340
- "SPACE": 62,
341
- "WAKEUP": 224,
342
- "SLEEP": 223,
343
- "BRIGHTNESS_UP": 221,
344
- "BRIGHTNESS_DOWN": 220,
345
- "MEDIA_PLAY_PAUSE": 85,
346
- "MEDIA_NEXT": 87,
347
- "MEDIA_PREVIOUS": 88,
348
- "MEDIA_STOP": 86,
349
- "MUTE": 91,
350
- "NOTIFICATION": 83,
351
- "SETTINGS": 176,
352
- "COPY": 278,
353
- "PASTE": 279,
354
- "CUT": 277,
355
- };
356
- const keyCode = keyCodes[key.toUpperCase()] ?? parseInt(key);
357
- if (isNaN(keyCode)) {
358
- throw new Error(`Unknown key: ${key}`);
359
- }
206
+ const keyCode = resolveKeyCode(key, ANDROID_KEYCODES);
360
207
  this.exec(`shell input keyevent ${keyCode}`);
361
208
  }
362
209
  /**
@@ -365,54 +212,48 @@ export class AdbClient {
365
212
  * so the next getUiHierarchy call fetches fresh data.
366
213
  */
367
214
  invalidateUiTreeCache() {
368
- this.uiTreeCache = null;
369
- }
370
- /**
371
- * Strip the "UI hierachy dumped to: /dev/tty" prefix that some devices
372
- * prepend when dumping to stdout via /dev/tty.
373
- */
374
- stripDumpPrefix(raw) {
375
- const idx = raw.indexOf("<?xml");
376
- if (idx > 0)
377
- return raw.slice(idx);
378
- return raw;
215
+ this.uiTreeCache.invalidate();
379
216
  }
380
217
  /**
381
218
  * Get UI hierarchy XML (sync — blocks event loop)
382
219
  */
383
220
  getUiHierarchy(turbo) {
384
- if (turbo && this.uiTreeCache && Date.now() - this.uiTreeCache.timestamp < this.uiTreeCacheTTL) {
385
- return this.uiTreeCache.xml;
221
+ if (turbo) {
222
+ const cached = this.uiTreeCache.get();
223
+ if (cached !== null)
224
+ return cached;
386
225
  }
387
226
  let xml;
388
227
  if (turbo) {
389
228
  // Single ADB call: pipe XML directly to stdout
390
- xml = this.stripDumpPrefix(this.exec("exec-out uiautomator dump /dev/tty"));
229
+ xml = stripDumpPrefix(this.exec("exec-out uiautomator dump /dev/tty"));
391
230
  }
392
231
  else {
393
232
  this.exec("shell uiautomator dump /sdcard/ui.xml");
394
233
  xml = this.exec("shell cat /sdcard/ui.xml");
395
234
  }
396
- this.uiTreeCache = { xml, timestamp: Date.now() };
235
+ this.uiTreeCache.set(xml);
397
236
  return xml;
398
237
  }
399
238
  /**
400
239
  * Get UI hierarchy XML async (non-blocking)
401
240
  */
402
241
  async getUiHierarchyAsync(turbo) {
403
- if (turbo && this.uiTreeCache && Date.now() - this.uiTreeCache.timestamp < this.uiTreeCacheTTL) {
404
- return this.uiTreeCache.xml;
242
+ if (turbo) {
243
+ const cached = this.uiTreeCache.get();
244
+ if (cached !== null)
245
+ return cached;
405
246
  }
406
247
  let xml;
407
248
  if (turbo) {
408
249
  // Single ADB call: pipe XML directly to stdout
409
- xml = this.stripDumpPrefix(await this.execAsync("exec-out uiautomator dump /dev/tty"));
250
+ xml = stripDumpPrefix(await this.execAsync("exec-out uiautomator dump /dev/tty"));
410
251
  }
411
252
  else {
412
253
  await this.execAsync("shell uiautomator dump /sdcard/ui.xml");
413
254
  xml = await this.execAsync("shell cat /sdcard/ui.xml");
414
255
  }
415
- this.uiTreeCache = { xml, timestamp: Date.now() };
256
+ this.uiTreeCache.set(xml);
416
257
  return xml;
417
258
  }
418
259
  /**
@@ -427,17 +268,7 @@ export class AdbClient {
427
268
  async execWithUiDump(actionCommand, deviceIdOverride) {
428
269
  const combined = `${actionCommand} && uiautomator dump /dev/tty`;
429
270
  const raw = await this.execArgsAsync(["shell", "sh", "-c", combined], deviceIdOverride);
430
- // Split output: everything before XML is action output, XML starts with <?xml or <hierarchy
431
- const xmlStart = raw.indexOf("<?xml");
432
- const xmlStartAlt = raw.indexOf("<hierarchy");
433
- const splitIdx = xmlStart >= 0 ? xmlStart : xmlStartAlt;
434
- if (splitIdx < 0) {
435
- // No XML found — dump may have failed, return action output only
436
- return { actionOutput: raw.trim(), uiXml: "" };
437
- }
438
- const actionOutput = raw.substring(0, splitIdx).trim();
439
- const uiXml = this.stripDumpPrefix(raw.substring(splitIdx));
440
- return { actionOutput, uiXml };
271
+ return splitActionAndUiXml(raw);
441
272
  }
442
273
  /**
443
274
  * Tap at coordinates (async, non-blocking — for turbo mode).
@@ -455,16 +286,7 @@ export class AdbClient {
455
286
  * Press key (async, non-blocking — for turbo mode).
456
287
  */
457
288
  async pressKeyAsync(key, deviceIdOverride) {
458
- const keyCodes = {
459
- "BACK": 4, "HOME": 3, "MENU": 82, "ENTER": 66, "TAB": 61,
460
- "DELETE": 67, "BACKSPACE": 67, "POWER": 26, "VOLUME_UP": 24,
461
- "VOLUME_DOWN": 25, "ESCAPE": 111, "SPACE": 62, "DPAD_UP": 19,
462
- "DPAD_DOWN": 20, "DPAD_LEFT": 21, "DPAD_RIGHT": 22,
463
- };
464
- const keyCode = keyCodes[key.toUpperCase()] ?? parseInt(key);
465
- if (isNaN(keyCode)) {
466
- throw new Error(`Unknown key: ${key}`);
467
- }
289
+ const keyCode = resolveKeyCode(key, ANDROID_KEYCODES_FAST);
468
290
  await this.execAsync(`shell input keyevent ${keyCode}`, deviceIdOverride);
469
291
  }
470
292
  /**
@@ -482,10 +304,10 @@ export class AdbClient {
482
304
  // Try to get launch activity
483
305
  try {
484
306
  const output = this.exec(`shell cmd package resolve-activity --brief ${packageName}`);
485
- const activity = output.split("\n").find(line => line.includes("/"));
307
+ const activity = parseLaunchActivity(output);
486
308
  if (activity) {
487
- this.exec(`shell am start -n ${activity.trim()}`);
488
- return `Launched ${activity.trim()}`;
309
+ this.exec(`shell am start -n ${activity}`);
310
+ return `Launched ${activity}`;
489
311
  }
490
312
  }
491
313
  catch {
@@ -549,41 +371,22 @@ export class AdbClient {
549
371
  */
550
372
  getCurrentActivity() {
551
373
  try {
552
- // Get focused activity (works on most Android versions)
553
374
  const output = this.exec("shell dumpsys activity activities");
554
- // Try different patterns for different Android versions
555
- const patterns = [
556
- /mResumedActivity[^}]*?(\S+\/\.\S+)/, // Android 10+
557
- /mResumedActivity[^}]*?(\S+\/\S+)/, // Generic
558
- /resumedActivity[^}]*?(\S+\/\S+)/, // Some versions
559
- /topResumedActivity[^}]*?(\S+\/\S+)/, // Android 12+
560
- /mFocusedActivity[^}]*?(\S+\/\S+)/, // Older Android
561
- /ResumedActivity[^}]*?(\S+\/\S+)/i, // Case-insensitive fallback
562
- ];
563
- for (const pattern of patterns) {
564
- const match = output.match(pattern);
565
- if (match?.[1]) {
566
- return match[1];
567
- }
568
- }
375
+ const resumed = parseCurrentActivityFromActivities(output);
376
+ if (resumed)
377
+ return resumed;
569
378
  // Fallback: try getting current focus from window manager
570
379
  const wmOutput = this.exec("shell dumpsys window windows");
571
- const focusMatch = wmOutput.match(/mCurrentFocus[^}]*?(\S+\/\S+)/);
572
- if (focusMatch?.[1]) {
573
- return focusMatch[1];
574
- }
380
+ const focused = parseCurrentFocusFromWindows(wmOutput);
381
+ if (focused)
382
+ return focused;
575
383
  return "unknown";
576
384
  }
577
385
  catch {
578
386
  // Try alternative method — Node-side filter replaces device-side `| grep`.
579
387
  try {
580
388
  const output = this.execArgs(["shell", "dumpsys", "window"]);
581
- const filtered = output
582
- .split("\n")
583
- .filter(line => /mCurrentFocus|mFocusedApp/.test(line))
584
- .join("\n");
585
- const match = filtered.match(/(\S+\/\S+)/);
586
- return match?.[1] ?? "unknown";
389
+ return parseFocusFromDumpsysWindow(output) ?? "unknown";
587
390
  }
588
391
  catch {
589
392
  return "unknown (could not determine)";
@@ -594,12 +397,7 @@ export class AdbClient {
594
397
  * Get screen size
595
398
  */
596
399
  getScreenSize() {
597
- const output = this.exec("shell wm size");
598
- const match = output.match(/(\d+)x(\d+)/);
599
- return {
600
- width: match ? parseInt(match[1]) : 1080,
601
- height: match ? parseInt(match[2]) : 1920
602
- };
400
+ return parseScreenSize(this.exec("shell wm size"));
603
401
  }
604
402
  /**
605
403
  * Wait for device
@@ -618,31 +416,9 @@ export class AdbClient {
618
416
  * @param options - filter options
619
417
  */
620
418
  getLogs(options = {}) {
621
- const args = ["shell", "logcat", "-d"];
622
- if (options.level) {
623
- args.push(`*:${options.level}`);
624
- }
625
- if (options.tag) {
626
- validateLogTag(options.tag);
627
- args.push("-s", options.tag);
628
- }
629
- if (options.lines) {
630
- args.push("-t", String(Math.trunc(options.lines)));
631
- }
632
- if (options.since) {
633
- validateLogTimestamp(options.since);
634
- args.push("-t", options.since);
635
- }
419
+ const args = buildLogcatArgs(options);
636
420
  const output = this.execArgs(args);
637
- // Filter by package if specified
638
- if (options.package) {
639
- const lines = output.split("\n");
640
- const filtered = lines.filter(line => line.includes(options.package) ||
641
- line.match(/^\d+-\d+\s+\d+:\d+/) // Keep timestamp lines
642
- );
643
- return filtered.join("\n");
644
- }
645
- return output;
421
+ return options.package ? filterLogsByPackage(output, options.package) : output;
646
422
  }
647
423
  /**
648
424
  * Clear logcat buffer