execbro 0.0.1-reserve → 1.10.12

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 +186 -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 +769 -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 +98 -0
  384. package/build/core/screenState.d.ts.map +1 -0
  385. package/build/core/screenState.js +1121 -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 +295 -0
  416. package/build/pro/tap.d.ts.map +1 -0
  417. package/build/pro/tap.js +1937 -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 +745 -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,225 @@
1
+ import { getConnectedApps } from "./connection.js";
2
+ import { listAllDevices } from "./deviceDiscovery.js";
3
+ const UDID_REGEX = /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i;
4
+ const ADB_SERIAL_REGEX = /^emulator-\d+$/;
5
+ /**
6
+ * Lowercase and strip separators (whitespace, `_`, `-`) so substring matches
7
+ * survive punctuation drift between caller input and the device's reported
8
+ * name (e.g. "SM_A356N" vs "SM-A356N - 15 - API 35").
9
+ */
10
+ function normalizeName(value) {
11
+ if (!value)
12
+ return "";
13
+ return value.toLowerCase().replace(/[\s_\-]+/g, "");
14
+ }
15
+ function err(code, message, candidates) {
16
+ return { ok: false, error: { code, message, candidates } };
17
+ }
18
+ function ok(target) {
19
+ return { ok: true, target };
20
+ }
21
+ /**
22
+ * Render a DeviceResolverError as a single string suitable for tool responses.
23
+ * Appends the candidates list when present so the agent can disambiguate
24
+ * without an extra list_devices call.
25
+ */
26
+ export function formatResolverError(error) {
27
+ if (!error.candidates || error.candidates.length === 0)
28
+ return error.message;
29
+ const lines = error.candidates.map((c) => ` - ${c.name} (${c.platform}) → device="${c.identifier}"`);
30
+ return `${error.message}\nCandidates:\n${lines.join("\n")}`;
31
+ }
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 async function resolveDeviceTarget(device) {
44
+ const trimmed = device?.trim();
45
+ // Step 1: UDID match.
46
+ if (trimmed && UDID_REGEX.test(trimmed)) {
47
+ const inv = await listAllDevices();
48
+ const sim = inv.ios.simulators.find((s) => s.udid.toLowerCase() === trimmed.toLowerCase());
49
+ if (!sim) {
50
+ return err("DEVICE_NOT_FOUND", `No iOS simulator with UDID "${trimmed}". Call list_devices to see available identifiers.`);
51
+ }
52
+ if (sim.state !== "booted") {
53
+ return err("SIMULATOR_NOT_BOOTED", `Simulator "${sim.name}" (${sim.udid}) is not booted. Boot it with ios_boot_simulator({ udid: "${sim.udid}" }).`);
54
+ }
55
+ return ok({
56
+ platform: "ios",
57
+ iosUdid: sim.udid,
58
+ deviceName: sim.name,
59
+ source: "udid"
60
+ });
61
+ }
62
+ // Step 2: adb serial format.
63
+ if (trimmed && ADB_SERIAL_REGEX.test(trimmed)) {
64
+ const inv = await listAllDevices();
65
+ const emu = inv.android.emulators.find((e) => e.serial === trimmed);
66
+ if (emu) {
67
+ // Prefer the RN registry's deviceName when an app is connected on
68
+ // this serial — the registry name (e.g. "sdk_gphone16k_arm64 - 16 -
69
+ // API 36") matches what every other code path emits; the AVD
70
+ // identifier ("Pixel_9_-_16kb") is confusing as a response label.
71
+ // OB2 (2026-05-20).
72
+ const registryApp = getConnectedApps().find((e) => e.app.platform === "android" && e.app.adbSerial === trimmed);
73
+ return ok({
74
+ platform: "android",
75
+ androidSerial: trimmed,
76
+ deviceName: registryApp?.app.deviceInfo.deviceName || emu.name,
77
+ source: "adb-serial"
78
+ });
79
+ }
80
+ const phys = inv.android.physical.find((p) => p.serial === trimmed);
81
+ if (phys) {
82
+ const registryApp = getConnectedApps().find((e) => e.app.platform === "android" && e.app.adbSerial === trimmed);
83
+ return ok({
84
+ platform: "android",
85
+ androidSerial: trimmed,
86
+ deviceName: registryApp?.app.deviceInfo.deviceName || phys.model,
87
+ source: "adb-serial"
88
+ });
89
+ }
90
+ return err("DEVICE_NOT_FOUND", `No Android device with serial "${trimmed}". Call list_devices to see attached devices.`);
91
+ }
92
+ // Step 3: Registry substring match.
93
+ if (trimmed) {
94
+ const apps = getConnectedApps();
95
+ const needle = normalizeName(trimmed);
96
+ const matches = apps.filter((entry) => {
97
+ const name = normalizeName(entry.app.deviceInfo.deviceName);
98
+ return name.includes(needle);
99
+ });
100
+ if (matches.length === 1) {
101
+ const m = matches[0].app;
102
+ // When the iOS app's UDID hasn't been backfilled yet (the
103
+ // findSimulatorByName race during connection), look it up on
104
+ // demand. Without this, downstream callers default to whichever
105
+ // simulator simctl reports as active — which on a multi-sim
106
+ // setup can be the OTHER device. Bug #5 (2026-05-20).
107
+ let iosUdid = m.simulatorUdid;
108
+ if (m.platform === "ios" && !iosUdid && m.deviceInfo.deviceName) {
109
+ try {
110
+ const inv = await listAllDevices();
111
+ const sim = inv.ios.simulators.find((s) => s.state === "booted" && s.name === m.deviceInfo.deviceName);
112
+ if (sim)
113
+ iosUdid = sim.udid;
114
+ }
115
+ catch {
116
+ // best-effort; fall through with undefined udid
117
+ }
118
+ }
119
+ return ok({
120
+ platform: m.platform,
121
+ iosUdid,
122
+ androidSerial: m.adbSerial,
123
+ deviceName: m.deviceInfo.deviceName,
124
+ source: "registry"
125
+ });
126
+ }
127
+ if (matches.length > 1) {
128
+ return err("MULTIPLE_DEVICES_MATCH", `"${trimmed}" matches multiple connected devices. Pass a more specific identifier (full name, UDID, or adb serial).`, matches.map((m) => ({
129
+ name: m.app.deviceInfo.deviceName,
130
+ platform: m.app.platform,
131
+ identifier: m.app.simulatorUdid ?? m.app.adbSerial ?? m.app.deviceInfo.deviceName
132
+ })));
133
+ }
134
+ }
135
+ // Step 4: OS-level name match.
136
+ const inv = await listAllDevices();
137
+ if (trimmed) {
138
+ const needle = normalizeName(trimmed);
139
+ const iosBootedMatches = inv.ios.simulators.filter((s) => s.state === "booted" && normalizeName(s.name).includes(needle));
140
+ const androidRunningMatches = inv.android.emulators.filter((e) => e.state === "running" && normalizeName(e.name).includes(needle));
141
+ const androidPhysicalMatches = inv.android.physical.filter((p) => p.state === "device" && normalizeName(p.model).includes(needle));
142
+ const totalMatches = iosBootedMatches.length + androidRunningMatches.length + androidPhysicalMatches.length;
143
+ if (totalMatches === 1) {
144
+ if (iosBootedMatches.length === 1) {
145
+ const s = iosBootedMatches[0];
146
+ return ok({
147
+ platform: "ios",
148
+ iosUdid: s.udid,
149
+ deviceName: s.name,
150
+ source: "name-match"
151
+ });
152
+ }
153
+ if (androidRunningMatches.length === 1) {
154
+ const e = androidRunningMatches[0];
155
+ return ok({
156
+ platform: "android",
157
+ androidSerial: e.serial ?? undefined,
158
+ deviceName: e.name,
159
+ source: "name-match"
160
+ });
161
+ }
162
+ const p = androidPhysicalMatches[0];
163
+ return ok({
164
+ platform: "android",
165
+ androidSerial: p.serial,
166
+ deviceName: p.model,
167
+ source: "name-match"
168
+ });
169
+ }
170
+ if (totalMatches > 1) {
171
+ const candidates = [
172
+ ...iosBootedMatches.map((s) => ({ name: s.name, platform: "ios", identifier: s.udid })),
173
+ ...androidRunningMatches.map((e) => ({ name: e.name, platform: "android", identifier: e.serial ?? e.name })),
174
+ ...androidPhysicalMatches.map((p) => ({ name: p.model, platform: "android", identifier: p.serial }))
175
+ ];
176
+ return err("MULTIPLE_DEVICES_MATCH", `"${trimmed}" matches multiple devices. Pass a UDID or adb serial to disambiguate.`, candidates);
177
+ }
178
+ return err("DEVICE_NOT_FOUND", `"${trimmed}" did not match any connected RN app, booted simulator, or attached Android device. Call list_devices to enumerate options.`);
179
+ }
180
+ // Step 5: No `device` argument — pick the single available device.
181
+ const bootedSims = inv.ios.simulators.filter((s) => s.state === "booted");
182
+ const runningEmus = inv.android.emulators.filter((e) => e.state === "running");
183
+ const onlinePhys = inv.android.physical.filter((p) => p.state === "device");
184
+ const totalRunning = bootedSims.length + runningEmus.length + onlinePhys.length;
185
+ if (totalRunning === 0) {
186
+ // Final fallback: if a single RN app is connected (e.g. physical iOS
187
+ // not in simctl), use it.
188
+ const apps = getConnectedApps();
189
+ if (apps.length === 1) {
190
+ const m = apps[0].app;
191
+ return ok({
192
+ platform: m.platform,
193
+ iosUdid: m.simulatorUdid,
194
+ androidSerial: m.adbSerial,
195
+ deviceName: m.deviceInfo.deviceName,
196
+ source: "default"
197
+ });
198
+ }
199
+ return err("NO_DEVICES_FOUND", "No devices found. Boot an iOS simulator or start an Android emulator, then retry.");
200
+ }
201
+ if (totalRunning > 1) {
202
+ const candidates = [
203
+ ...bootedSims.map((s) => ({ name: s.name, platform: "ios", identifier: s.udid })),
204
+ ...runningEmus.map((e) => ({ name: e.name, platform: "android", identifier: e.serial ?? e.name })),
205
+ ...onlinePhys.map((p) => ({ name: p.model, platform: "android", identifier: p.serial }))
206
+ ];
207
+ return err("MULTIPLE_DEVICES_MATCH", "Multiple devices available. Specify device='...'. Call list_devices to enumerate.", candidates);
208
+ }
209
+ if (bootedSims.length === 1) {
210
+ const s = bootedSims[0];
211
+ return ok({ platform: "ios", iosUdid: s.udid, deviceName: s.name, source: "default" });
212
+ }
213
+ if (runningEmus.length === 1) {
214
+ const e = runningEmus[0];
215
+ return ok({
216
+ platform: "android",
217
+ androidSerial: e.serial ?? undefined,
218
+ deviceName: e.name,
219
+ source: "default"
220
+ });
221
+ }
222
+ const p = onlinePhys[0];
223
+ return ok({ platform: "android", androidSerial: p.serial, deviceName: p.model, source: "default" });
224
+ }
225
+ //# sourceMappingURL=deviceResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceResolver.js","sourceRoot":"","sources":["../../src/core/deviceResolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Error Screen Parser
3
+ *
4
+ * Parses React Native error screens from OCR text to extract structured error information.
5
+ * Used as fallback when CDP connection cannot be established due to bundle errors.
6
+ */
7
+ import { BundleError } from "./bundle.js";
8
+ /**
9
+ * Result of parsing an error screen
10
+ */
11
+ export interface ParsedErrorScreen {
12
+ found: boolean;
13
+ error?: BundleError;
14
+ rawText?: string;
15
+ }
16
+ /**
17
+ * Parse OCR text from a React Native error screen (red screen of death)
18
+ *
19
+ * Common error formats:
20
+ * - "Unable to resolve \"@/module\" from \"path/to/file.ts\""
21
+ * - "SyntaxError: ..."
22
+ * - "TransformError: ..."
23
+ * - "Error: ..."
24
+ */
25
+ export declare function parseErrorScreenText(ocrText: string): ParsedErrorScreen;
26
+ /**
27
+ * Format parsed error for display
28
+ */
29
+ export declare function formatParsedError(parsed: ParsedErrorScreen): string;
30
+ //# sourceMappingURL=errorScreenParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorScreenParser.d.ts","sourceRoot":"","sources":["../../src/core/errorScreenParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CA2FvE;AAiGD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAgCnE"}
@@ -0,0 +1,198 @@
1
+ /**
2
+ * Error Screen Parser
3
+ *
4
+ * Parses React Native error screens from OCR text to extract structured error information.
5
+ * Used as fallback when CDP connection cannot be established due to bundle errors.
6
+ */
7
+ /**
8
+ * Parse OCR text from a React Native error screen (red screen of death)
9
+ *
10
+ * Common error formats:
11
+ * - "Unable to resolve \"@/module\" from \"path/to/file.ts\""
12
+ * - "SyntaxError: ..."
13
+ * - "TransformError: ..."
14
+ * - "Error: ..."
15
+ */
16
+ export function parseErrorScreenText(ocrText) {
17
+ if (!ocrText || ocrText.trim().length === 0) {
18
+ return { found: false };
19
+ }
20
+ const normalizedText = normalizeOcrText(ocrText);
21
+ // Check if this looks like an error screen
22
+ if (!looksLikeErrorScreen(normalizedText)) {
23
+ return { found: false, rawText: ocrText };
24
+ }
25
+ const error = {
26
+ timestamp: new Date(),
27
+ type: "other",
28
+ message: ""
29
+ };
30
+ // Try to parse different error types
31
+ // 1. Module resolution errors: "Unable to resolve \"module\" from \"file\""
32
+ const resolutionMatch = normalizedText.match(/unable\s+to\s+resolve\s+["']([^"']+)["']\s+from\s+["']([^"']+)["']/i);
33
+ if (resolutionMatch) {
34
+ error.type = "resolution";
35
+ error.message = `Unable to resolve "${resolutionMatch[1]}"`;
36
+ error.file = resolutionMatch[2];
37
+ // Try to extract import stack
38
+ error.importStack = extractImportStack(normalizedText);
39
+ return { found: true, error, rawText: ocrText };
40
+ }
41
+ // 2. Syntax errors
42
+ const syntaxMatch = normalizedText.match(/syntax\s*error[:\s]+(.+?)(?:\n|$)/i);
43
+ if (syntaxMatch) {
44
+ error.type = "syntax";
45
+ error.message = `SyntaxError: ${syntaxMatch[1].trim()}`;
46
+ // Try to extract file location
47
+ const locationInfo = extractFileLocation(normalizedText);
48
+ if (locationInfo) {
49
+ error.file = locationInfo.file;
50
+ error.line = locationInfo.line;
51
+ error.column = locationInfo.column;
52
+ }
53
+ return { found: true, error, rawText: ocrText };
54
+ }
55
+ // 3. Transform errors (Babel/Metro transforms)
56
+ const transformMatch = normalizedText.match(/transform\s*error[:\s]+(.+?)(?:\n|$)/i);
57
+ if (transformMatch) {
58
+ error.type = "transform";
59
+ error.message = `TransformError: ${transformMatch[1].trim()}`;
60
+ const locationInfo = extractFileLocation(normalizedText);
61
+ if (locationInfo) {
62
+ error.file = locationInfo.file;
63
+ error.line = locationInfo.line;
64
+ error.column = locationInfo.column;
65
+ }
66
+ return { found: true, error, rawText: ocrText };
67
+ }
68
+ // 4. Generic error pattern: "Error: message"
69
+ const errorMatch = normalizedText.match(/error[:\s]+(.+?)(?:\n|$)/i);
70
+ if (errorMatch) {
71
+ error.message = errorMatch[1].trim();
72
+ const locationInfo = extractFileLocation(normalizedText);
73
+ if (locationInfo) {
74
+ error.file = locationInfo.file;
75
+ error.line = locationInfo.line;
76
+ error.column = locationInfo.column;
77
+ }
78
+ return { found: true, error, rawText: ocrText };
79
+ }
80
+ // 5. Fallback: use the entire text as the error message
81
+ // Truncate if too long
82
+ const maxLength = 500;
83
+ error.message = normalizedText.length > maxLength
84
+ ? normalizedText.substring(0, maxLength) + "..."
85
+ : normalizedText;
86
+ return { found: true, error, rawText: ocrText };
87
+ }
88
+ /**
89
+ * Normalize OCR text by fixing common OCR errors and standardizing whitespace
90
+ */
91
+ function normalizeOcrText(text) {
92
+ return text
93
+ // Replace multiple whitespace with single space
94
+ .replace(/\s+/g, " ")
95
+ // Fix common OCR misreadings
96
+ .replace(/[|l]mport/gi, "import")
97
+ .replace(/reso[|l]ve/gi, "resolve")
98
+ .replace(/unab[|l]e/gi, "unable")
99
+ .replace(/modu[|l]e/gi, "module")
100
+ // Normalize quotes
101
+ .replace(/[""'']/g, '"')
102
+ .trim();
103
+ }
104
+ /**
105
+ * Check if OCR text looks like a React Native error screen
106
+ */
107
+ function looksLikeErrorScreen(text) {
108
+ const lowerText = text.toLowerCase();
109
+ const errorIndicators = [
110
+ "error",
111
+ "unable to resolve",
112
+ "syntax error",
113
+ "transform error",
114
+ "bundling failed",
115
+ "metro has encountered an error",
116
+ "failed to construct",
117
+ "unexpected token",
118
+ "module not found",
119
+ "cannot find module",
120
+ "import stack",
121
+ ".tsx",
122
+ ".ts",
123
+ ".js",
124
+ ".jsx"
125
+ ];
126
+ return errorIndicators.some(indicator => lowerText.includes(indicator));
127
+ }
128
+ /**
129
+ * Extract file location (file:line:column) from text
130
+ */
131
+ function extractFileLocation(text) {
132
+ // Pattern: /path/to/file.tsx:123:45 or /path/to/file.tsx:123
133
+ const locationMatch = text.match(/([a-zA-Z0-9_\-./\\@]+\.(tsx?|jsx?|mjs|cjs)):(\d+)(?::(\d+))?/i);
134
+ if (locationMatch) {
135
+ return {
136
+ file: locationMatch[1],
137
+ line: parseInt(locationMatch[3], 10),
138
+ column: locationMatch[4] ? parseInt(locationMatch[4], 10) : undefined
139
+ };
140
+ }
141
+ // Try to find just a file path
142
+ const fileMatch = text.match(/([a-zA-Z0-9_\-./\\@]+\.(tsx?|jsx?|mjs|cjs))/i);
143
+ if (fileMatch) {
144
+ return { file: fileMatch[1] };
145
+ }
146
+ return null;
147
+ }
148
+ /**
149
+ * Extract import stack from error text
150
+ */
151
+ function extractImportStack(text) {
152
+ const stack = [];
153
+ // Look for patterns like:
154
+ // - "import from file.tsx"
155
+ // - "app/hooks/useAuth.ts"
156
+ // - file references in the text
157
+ const filePattern = /([a-zA-Z0-9_\-./\\@]+\.(tsx?|jsx?|mjs|cjs))/gi;
158
+ let match;
159
+ while ((match = filePattern.exec(text)) !== null) {
160
+ const file = match[1];
161
+ // Avoid duplicates
162
+ if (!stack.includes(file)) {
163
+ stack.push(file);
164
+ }
165
+ }
166
+ return stack.length > 0 ? stack : undefined;
167
+ }
168
+ /**
169
+ * Format parsed error for display
170
+ */
171
+ export function formatParsedError(parsed) {
172
+ if (!parsed.found || !parsed.error) {
173
+ return "No error detected in screenshot.";
174
+ }
175
+ const { error } = parsed;
176
+ const lines = [];
177
+ lines.push(`[Screenshot OCR] ${error.type.toUpperCase()} ERROR`);
178
+ lines.push(`Message: ${error.message}`);
179
+ if (error.file) {
180
+ let location = `File: ${error.file}`;
181
+ if (error.line) {
182
+ location += `:${error.line}`;
183
+ if (error.column) {
184
+ location += `:${error.column}`;
185
+ }
186
+ }
187
+ lines.push(location);
188
+ }
189
+ if (error.importStack && error.importStack.length > 0) {
190
+ lines.push("\nImport Stack:");
191
+ error.importStack.forEach(imp => {
192
+ lines.push(` - ${imp}`);
193
+ });
194
+ }
195
+ lines.push("\n(Captured via screenshot OCR fallback)");
196
+ return lines.join("\n");
197
+ }
198
+ //# sourceMappingURL=errorScreenParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorScreenParser.js","sourceRoot":"","sources":["../../src/core/errorScreenParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Marker class for errors caused by invalid agent input (wrong device name,
3
+ * missing required predicate, ambiguous match, etc). H2 (Step 9 in the
4
+ * 2026-05-15 plan): the top-level catch in index.ts skips PostHog
5
+ * captureException for these so error tracking surfaces real product bugs,
6
+ * not validation noise (~13% of recent dashboard volume).
7
+ *
8
+ * The trade-off vs regex-matching the message: this is self-documenting at
9
+ * the throw site and survives message reformatting / translation.
10
+ */
11
+ export declare class UserInputError extends Error {
12
+ constructor(message: string);
13
+ }
14
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,qBAAa,cAAe,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI9B"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Marker class for errors caused by invalid agent input (wrong device name,
3
+ * missing required predicate, ambiguous match, etc). H2 (Step 9 in the
4
+ * 2026-05-15 plan): the top-level catch in index.ts skips PostHog
5
+ * captureException for these so error tracking surfaces real product bugs,
6
+ * not validation noise (~13% of recent dashboard volume).
7
+ *
8
+ * The trade-off vs regex-matching the message: this is self-documenting at
9
+ * the throw site and survives message reformatting / translation.
10
+ */
11
+ export class UserInputError extends Error {
12
+ constructor(message) {
13
+ super(message);
14
+ this.name = "UserInputError";
15
+ }
16
+ }
17
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IACrC,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IACjC,CAAC;CACJ"}
@@ -0,0 +1,18 @@
1
+ export type EscapeResult = {
2
+ ok: true;
3
+ expression: string;
4
+ } | {
5
+ ok: false;
6
+ reason: string;
7
+ };
8
+ /**
9
+ * Walk a JS source string and rewrite non-ASCII-printable code points that
10
+ * occur inside string literals (single quote, double quote, template literal
11
+ * cooked body) to \uXXXX or \u{XXXXX} escape sequences. Code in regular
12
+ * expression bodies, comments, identifiers, and template-literal `${...}`
13
+ * substitution expressions is left untouched.
14
+ *
15
+ * Returns a structured error on unbalanced quotes / unterminated literals.
16
+ */
17
+ export declare function escapeNonAsciiInStringLiterals(src: string): EscapeResult;
18
+ //# sourceMappingURL=escapeNonAscii.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escapeNonAscii.d.ts","sourceRoot":"","sources":["../../src/core/escapeNonAscii.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AA4B5F;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAuVxE"}