execbro 0.0.1-reserve → 1.10.13

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 (475) hide show
  1. package/LICENSE +32 -0
  2. package/README.md +496 -0
  3. package/build/__tests__/helpers/fake-cdp-server.d.ts +56 -0
  4. package/build/__tests__/helpers/fake-cdp-server.d.ts.map +1 -0
  5. package/build/__tests__/helpers/fake-cdp-server.js +120 -0
  6. package/build/__tests__/helpers/fake-cdp-server.js.map +1 -0
  7. package/build/__tests__/helpers/tap-test-helpers.d.ts +36 -0
  8. package/build/__tests__/helpers/tap-test-helpers.d.ts.map +1 -0
  9. package/build/__tests__/helpers/tap-test-helpers.js +130 -0
  10. package/build/__tests__/helpers/tap-test-helpers.js.map +1 -0
  11. package/build/__tests__/integration/auto-reconnect.test.d.ts +2 -0
  12. package/build/__tests__/integration/auto-reconnect.test.d.ts.map +1 -0
  13. package/build/__tests__/integration/auto-reconnect.test.js +118 -0
  14. package/build/__tests__/integration/auto-reconnect.test.js.map +1 -0
  15. package/build/__tests__/integration/connection-health.test.d.ts +2 -0
  16. package/build/__tests__/integration/connection-health.test.d.ts.map +1 -0
  17. package/build/__tests__/integration/connection-health.test.js +157 -0
  18. package/build/__tests__/integration/connection-health.test.js.map +1 -0
  19. package/build/__tests__/integration/execute-in-app.test.d.ts +2 -0
  20. package/build/__tests__/integration/execute-in-app.test.d.ts.map +1 -0
  21. package/build/__tests__/integration/execute-in-app.test.js +124 -0
  22. package/build/__tests__/integration/execute-in-app.test.js.map +1 -0
  23. package/build/__tests__/integration/per-call-timeout.test.d.ts +2 -0
  24. package/build/__tests__/integration/per-call-timeout.test.d.ts.map +1 -0
  25. package/build/__tests__/integration/per-call-timeout.test.js +103 -0
  26. package/build/__tests__/integration/per-call-timeout.test.js.map +1 -0
  27. package/build/__tests__/integration/tap-strategies.test.d.ts +2 -0
  28. package/build/__tests__/integration/tap-strategies.test.d.ts.map +1 -0
  29. package/build/__tests__/integration/tap-strategies.test.js +330 -0
  30. package/build/__tests__/integration/tap-strategies.test.js.map +1 -0
  31. package/build/__tests__/integration/tools.test.d.ts +2 -0
  32. package/build/__tests__/integration/tools.test.d.ts.map +1 -0
  33. package/build/__tests__/integration/tools.test.js +227 -0
  34. package/build/__tests__/integration/tools.test.js.map +1 -0
  35. package/build/__tests__/setup.d.ts +2 -0
  36. package/build/__tests__/setup.d.ts.map +1 -0
  37. package/build/__tests__/setup.js +15 -0
  38. package/build/__tests__/setup.js.map +1 -0
  39. package/build/__tests__/unit/androidEmulatorAvds.test.d.ts +2 -0
  40. package/build/__tests__/unit/androidEmulatorAvds.test.d.ts.map +1 -0
  41. package/build/__tests__/unit/androidEmulatorAvds.test.js +98 -0
  42. package/build/__tests__/unit/androidEmulatorAvds.test.js.map +1 -0
  43. package/build/__tests__/unit/buildToken.test.d.ts +2 -0
  44. package/build/__tests__/unit/buildToken.test.d.ts.map +1 -0
  45. package/build/__tests__/unit/buildToken.test.js +22 -0
  46. package/build/__tests__/unit/buildToken.test.js.map +1 -0
  47. package/build/__tests__/unit/bundle.test.d.ts +2 -0
  48. package/build/__tests__/unit/bundle.test.d.ts.map +1 -0
  49. package/build/__tests__/unit/bundle.test.js +53 -0
  50. package/build/__tests__/unit/bundle.test.js.map +1 -0
  51. package/build/__tests__/unit/burst.test.d.ts +2 -0
  52. package/build/__tests__/unit/burst.test.d.ts.map +1 -0
  53. package/build/__tests__/unit/burst.test.js +54 -0
  54. package/build/__tests__/unit/burst.test.js.map +1 -0
  55. package/build/__tests__/unit/connection-health.test.d.ts +2 -0
  56. package/build/__tests__/unit/connection-health.test.d.ts.map +1 -0
  57. package/build/__tests__/unit/connection-health.test.js +38 -0
  58. package/build/__tests__/unit/connection-health.test.js.map +1 -0
  59. package/build/__tests__/unit/debugGlobals.test.d.ts +2 -0
  60. package/build/__tests__/unit/debugGlobals.test.d.ts.map +1 -0
  61. package/build/__tests__/unit/debugGlobals.test.js +14 -0
  62. package/build/__tests__/unit/debugGlobals.test.js.map +1 -0
  63. package/build/__tests__/unit/deviceDiscovery.test.d.ts +2 -0
  64. package/build/__tests__/unit/deviceDiscovery.test.d.ts.map +1 -0
  65. package/build/__tests__/unit/deviceDiscovery.test.js +119 -0
  66. package/build/__tests__/unit/deviceDiscovery.test.js.map +1 -0
  67. package/build/__tests__/unit/deviceResolver.test.d.ts +2 -0
  68. package/build/__tests__/unit/deviceResolver.test.d.ts.map +1 -0
  69. package/build/__tests__/unit/deviceResolver.test.js +261 -0
  70. package/build/__tests__/unit/deviceResolver.test.js.map +1 -0
  71. package/build/__tests__/unit/escapeNonAscii.test.d.ts +2 -0
  72. package/build/__tests__/unit/escapeNonAscii.test.d.ts.map +1 -0
  73. package/build/__tests__/unit/escapeNonAscii.test.js +76 -0
  74. package/build/__tests__/unit/escapeNonAscii.test.js.map +1 -0
  75. package/build/__tests__/unit/exec.test.d.ts +2 -0
  76. package/build/__tests__/unit/exec.test.d.ts.map +1 -0
  77. package/build/__tests__/unit/exec.test.js +54 -0
  78. package/build/__tests__/unit/exec.test.js.map +1 -0
  79. package/build/__tests__/unit/executor.test.d.ts +2 -0
  80. package/build/__tests__/unit/executor.test.d.ts.map +1 -0
  81. package/build/__tests__/unit/executor.test.js +220 -0
  82. package/build/__tests__/unit/executor.test.js.map +1 -0
  83. package/build/__tests__/unit/failureArtifact.test.d.ts +2 -0
  84. package/build/__tests__/unit/failureArtifact.test.d.ts.map +1 -0
  85. package/build/__tests__/unit/failureArtifact.test.js +207 -0
  86. package/build/__tests__/unit/failureArtifact.test.js.map +1 -0
  87. package/build/__tests__/unit/fastRefreshRecorder.test.d.ts +2 -0
  88. package/build/__tests__/unit/fastRefreshRecorder.test.d.ts.map +1 -0
  89. package/build/__tests__/unit/fastRefreshRecorder.test.js +68 -0
  90. package/build/__tests__/unit/fastRefreshRecorder.test.js.map +1 -0
  91. package/build/__tests__/unit/fastRefreshTools.test.d.ts +2 -0
  92. package/build/__tests__/unit/fastRefreshTools.test.d.ts.map +1 -0
  93. package/build/__tests__/unit/fastRefreshTools.test.js +112 -0
  94. package/build/__tests__/unit/fastRefreshTools.test.js.map +1 -0
  95. package/build/__tests__/unit/fiberMatch.test.d.ts +2 -0
  96. package/build/__tests__/unit/fiberMatch.test.d.ts.map +1 -0
  97. package/build/__tests__/unit/fiberMatch.test.js +114 -0
  98. package/build/__tests__/unit/fiberMatch.test.js.map +1 -0
  99. package/build/__tests__/unit/fingerprint.test.d.ts +2 -0
  100. package/build/__tests__/unit/fingerprint.test.d.ts.map +1 -0
  101. package/build/__tests__/unit/fingerprint.test.js +99 -0
  102. package/build/__tests__/unit/fingerprint.test.js.map +1 -0
  103. package/build/__tests__/unit/focusedInput.test.d.ts +2 -0
  104. package/build/__tests__/unit/focusedInput.test.d.ts.map +1 -0
  105. package/build/__tests__/unit/focusedInput.test.js +58 -0
  106. package/build/__tests__/unit/focusedInput.test.js.map +1 -0
  107. package/build/__tests__/unit/focusedInputTools.test.d.ts +2 -0
  108. package/build/__tests__/unit/focusedInputTools.test.d.ts.map +1 -0
  109. package/build/__tests__/unit/focusedInputTools.test.js +79 -0
  110. package/build/__tests__/unit/focusedInputTools.test.js.map +1 -0
  111. package/build/__tests__/unit/iconSemantics.test.d.ts +2 -0
  112. package/build/__tests__/unit/iconSemantics.test.d.ts.map +1 -0
  113. package/build/__tests__/unit/iconSemantics.test.js +80 -0
  114. package/build/__tests__/unit/iconSemantics.test.js.map +1 -0
  115. package/build/__tests__/unit/imageBuffer.test.d.ts +2 -0
  116. package/build/__tests__/unit/imageBuffer.test.d.ts.map +1 -0
  117. package/build/__tests__/unit/imageBuffer.test.js +128 -0
  118. package/build/__tests__/unit/imageBuffer.test.js.map +1 -0
  119. package/build/__tests__/unit/logs.test.d.ts +2 -0
  120. package/build/__tests__/unit/logs.test.d.ts.map +1 -0
  121. package/build/__tests__/unit/logs.test.js +90 -0
  122. package/build/__tests__/unit/logs.test.js.map +1 -0
  123. package/build/__tests__/unit/measureComponent.test.d.ts +2 -0
  124. package/build/__tests__/unit/measureComponent.test.d.ts.map +1 -0
  125. package/build/__tests__/unit/measureComponent.test.js +66 -0
  126. package/build/__tests__/unit/measureComponent.test.js.map +1 -0
  127. package/build/__tests__/unit/measureComponentTools.test.d.ts +2 -0
  128. package/build/__tests__/unit/measureComponentTools.test.d.ts.map +1 -0
  129. package/build/__tests__/unit/measureComponentTools.test.js +94 -0
  130. package/build/__tests__/unit/measureComponentTools.test.js.map +1 -0
  131. package/build/__tests__/unit/metro.test.d.ts +2 -0
  132. package/build/__tests__/unit/metro.test.d.ts.map +1 -0
  133. package/build/__tests__/unit/metro.test.js +61 -0
  134. package/build/__tests__/unit/metro.test.js.map +1 -0
  135. package/build/__tests__/unit/network.test.d.ts +2 -0
  136. package/build/__tests__/unit/network.test.d.ts.map +1 -0
  137. package/build/__tests__/unit/network.test.js +102 -0
  138. package/build/__tests__/unit/network.test.js.map +1 -0
  139. package/build/__tests__/unit/networkInterceptor.test.d.ts +2 -0
  140. package/build/__tests__/unit/networkInterceptor.test.d.ts.map +1 -0
  141. package/build/__tests__/unit/networkInterceptor.test.js +104 -0
  142. package/build/__tests__/unit/networkInterceptor.test.js.map +1 -0
  143. package/build/__tests__/unit/probe.test.d.ts +2 -0
  144. package/build/__tests__/unit/probe.test.d.ts.map +1 -0
  145. package/build/__tests__/unit/probe.test.js +62 -0
  146. package/build/__tests__/unit/probe.test.js.map +1 -0
  147. package/build/__tests__/unit/rnGlobalsBootstrap.test.d.ts +2 -0
  148. package/build/__tests__/unit/rnGlobalsBootstrap.test.d.ts.map +1 -0
  149. package/build/__tests__/unit/rnGlobalsBootstrap.test.js +29 -0
  150. package/build/__tests__/unit/rnGlobalsBootstrap.test.js.map +1 -0
  151. package/build/__tests__/unit/screenState.test.d.ts +2 -0
  152. package/build/__tests__/unit/screenState.test.d.ts.map +1 -0
  153. package/build/__tests__/unit/screenState.test.js +384 -0
  154. package/build/__tests__/unit/screenState.test.js.map +1 -0
  155. package/build/__tests__/unit/screenshot-diff.test.d.ts +2 -0
  156. package/build/__tests__/unit/screenshot-diff.test.d.ts.map +1 -0
  157. package/build/__tests__/unit/screenshot-diff.test.js +97 -0
  158. package/build/__tests__/unit/screenshot-diff.test.js.map +1 -0
  159. package/build/__tests__/unit/tap-evidence.test.d.ts +2 -0
  160. package/build/__tests__/unit/tap-evidence.test.d.ts.map +1 -0
  161. package/build/__tests__/unit/tap-evidence.test.js +89 -0
  162. package/build/__tests__/unit/tap-evidence.test.js.map +1 -0
  163. package/build/__tests__/unit/tap.test.d.ts +2 -0
  164. package/build/__tests__/unit/tap.test.d.ts.map +1 -0
  165. package/build/__tests__/unit/tap.test.js +767 -0
  166. package/build/__tests__/unit/tap.test.js.map +1 -0
  167. package/build/__tests__/unit/timeoutClamp.test.d.ts +2 -0
  168. package/build/__tests__/unit/timeoutClamp.test.d.ts.map +1 -0
  169. package/build/__tests__/unit/timeoutClamp.test.js +17 -0
  170. package/build/__tests__/unit/timeoutClamp.test.js.map +1 -0
  171. package/build/__tests__/unit/toolDescriptions.test.d.ts +2 -0
  172. package/build/__tests__/unit/toolDescriptions.test.d.ts.map +1 -0
  173. package/build/__tests__/unit/toolDescriptions.test.js +145 -0
  174. package/build/__tests__/unit/toolDescriptions.test.js.map +1 -0
  175. package/build/__tests__/unit/transportClassify.test.d.ts +2 -0
  176. package/build/__tests__/unit/transportClassify.test.d.ts.map +1 -0
  177. package/build/__tests__/unit/transportClassify.test.js +60 -0
  178. package/build/__tests__/unit/transportClassify.test.js.map +1 -0
  179. package/build/__tests__/unit/verifyAction.test.d.ts +2 -0
  180. package/build/__tests__/unit/verifyAction.test.d.ts.map +1 -0
  181. package/build/__tests__/unit/verifyAction.test.js +26 -0
  182. package/build/__tests__/unit/verifyAction.test.js.map +1 -0
  183. package/build/core/android.d.ts +299 -0
  184. package/build/core/android.d.ts.map +1 -0
  185. package/build/core/android.js +1582 -0
  186. package/build/core/android.js.map +1 -0
  187. package/build/core/appDetection.d.ts +20 -0
  188. package/build/core/appDetection.d.ts.map +1 -0
  189. package/build/core/appDetection.js +167 -0
  190. package/build/core/appDetection.js.map +1 -0
  191. package/build/core/bundle.d.ts +49 -0
  192. package/build/core/bundle.d.ts.map +1 -0
  193. package/build/core/bundle.js +356 -0
  194. package/build/core/bundle.js.map +1 -0
  195. package/build/core/componentSearch.d.ts +41 -0
  196. package/build/core/componentSearch.d.ts.map +1 -0
  197. package/build/core/componentSearch.js +588 -0
  198. package/build/core/componentSearch.js.map +1 -0
  199. package/build/core/componentTree.d.ts +13 -0
  200. package/build/core/componentTree.d.ts.map +1 -0
  201. package/build/core/componentTree.js +275 -0
  202. package/build/core/componentTree.js.map +1 -0
  203. package/build/core/config.d.ts +9 -0
  204. package/build/core/config.d.ts.map +1 -0
  205. package/build/core/config.js +28 -0
  206. package/build/core/config.js.map +1 -0
  207. package/build/core/connection.d.ts +102 -0
  208. package/build/core/connection.d.ts.map +1 -0
  209. package/build/core/connection.js +1710 -0
  210. package/build/core/connection.js.map +1 -0
  211. package/build/core/connectionState.d.ts +122 -0
  212. package/build/core/connectionState.d.ts.map +1 -0
  213. package/build/core/connectionState.js +313 -0
  214. package/build/core/connectionState.js.map +1 -0
  215. package/build/core/debugGlobals.d.ts +6 -0
  216. package/build/core/debugGlobals.d.ts.map +1 -0
  217. package/build/core/debugGlobals.js +370 -0
  218. package/build/core/debugGlobals.js.map +1 -0
  219. package/build/core/deviceDiscovery.d.ts +52 -0
  220. package/build/core/deviceDiscovery.d.ts.map +1 -0
  221. package/build/core/deviceDiscovery.js +74 -0
  222. package/build/core/deviceDiscovery.js.map +1 -0
  223. package/build/core/deviceResolver.d.ts +44 -0
  224. package/build/core/deviceResolver.d.ts.map +1 -0
  225. package/build/core/deviceResolver.js +225 -0
  226. package/build/core/deviceResolver.js.map +1 -0
  227. package/build/core/errorScreenParser.d.ts +30 -0
  228. package/build/core/errorScreenParser.d.ts.map +1 -0
  229. package/build/core/errorScreenParser.js +198 -0
  230. package/build/core/errorScreenParser.js.map +1 -0
  231. package/build/core/errors.d.ts +14 -0
  232. package/build/core/errors.d.ts.map +1 -0
  233. package/build/core/errors.js +17 -0
  234. package/build/core/errors.js.map +1 -0
  235. package/build/core/escapeNonAscii.d.ts +18 -0
  236. package/build/core/escapeNonAscii.d.ts.map +1 -0
  237. package/build/core/escapeNonAscii.js +352 -0
  238. package/build/core/escapeNonAscii.js.map +1 -0
  239. package/build/core/exec.d.ts +22 -0
  240. package/build/core/exec.d.ts.map +1 -0
  241. package/build/core/exec.js +54 -0
  242. package/build/core/exec.js.map +1 -0
  243. package/build/core/executor.d.ts +9 -0
  244. package/build/core/executor.d.ts.map +1 -0
  245. package/build/core/executor.js +12 -0
  246. package/build/core/executor.js.map +1 -0
  247. package/build/core/failureArtifact.d.ts +120 -0
  248. package/build/core/failureArtifact.d.ts.map +1 -0
  249. package/build/core/failureArtifact.js +113 -0
  250. package/build/core/failureArtifact.js.map +1 -0
  251. package/build/core/fastRefreshRecorder.d.ts +23 -0
  252. package/build/core/fastRefreshRecorder.d.ts.map +1 -0
  253. package/build/core/fastRefreshRecorder.js +83 -0
  254. package/build/core/fastRefreshRecorder.js.map +1 -0
  255. package/build/core/fastRefreshTools.d.ts +19 -0
  256. package/build/core/fastRefreshTools.d.ts.map +1 -0
  257. package/build/core/fastRefreshTools.js +71 -0
  258. package/build/core/fastRefreshTools.js.map +1 -0
  259. package/build/core/feedback.d.ts +18 -0
  260. package/build/core/feedback.d.ts.map +1 -0
  261. package/build/core/feedback.js +73 -0
  262. package/build/core/feedback.js.map +1 -0
  263. package/build/core/fiberMatch.d.ts +25 -0
  264. package/build/core/fiberMatch.d.ts.map +1 -0
  265. package/build/core/fiberMatch.js +35 -0
  266. package/build/core/fiberMatch.js.map +1 -0
  267. package/build/core/fingerprint.d.ts +4 -0
  268. package/build/core/fingerprint.d.ts.map +1 -0
  269. package/build/core/fingerprint.js +47 -0
  270. package/build/core/fingerprint.js.map +1 -0
  271. package/build/core/focusedInput.d.ts +27 -0
  272. package/build/core/focusedInput.d.ts.map +1 -0
  273. package/build/core/focusedInput.js +110 -0
  274. package/build/core/focusedInput.js.map +1 -0
  275. package/build/core/focusedInputTools.d.ts +21 -0
  276. package/build/core/focusedInputTools.d.ts.map +1 -0
  277. package/build/core/focusedInputTools.js +51 -0
  278. package/build/core/focusedInputTools.js.map +1 -0
  279. package/build/core/format.d.ts +8 -0
  280. package/build/core/format.d.ts.map +1 -0
  281. package/build/core/format.js +34 -0
  282. package/build/core/format.js.map +1 -0
  283. package/build/core/guides.d.ts +21 -0
  284. package/build/core/guides.d.ts.map +1 -0
  285. package/build/core/guides.js +397 -0
  286. package/build/core/guides.js.map +1 -0
  287. package/build/core/iconSemantics.d.ts +18 -0
  288. package/build/core/iconSemantics.d.ts.map +1 -0
  289. package/build/core/iconSemantics.js +114 -0
  290. package/build/core/iconSemantics.js.map +1 -0
  291. package/build/core/imageBuffer.d.ts +37 -0
  292. package/build/core/imageBuffer.d.ts.map +1 -0
  293. package/build/core/imageBuffer.js +58 -0
  294. package/build/core/imageBuffer.js.map +1 -0
  295. package/build/core/index.d.ts +37 -0
  296. package/build/core/index.d.ts.map +1 -0
  297. package/build/core/index.js +66 -0
  298. package/build/core/index.js.map +1 -0
  299. package/build/core/inspector.d.ts +55 -0
  300. package/build/core/inspector.d.ts.map +1 -0
  301. package/build/core/inspector.js +603 -0
  302. package/build/core/inspector.js.map +1 -0
  303. package/build/core/ios.d.ts +263 -0
  304. package/build/core/ios.d.ts.map +1 -0
  305. package/build/core/ios.js +1705 -0
  306. package/build/core/ios.js.map +1 -0
  307. package/build/core/jsExecute.d.ts +62 -0
  308. package/build/core/jsExecute.d.ts.map +1 -0
  309. package/build/core/jsExecute.js +696 -0
  310. package/build/core/jsExecute.js.map +1 -0
  311. package/build/core/license.d.ts +48 -0
  312. package/build/core/license.d.ts.map +1 -0
  313. package/build/core/license.js +267 -0
  314. package/build/core/license.js.map +1 -0
  315. package/build/core/logbox.d.ts +58 -0
  316. package/build/core/logbox.d.ts.map +1 -0
  317. package/build/core/logbox.js +330 -0
  318. package/build/core/logbox.js.map +1 -0
  319. package/build/core/logs.d.ts +44 -0
  320. package/build/core/logs.d.ts.map +1 -0
  321. package/build/core/logs.js +149 -0
  322. package/build/core/logs.js.map +1 -0
  323. package/build/core/measureComponent.d.ts +19 -0
  324. package/build/core/measureComponent.d.ts.map +1 -0
  325. package/build/core/measureComponent.js +94 -0
  326. package/build/core/measureComponent.js.map +1 -0
  327. package/build/core/measureComponentTools.d.ts +6 -0
  328. package/build/core/measureComponentTools.d.ts.map +1 -0
  329. package/build/core/measureComponentTools.js +43 -0
  330. package/build/core/measureComponentTools.js.map +1 -0
  331. package/build/core/metro.d.ts +31 -0
  332. package/build/core/metro.d.ts.map +1 -0
  333. package/build/core/metro.js +124 -0
  334. package/build/core/metro.js.map +1 -0
  335. package/build/core/nativeOnlyHints.d.ts +14 -0
  336. package/build/core/nativeOnlyHints.d.ts.map +1 -0
  337. package/build/core/nativeOnlyHints.js +58 -0
  338. package/build/core/nativeOnlyHints.js.map +1 -0
  339. package/build/core/network.d.ts +43 -0
  340. package/build/core/network.d.ts.map +1 -0
  341. package/build/core/network.js +217 -0
  342. package/build/core/network.js.map +1 -0
  343. package/build/core/networkInterceptor.d.ts +30 -0
  344. package/build/core/networkInterceptor.d.ts.map +1 -0
  345. package/build/core/networkInterceptor.js +211 -0
  346. package/build/core/networkInterceptor.js.map +1 -0
  347. package/build/core/ocr.d.ts +87 -0
  348. package/build/core/ocr.d.ts.map +1 -0
  349. package/build/core/ocr.js +335 -0
  350. package/build/core/ocr.js.map +1 -0
  351. package/build/core/paths.d.ts +2 -0
  352. package/build/core/paths.d.ts.map +1 -0
  353. package/build/core/paths.js +28 -0
  354. package/build/core/paths.js.map +1 -0
  355. package/build/core/posthog.d.ts +5 -0
  356. package/build/core/posthog.d.ts.map +1 -0
  357. package/build/core/posthog.js +52 -0
  358. package/build/core/posthog.js.map +1 -0
  359. package/build/core/pressables.d.ts +46 -0
  360. package/build/core/pressables.d.ts.map +1 -0
  361. package/build/core/pressables.js +1719 -0
  362. package/build/core/pressables.js.map +1 -0
  363. package/build/core/probe.d.ts +12 -0
  364. package/build/core/probe.d.ts.map +1 -0
  365. package/build/core/probe.js +56 -0
  366. package/build/core/probe.js.map +1 -0
  367. package/build/core/redux.d.ts +22 -0
  368. package/build/core/redux.d.ts.map +1 -0
  369. package/build/core/redux.js +116 -0
  370. package/build/core/redux.js.map +1 -0
  371. package/build/core/register.d.ts +8 -0
  372. package/build/core/register.d.ts.map +1 -0
  373. package/build/core/register.js +202 -0
  374. package/build/core/register.js.map +1 -0
  375. package/build/core/rnGlobalsBootstrap.d.ts +16 -0
  376. package/build/core/rnGlobalsBootstrap.d.ts.map +1 -0
  377. package/build/core/rnGlobalsBootstrap.js +116 -0
  378. package/build/core/rnGlobalsBootstrap.js.map +1 -0
  379. package/build/core/screenLayout.d.ts +53 -0
  380. package/build/core/screenLayout.d.ts.map +1 -0
  381. package/build/core/screenLayout.js +878 -0
  382. package/build/core/screenLayout.js.map +1 -0
  383. package/build/core/screenState.d.ts +166 -0
  384. package/build/core/screenState.d.ts.map +1 -0
  385. package/build/core/screenState.js +1352 -0
  386. package/build/core/screenState.js.map +1 -0
  387. package/build/core/sdkBridge.d.ts +67 -0
  388. package/build/core/sdkBridge.d.ts.map +1 -0
  389. package/build/core/sdkBridge.js +148 -0
  390. package/build/core/sdkBridge.js.map +1 -0
  391. package/build/core/state.d.ts +37 -0
  392. package/build/core/state.d.ts.map +1 -0
  393. package/build/core/state.js +124 -0
  394. package/build/core/state.js.map +1 -0
  395. package/build/core/telemetry.d.ts +50 -0
  396. package/build/core/telemetry.d.ts.map +1 -0
  397. package/build/core/telemetry.js +653 -0
  398. package/build/core/telemetry.js.map +1 -0
  399. package/build/core/toolHelpers.d.ts +24 -0
  400. package/build/core/toolHelpers.d.ts.map +1 -0
  401. package/build/core/toolHelpers.js +118 -0
  402. package/build/core/toolHelpers.js.map +1 -0
  403. package/build/core/types.d.ts +162 -0
  404. package/build/core/types.d.ts.map +1 -0
  405. package/build/core/types.js +2 -0
  406. package/build/core/types.js.map +1 -0
  407. package/build/index.d.ts +4 -0
  408. package/build/index.d.ts.map +1 -0
  409. package/build/index.js +132 -0
  410. package/build/index.js.map +1 -0
  411. package/build/pro/screenshot-diff.d.ts +10 -0
  412. package/build/pro/screenshot-diff.d.ts.map +1 -0
  413. package/build/pro/screenshot-diff.js +38 -0
  414. package/build/pro/screenshot-diff.js.map +1 -0
  415. package/build/pro/tap.d.ts +291 -0
  416. package/build/pro/tap.d.ts.map +1 -0
  417. package/build/pro/tap.js +1839 -0
  418. package/build/pro/tap.js.map +1 -0
  419. package/build/pro/verifyAction.d.ts +50 -0
  420. package/build/pro/verifyAction.d.ts.map +1 -0
  421. package/build/pro/verifyAction.js +285 -0
  422. package/build/pro/verifyAction.js.map +1 -0
  423. package/build/tools/_deviceArg.d.ts +45 -0
  424. package/build/tools/_deviceArg.d.ts.map +1 -0
  425. package/build/tools/_deviceArg.js +58 -0
  426. package/build/tools/_deviceArg.js.map +1 -0
  427. package/build/tools/accountTools.d.ts +46 -0
  428. package/build/tools/accountTools.d.ts.map +1 -0
  429. package/build/tools/accountTools.js +223 -0
  430. package/build/tools/accountTools.js.map +1 -0
  431. package/build/tools/bundleTools.d.ts +3 -0
  432. package/build/tools/bundleTools.d.ts.map +1 -0
  433. package/build/tools/bundleTools.js +375 -0
  434. package/build/tools/bundleTools.js.map +1 -0
  435. package/build/tools/componentTools.d.ts +3 -0
  436. package/build/tools/componentTools.d.ts.map +1 -0
  437. package/build/tools/componentTools.js +746 -0
  438. package/build/tools/componentTools.js.map +1 -0
  439. package/build/tools/connectionTools.d.ts +3 -0
  440. package/build/tools/connectionTools.d.ts.map +1 -0
  441. package/build/tools/connectionTools.js +625 -0
  442. package/build/tools/connectionTools.js.map +1 -0
  443. package/build/tools/deviceTools.d.ts +3 -0
  444. package/build/tools/deviceTools.d.ts.map +1 -0
  445. package/build/tools/deviceTools.js +423 -0
  446. package/build/tools/deviceTools.js.map +1 -0
  447. package/build/tools/executionTools.d.ts +3 -0
  448. package/build/tools/executionTools.d.ts.map +1 -0
  449. package/build/tools/executionTools.js +243 -0
  450. package/build/tools/executionTools.js.map +1 -0
  451. package/build/tools/interactionTools.d.ts +3 -0
  452. package/build/tools/interactionTools.d.ts.map +1 -0
  453. package/build/tools/interactionTools.js +539 -0
  454. package/build/tools/interactionTools.js.map +1 -0
  455. package/build/tools/logTools.d.ts +3 -0
  456. package/build/tools/logTools.d.ts.map +1 -0
  457. package/build/tools/logTools.js +371 -0
  458. package/build/tools/logTools.js.map +1 -0
  459. package/build/tools/metaTools.d.ts +7 -0
  460. package/build/tools/metaTools.d.ts.map +1 -0
  461. package/build/tools/metaTools.js +186 -0
  462. package/build/tools/metaTools.js.map +1 -0
  463. package/build/tools/networkTools.d.ts +3 -0
  464. package/build/tools/networkTools.d.ts.map +1 -0
  465. package/build/tools/networkTools.js +478 -0
  466. package/build/tools/networkTools.js.map +1 -0
  467. package/build/tools/reduxTools.d.ts +3 -0
  468. package/build/tools/reduxTools.d.ts.map +1 -0
  469. package/build/tools/reduxTools.js +83 -0
  470. package/build/tools/reduxTools.js.map +1 -0
  471. package/build/tools/screenshotTools.d.ts +3 -0
  472. package/build/tools/screenshotTools.d.ts.map +1 -0
  473. package/build/tools/screenshotTools.js +703 -0
  474. package/build/tools/screenshotTools.js.map +1 -0
  475. package/package.json +63 -2
