claude-in-mobile 3.14.0 → 4.0.0-dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/README.md +61 -574
  2. package/dist/a11y/types.d.ts +1 -1
  3. package/dist/a11y/types.d.ts.map +1 -1
  4. package/dist/adapters/contracts.d.ts +66 -0
  5. package/dist/adapters/contracts.d.ts.map +1 -0
  6. package/dist/adapters/contracts.js +15 -0
  7. package/dist/adapters/contracts.js.map +1 -0
  8. package/dist/adapters/index.d.ts +0 -5
  9. package/dist/adapters/index.d.ts.map +1 -1
  10. package/dist/adapters/index.js +1 -5
  11. package/dist/adapters/index.js.map +1 -1
  12. package/dist/autopilot/explorer.js +1 -1
  13. package/dist/autopilot/explorer.js.map +1 -1
  14. package/dist/autopilot/healer.d.ts +1 -1
  15. package/dist/autopilot/healer.d.ts.map +1 -1
  16. package/dist/autopilot/screen-fingerprint.d.ts +1 -1
  17. package/dist/autopilot/screen-fingerprint.d.ts.map +1 -1
  18. package/dist/autopilot/types.d.ts +1 -1
  19. package/dist/autopilot/types.d.ts.map +1 -1
  20. package/dist/device/client-cache.d.ts +1 -1
  21. package/dist/device/client-cache.d.ts.map +1 -1
  22. package/dist/device/client-cache.js +4 -24
  23. package/dist/device/client-cache.js.map +1 -1
  24. package/dist/device/proxies/desktop-facade.d.ts +5 -8
  25. package/dist/device/proxies/desktop-facade.d.ts.map +1 -1
  26. package/dist/device/proxies/desktop-facade.js +12 -14
  27. package/dist/device/proxies/desktop-facade.js.map +1 -1
  28. package/dist/device-manager.d.ts +16 -16
  29. package/dist/device-manager.d.ts.map +1 -1
  30. package/dist/device-manager.js +23 -17
  31. package/dist/device-manager.js.map +1 -1
  32. package/dist/index.js +21 -6
  33. package/dist/index.js.map +1 -1
  34. package/dist/perf/collector.d.ts +5 -5
  35. package/dist/perf/collector.d.ts.map +1 -1
  36. package/dist/perf/collector.js.map +1 -1
  37. package/dist/runtime/bootstrap.d.ts +7 -0
  38. package/dist/runtime/bootstrap.d.ts.map +1 -1
  39. package/dist/runtime/bootstrap.js +87 -15
  40. package/dist/runtime/bootstrap.js.map +1 -1
  41. package/dist/runtime/cli.d.ts.map +1 -1
  42. package/dist/runtime/cli.js +14 -0
  43. package/dist/runtime/cli.js.map +1 -1
  44. package/dist/runtime/platform-cli.d.ts +24 -0
  45. package/dist/runtime/platform-cli.d.ts.map +1 -0
  46. package/dist/runtime/platform-cli.js +116 -0
  47. package/dist/runtime/platform-cli.js.map +1 -0
  48. package/dist/runtime/platform-config.d.ts +21 -0
  49. package/dist/runtime/platform-config.d.ts.map +1 -0
  50. package/dist/runtime/platform-config.js +71 -0
  51. package/dist/runtime/platform-config.js.map +1 -0
  52. package/dist/tools/browser-tools.js.map +1 -1
  53. package/dist/tools/clipboard-tools.js +1 -1
  54. package/dist/tools/clipboard-tools.js.map +1 -1
  55. package/dist/tools/context/hints.d.ts +1 -1
  56. package/dist/tools/context/hints.d.ts.map +1 -1
  57. package/dist/tools/context/hints.js +1 -1
  58. package/dist/tools/context/hints.js.map +1 -1
  59. package/dist/tools/context/ios-helpers.d.ts +1 -1
  60. package/dist/tools/context/ios-helpers.d.ts.map +1 -1
  61. package/dist/tools/context/shared-state-class.d.ts +1 -1
  62. package/dist/tools/context/shared-state-class.d.ts.map +1 -1
  63. package/dist/tools/context/shared-state.d.ts +1 -1
  64. package/dist/tools/context/shared-state.d.ts.map +1 -1
  65. package/dist/tools/context.d.ts +2 -1
  66. package/dist/tools/context.d.ts.map +1 -1
  67. package/dist/tools/context.js +17 -9
  68. package/dist/tools/context.js.map +1 -1
  69. package/dist/tools/desktop-tools.d.ts.map +1 -1
  70. package/dist/tools/desktop-tools.js.map +1 -1
  71. package/dist/tools/flow/common.js +1 -1
  72. package/dist/tools/flow/common.js.map +1 -1
  73. package/dist/tools/flow/run.js +1 -1
  74. package/dist/tools/flow/run.js.map +1 -1
  75. package/dist/tools/helpers/get-elements.d.ts +1 -1
  76. package/dist/tools/helpers/get-elements.d.ts.map +1 -1
  77. package/dist/tools/helpers/get-elements.js +1 -1
  78. package/dist/tools/helpers/get-elements.js.map +1 -1
  79. package/dist/tools/helpers/resolve-element.js +1 -1
  80. package/dist/tools/helpers/resolve-element.js.map +1 -1
  81. package/dist/tools/screenshot-tools.js +1 -1
  82. package/dist/tools/screenshot-tools.js.map +1 -1
  83. package/dist/tools/ui/analyze.js +1 -1
  84. package/dist/tools/ui/analyze.js.map +1 -1
  85. package/dist/tools/ui/assert.js +1 -1
  86. package/dist/tools/ui/assert.js.map +1 -1
  87. package/dist/tools/ui/find.js +1 -1
  88. package/dist/tools/ui/find.js.map +1 -1
  89. package/dist/tools/ui/tree.js +1 -1
  90. package/dist/tools/ui/tree.js.map +1 -1
  91. package/dist/tools/ui/wait.js +1 -1
  92. package/dist/tools/ui/wait.js.map +1 -1
  93. package/dist/ui-tree/ui-parser/diff-engine.d.ts.map +1 -0
  94. package/dist/ui-tree/ui-parser/diff-engine.js.map +1 -0
  95. package/dist/ui-tree/ui-parser/element-builder.d.ts.map +1 -0
  96. package/dist/ui-tree/ui-parser/element-builder.js.map +1 -0
  97. package/dist/ui-tree/ui-parser/element-finders.d.ts.map +1 -0
  98. package/dist/ui-tree/ui-parser/element-finders.js.map +1 -0
  99. package/dist/ui-tree/ui-parser/formatters/compact.d.ts.map +1 -0
  100. package/dist/ui-tree/ui-parser/formatters/compact.js.map +1 -0
  101. package/dist/ui-tree/ui-parser/formatters/full.d.ts.map +1 -0
  102. package/dist/ui-tree/ui-parser/formatters/full.js.map +1 -0
  103. package/dist/ui-tree/ui-parser/formatters/index.d.ts.map +1 -0
  104. package/dist/ui-tree/ui-parser/formatters/index.js.map +1 -0
  105. package/dist/ui-tree/ui-parser/formatters/semantic.d.ts.map +1 -0
  106. package/dist/ui-tree/ui-parser/formatters/semantic.js.map +1 -0
  107. package/dist/ui-tree/ui-parser/node-parser.d.ts.map +1 -0
  108. package/dist/ui-tree/ui-parser/node-parser.js.map +1 -0
  109. package/dist/ui-tree/ui-parser/screen-analyzer.d.ts.map +1 -0
  110. package/dist/ui-tree/ui-parser/screen-analyzer.js.map +1 -0
  111. package/dist/ui-tree/ui-parser/types.d.ts.map +1 -0
  112. package/dist/ui-tree/ui-parser/types.js.map +1 -0
  113. package/dist/ui-tree/ui-parser.d.ts.map +1 -0
  114. package/dist/ui-tree/ui-parser.js.map +1 -0
  115. package/dist/ui-tree/ui-scoring.d.ts.map +1 -0
  116. package/dist/ui-tree/ui-scoring.js.map +1 -0
  117. package/dist/ui-tree/ui-tree-cache.d.ts.map +1 -0
  118. package/dist/ui-tree/ui-tree-cache.js.map +1 -0
  119. package/dist/utils/image/annotate.d.ts +1 -1
  120. package/dist/utils/image/annotate.d.ts.map +1 -1
  121. package/package.json +11 -6
  122. package/dist/adapters/android-adapter.d.ts +0 -64
  123. package/dist/adapters/android-adapter.d.ts.map +0 -1
  124. package/dist/adapters/android-adapter.js +0 -164
  125. package/dist/adapters/android-adapter.js.map +0 -1
  126. package/dist/adapters/aurora-adapter.d.ts +0 -56
  127. package/dist/adapters/aurora-adapter.d.ts.map +0 -1
  128. package/dist/adapters/aurora-adapter.js +0 -118
  129. package/dist/adapters/aurora-adapter.js.map +0 -1
  130. package/dist/adapters/browser-adapter.d.ts +0 -51
  131. package/dist/adapters/browser-adapter.d.ts.map +0 -1
  132. package/dist/adapters/browser-adapter.js +0 -223
  133. package/dist/adapters/browser-adapter.js.map +0 -1
  134. package/dist/adapters/desktop-adapter.d.ts +0 -64
  135. package/dist/adapters/desktop-adapter.d.ts.map +0 -1
  136. package/dist/adapters/desktop-adapter.js +0 -202
  137. package/dist/adapters/desktop-adapter.js.map +0 -1
  138. package/dist/adapters/ios-adapter.d.ts +0 -60
  139. package/dist/adapters/ios-adapter.d.ts.map +0 -1
  140. package/dist/adapters/ios-adapter.js +0 -146
  141. package/dist/adapters/ios-adapter.js.map +0 -1
  142. package/dist/adb/client.d.ts +0 -238
  143. package/dist/adb/client.d.ts.map +0 -1
  144. package/dist/adb/client.js +0 -462
  145. package/dist/adb/client.js.map +0 -1
  146. package/dist/adb/exec.d.ts +0 -23
  147. package/dist/adb/exec.d.ts.map +0 -1
  148. package/dist/adb/exec.js +0 -98
  149. package/dist/adb/exec.js.map +0 -1
  150. package/dist/adb/index.d.ts +0 -5
  151. package/dist/adb/index.d.ts.map +0 -1
  152. package/dist/adb/index.js +0 -3
  153. package/dist/adb/index.js.map +0 -1
  154. package/dist/adb/keycodes.d.ts +0 -22
  155. package/dist/adb/keycodes.d.ts.map +0 -1
  156. package/dist/adb/keycodes.js +0 -69
  157. package/dist/adb/keycodes.js.map +0 -1
  158. package/dist/adb/logcat.d.ts +0 -23
  159. package/dist/adb/logcat.d.ts.map +0 -1
  160. package/dist/adb/logcat.js +0 -40
  161. package/dist/adb/logcat.js.map +0 -1
  162. package/dist/adb/parsers.d.ts +0 -60
  163. package/dist/adb/parsers.d.ts.map +0 -1
  164. package/dist/adb/parsers.js +0 -118
  165. package/dist/adb/parsers.js.map +0 -1
  166. package/dist/adb/resolver.d.ts +0 -24
  167. package/dist/adb/resolver.d.ts.map +0 -1
  168. package/dist/adb/resolver.js +0 -130
  169. package/dist/adb/resolver.js.map +0 -1
  170. package/dist/adb/text-escape.d.ts +0 -23
  171. package/dist/adb/text-escape.d.ts.map +0 -1
  172. package/dist/adb/text-escape.js +0 -41
  173. package/dist/adb/text-escape.js.map +0 -1
  174. package/dist/adb/ui-parser/diff-engine.d.ts.map +0 -1
  175. package/dist/adb/ui-parser/diff-engine.js.map +0 -1
  176. package/dist/adb/ui-parser/element-builder.d.ts.map +0 -1
  177. package/dist/adb/ui-parser/element-builder.js.map +0 -1
  178. package/dist/adb/ui-parser/element-finders.d.ts.map +0 -1
  179. package/dist/adb/ui-parser/element-finders.js.map +0 -1
  180. package/dist/adb/ui-parser/formatters/compact.d.ts.map +0 -1
  181. package/dist/adb/ui-parser/formatters/compact.js.map +0 -1
  182. package/dist/adb/ui-parser/formatters/full.d.ts.map +0 -1
  183. package/dist/adb/ui-parser/formatters/full.js.map +0 -1
  184. package/dist/adb/ui-parser/formatters/index.d.ts.map +0 -1
  185. package/dist/adb/ui-parser/formatters/index.js.map +0 -1
  186. package/dist/adb/ui-parser/formatters/semantic.d.ts.map +0 -1
  187. package/dist/adb/ui-parser/formatters/semantic.js.map +0 -1
  188. package/dist/adb/ui-parser/node-parser.d.ts.map +0 -1
  189. package/dist/adb/ui-parser/node-parser.js.map +0 -1
  190. package/dist/adb/ui-parser/screen-analyzer.d.ts.map +0 -1
  191. package/dist/adb/ui-parser/screen-analyzer.js.map +0 -1
  192. package/dist/adb/ui-parser/types.d.ts.map +0 -1
  193. package/dist/adb/ui-parser/types.js.map +0 -1
  194. package/dist/adb/ui-parser.d.ts.map +0 -1
  195. package/dist/adb/ui-parser.js.map +0 -1
  196. package/dist/adb/ui-scoring.d.ts.map +0 -1
  197. package/dist/adb/ui-scoring.js.map +0 -1
  198. package/dist/adb/ui-tree-cache.d.ts.map +0 -1
  199. package/dist/adb/ui-tree-cache.js.map +0 -1
  200. package/dist/adb/webview.d.ts +0 -59
  201. package/dist/adb/webview.d.ts.map +0 -1
  202. package/dist/adb/webview.js +0 -169
  203. package/dist/adb/webview.js.map +0 -1
  204. package/dist/aurora/client.d.ts +0 -180
  205. package/dist/aurora/client.d.ts.map +0 -1
  206. package/dist/aurora/client.js +0 -324
  207. package/dist/aurora/client.js.map +0 -1
  208. package/dist/aurora/index.d.ts +0 -2
  209. package/dist/aurora/index.d.ts.map +0 -1
  210. package/dist/aurora/index.js +0 -2
  211. package/dist/aurora/index.js.map +0 -1
  212. package/dist/browser/cdp-helpers.d.ts +0 -17
  213. package/dist/browser/cdp-helpers.d.ts.map +0 -1
  214. package/dist/browser/cdp-helpers.js +0 -79
  215. package/dist/browser/cdp-helpers.js.map +0 -1
  216. package/dist/browser/cdp-types.d.ts +0 -167
  217. package/dist/browser/cdp-types.d.ts.map +0 -1
  218. package/dist/browser/cdp-types.js +0 -9
  219. package/dist/browser/cdp-types.js.map +0 -1
  220. package/dist/browser/client.d.ts +0 -29
  221. package/dist/browser/client.d.ts.map +0 -1
  222. package/dist/browser/client.js +0 -391
  223. package/dist/browser/client.js.map +0 -1
  224. package/dist/browser/index.d.ts +0 -5
  225. package/dist/browser/index.d.ts.map +0 -1
  226. package/dist/browser/index.js +0 -4
  227. package/dist/browser/index.js.map +0 -1
  228. package/dist/browser/key-map.d.ts +0 -16
  229. package/dist/browser/key-map.d.ts.map +0 -1
  230. package/dist/browser/key-map.js +0 -35
  231. package/dist/browser/key-map.js.map +0 -1
  232. package/dist/browser/session-manager.d.ts +0 -21
  233. package/dist/browser/session-manager.d.ts.map +0 -1
  234. package/dist/browser/session-manager.js +0 -109
  235. package/dist/browser/session-manager.js.map +0 -1
  236. package/dist/browser/snapshot-builder.d.ts +0 -4
  237. package/dist/browser/snapshot-builder.d.ts.map +0 -1
  238. package/dist/browser/snapshot-builder.js +0 -76
  239. package/dist/browser/snapshot-builder.js.map +0 -1
  240. package/dist/browser/types.d.ts +0 -75
  241. package/dist/browser/types.d.ts.map +0 -1
  242. package/dist/browser/types.js +0 -11
  243. package/dist/browser/types.js.map +0 -1
  244. package/dist/desktop/client.d.ts +0 -196
  245. package/dist/desktop/client.d.ts.map +0 -1
  246. package/dist/desktop/client.js +0 -540
  247. package/dist/desktop/client.js.map +0 -1
  248. package/dist/desktop/gradle.d.ts +0 -45
  249. package/dist/desktop/gradle.d.ts.map +0 -1
  250. package/dist/desktop/gradle.js +0 -234
  251. package/dist/desktop/gradle.js.map +0 -1
  252. package/dist/desktop/index.d.ts +0 -7
  253. package/dist/desktop/index.d.ts.map +0 -1
  254. package/dist/desktop/index.js +0 -7
  255. package/dist/desktop/index.js.map +0 -1
  256. package/dist/desktop/launch-options.d.ts +0 -13
  257. package/dist/desktop/launch-options.d.ts.map +0 -1
  258. package/dist/desktop/launch-options.js +0 -54
  259. package/dist/desktop/launch-options.js.map +0 -1
  260. package/dist/desktop/launchers.d.ts +0 -52
  261. package/dist/desktop/launchers.d.ts.map +0 -1
  262. package/dist/desktop/launchers.js +0 -125
  263. package/dist/desktop/launchers.js.map +0 -1
  264. package/dist/desktop/log-ring.d.ts +0 -21
  265. package/dist/desktop/log-ring.d.ts.map +0 -1
  266. package/dist/desktop/log-ring.js +0 -45
  267. package/dist/desktop/log-ring.js.map +0 -1
  268. package/dist/desktop/permission-allowlist.d.ts +0 -47
  269. package/dist/desktop/permission-allowlist.d.ts.map +0 -1
  270. package/dist/desktop/permission-allowlist.js +0 -148
  271. package/dist/desktop/permission-allowlist.js.map +0 -1
  272. package/dist/desktop/types.d.ts +0 -177
  273. package/dist/desktop/types.d.ts.map +0 -1
  274. package/dist/desktop/types.js +0 -5
  275. package/dist/desktop/types.js.map +0 -1
  276. package/dist/ios/client.d.ts +0 -204
  277. package/dist/ios/client.d.ts.map +0 -1
  278. package/dist/ios/client.js +0 -483
  279. package/dist/ios/client.js.map +0 -1
  280. package/dist/ios/go-ios/client.d.ts +0 -23
  281. package/dist/ios/go-ios/client.d.ts.map +0 -1
  282. package/dist/ios/go-ios/client.js +0 -51
  283. package/dist/ios/go-ios/client.js.map +0 -1
  284. package/dist/ios/go-ios/index.d.ts +0 -4
  285. package/dist/ios/go-ios/index.d.ts.map +0 -1
  286. package/dist/ios/go-ios/index.js +0 -3
  287. package/dist/ios/go-ios/index.js.map +0 -1
  288. package/dist/ios/go-ios/parsers.d.ts +0 -28
  289. package/dist/ios/go-ios/parsers.d.ts.map +0 -1
  290. package/dist/ios/go-ios/parsers.js +0 -71
  291. package/dist/ios/go-ios/parsers.js.map +0 -1
  292. package/dist/ios/index.d.ts +0 -2
  293. package/dist/ios/index.d.ts.map +0 -1
  294. package/dist/ios/index.js +0 -2
  295. package/dist/ios/index.js.map +0 -1
  296. package/dist/ios/keymap.d.ts +0 -20
  297. package/dist/ios/keymap.d.ts.map +0 -1
  298. package/dist/ios/keymap.js +0 -33
  299. package/dist/ios/keymap.js.map +0 -1
  300. package/dist/ios/simctl-commands.d.ts +0 -35
  301. package/dist/ios/simctl-commands.d.ts.map +0 -1
  302. package/dist/ios/simctl-commands.js +0 -60
  303. package/dist/ios/simctl-commands.js.map +0 -1
  304. package/dist/ios/simctl-exec.d.ts +0 -19
  305. package/dist/ios/simctl-exec.d.ts.map +0 -1
  306. package/dist/ios/simctl-exec.js +0 -55
  307. package/dist/ios/simctl-exec.js.map +0 -1
  308. package/dist/ios/simctl-parsers.d.ts +0 -10
  309. package/dist/ios/simctl-parsers.d.ts.map +0 -1
  310. package/dist/ios/simctl-parsers.js +0 -29
  311. package/dist/ios/simctl-parsers.js.map +0 -1
  312. package/dist/ios/types.d.ts +0 -8
  313. package/dist/ios/types.d.ts.map +0 -1
  314. package/dist/ios/types.js +0 -2
  315. package/dist/ios/types.js.map +0 -1
  316. package/dist/ios/wda/index.d.ts +0 -4
  317. package/dist/ios/wda/index.d.ts.map +0 -1
  318. package/dist/ios/wda/index.js +0 -4
  319. package/dist/ios/wda/index.js.map +0 -1
  320. package/dist/ios/wda/wda-client.d.ts +0 -33
  321. package/dist/ios/wda/wda-client.d.ts.map +0 -1
  322. package/dist/ios/wda/wda-client.js +0 -250
  323. package/dist/ios/wda/wda-client.js.map +0 -1
  324. package/dist/ios/wda/wda-manager.d.ts +0 -34
  325. package/dist/ios/wda/wda-manager.d.ts.map +0 -1
  326. package/dist/ios/wda/wda-manager.js +0 -392
  327. package/dist/ios/wda/wda-manager.js.map +0 -1
  328. package/dist/ios/wda/wda-types.d.ts +0 -39
  329. package/dist/ios/wda/wda-types.d.ts.map +0 -1
  330. package/dist/ios/wda/wda-types.js +0 -2
  331. package/dist/ios/wda/wda-types.js.map +0 -1
  332. package/dist/ios/wda-errors.d.ts +0 -8
  333. package/dist/ios/wda-errors.d.ts.map +0 -1
  334. package/dist/ios/wda-errors.js +0 -13
  335. package/dist/ios/wda-errors.js.map +0 -1
  336. package/dist/ios/wda-payloads.d.ts +0 -32
  337. package/dist/ios/wda-payloads.d.ts.map +0 -1
  338. package/dist/ios/wda-payloads.js +0 -31
  339. package/dist/ios/wda-payloads.js.map +0 -1
  340. package/dist/plugins/android/index.d.ts +0 -23
  341. package/dist/plugins/android/index.d.ts.map +0 -1
  342. package/dist/plugins/android/index.js +0 -45
  343. package/dist/plugins/android/index.js.map +0 -1
  344. package/dist/plugins/aurora/index.d.ts +0 -17
  345. package/dist/plugins/aurora/index.d.ts.map +0 -1
  346. package/dist/plugins/aurora/index.js +0 -27
  347. package/dist/plugins/aurora/index.js.map +0 -1
  348. package/dist/plugins/desktop/index.d.ts +0 -18
  349. package/dist/plugins/desktop/index.d.ts.map +0 -1
  350. package/dist/plugins/desktop/index.js +0 -28
  351. package/dist/plugins/desktop/index.js.map +0 -1
  352. package/dist/plugins/ios/index.d.ts +0 -17
  353. package/dist/plugins/ios/index.d.ts.map +0 -1
  354. package/dist/plugins/ios/index.js +0 -36
  355. package/dist/plugins/ios/index.js.map +0 -1
  356. package/dist/plugins/web/index.d.ts +0 -17
  357. package/dist/plugins/web/index.d.ts.map +0 -1
  358. package/dist/plugins/web/index.js +0 -27
  359. package/dist/plugins/web/index.js.map +0 -1
  360. /package/dist/{adb → ui-tree}/ui-parser/diff-engine.d.ts +0 -0
  361. /package/dist/{adb → ui-tree}/ui-parser/diff-engine.js +0 -0
  362. /package/dist/{adb → ui-tree}/ui-parser/element-builder.d.ts +0 -0
  363. /package/dist/{adb → ui-tree}/ui-parser/element-builder.js +0 -0
  364. /package/dist/{adb → ui-tree}/ui-parser/element-finders.d.ts +0 -0
  365. /package/dist/{adb → ui-tree}/ui-parser/element-finders.js +0 -0
  366. /package/dist/{adb → ui-tree}/ui-parser/formatters/compact.d.ts +0 -0
  367. /package/dist/{adb → ui-tree}/ui-parser/formatters/compact.js +0 -0
  368. /package/dist/{adb → ui-tree}/ui-parser/formatters/full.d.ts +0 -0
  369. /package/dist/{adb → ui-tree}/ui-parser/formatters/full.js +0 -0
  370. /package/dist/{adb → ui-tree}/ui-parser/formatters/index.d.ts +0 -0
  371. /package/dist/{adb → ui-tree}/ui-parser/formatters/index.js +0 -0
  372. /package/dist/{adb → ui-tree}/ui-parser/formatters/semantic.d.ts +0 -0
  373. /package/dist/{adb → ui-tree}/ui-parser/formatters/semantic.js +0 -0
  374. /package/dist/{adb → ui-tree}/ui-parser/node-parser.d.ts +0 -0
  375. /package/dist/{adb → ui-tree}/ui-parser/node-parser.js +0 -0
  376. /package/dist/{adb → ui-tree}/ui-parser/screen-analyzer.d.ts +0 -0
  377. /package/dist/{adb → ui-tree}/ui-parser/screen-analyzer.js +0 -0
  378. /package/dist/{adb → ui-tree}/ui-parser/types.d.ts +0 -0
  379. /package/dist/{adb → ui-tree}/ui-parser/types.js +0 -0
  380. /package/dist/{adb → ui-tree}/ui-parser.d.ts +0 -0
  381. /package/dist/{adb → ui-tree}/ui-parser.js +0 -0
  382. /package/dist/{adb → ui-tree}/ui-scoring.d.ts +0 -0
  383. /package/dist/{adb → ui-tree}/ui-scoring.js +0 -0
  384. /package/dist/{adb → ui-tree}/ui-tree-cache.d.ts +0 -0
  385. /package/dist/{adb → ui-tree}/ui-tree-cache.js +0 -0
@@ -1,234 +0,0 @@
1
- /**
2
- * Gradle task detection and launcher for Compose Desktop projects
3
- */
4
- import { execFileSync, spawn } from "child_process";
5
- import * as path from "path";
6
- import * as fs from "fs";
7
- // Known desktop run task patterns
8
- const DESKTOP_TASK_PATTERNS = [
9
- ":desktopApp:run",
10
- ":composeApp:desktopRun",
11
- ":desktop:run",
12
- ":app:desktopRun",
13
- "desktopRun",
14
- "runDesktop",
15
- ];
16
- export class GradleLauncher {
17
- /**
18
- * Check if Gradle wrapper exists in project
19
- */
20
- hasGradleWrapper(projectPath) {
21
- const wrapperScript = process.platform === "win32" ? "gradlew.bat" : "gradlew";
22
- const wrapperPath = path.join(projectPath, wrapperScript);
23
- return fs.existsSync(wrapperPath);
24
- }
25
- /**
26
- * Get Gradle executable (wrapper or system gradle)
27
- */
28
- getGradleExecutable(projectPath) {
29
- if (this.hasGradleWrapper(projectPath)) {
30
- return process.platform === "win32"
31
- ? path.join(projectPath, "gradlew.bat")
32
- : path.join(projectPath, "gradlew");
33
- }
34
- return "gradle";
35
- }
36
- /**
37
- * Detect available desktop run tasks in the project
38
- */
39
- async detectDesktopTasks(projectPath) {
40
- const gradle = this.getGradleExecutable(projectPath);
41
- try {
42
- // Run gradle tasks and parse output
43
- // SECURITY: argv-form invocation (execFileSync) — no /bin/sh -c, shell metachars
44
- // in `gradle` path or args are passed literally. Mirrors src/adb/client.ts fix (#40).
45
- const output = execFileSync(gradle, ["tasks", "--all"], {
46
- cwd: projectPath,
47
- encoding: "utf-8",
48
- maxBuffer: 10 * 1024 * 1024,
49
- timeout: 60000,
50
- });
51
- const tasks = [];
52
- const lines = output.split("\n");
53
- for (const line of lines) {
54
- const trimmed = line.trim();
55
- // Look for task lines (format: "taskName - description" or just "taskName")
56
- const taskMatch = trimmed.match(/^(:\S+|[a-zA-Z]\S*)\s*(-|$)/);
57
- if (taskMatch) {
58
- const taskName = taskMatch[1];
59
- // Check if it matches known desktop patterns
60
- for (const pattern of DESKTOP_TASK_PATTERNS) {
61
- if (taskName.includes(pattern) ||
62
- taskName.toLowerCase().includes("desktop") && taskName.toLowerCase().includes("run")) {
63
- tasks.push(taskName);
64
- break;
65
- }
66
- }
67
- }
68
- }
69
- // Deduplicate and sort
70
- return [...new Set(tasks)].sort();
71
- }
72
- catch {
73
- // Fallback: check common task names directly
74
- const commonTasks = [];
75
- for (const pattern of DESKTOP_TASK_PATTERNS) {
76
- try {
77
- // SECURITY: argv-form — `pattern` from internal const, single task name (no spaces).
78
- execFileSync(gradle, [pattern, "--dry-run"], {
79
- cwd: projectPath,
80
- encoding: "utf-8",
81
- timeout: 30000,
82
- stdio: "pipe",
83
- });
84
- commonTasks.push(pattern);
85
- }
86
- catch {
87
- // Task doesn't exist
88
- }
89
- }
90
- return commonTasks;
91
- }
92
- }
93
- /**
94
- * Analyze Gradle project and return info
95
- */
96
- async analyzeProject(projectPath) {
97
- if (!fs.existsSync(projectPath)) {
98
- throw new Error(`Project path does not exist: ${projectPath}`);
99
- }
100
- // Check for build.gradle or build.gradle.kts
101
- const hasBuildGradle = fs.existsSync(path.join(projectPath, "build.gradle")) ||
102
- fs.existsSync(path.join(projectPath, "build.gradle.kts"));
103
- if (!hasBuildGradle) {
104
- throw new Error(`No build.gradle or build.gradle.kts found in: ${projectPath}`);
105
- }
106
- const desktopTasks = await this.detectDesktopTasks(projectPath);
107
- return {
108
- path: projectPath,
109
- desktopTasks,
110
- selectedTask: desktopTasks[0], // Default to first detected task
111
- };
112
- }
113
- /**
114
- * Launch desktop app via Gradle
115
- * Returns the spawned process
116
- */
117
- launch(options) {
118
- const { projectPath, task, jvmArgs = [], env = {} } = options;
119
- if (!projectPath) {
120
- throw new Error("projectPath is required to launch via Gradle");
121
- }
122
- if (!fs.existsSync(projectPath)) {
123
- throw new Error(`Project path does not exist: ${projectPath}`);
124
- }
125
- const gradle = this.getGradleExecutable(projectPath);
126
- // Determine task to run
127
- let targetTask = task;
128
- if (!targetTask) {
129
- // Auto-detect
130
- const detected = this.detectDesktopTasksSync(projectPath);
131
- if (detected.length === 0) {
132
- throw new Error(`No desktop run task found in project. ` +
133
- `Please specify task explicitly or ensure project has Compose Desktop configured.`);
134
- }
135
- targetTask = detected[0];
136
- }
137
- // Build command args
138
- const args = [targetTask];
139
- // Add JVM args
140
- if (jvmArgs.length > 0) {
141
- args.push(`-Dorg.gradle.jvmargs=${jvmArgs.join(" ")}`);
142
- }
143
- // Add --console=plain for cleaner output
144
- args.push("--console=plain");
145
- // Merge environment
146
- const processEnv = {
147
- ...process.env,
148
- ...env,
149
- };
150
- // Spawn Gradle process
151
- const child = spawn(gradle, args, {
152
- cwd: projectPath,
153
- env: processEnv,
154
- stdio: ["pipe", "pipe", "pipe"],
155
- shell: process.platform === "win32",
156
- });
157
- return child;
158
- }
159
- /**
160
- * Synchronous version of detectDesktopTasks (for launch)
161
- */
162
- detectDesktopTasksSync(projectPath) {
163
- const gradle = this.getGradleExecutable(projectPath);
164
- const tasks = [];
165
- // Quick check for common patterns
166
- for (const pattern of DESKTOP_TASK_PATTERNS) {
167
- try {
168
- // SECURITY: argv-form — `pattern` from internal const, single task name (no spaces).
169
- execFileSync(gradle, [pattern, "--dry-run"], {
170
- cwd: projectPath,
171
- encoding: "utf-8",
172
- timeout: 30000,
173
- stdio: "pipe",
174
- });
175
- tasks.push(pattern);
176
- }
177
- catch {
178
- // Task doesn't exist
179
- }
180
- }
181
- return tasks;
182
- }
183
- /**
184
- * Stop a running Gradle process
185
- */
186
- stop(process) {
187
- if (process && !process.killed) {
188
- // Try graceful shutdown first
189
- process.kill("SIGTERM");
190
- // Force kill after timeout
191
- setTimeout(() => {
192
- if (!process.killed) {
193
- process.kill("SIGKILL");
194
- }
195
- }, 5000);
196
- }
197
- }
198
- /**
199
- * Check if Gradle daemon is running
200
- */
201
- isGradleDaemonRunning(projectPath) {
202
- const gradle = this.getGradleExecutable(projectPath);
203
- try {
204
- // SECURITY: argv-form invocation — no shell parsing of `gradle` path.
205
- const output = execFileSync(gradle, ["--status"], {
206
- cwd: projectPath,
207
- encoding: "utf-8",
208
- timeout: 10000,
209
- });
210
- return output.includes("IDLE") || output.includes("BUSY");
211
- }
212
- catch {
213
- return false;
214
- }
215
- }
216
- /**
217
- * Stop Gradle daemon
218
- */
219
- stopGradleDaemon(projectPath) {
220
- const gradle = this.getGradleExecutable(projectPath);
221
- try {
222
- // SECURITY: argv-form invocation — no shell parsing of `gradle` path.
223
- execFileSync(gradle, ["--stop"], {
224
- cwd: projectPath,
225
- encoding: "utf-8",
226
- timeout: 30000,
227
- });
228
- }
229
- catch {
230
- // Ignore errors
231
- }
232
- }
233
- }
234
- //# sourceMappingURL=gradle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gradle.js","sourceRoot":"","sources":["../../src/desktop/gradle.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Desktop module exports
3
- */
4
- export { DesktopClient } from "./client.js";
5
- export { GradleLauncher } from "./gradle.js";
6
- export * from "./types.js";
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/desktop/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,cAAc,YAAY,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Desktop module exports
3
- */
4
- export { DesktopClient } from "./client.js";
5
- export { GradleLauncher } from "./gradle.js";
6
- export * from "./types.js";
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/desktop/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,cAAc,YAAY,CAAC"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Pure normalisation of the flat {@link RawLaunchOptions} into the strict
3
- * discriminated-union {@link LaunchOptions}. Lives next to the DesktopClient
4
- * but is intentionally stateless so it can be unit-tested in isolation and
5
- * imported without dragging in the RPC state machine.
6
- */
7
- import type { LaunchOptions, RawLaunchOptions } from "./types.js";
8
- /**
9
- * Normalise a flat RawLaunchOptions into the strict discriminated-union LaunchOptions.
10
- * Throws on conflicting fields (e.g. mode:"gradle" + pid).
11
- */
12
- export declare function normalizeLaunchOptions(raw: RawLaunchOptions): LaunchOptions;
13
- //# sourceMappingURL=launch-options.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"launch-options.d.ts","sourceRoot":"","sources":["../../src/desktop/launch-options.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAElE;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,GAAG,aAAa,CAoD3E"}
@@ -1,54 +0,0 @@
1
- /**
2
- * Pure normalisation of the flat {@link RawLaunchOptions} into the strict
3
- * discriminated-union {@link LaunchOptions}. Lives next to the DesktopClient
4
- * but is intentionally stateless so it can be unit-tested in isolation and
5
- * imported without dragging in the RPC state machine.
6
- */
7
- import { MobileError } from "../errors.js";
8
- /**
9
- * Normalise a flat RawLaunchOptions into the strict discriminated-union LaunchOptions.
10
- * Throws on conflicting fields (e.g. mode:"gradle" + pid).
11
- */
12
- export function normalizeLaunchOptions(raw) {
13
- // Detect conflicting params: mode-specific fields must not bleed across modes
14
- if (raw.mode === "gradle" && (raw.bundleId !== undefined || raw.appPath !== undefined || raw.pid !== undefined)) {
15
- throw new MobileError(`Conflicting launch parameters: mode "gradle" does not accept bundleId, appPath, or pid`, "INVALID_LAUNCH_OPTIONS");
16
- }
17
- if (raw.mode === "bundle" && (raw.pid !== undefined || raw.projectPath !== undefined)) {
18
- throw new MobileError(`Conflicting launch parameters: mode "bundle" does not accept pid or projectPath`, "INVALID_LAUNCH_OPTIONS");
19
- }
20
- if (raw.mode === "attach" && (raw.bundleId !== undefined || raw.appPath !== undefined || raw.projectPath !== undefined)) {
21
- throw new MobileError(`Conflicting launch parameters: mode "attach" does not accept bundleId, appPath, or projectPath`, "INVALID_LAUNCH_OPTIONS");
22
- }
23
- if (raw.mode) {
24
- // Explicit mode — build typed object (do not cast)
25
- switch (raw.mode) {
26
- case "gradle":
27
- if (!raw.projectPath)
28
- throw new MobileError(`mode "gradle" requires projectPath`, "INVALID_LAUNCH_OPTIONS");
29
- return { mode: "gradle", projectPath: raw.projectPath, task: raw.task, jvmArgs: raw.jvmArgs, env: raw.env };
30
- case "bundle":
31
- if (!raw.bundleId && !raw.appPath)
32
- throw new MobileError(`mode "bundle" requires bundleId or appPath`, "INVALID_LAUNCH_OPTIONS");
33
- // After the check, at least one is defined — split to satisfy the XOR union type
34
- if (raw.bundleId) {
35
- return { mode: "bundle", bundleId: raw.bundleId, appPath: raw.appPath, env: raw.env };
36
- }
37
- return { mode: "bundle", appPath: raw.appPath, env: raw.env };
38
- case "attach":
39
- if (raw.pid === undefined)
40
- throw new MobileError(`mode "attach" requires pid`, "INVALID_LAUNCH_OPTIONS");
41
- return { mode: "attach", pid: raw.pid };
42
- case "companion-only":
43
- return { mode: "companion-only" };
44
- default:
45
- throw new MobileError(`Unknown launch mode: "${raw.mode}". Valid values: gradle, bundle, attach, companion-only`, "INVALID_LAUNCH_OPTIONS");
46
- }
47
- }
48
- // Legacy: infer mode from fields present
49
- if (raw.projectPath) {
50
- return { mode: "gradle", projectPath: raw.projectPath, task: raw.task, jvmArgs: raw.jvmArgs, env: raw.env };
51
- }
52
- return { mode: "companion-only" };
53
- }
54
- //# sourceMappingURL=launch-options.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"launch-options.js","sourceRoot":"","sources":["../../src/desktop/launch-options.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- /**
2
- * App-launch strategies for the desktop companion.
3
- *
4
- * Each strategy encapsulates how a single LaunchOptions variant is realised:
5
- * `gradle` runs a Gradle task, `bundle` uses `open`/spawn, `attach` validates an
6
- * existing pid, and `companion-only` is a no-op (the companion runs solo).
7
- *
8
- * The strategies are intentionally small and pid-returning so the DesktopClient
9
- * can stay agnostic about platform details.
10
- */
11
- import type { GradleLauncher } from "./gradle.js";
12
- import type { LaunchOptions, LogType } from "./types.js";
13
- /** Strategy interface — returns the targetPid of the launched/attached app, or null. */
14
- export interface AppLaunchStrategy {
15
- launch(): Promise<number | null>;
16
- stop(): void;
17
- }
18
- export declare class GradleAppLauncher implements AppLaunchStrategy {
19
- private readonly opts;
20
- private readonly gradleLauncher;
21
- private readonly addLog;
22
- private userAppProcess;
23
- constructor(opts: Extract<LaunchOptions, {
24
- mode: "gradle";
25
- }>, gradleLauncher: GradleLauncher, addLog: (type: LogType, msg: string) => void);
26
- launch(): Promise<number | null>;
27
- stop(): void;
28
- }
29
- export declare class BundleAppLauncher implements AppLaunchStrategy {
30
- private readonly opts;
31
- private readonly addLog;
32
- stop(): void;
33
- constructor(opts: Extract<LaunchOptions, {
34
- mode: "bundle";
35
- }>, addLog: (type: LogType, msg: string) => void);
36
- launch(): Promise<number | null>;
37
- private getAppPathFromBundleId;
38
- }
39
- export declare class AttachLauncher implements AppLaunchStrategy {
40
- private readonly opts;
41
- private readonly addLog;
42
- constructor(opts: Extract<LaunchOptions, {
43
- mode: "attach";
44
- }>, addLog: (type: LogType, msg: string) => void);
45
- launch(): Promise<number | null>;
46
- stop(): void;
47
- }
48
- export declare class NoOpLauncher implements AppLaunchStrategy {
49
- launch(): Promise<number | null>;
50
- stop(): void;
51
- }
52
- //# sourceMappingURL=launchers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"launchers.d.ts","sourceRoot":"","sources":["../../src/desktop/launchers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AASzD,wFAAwF;AACxF,MAAM,WAAW,iBAAiB;IAChC,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjC,IAAI,IAAI,IAAI,CAAC;CACd;AAED,qBAAa,iBAAkB,YAAW,iBAAiB;IAIvD,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,cAAc,CAA6B;gBAGhC,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC,EAChD,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI;IAGzD,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAStC,IAAI,IAAI,IAAI;CAMb;AAED,qBAAa,iBAAkB,YAAW,iBAAiB;IAIvD,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,IAAI,IAAI,IAAI;gBAGO,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC,EAChD,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI;IAGzD,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoDtC,OAAO,CAAC,sBAAsB;CAY/B;AAED,qBAAa,cAAe,YAAW,iBAAiB;IAEpD,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC,EAChD,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI;IAGzD,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMtC,IAAI,IAAI,IAAI;CACb;AAED,qBAAa,YAAa,YAAW,iBAAiB;IAC9C,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IACtC,IAAI,IAAI,IAAI;CACb"}
@@ -1,125 +0,0 @@
1
- /**
2
- * App-launch strategies for the desktop companion.
3
- *
4
- * Each strategy encapsulates how a single LaunchOptions variant is realised:
5
- * `gradle` runs a Gradle task, `bundle` uses `open`/spawn, `attach` validates an
6
- * existing pid, and `companion-only` is a no-op (the companion runs solo).
7
- *
8
- * The strategies are intentionally small and pid-returning so the DesktopClient
9
- * can stay agnostic about platform details.
10
- */
11
- import { execFileSync, spawn } from "child_process";
12
- import { MobileError } from "../errors.js";
13
- import { validateBundleId } from "../utils/sanitize.js";
14
- import { BUNDLE_LAUNCH_POLL_INTERVAL_MS, getBundleIdFromAppPath, resolvePidByBundleId, validateAndResolveAppPath, validateAttachPid, } from "./permission-allowlist.js";
15
- export class GradleAppLauncher {
16
- opts;
17
- gradleLauncher;
18
- addLog;
19
- userAppProcess = null;
20
- constructor(opts, gradleLauncher, addLog) {
21
- this.opts = opts;
22
- this.gradleLauncher = gradleLauncher;
23
- this.addLog = addLog;
24
- }
25
- async launch() {
26
- this.addLog("stdout", `Launching user app from: ${this.opts.projectPath}`);
27
- // Spread to satisfy RawLaunchOptions (no as any — structural types are compatible)
28
- this.userAppProcess = this.gradleLauncher.launch({ ...this.opts });
29
- this.userAppProcess.stdout?.on("data", (data) => this.addLog("stdout", `[UserApp] ${data.toString()}`));
30
- this.userAppProcess.stderr?.on("data", (data) => this.addLog("stderr", `[UserApp] ${data.toString()}`));
31
- return null;
32
- }
33
- stop() {
34
- if (this.userAppProcess) {
35
- this.gradleLauncher.stop(this.userAppProcess);
36
- this.userAppProcess = null;
37
- }
38
- }
39
- }
40
- export class BundleAppLauncher {
41
- opts;
42
- addLog;
43
- stop() { }
44
- constructor(opts, addLog) {
45
- this.opts = opts;
46
- this.addLog = addLog;
47
- }
48
- async launch() {
49
- // Both bundleId and appPath are pre-validated by normalizeLaunchOptions — at least one is set.
50
- const { bundleId, appPath, env } = this.opts;
51
- const hasEnv = env && Object.keys(env).length > 0;
52
- let resolvedBundleId;
53
- let resolvedPath;
54
- if (bundleId) {
55
- validateBundleId(bundleId);
56
- resolvedBundleId = bundleId;
57
- }
58
- else {
59
- resolvedPath = validateAndResolveAppPath(appPath);
60
- resolvedBundleId = getBundleIdFromAppPath(resolvedPath);
61
- validateBundleId(resolvedBundleId);
62
- }
63
- this.addLog("stdout", `Launching app: ${bundleId ?? resolvedPath}${hasEnv ? ` (with env: ${Object.keys(env).join(", ")})` : ""}`);
64
- if (hasEnv) {
65
- // `open` cannot pass env vars to the launched app — spawn the binary directly.
66
- // resolvedPath is always set when env is used with appPath; derive it from bundleId otherwise.
67
- const appPath_ = resolvedPath ?? this.getAppPathFromBundleId(resolvedBundleId);
68
- const binaryName = execFileSync("defaults", ["read", `${appPath_}/Contents/Info`, "CFBundleExecutable"], { encoding: "utf-8", timeout: 3000 }).trim();
69
- const binaryPath = `${appPath_}/Contents/MacOS/${binaryName}`;
70
- spawn(binaryPath, [], {
71
- env: { ...process.env, ...env },
72
- detached: true,
73
- stdio: "ignore",
74
- }).unref();
75
- }
76
- else {
77
- // No env vars needed — use `open` (proper app launch via LaunchServices)
78
- try {
79
- if (resolvedPath) {
80
- // Pass the realpath-resolved path to `open` to prevent TOCTOU
81
- execFileSync("open", [resolvedPath], { timeout: 5000 });
82
- }
83
- else {
84
- execFileSync("open", ["-b", resolvedBundleId], { timeout: 5000 });
85
- }
86
- }
87
- catch (e) {
88
- throw new MobileError(`Failed to launch app "${bundleId ?? resolvedPath}": ${e.message}`, "BUNDLE_LAUNCH_FAILED");
89
- }
90
- }
91
- this.addLog("stdout", `Waiting for app to start (polling every ${BUNDLE_LAUNCH_POLL_INTERVAL_MS}ms)...`);
92
- const targetPid = await resolvePidByBundleId(resolvedBundleId);
93
- this.addLog("stdout", `App started with PID ${targetPid}`);
94
- return targetPid;
95
- }
96
- getAppPathFromBundleId(bundleId) {
97
- try {
98
- const result = execFileSync("osascript", ["-e", `POSIX path of (path to application id "${bundleId}")`], { encoding: "utf-8", timeout: 5000 }).trim();
99
- // Strip trailing slash that osascript adds
100
- return result.replace(/\/$/, "");
101
- }
102
- catch (e) {
103
- throw new MobileError(`Cannot find app path for bundle ID "${bundleId}": ${e.message}`, "BUNDLE_PATH_NOT_FOUND");
104
- }
105
- }
106
- }
107
- export class AttachLauncher {
108
- opts;
109
- addLog;
110
- constructor(opts, addLog) {
111
- this.opts = opts;
112
- this.addLog = addLog;
113
- }
114
- async launch() {
115
- validateAttachPid(this.opts.pid);
116
- this.addLog("stdout", `Attaching to existing process with PID ${this.opts.pid}`);
117
- return this.opts.pid;
118
- }
119
- stop() { }
120
- }
121
- export class NoOpLauncher {
122
- async launch() { return null; }
123
- stop() { }
124
- }
125
- //# sourceMappingURL=launchers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"launchers.js","sourceRoot":"","sources":["../../src/desktop/launchers.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- /**
2
- * Bounded in-memory ring buffer for desktop companion log entries.
3
- *
4
- * Keeps the most recent `maxEntries` lines and supports filtered queries by
5
- * level, since-timestamp and limit. Once the buffer is full the oldest entry
6
- * is dropped on every push (FIFO eviction), so the memory footprint of a
7
- * long-running session stays bounded.
8
- */
9
- import type { LogEntry, LogOptions, LogType } from "./types.js";
10
- export declare class LogRing {
11
- private readonly maxEntries;
12
- private entries;
13
- constructor(maxEntries?: number);
14
- /** Append a new log line. Evicts the oldest entry once the buffer is full. */
15
- push(type: LogType, message: string): void;
16
- /** Return a copy of the buffer, optionally filtered by type/since/limit. */
17
- query(options?: LogOptions): LogEntry[];
18
- /** Drop every buffered entry. */
19
- clear(): void;
20
- }
21
- //# sourceMappingURL=log-ring.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"log-ring.d.ts","sourceRoot":"","sources":["../../src/desktop/log-ring.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEhE,qBAAa,OAAO;IAGN,OAAO,CAAC,QAAQ,CAAC,UAAU;IAFvC,OAAO,CAAC,OAAO,CAAkB;gBAEJ,UAAU,GAAE,MAAe;IAExD,8EAA8E;IAC9E,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAY1C,4EAA4E;IAC5E,KAAK,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,QAAQ,EAAE;IAkBvC,iCAAiC;IACjC,KAAK,IAAI,IAAI;CAGd"}
@@ -1,45 +0,0 @@
1
- /**
2
- * Bounded in-memory ring buffer for desktop companion log entries.
3
- *
4
- * Keeps the most recent `maxEntries` lines and supports filtered queries by
5
- * level, since-timestamp and limit. Once the buffer is full the oldest entry
6
- * is dropped on every push (FIFO eviction), so the memory footprint of a
7
- * long-running session stays bounded.
8
- */
9
- export class LogRing {
10
- maxEntries;
11
- entries = [];
12
- constructor(maxEntries = 10_000) {
13
- this.maxEntries = maxEntries;
14
- }
15
- /** Append a new log line. Evicts the oldest entry once the buffer is full. */
16
- push(type, message) {
17
- this.entries.push({
18
- timestamp: Date.now(),
19
- type,
20
- message,
21
- });
22
- if (this.entries.length > this.maxEntries) {
23
- this.entries.shift();
24
- }
25
- }
26
- /** Return a copy of the buffer, optionally filtered by type/since/limit. */
27
- query(options) {
28
- let result = [...this.entries];
29
- if (options?.type) {
30
- result = result.filter(log => log.type === options.type);
31
- }
32
- if (options?.since) {
33
- result = result.filter(log => log.timestamp >= options.since);
34
- }
35
- if (options?.limit) {
36
- result = result.slice(-options.limit);
37
- }
38
- return result;
39
- }
40
- /** Drop every buffered entry. */
41
- clear() {
42
- this.entries = [];
43
- }
44
- }
45
- //# sourceMappingURL=log-ring.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"log-ring.js","sourceRoot":"","sources":["../../src/desktop/log-ring.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,OAAO,OAAO;IAGW;IAFrB,OAAO,GAAe,EAAE,CAAC;IAEjC,YAA6B,aAAqB,MAAM;QAA3B,eAAU,GAAV,UAAU,CAAiB;IAAG,CAAC;IAE5D,8EAA8E;IAC9E,IAAI,CAAC,IAAa,EAAE,OAAe;QACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,IAAI;YACJ,OAAO;SACR,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,OAAoB;QACxB,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAE/B,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YAClB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,KAAM,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,iCAAiC;IACjC,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;CACF"}