@@ -0,0 +1,370 @@
1
+ import WebSocket from "ws";
2
+ import { connectedApps, getNextMessageId } from "./state.js";
3
+ import { getConnectedAppByDevice, connectToDevice, clearReconnectionSuppression, purgeStaleConnectionsForPorts } from "./connection.js";
4
+ import { fetchDevices, filterDebuggableDevices, scanMetroPorts } from "./metro.js";
5
+ import { DEFAULT_RECONNECTION_CONFIG, cancelReconnectionTimer } from "./connectionState.js";
6
+ import { executeInApp, delay } from "./jsExecute.js";
7
+ import { isSDKInstalled } from "./sdkBridge.js";
8
+ // Build the IIFE expression used by listDebugGlobals. Exported so tests can
9
+ // assert structural invariants (e.g. that we probe __rn__, that we emit the
10
+ // expected hint) without needing to spin up a live CDP connection.
11
+ export function buildListDebugGlobalsExpression() {
12
+ return `
13
+ (function() {
14
+ var names;
15
+ try {
16
+ var enumNames = Object.keys(globalThis);
17
+ var ownNames = Object.getOwnPropertyNames(globalThis);
18
+ var seen = {};
19
+ names = [];
20
+ for (var i = 0; i < ownNames.length; i++) { if (!seen[ownNames[i]]) { seen[ownNames[i]] = 1; names.push(ownNames[i]); } }
21
+ for (var j = 0; j < enumNames.length; j++) { if (!seen[enumNames[j]]) { seen[enumNames[j]] = 1; names.push(enumNames[j]); } }
22
+ } catch (e) {
23
+ names = Object.keys(globalThis);
24
+ }
25
+
26
+ var categories = {
27
+ 'Apollo Client': [],
28
+ 'Redux': [],
29
+ 'React DevTools': [],
30
+ 'Reanimated': [],
31
+ 'Expo': [],
32
+ 'Metro': [],
33
+ 'Other Debug': []
34
+ };
35
+ for (var k = 0; k < names.length; k++) {
36
+ var key = names[k];
37
+ if (key.indexOf('APOLLO') >= 0) categories['Apollo Client'].push(key);
38
+ else if (key.indexOf('REDUX') >= 0) categories['Redux'].push(key);
39
+ else if (key.indexOf('REACT_DEVTOOLS') >= 0) categories['React DevTools'].push(key);
40
+ else if (key.indexOf('reanimated') >= 0 || key.indexOf('worklet') >= 0) categories['Reanimated'].push(key);
41
+ else if (key.indexOf('Expo') >= 0 || key.indexOf('expo') >= 0) categories['Expo'].push(key);
42
+ else if (key.indexOf('METRO') >= 0) categories['Metro'].push(key);
43
+ else if (key.indexOf('__') === 0) categories['Other Debug'].push(key);
44
+ }
45
+
46
+ // SDK probe: detect __RN_AI_DEVTOOLS__ even when not enumerable on
47
+ // globalThis, and flatten its registered objects into dotted paths
48
+ // the agent can hand straight to inspect_global / execute_in_app.
49
+ var sdk = null;
50
+ try {
51
+ var _sdkRoot = globalThis.__EXECBRO__ || globalThis.__RN_AI_DEVTOOLS__;
52
+ if (typeof _sdkRoot !== 'undefined' && _sdkRoot) {
53
+ var rootName = typeof globalThis.__EXECBRO__ !== 'undefined' ? '__EXECBRO__' : '__RN_AI_DEVTOOLS__';
54
+ var dt = _sdkRoot;
55
+ var paths = [];
56
+ // Map well-known store keys back into the legacy category
57
+ // buckets so SDK-registered stores don't appear missing to
58
+ // agents that scan categories.Redux / categories["Apollo Client"].
59
+ var storeCategory = {
60
+ redux: 'Redux',
61
+ apollo: 'Apollo Client',
62
+ apolloclient: 'Apollo Client',
63
+ reactdevtools: 'React DevTools'
64
+ };
65
+ if (dt.stores && typeof dt.stores === 'object') {
66
+ var sk = Object.keys(dt.stores);
67
+ for (var a = 0; a < sk.length; a++) {
68
+ var storeKey = sk[a];
69
+ var path = rootName + '.stores.' + storeKey;
70
+ paths.push(path);
71
+ var bucket = storeCategory[storeKey.toLowerCase()];
72
+ if (bucket && categories[bucket].indexOf(path) < 0) {
73
+ categories[bucket].push(path);
74
+ }
75
+ }
76
+ }
77
+ if (dt.navigation) paths.push(rootName + '.navigation');
78
+ if (dt.custom && typeof dt.custom === 'object') {
79
+ var ck = Object.keys(dt.custom);
80
+ for (var b = 0; b < ck.length; b++) paths.push(rootName + '.custom.' + ck[b]);
81
+ }
82
+ sdk = {
83
+ version: dt.version || 'unknown',
84
+ capabilities: dt.capabilities || null,
85
+ paths: paths,
86
+ hint: 'These paths are inspect_global / execute_in_app ready (dotted paths supported).'
87
+ };
88
+ // Make sure both root globals appear in the listing,
89
+ // even if Hermes hid them from Object.keys.
90
+ if (categories['Other Debug'].indexOf('__EXECBRO__') < 0) {
91
+ categories['Other Debug'].push('__EXECBRO__');
92
+ }
93
+ if (categories['Other Debug'].indexOf('__RN_AI_DEVTOOLS__') < 0) {
94
+ categories['Other Debug'].push('__RN_AI_DEVTOOLS__');
95
+ }
96
+ }
97
+ } catch (e) { /* ignore */ }
98
+
99
+ // RN namespace probe: populated by the SDK's exposeRnGlobals() or
100
+ // the executor's fallback fiber-walk bootstrap. Reports keys when
101
+ // available so agents discover the namespace without reading docs.
102
+ // undefined -> bootstrap not run yet
103
+ // null -> bootstrap attempted, no modules found
104
+ // object -> populated namespace
105
+ var rn = null;
106
+ try {
107
+ var rnRaw = globalThis.__rn__;
108
+ if (typeof rnRaw === 'undefined') {
109
+ rn = null;
110
+ } else if (rnRaw === null) {
111
+ rn = {
112
+ keys: [],
113
+ hint: 'Bootstrap attempted but no fiber had the curated RN modules in scope. Install react-native-ai-devtools-sdk or fall back to a fiber walk.'
114
+ };
115
+ if (categories['Other Debug'].indexOf('__rn__') < 0) {
116
+ categories['Other Debug'].push('__rn__');
117
+ }
118
+ } else if (typeof rnRaw === 'object') {
119
+ var rnKeys = Object.keys(rnRaw);
120
+ rn = {
121
+ keys: rnKeys,
122
+ hint: 'Use globalThis.__rn__.<Module> (e.g. globalThis.__rn__.I18nManager.isRTL) in execute_in_app, or pass dotted paths like __rn__.Platform to inspect_global.'
123
+ };
124
+ if (categories['Other Debug'].indexOf('__rn__') < 0) {
125
+ categories['Other Debug'].push('__rn__');
126
+ }
127
+ }
128
+ } catch (e) { /* ignore */ }
129
+
130
+ return { sdk: sdk, rn: rn, categories: categories };
131
+ })()
132
+ `;
133
+ }
134
+ // List globally available debugging objects in the app.
135
+ // Uses Object.getOwnPropertyNames + Object.keys to catch non-enumerable globals
136
+ // (Hermes does not always make `globalThis.x = ...` assignments enumerable),
137
+ // and probes __RN_AI_DEVTOOLS__ directly so the SDK's registered stores/
138
+ // navigation/custom objects surface as ready-to-use dotted paths.
139
+ export async function listDebugGlobals(device) {
140
+ return executeInApp(buildListDebugGlobalsExpression(), false, { originatingToolName: "list_debug_globals" }, device);
141
+ }
142
+ // Inspect a global object (or a dotted path into one) to see its properties
143
+ // and types. Accepts plain identifiers (`__APOLLO_CLIENT__`) and dotted paths
144
+ // (`__RN_AI_DEVTOOLS__.stores.redux`) so the discovery output from
145
+ // listDebugGlobals can be passed straight back in.
146
+ export async function inspectGlobal(objectName, device) {
147
+ // Reject anything that isn't a safe dotted identifier path. This both
148
+ // prevents accidental code execution via objectName and produces a clear
149
+ // error instead of a confusing Hermes parse failure.
150
+ if (!/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*$/.test(objectName)) {
151
+ return {
152
+ success: false,
153
+ error: `Invalid objectName: '${objectName}'. Expected an identifier or dotted path like '__APOLLO_CLIENT__' or '__EXECBRO__.stores.redux'. For arbitrary expressions, use execute_in_app.`
154
+ };
155
+ }
156
+ const expression = `
157
+ (function() {
158
+ var obj;
159
+ try { obj = ${objectName}; } catch (e) { return { error: 'NotFound: ' + (e && e.message ? e.message : String(e)) }; }
160
+ if (obj === undefined) return { error: 'Object not found' };
161
+ if (obj === null) return { error: 'Value is null' };
162
+ var t = typeof obj;
163
+ if (t !== 'object' && t !== 'function') {
164
+ return { __value: obj, __type: t };
165
+ }
166
+ var result = {};
167
+ var keys;
168
+ try { keys = Object.keys(obj); } catch (e) { keys = []; }
169
+ for (var i = 0; i < keys.length; i++) {
170
+ var key = keys[i];
171
+ var val;
172
+ try { val = obj[key]; } catch (e) { result[key] = { type: 'unknown', callable: false, error: 'getter threw' }; continue; }
173
+ var type = typeof val;
174
+ if (type === 'function') {
175
+ result[key] = { type: 'function', callable: true };
176
+ } else if (type === 'object' && val !== null) {
177
+ var preview;
178
+ try { preview = JSON.stringify(val); } catch (e) { preview = '[unserializable]'; }
179
+ if (preview && preview.length > 100) preview = preview.slice(0, 100) + '...';
180
+ result[key] = { type: Array.isArray(val) ? 'array' : 'object', callable: false, preview: preview };
181
+ } else {
182
+ result[key] = { type: type, callable: false, value: val };
183
+ }
184
+ }
185
+ return result;
186
+ })()
187
+ `;
188
+ return executeInApp(expression, false, { originatingToolName: "inspect_global" }, device);
189
+ }
190
+ // Reload the React Native app using __ReactRefresh
191
+ // Note: Page.reload CDP method may work on Bridgeless targets (via HostAgent) — not yet tested
192
+ // Uses fire-and-forget: sends the reload command without waiting for a response,
193
+ // since the JS context is destroyed during reload and would always timeout.
194
+ export async function reloadApp(device) {
195
+ // Get current connection info before reload
196
+ let app = getConnectedAppByDevice(device);
197
+ // Auto-connect if no connection exists. Mirrors scan_metro's flow
198
+ // (clearReconnectionSuppression + filterDebuggableDevices + purge +
199
+ // connectToDevice per device) — earlier attempts that used ensureConnection
200
+ // here raced with WS close events on first connect and reported
201
+ // "Connection succeeded but app is not available". scan_metro's pattern
202
+ // is the empirically-stable path.
203
+ if (!app) {
204
+ console.error("[execbro] No connection for reload, attempting auto-connect...");
205
+ const ports = await scanMetroPorts();
206
+ if (ports.length === 0) {
207
+ return {
208
+ success: false,
209
+ error: "No apps connected and no Metro server found. Make sure Metro bundler is running (npm start or expo start), then try again."
210
+ };
211
+ }
212
+ clearReconnectionSuppression();
213
+ const portDevices = new Map();
214
+ for (const port of ports) {
215
+ const devices = await fetchDevices(port);
216
+ const debuggable = filterDebuggableDevices(devices);
217
+ if (debuggable.length > 0) {
218
+ portDevices.set(port, debuggable);
219
+ }
220
+ }
221
+ purgeStaleConnectionsForPorts(portDevices);
222
+ for (const [port, devices] of portDevices) {
223
+ for (const dev of devices) {
224
+ try {
225
+ await connectToDevice(dev, port);
226
+ }
227
+ catch (error) {
228
+ console.error(`[execbro] Auto-connect failed for ${dev.title} on port ${port}: ${error}`);
229
+ }
230
+ }
231
+ }
232
+ app = getConnectedAppByDevice(device);
233
+ if (!app) {
234
+ return {
235
+ success: false,
236
+ error: "No apps connected. Found Metro server but could not connect to any device. Make sure the React Native app is running."
237
+ };
238
+ }
239
+ }
240
+ const port = app.port;
241
+ // If the in-app SDK was the network/console source before the reload, the
242
+ // new JS context must re-run init() before get_network_requests can read
243
+ // the SDK buffer again. Remember this so we can wait for re-readiness below
244
+ // instead of returning into the window where the MCP falls back to the
245
+ // duplicate-prone CDP/interceptor buffer.
246
+ const sdkWasPresent = app.sdkPresent === true;
247
+ // Fire-and-forget: send reload command via CDP without waiting for response.
248
+ // The JS context is destroyed during reload, so Runtime.evaluate would always timeout.
249
+ const reloadExpression = `(function() {
250
+ try {
251
+ if (typeof __ReactRefresh !== 'undefined' && typeof __ReactRefresh.performFullRefresh === 'function') {
252
+ __ReactRefresh.performFullRefresh('mcp-reload');
253
+ return 'ok';
254
+ }
255
+ if (typeof global !== 'undefined' && global.DevSettings && typeof global.DevSettings.reload === 'function') {
256
+ global.DevSettings.reload();
257
+ return 'ok';
258
+ }
259
+ return 'no-method';
260
+ } catch (e) { return 'error:' + e.message; }
261
+ })()`;
262
+ try {
263
+ if (app.ws.readyState !== WebSocket.OPEN) {
264
+ const deviceName = app.deviceInfo.deviceName || app.deviceInfo.title || "unknown";
265
+ return {
266
+ success: false,
267
+ error: [
268
+ `WebSocket connection is not open (device="${deviceName}", platform=${app.platform}).`,
269
+ "The CDP page may be stale or the app has crashed.",
270
+ "",
271
+ "Recovery steps (try in order):",
272
+ "1. Call scan_metro to re-establish a fresh CDP connection",
273
+ "2. If scan_metro doesn't help, force-restart the app:",
274
+ " - iOS: ios_terminate_app then ios_launch_app",
275
+ " - Android: android_launch_app (restarts automatically)",
276
+ "3. After restarting, call scan_metro again to reconnect",
277
+ ].join("\n")
278
+ };
279
+ }
280
+ // Send without registering a pending execution — fire and forget
281
+ const messageId = getNextMessageId();
282
+ app.ws.send(JSON.stringify({
283
+ id: messageId,
284
+ method: "Runtime.evaluate",
285
+ params: {
286
+ expression: reloadExpression,
287
+ returnByValue: true,
288
+ awaitPromise: false,
289
+ userGesture: true
290
+ }
291
+ }));
292
+ }
293
+ catch (error) {
294
+ return {
295
+ success: false,
296
+ error: `Failed to send reload command: ${error instanceof Error ? error.message : String(error)}`
297
+ };
298
+ }
299
+ // Auto-reconnect after reload
300
+ try {
301
+ // Wait for app to reload (give it time to restart JS context)
302
+ await delay(2000);
303
+ // Find and close only the targeted device's connection (not all devices on this port)
304
+ const targetDeviceId = app.deviceInfo.id;
305
+ for (const [key, connectedApp] of connectedApps.entries()) {
306
+ if (connectedApp.deviceInfo.id === targetDeviceId) {
307
+ cancelReconnectionTimer(key);
308
+ try {
309
+ connectedApp.ws.close();
310
+ }
311
+ catch {
312
+ // Ignore close errors
313
+ }
314
+ connectedApps.delete(key);
315
+ break;
316
+ }
317
+ }
318
+ // Small delay to ensure cleanup
319
+ await delay(500);
320
+ // Reconnect only the reloaded device (not all devices on the port)
321
+ const devices = await fetchDevices(port);
322
+ const targetDevice = devices.find(d => d.id === targetDeviceId)
323
+ || devices.find(d => d.deviceName === app.deviceInfo.deviceName);
324
+ if (targetDevice) {
325
+ await connectToDevice(targetDevice, port, {
326
+ isReconnection: false,
327
+ reconnectionConfig: { ...DEFAULT_RECONNECTION_CONFIG, enabled: false }
328
+ });
329
+ // If the SDK was the source before reload, wait for the new context
330
+ // to re-run init() and re-expose __RN_AI_DEVTOOLS__ before returning,
331
+ // so the caller's next get_network_requests reads the SDK buffer
332
+ // rather than falling back to the duplicate-prone CDP/interceptor
333
+ // buffer. Bounded; non-SDK apps and slow inits just fall through.
334
+ let sdkReady = true;
335
+ if (sdkWasPresent) {
336
+ const SDK_READY_TIMEOUT_MS = 5000;
337
+ const SDK_READY_POLL_MS = 300;
338
+ const deadline = Date.now() + SDK_READY_TIMEOUT_MS;
339
+ sdkReady = false;
340
+ while (Date.now() < deadline) {
341
+ if (await isSDKInstalled()) {
342
+ sdkReady = true;
343
+ break;
344
+ }
345
+ await delay(SDK_READY_POLL_MS);
346
+ }
347
+ }
348
+ return {
349
+ success: true,
350
+ result: `App reloaded and reconnected to ${targetDevice.deviceName || targetDevice.title}`
351
+ + (sdkWasPresent && !sdkReady
352
+ ? " (warning: in-app SDK did not re-initialize within 5s; network/console may briefly use the fallback buffer)"
353
+ : "")
354
+ };
355
+ }
356
+ else {
357
+ return {
358
+ success: true,
359
+ result: "App reloaded but could not auto-reconnect. Run 'scan_metro' to reconnect."
360
+ };
361
+ }
362
+ }
363
+ catch (error) {
364
+ return {
365
+ success: true,
366
+ result: `App reloaded but auto-reconnect failed: ${error instanceof Error ? error.message : String(error)}. Run 'scan_metro' to reconnect.`
367
+ };
368
+ }
369
+ }
370
+ //# sourceMappingURL=debugGlobals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debugGlobals.js","sourceRoot":"","sources":["../../src/core/debugGlobals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ export interface IosSimulatorRow {
2
+ name: string;
3
+ udid: string;
4
+ state: "booted" | "shutdown";
5
+ runtime: string;
6
+ rnConnected?: {
7
+ deviceName: string;
8
+ port: number;
9
+ };
10
+ }
11
+ export interface AndroidEmulatorRow {
12
+ name: string;
13
+ serial: string | null;
14
+ state: "running" | "stopped";
15
+ rnConnected?: {
16
+ deviceName: string;
17
+ port: number;
18
+ };
19
+ }
20
+ export interface AndroidPhysicalRow {
21
+ model: string;
22
+ serial: string;
23
+ state: "device" | "unauthorized" | "offline";
24
+ rnConnected?: {
25
+ deviceName: string;
26
+ port: number;
27
+ };
28
+ }
29
+ export interface ListAllDevicesResult {
30
+ ios: {
31
+ available: boolean;
32
+ error?: string;
33
+ simulators: IosSimulatorRow[];
34
+ };
35
+ android: {
36
+ available: boolean;
37
+ error?: string;
38
+ emulators: AndroidEmulatorRow[];
39
+ physical: AndroidPhysicalRow[];
40
+ };
41
+ summary: {
42
+ booted: number;
43
+ total: number;
44
+ };
45
+ }
46
+ /** Test-only: clear the cache so the next call re-queries. */
47
+ export declare function resetDeviceDiscoveryCache(): void;
48
+ export interface ListAllDevicesOptions {
49
+ refresh?: boolean;
50
+ }
51
+ export declare function listAllDevices(options?: ListAllDevicesOptions): Promise<ListAllDevicesResult>;
52
+ //# sourceMappingURL=deviceDiscovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceDiscovery.d.ts","sourceRoot":"","sources":["../../src/core/deviceDiscovery.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACtD;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACtD;AAED,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,QAAQ,GAAG,cAAc,GAAG,SAAS,CAAC;IAC7C,WAAW,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACtD;AAED,MAAM,WAAW,oBAAoB;IACjC,GAAG,EAAE;QACD,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,eAAe,EAAE,CAAC;KACjC,CAAC;IACF,OAAO,EAAE;QACL,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,kBAAkB,EAAE,CAAC;QAChC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;KAClC,CAAC;IACF,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAKD,8DAA8D;AAC9D,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AA+DD,MAAM,WAAW,qBAAqB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAsB,cAAc,CAChC,OAAO,GAAE,qBAA0B,GACpC,OAAO,CAAC,oBAAoB,CAAC,CAa/B"}
@@ -0,0 +1,74 @@
1
+ import { listIOSSimulators } from "./ios.js";
2
+ import { listAndroidDevices, getAndroidEmulatorAvds, getAdbIdForAvd } from "./android.js";
3
+ const CACHE_TTL_MS = 5000;
4
+ let cache = null;
5
+ /** Test-only: clear the cache so the next call re-queries. */
6
+ export function resetDeviceDiscoveryCache() {
7
+ cache = null;
8
+ }
9
+ async function discoverIos() {
10
+ const result = await listIOSSimulators(false);
11
+ if (!result.success) {
12
+ return { available: false, error: result.error, simulators: [] };
13
+ }
14
+ const simulators = (result.simulators ?? []).map((sim) => ({
15
+ name: sim.name,
16
+ udid: sim.udid,
17
+ state: sim.state === "Booted" ? "booted" : "shutdown",
18
+ runtime: sim.runtime
19
+ }));
20
+ return { available: true, simulators };
21
+ }
22
+ async function discoverAndroid() {
23
+ const devicesResult = await listAndroidDevices();
24
+ if (!devicesResult.success) {
25
+ return {
26
+ available: false,
27
+ error: devicesResult.error,
28
+ emulators: [],
29
+ physical: []
30
+ };
31
+ }
32
+ const rawDevices = devicesResult.devices ?? [];
33
+ const physical = rawDevices
34
+ .filter((d) => !/^emulator-\d+$/.test(d.id))
35
+ .map((d) => ({
36
+ model: d.model ?? d.id,
37
+ serial: d.id,
38
+ state: d.status ?? "offline"
39
+ }));
40
+ const avds = await getAndroidEmulatorAvds();
41
+ const emulators = await Promise.all(avds.map(async (name) => {
42
+ const serial = await getAdbIdForAvd(name);
43
+ return {
44
+ name,
45
+ serial,
46
+ state: serial ? "running" : "stopped"
47
+ };
48
+ }));
49
+ return { available: true, emulators, physical };
50
+ }
51
+ function computeSummary(result) {
52
+ const iosBooted = result.ios.simulators.filter((s) => s.state === "booted").length;
53
+ const androidRunning = result.android.emulators.filter((e) => e.state === "running").length;
54
+ const androidPhysicalOnline = result.android.physical.filter((p) => p.state === "device").length;
55
+ const booted = iosBooted + androidRunning + androidPhysicalOnline;
56
+ const total = result.ios.simulators.length +
57
+ result.android.emulators.length +
58
+ result.android.physical.length;
59
+ return { booted, total };
60
+ }
61
+ export async function listAllDevices(options = {}) {
62
+ if (!options.refresh && cache && Date.now() - cache.timestamp < CACHE_TTL_MS) {
63
+ return cache.result;
64
+ }
65
+ const [ios, android] = await Promise.all([discoverIos(), discoverAndroid()]);
66
+ const partial = { ios, android };
67
+ const result = {
68
+ ...partial,
69
+ summary: computeSummary(partial)
70
+ };
71
+ cache = { result, timestamp: Date.now() };
72
+ return result;
73
+ }
74
+ //# sourceMappingURL=deviceDiscovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceDiscovery.js","sourceRoot":"","sources":["../../src/core/deviceDiscovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ export type DeviceTargetSource = "registry" | "udid" | "adb-serial" | "name-match" | "default";
2
+ export interface DeviceTarget {
3
+ platform: "ios" | "android";
4
+ iosUdid?: string;
5
+ androidSerial?: string;
6
+ deviceName: string;
7
+ source: DeviceTargetSource;
8
+ }
9
+ export type DeviceResolverErrorCode = "MULTIPLE_DEVICES_MATCH" | "NO_DEVICES_FOUND" | "DEVICE_NOT_FOUND" | "SIMULATOR_NOT_BOOTED" | "CONFLICTING_IDENTIFIERS";
10
+ export interface DeviceResolverError {
11
+ code: DeviceResolverErrorCode;
12
+ message: string;
13
+ candidates?: Array<{
14
+ name: string;
15
+ platform: "ios" | "android";
16
+ identifier: string;
17
+ }>;
18
+ }
19
+ export type ResolveResult = {
20
+ ok: true;
21
+ target: DeviceTarget;
22
+ } | {
23
+ ok: false;
24
+ error: DeviceResolverError;
25
+ };
26
+ /**
27
+ * Render a DeviceResolverError as a single string suitable for tool responses.
28
+ * Appends the candidates list when present so the agent can disambiguate
29
+ * without an extra list_devices call.
30
+ */
31
+ export declare function formatResolverError(error: DeviceResolverError): string;
32
+ /**
33
+ * Resolve a single `device` string (UDID, adb serial, RN-registry deviceName,
34
+ * sim/emu name, or undefined) into a structured DeviceTarget.
35
+ *
36
+ * Resolution order:
37
+ * 1. UDID format → iOS simulator lookup (errors if shutdown).
38
+ * 2. emulator-NNNN format → Android serial lookup.
39
+ * 3. Substring match against the RN-connected registry.
40
+ * 4. Substring match against booted iOS sims and online Android devices.
41
+ * 5. No `device` argument → pick the single running device, or error.
42
+ */
43
+ export declare function resolveDeviceTarget(device?: string): Promise<ResolveResult>;
44
+ //# sourceMappingURL=deviceResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceResolver.d.ts","sourceRoot":"","sources":["../../src/core/deviceResolver.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,kBAAkB,GACxB,UAAU,GACV,MAAM,GACN,YAAY,GACZ,YAAY,GACZ,SAAS,CAAC;AAEhB,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,MAAM,uBAAuB,GAC7B,wBAAwB,GACxB,kBAAkB,GAClB,kBAAkB,GAClB,sBAAsB,GACtB,yBAAyB,CAAC;AAEhC,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzF;AAED,MAAM,MAAM,aAAa,GACnB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAClC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,mBAAmB,CAAA;CAAE,CAAC;AA2BhD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAMtE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAqOjF"}