rnxsim 0.1.370 → 0.1.372

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 (207) hide show
  1. package/cli/bin.ts +2 -2
  2. package/cli/commands/box/checkout-plane.ts +65 -14
  3. package/cli/commands/box/cloud-box.ts +294 -0
  4. package/cli/commands/box/plane-share.ts +208 -0
  5. package/cli/commands/box/rnx-command.ts +2 -2
  6. package/cli/commands/box/search-command.ts +157 -0
  7. package/cli/commands/box.ts +269 -13
  8. package/cli/commands/control.ts +6 -1
  9. package/cli/outbound-endpoints.ts +37 -1
  10. package/dist-cli/bin.js +5 -5
  11. package/dist-cli/chunks/{agent-3R4424LW.js → agent-RTAKJ5UM.js} +2 -2
  12. package/dist-cli/chunks/{agent-wrapper-4PPWZWSY.js → agent-wrapper-JWRDI26D.js} +2 -2
  13. package/dist-cli/chunks/{app-fonts-KYXB6CXQ.js → app-fonts-RKO3N4PB.js} +2 -2
  14. package/dist-cli/chunks/{assert-7EZOWGYQ.js → assert-Y5LXPWC6.js} +2 -2
  15. package/dist-cli/chunks/{auth-L7M36H6C.js → auth-4SPTRWTM.js} +2 -2
  16. package/dist-cli/chunks/{beta-FKAF6YWJ.js → beta-KYS22QPY.js} +2 -2
  17. package/dist-cli/chunks/{box-5Y5VBMHV.js → box-7CK72ZPF.js} +617 -596
  18. package/dist-cli/chunks/{camera-XHF2RPFG.js → camera-RUL426MQ.js} +2 -2
  19. package/dist-cli/chunks/{chunk-EQ3OE2AV.js → chunk-2MA3Q44D.js} +1 -1
  20. package/dist-cli/chunks/{chunk-DHYTRCIP.js → chunk-2OA2WE7G.js} +2 -2
  21. package/dist-cli/chunks/{chunk-DMHSD6YJ.js → chunk-3C6LTIDV.js} +2 -2
  22. package/dist-cli/chunks/{chunk-NR2V2ONN.js → chunk-4UMODU6C.js} +2 -2
  23. package/dist-cli/chunks/{chunk-Z2VBSNFI.js → chunk-5Q6ZEZFF.js} +1 -1
  24. package/dist-cli/chunks/{chunk-LUOHRBJG.js → chunk-7FYOZQBM.js} +1 -1
  25. package/dist-cli/chunks/{chunk-Q4MRJ6PO.js → chunk-BRRWRBW7.js} +2 -2
  26. package/dist-cli/chunks/chunk-CEQXZ3GA.js +11 -0
  27. package/dist-cli/chunks/{chunk-DUXHYPBP.js → chunk-CZ2FOZVC.js} +2 -2
  28. package/dist-cli/chunks/{chunk-CMVRTZ5G.js → chunk-D5AT7UT5.js} +2 -2
  29. package/dist-cli/chunks/{chunk-D2GZASRV.js → chunk-DQOQQFMP.js} +1 -1
  30. package/dist-cli/chunks/{chunk-3UXXYJVD.js → chunk-EKSSAC4L.js} +1 -1
  31. package/dist-cli/chunks/{chunk-5BR33NAZ.js → chunk-EY5OHL2M.js} +1 -1
  32. package/dist-cli/chunks/{chunk-FK4JSTZ3.js → chunk-FOW2LPM7.js} +2 -2
  33. package/dist-cli/chunks/{chunk-WFQHT4QD.js → chunk-G5G7PQKO.js} +2 -2
  34. package/dist-cli/chunks/{chunk-WPV4H5S4.js → chunk-GPYG2L7R.js} +2 -2
  35. package/dist-cli/chunks/{chunk-3SOPYG7S.js → chunk-H2SKPUSI.js} +2 -2
  36. package/dist-cli/chunks/{chunk-6A6L3VJR.js → chunk-H567W7JT.js} +2 -2
  37. package/dist-cli/chunks/{chunk-PAUEZO6F.js → chunk-HDGZAVH3.js} +2 -2
  38. package/dist-cli/chunks/{chunk-AALKIAUZ.js → chunk-I37LRPZ3.js} +1 -1
  39. package/dist-cli/chunks/{chunk-JZLDHPB7.js → chunk-I7LRVN5M.js} +2 -2
  40. package/dist-cli/chunks/{chunk-3BG6UCQY.js → chunk-IX25FFF3.js} +11 -11
  41. package/dist-cli/chunks/{chunk-72S5FCBY.js → chunk-J2TJRPDB.js} +2 -2
  42. package/dist-cli/chunks/{chunk-RRX52O37.js → chunk-JPRHJMUJ.js} +1 -1
  43. package/dist-cli/chunks/{chunk-BMIJZNKD.js → chunk-K4TGUDY4.js} +2 -2
  44. package/dist-cli/chunks/{chunk-7C7TJYZ3.js → chunk-KSE5XGYU.js} +2 -2
  45. package/dist-cli/chunks/{chunk-OJZHECGH.js → chunk-KVVNCIJA.js} +1 -1
  46. package/dist-cli/chunks/{chunk-LXPHL6FO.js → chunk-KWLUOLYQ.js} +2 -2
  47. package/dist-cli/chunks/{chunk-C7BA5CCM.js → chunk-KXAE64HF.js} +2 -2
  48. package/dist-cli/chunks/{chunk-EWSWOWXK.js → chunk-L5BEWXQZ.js} +2 -2
  49. package/dist-cli/chunks/{chunk-D24EOJ4C.js → chunk-LAQKTHRM.js} +2 -2
  50. package/dist-cli/chunks/{chunk-IDLFVRPN.js → chunk-LWLHVF6Y.js} +1 -1
  51. package/dist-cli/chunks/{chunk-EOIBLKZO.js → chunk-MKHW3JNL.js} +2 -2
  52. package/dist-cli/chunks/{chunk-64JAEJ6N.js → chunk-MSM2E74F.js} +1 -1
  53. package/dist-cli/chunks/{chunk-DXV37CJN.js → chunk-NBEOA72C.js} +1 -1
  54. package/dist-cli/chunks/{chunk-H5X5FJ63.js → chunk-NLMDMNO6.js} +2 -2
  55. package/dist-cli/chunks/{chunk-6W4HIWC7.js → chunk-NT43X5LI.js} +2 -2
  56. package/dist-cli/chunks/{chunk-PNOENVMJ.js → chunk-NWPYM54M.js} +1 -1
  57. package/dist-cli/chunks/{chunk-O6QLKSAM.js → chunk-OLHHB6LD.js} +2 -2
  58. package/dist-cli/chunks/{chunk-MDCY532E.js → chunk-P6K6XFWE.js} +2 -2
  59. package/dist-cli/chunks/{chunk-LIMWG54N.js → chunk-PETP6LVI.js} +1 -1
  60. package/dist-cli/chunks/{chunk-YIZGNT7A.js → chunk-PKY76S57.js} +1 -1
  61. package/dist-cli/chunks/chunk-POR7R3TP.js +4 -0
  62. package/dist-cli/chunks/chunk-PUH6RQBJ.js +7 -0
  63. package/dist-cli/chunks/{chunk-NJMU5BN6.js → chunk-Q5WPPOFV.js} +1 -1
  64. package/dist-cli/chunks/{chunk-HQQTS2CB.js → chunk-Q7JSU5DI.js} +3 -3
  65. package/dist-cli/chunks/{chunk-U63T6LIQ.js → chunk-QA2PTSOC.js} +1 -1
  66. package/dist-cli/chunks/{chunk-2FOGXVOK.js → chunk-R7HMFLXI.js} +2 -2
  67. package/dist-cli/chunks/{chunk-FA75F34Z.js → chunk-RXKZJAGY.js} +1 -1
  68. package/dist-cli/chunks/{chunk-5RKRVS5A.js → chunk-SC7PGULZ.js} +2 -2
  69. package/dist-cli/chunks/{chunk-UFVAAWGZ.js → chunk-SLTEYNAE.js} +1 -1
  70. package/dist-cli/chunks/{chunk-6GPS7U4X.js → chunk-SSQCKJQZ.js} +2 -2
  71. package/dist-cli/chunks/{chunk-ARMXC3C3.js → chunk-SZX6ARJX.js} +3 -3
  72. package/dist-cli/chunks/{chunk-6S5LJV2O.js → chunk-U3XYGLXG.js} +2 -2
  73. package/dist-cli/chunks/chunk-UA5WQCBU.js +7 -0
  74. package/dist-cli/chunks/{chunk-VVQCZ42C.js → chunk-UVKX6FQ4.js} +1 -1
  75. package/dist-cli/chunks/{chunk-Z3DENGXW.js → chunk-VQQXUXXF.js} +2 -2
  76. package/dist-cli/chunks/{chunk-I52NT6VG.js → chunk-WR7LRCYW.js} +1 -1
  77. package/dist-cli/chunks/{chunk-HEKHLQ3B.js → chunk-XA4YU3A4.js} +3 -3
  78. package/dist-cli/chunks/{chunk-GRO74J2X.js → chunk-YEGWC2OY.js} +1 -1
  79. package/dist-cli/chunks/{chunk-AVJBT5LF.js → chunk-YWTBN7SD.js} +1 -1
  80. package/dist-cli/chunks/{chunk-PIZXOXBL.js → chunk-ZRQKEKHX.js} +2 -2
  81. package/dist-cli/chunks/{chunk-X6WQ4YWE.js → chunk-ZTZTRD5R.js} +1 -1
  82. package/dist-cli/chunks/{cleanup-MXMMJ7JW.js → cleanup-7ATBNZHC.js} +2 -2
  83. package/dist-cli/chunks/cli-version-D2IDQO7X.js +4 -0
  84. package/dist-cli/chunks/{compat-E6KE5KDI.js → compat-4ZC6ZMMA.js} +2 -2
  85. package/dist-cli/chunks/{config-QSLLVZDS.js → config-EOBODQ32.js} +2 -2
  86. package/dist-cli/chunks/{connect-QE4VU6GB.js → connect-ZQ72CZ7O.js} +2 -2
  87. package/dist-cli/chunks/control-FKPKLOE2.js +4 -0
  88. package/dist-cli/chunks/daemon-WFHWS3JU.js +4 -0
  89. package/dist-cli/chunks/{debug-5FG3MBJS.js → debug-7Z325GNU.js} +3 -3
  90. package/dist-cli/chunks/{desktop-5EZX7NX5.js → desktop-CR7ALX7H.js} +3 -3
  91. package/dist-cli/chunks/{detox-WJGQP5TM.js → detox-RZ37736M.js} +2 -2
  92. package/dist-cli/chunks/{device-D7LKCAMS.js → device-TA3SQP6K.js} +2 -2
  93. package/dist-cli/chunks/{diagnose-A3W6ZTGA.js → diagnose-JFKFKR3S.js} +2 -2
  94. package/dist-cli/chunks/disk-cleanup-HZM7VM4S.js +4 -0
  95. package/dist-cli/chunks/{do-chain-RUJNRPPF.js → do-chain-MTT65YNX.js} +2 -2
  96. package/dist-cli/chunks/drivers-BXEXWRVJ.js +4 -0
  97. package/dist-cli/chunks/{env-U67SQVTV.js → env-SFI24PLS.js} +2 -2
  98. package/dist-cli/chunks/{film-XC6UAQ3V.js → film-GPHSJLIH.js} +3 -3
  99. package/dist-cli/chunks/flow-FBCU3TZN.js +4 -0
  100. package/dist-cli/chunks/help-6MLROWYO.js +4 -0
  101. package/dist-cli/chunks/{hidden-runtime-alias-7S2TNZXG.js → hidden-runtime-alias-7Z6PYH53.js} +2 -2
  102. package/dist-cli/chunks/{home-paths-LMO5LB4F.js → home-paths-MEGVA6ET.js} +2 -2
  103. package/dist-cli/chunks/inspect-EWT5SXBD.js +4 -0
  104. package/dist-cli/chunks/install-desktop-IFBUH7MH.js +4 -0
  105. package/dist-cli/chunks/{login-JIU42S4C.js → login-EHUZYRAM.js} +2 -2
  106. package/dist-cli/chunks/{logout-JTAWQXZO.js → logout-WPGT62N6.js} +2 -2
  107. package/dist-cli/chunks/{maestro-TYBQYOGB.js → maestro-4HVDLCTI.js} +3 -3
  108. package/dist-cli/chunks/{maestro-generate-YLAGWVKE.js → maestro-generate-VBS2EZMM.js} +3 -3
  109. package/dist-cli/chunks/{mode-DV24ZRZ6.js → mode-MGTS4QTF.js} +2 -2
  110. package/dist-cli/chunks/{optional-demo-registry-JZH66VIM.js → optional-demo-registry-F3FQT5WT.js} +2 -2
  111. package/dist-cli/chunks/{perf-LXXJ4EAX.js → perf-47R3OEI7.js} +2 -2
  112. package/dist-cli/chunks/{permissions-KAOVZUPW.js → permissions-ZOLFZWR2.js} +2 -2
  113. package/dist-cli/chunks/{platform-KW35446W.js → platform-C4E26ZBZ.js} +3 -3
  114. package/dist-cli/chunks/privacy-WXGGG4ZI.js +4 -0
  115. package/dist-cli/chunks/{record-EK3ETFHZ.js → record-OUXWCWUF.js} +3 -3
  116. package/dist-cli/chunks/{report-issue-NW5PCAZF.js → report-issue-LJJXONXQ.js} +2 -2
  117. package/dist-cli/chunks/reset-ZZYLPETS.js +4 -0
  118. package/dist-cli/chunks/resolve-target-MVZZR2JW.js +4 -0
  119. package/dist-cli/chunks/runtime-DEC5AF3M.js +4 -0
  120. package/dist-cli/chunks/{screenshot-command-TQSPTFT2.js → screenshot-command-CUHDOS5D.js} +3 -3
  121. package/dist-cli/chunks/{screenshot-layers-IZP3L3AQ.js → screenshot-layers-DVWQVKT6.js} +2 -2
  122. package/dist-cli/chunks/{screenshots-capture-K7LJOVAE.js → screenshots-capture-GWIUJ3A6.js} +2 -2
  123. package/dist-cli/chunks/{serve-MMX4WXXG.js → serve-TX5OKGJM.js} +19 -19
  124. package/dist-cli/chunks/setup-X7LLGW67.js +4 -0
  125. package/dist-cli/chunks/{sim-client-KLAYIFOC.js → sim-client-W4WZOZ3P.js} +2 -2
  126. package/dist-cli/chunks/{skills-N4D3POIS.js → skills-TDFQAZ6A.js} +2 -2
  127. package/dist-cli/chunks/{state-ES6TFQZF.js → state-P2Z25OLQ.js} +2 -2
  128. package/dist-cli/chunks/{storage-52DR5V2C.js → storage-DWEOFXEB.js} +2 -2
  129. package/dist-cli/chunks/store-TKBLMYCV.js +4 -0
  130. package/dist-cli/chunks/telemetry-E3CBKJMD.js +4 -0
  131. package/dist-cli/chunks/{timeline-NRVNB5JR.js → timeline-55XNA4GX.js} +2 -2
  132. package/dist-cli/chunks/{upgrade-LNED5YQ2.js → upgrade-3XRCVDVC.js} +2 -2
  133. package/dist-cli/chunks/upload-QB77GSMQ.js +4 -0
  134. package/dist-cli/chunks/{version-VEF2DYGG.js → version-WTYGLXBJ.js} +2 -2
  135. package/dist-cli/chunks/{web-CGDE6S73.js → web-ZWRY3VHM.js} +2 -2
  136. package/dist-cli/chunks/welcome-7ATM5EGX.js +5 -0
  137. package/dist-cli/chunks/{what-happened-FSIDWL32.js → what-happened-Q3IGIH4K.js} +2 -2
  138. package/dist-cli/chunks/{ws-bridge-QXFQLRE7.js → ws-bridge-KCPZSBBX.js} +2 -2
  139. package/dist-lib/agent-daemon-client.cjs +1 -1
  140. package/dist-lib/agent-events.cjs +1 -1
  141. package/dist-lib/agent-identity.cjs +1 -1
  142. package/dist-lib/agent-sessions.cjs +1 -1
  143. package/dist-lib/attached-projects.cjs +1 -1
  144. package/dist-lib/auth/shared-session.cjs +1 -1
  145. package/dist-lib/backend-origin.cjs +1 -1
  146. package/dist-lib/beta.cjs +1 -1
  147. package/dist-lib/beta.mjs +1 -1
  148. package/dist-lib/bridge-constants.cjs +1 -1
  149. package/dist-lib/bridge-contract-input.cjs +1 -1
  150. package/dist-lib/bridge-contract-input.mjs +1 -1
  151. package/dist-lib/bridge-contract.cjs +1 -1
  152. package/dist-lib/bridge-contract.mjs +1 -1
  153. package/dist-lib/cli-constants.cjs +1 -1
  154. package/dist-lib/config.cjs +1 -1
  155. package/dist-lib/detox/index.cjs +1 -1
  156. package/dist-lib/dev-bundle-resolution.cjs +69 -34
  157. package/dist-lib/home-paths.cjs +1 -1
  158. package/dist-lib/host/bridge-host.cjs +430 -106
  159. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  160. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  161. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  162. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  163. package/dist-lib/host/websocket-proxy.cjs +1 -1
  164. package/dist-lib/index.cjs +1 -1
  165. package/dist-lib/jump-to-source-babel.cjs +1 -1
  166. package/dist-lib/menu.cjs +1 -1
  167. package/dist-lib/menu.mjs +1 -1
  168. package/dist-lib/metro-production-bundle.cjs +1 -1
  169. package/dist-lib/metro-production-bundle.mjs +1 -1
  170. package/dist-lib/metro.cjs +1 -1
  171. package/dist-lib/profiles.cjs +1 -1
  172. package/dist-lib/public-brand.cjs +1 -1
  173. package/dist-lib/react-native-host-modules.cjs +1 -1
  174. package/dist-lib/react-native-host-modules.mjs +1 -1
  175. package/dist-lib/render-mode.cjs +1 -1
  176. package/dist-lib/scripts/dev-server-scanner.cjs +149 -93
  177. package/dist-lib/sdk.cjs +1 -1
  178. package/dist-lib/sdk.mjs +1 -1
  179. package/dist-lib/skills.cjs +679 -307
  180. package/dist-lib/vite.cjs +1 -1
  181. package/package.json +1 -1
  182. package/scripts/dev-server-scanner.ts +275 -92
  183. package/src/dev-bundle-resolution.ts +123 -40
  184. package/src/disk-cleanup.ts +44 -0
  185. package/src/host/bridge-host.ts +11 -0
  186. package/src/host/plane-host.ts +203 -0
  187. package/dist-cli/chunks/chunk-GJRLPJQL.js +0 -6
  188. package/dist-cli/chunks/chunk-NTC46LSA.js +0 -4
  189. package/dist-cli/chunks/chunk-OTFTMGAL.js +0 -7
  190. package/dist-cli/chunks/cli-version-MLS55UTY.js +0 -4
  191. package/dist-cli/chunks/control-XD5F6K5T.js +0 -4
  192. package/dist-cli/chunks/daemon-UN5SE2JO.js +0 -4
  193. package/dist-cli/chunks/disk-cleanup-BDRHX5ZG.js +0 -4
  194. package/dist-cli/chunks/drivers-3NJ5RL6X.js +0 -4
  195. package/dist-cli/chunks/flow-FHZZD3P6.js +0 -4
  196. package/dist-cli/chunks/help-BYYDUSXF.js +0 -4
  197. package/dist-cli/chunks/inspect-RQCTWDCC.js +0 -4
  198. package/dist-cli/chunks/install-desktop-GOWXCQUE.js +0 -4
  199. package/dist-cli/chunks/privacy-MIFE72CG.js +0 -4
  200. package/dist-cli/chunks/reset-RZ4O5AFJ.js +0 -4
  201. package/dist-cli/chunks/resolve-target-7R5BNYMM.js +0 -4
  202. package/dist-cli/chunks/runtime-MZHLSRS6.js +0 -4
  203. package/dist-cli/chunks/setup-YFP3KEQZ.js +0 -4
  204. package/dist-cli/chunks/store-HOL45WCI.js +0 -4
  205. package/dist-cli/chunks/telemetry-BV6OTYPF.js +0 -4
  206. package/dist-cli/chunks/upload-RXKHFIBU.js +0 -4
  207. package/dist-cli/chunks/welcome-FT2AMUWW.js +0 -5
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/host/fetch-proxy-overrides.ts
4
4
  var FETCH_PROXY_BROWSER_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/menu.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/menu.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/public-brand.ts
4
4
  var name = "rnx";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/metro-production-bundle.ts
4
4
  var RNXSIM_METRO_PRODUCTION_BUNDLE_OPTION = "rnxsim";
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/react-native-host-modules.ts
4
4
  var REACT_NATIVE_PASSTHROUGH_SPECIFIERS = [
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -32,6 +32,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
32
32
  // scripts/dev-server-scanner.ts
33
33
  var dev_server_scanner_exports = {};
34
34
  __export(dev_server_scanner_exports, {
35
+ DevServerScanUnavailableError: () => DevServerScanUnavailableError,
35
36
  __applyManifestForTests: () => __applyManifestForTests,
36
37
  __attachAppSettingsBundleForTests: () => __attachAppSettingsBundleForTests,
37
38
  __isSootSimSelfServerForTests: () => __isSootSimSelfServerForTests,
@@ -43,7 +44,8 @@ __export(dev_server_scanner_exports, {
43
44
  probePort: () => probePort,
44
45
  resolveListeningPid: () => resolveListeningPid,
45
46
  resolveProcessCwd: () => resolveProcessCwd,
46
- scanDevServers: () => scanDevServers
47
+ scanDevServers: () => scanDevServers,
48
+ scanListeningProcesses: () => scanListeningProcesses
47
49
  });
48
50
  module.exports = __toCommonJS(dev_server_scanner_exports);
49
51
  var import_child_process = require("child_process");
@@ -51,7 +53,6 @@ var import_promises2 = require("fs/promises");
51
53
  var import_http = __toESM(require("http"), 1);
52
54
  var import_net = __toESM(require("net"), 1);
53
55
  var import_node_path3 = require("node:path");
54
- var import_util = require("util");
55
56
 
56
57
  // src/backend-origin.ts
57
58
  var LOOPBACK_PROBE_HOSTNAMES = ["::1", "127.0.0.1"];
@@ -518,10 +519,30 @@ function optionalDemoAppsSync() {
518
519
  }
519
520
 
520
521
  // scripts/dev-server-scanner.ts
521
- var execP = (0, import_util.promisify)(import_child_process.exec);
522
+ var EXEC_EXIT_GRACE_MS = 2e3;
523
+ function execGuarded(command, timeout, extra = {}) {
524
+ let child;
525
+ const ran = new Promise((resolve2, reject) => {
526
+ child = (0, import_child_process.exec)(command, { encoding: "utf8", timeout, ...extra }, (err, stdout) => {
527
+ if (err) reject(err);
528
+ else resolve2({ stdout });
529
+ });
530
+ });
531
+ const deadline = new Promise((_resolve, reject) => {
532
+ const timer = setTimeout(() => {
533
+ child?.kill("SIGKILL");
534
+ const err = new Error(`\`${command}\` did not exit within ${timeout}ms`);
535
+ Object.assign(err, { killed: true });
536
+ reject(err);
537
+ }, timeout + EXEC_EXIT_GRACE_MS);
538
+ timer.unref?.();
539
+ });
540
+ return Promise.race([ran, deadline]);
541
+ }
522
542
  var TIMEOUT_MS = 250;
523
543
  var MANIFEST_TIMEOUT_MS = 1500;
524
544
  var TCP_GATE_MS = 120;
545
+ var BODY_TIMEOUT_MS = 3e4;
525
546
  async function tcpPing(port, timeout = TCP_GATE_MS) {
526
547
  try {
527
548
  return await Promise.any(
@@ -550,34 +571,44 @@ async function tcpPing(port, timeout = TCP_GATE_MS) {
550
571
  }
551
572
  function httpGet(hostname, port, path, method = "GET", timeout = TIMEOUT_MS, headers = {}) {
552
573
  return new Promise((resolve2) => {
553
- const req = import_http.default.request(
554
- { hostname, port, path, method, timeout, headers },
555
- (res) => {
556
- let body = "";
557
- res.on("data", (c) => body += c.toString());
558
- const contentType = (() => {
559
- const raw = res.headers["content-type"];
560
- if (typeof raw === "string") return raw;
561
- if (Array.isArray(raw)) return raw[0];
562
- return void 0;
563
- })();
564
- res.on(
565
- "end",
566
- () => resolve2({
567
- statusCode: res.statusCode || 0,
568
- body,
569
- contentType,
570
- hostname
571
- })
572
- );
573
- }
574
- );
575
- req.on("error", () => resolve2(null));
576
- req.setTimeout(timeout, () => {
577
- req.destroy();
578
- resolve2(null);
574
+ let settled = false;
575
+ const settle = (value) => {
576
+ if (settled) return;
577
+ settled = true;
578
+ resolve2(value);
579
+ };
580
+ const req = import_http.default.request({ hostname, port, path, method, headers }, (res) => {
581
+ let body = "";
582
+ res.on("data", (c) => body += c.toString());
583
+ const contentType = (() => {
584
+ const raw = res.headers["content-type"];
585
+ if (typeof raw === "string") return raw;
586
+ if (Array.isArray(raw)) return raw[0];
587
+ return void 0;
588
+ })();
589
+ res.on(
590
+ "end",
591
+ () => settle({
592
+ statusCode: res.statusCode || 0,
593
+ body,
594
+ contentType,
595
+ hostname
596
+ })
597
+ );
579
598
  });
599
+ req.on("error", () => settle(null));
580
600
  req.end();
601
+ const giveUp = setTimeout(() => {
602
+ settle(null);
603
+ req.socket?.unref();
604
+ }, timeout);
605
+ const abandon = setTimeout(() => req.destroy(), BODY_TIMEOUT_MS);
606
+ abandon.unref?.();
607
+ req.on("close", () => {
608
+ clearTimeout(giveUp);
609
+ clearTimeout(abandon);
610
+ setImmediate(() => settle(null));
611
+ });
581
612
  });
582
613
  }
583
614
  var FALLBACK_PORTS = [
@@ -591,61 +622,87 @@ var FALLBACK_PORTS = [
591
622
  3001,
592
623
  19e3
593
624
  ].map((port) => ({ port, pid: 0 }));
625
+ var SELF_PORT_RANGE_START = 5170;
626
+ var SELF_PORT_RANGE_END = 5200;
627
+ function isOwnShellPort(port) {
628
+ const offset = Number(process.env.PORT_OFFSET) || 0;
629
+ if (port >= SELF_PORT_RANGE_START && port <= SELF_PORT_RANGE_END) return true;
630
+ return offset > 0 && port >= SELF_PORT_RANGE_START + offset && port <= SELF_PORT_RANGE_END + offset;
631
+ }
594
632
  function acceptPort(port, excluded) {
595
633
  if (port <= 0 || port >= 2e4) return false;
596
634
  if (excluded.has(port)) return false;
597
- if (port >= 5170 && port <= 5200) return false;
635
+ if (isOwnShellPort(port)) return false;
598
636
  return true;
599
637
  }
638
+ var DevServerScanUnavailableError = class extends Error {
639
+ constructor() {
640
+ super("could not enumerate listening processes (lsof/ss unavailable or timed out)");
641
+ this.name = "DevServerScanUnavailableError";
642
+ }
643
+ };
644
+ var LISTING_TIMEOUT_MS = 1e4;
645
+ function wasKilledByTimeout(err) {
646
+ return !!(err && typeof err === "object" && err.killed);
647
+ }
600
648
  async function discoverListeningProcesses(excludePorts = []) {
649
+ const scan = await scanListeningProcesses(excludePorts);
650
+ return scan.state === "looked" ? scan.processes : [];
651
+ }
652
+ async function scanListeningProcesses(excludePorts = []) {
601
653
  const excluded = new Set(excludePorts);
654
+ let timedOut = false;
602
655
  try {
603
- const { stdout } = await execP(
656
+ const { stdout } = await execGuarded(
604
657
  `lsof -iTCP -sTCP:LISTEN -P -n 2>/dev/null | grep -E '^(node|bun)'`,
605
- { encoding: "utf8", timeout: 2e3 }
658
+ LISTING_TIMEOUT_MS
606
659
  );
607
- if (stdout.trim()) {
608
- const seen = /* @__PURE__ */ new Map();
609
- for (const line of stdout.trim().split("\n")) {
610
- const parts = line.trim().split(/\s+/);
611
- if (parts.length < 9) continue;
612
- const pid = Number(parts[1]);
613
- const addr = parts[8];
614
- const m = addr.match(/:(\d+)$/);
615
- if (!m) continue;
616
- const port = Number(m[1]);
617
- if (!acceptPort(port, excluded)) continue;
618
- if (!seen.has(port)) seen.set(port, pid);
619
- }
620
- if (seen.size > 0) {
621
- return [...seen.entries()].map(([port, pid]) => ({ port, pid }));
622
- }
660
+ const seen = /* @__PURE__ */ new Map();
661
+ for (const line of stdout.trim() ? stdout.trim().split("\n") : []) {
662
+ const parts = line.trim().split(/\s+/);
663
+ if (parts.length < 9) continue;
664
+ const pid = Number(parts[1]);
665
+ const addr = parts[8];
666
+ const m = addr.match(/:(\d+)$/);
667
+ if (!m) continue;
668
+ const port = Number(m[1]);
669
+ if (!acceptPort(port, excluded)) continue;
670
+ if (!seen.has(port)) seen.set(port, pid);
623
671
  }
624
- } catch {
672
+ return {
673
+ state: "looked",
674
+ processes: [...seen.entries()].map(([port, pid]) => ({ port, pid }))
675
+ };
676
+ } catch (err) {
677
+ if (wasKilledByTimeout(err)) timedOut = true;
625
678
  }
626
679
  try {
627
- const { stdout } = await execP(`ss -tlnp 2>/dev/null | grep -E '"(node|bun)"'`, {
628
- encoding: "utf8",
629
- timeout: 2e3
630
- });
631
- if (stdout.trim()) {
632
- const seen = /* @__PURE__ */ new Map();
633
- for (const line of stdout.trim().split("\n")) {
634
- const portMatch = line.match(/:(\d+)\s/);
635
- const pidMatch = line.match(/pid=(\d+)/);
636
- if (!portMatch) continue;
637
- const port = Number(portMatch[1]);
638
- const pid = pidMatch ? Number(pidMatch[1]) : 0;
639
- if (!acceptPort(port, excluded)) continue;
640
- if (!seen.has(port)) seen.set(port, pid);
641
- }
642
- if (seen.size > 0) {
643
- return [...seen.entries()].map(([port, pid]) => ({ port, pid }));
644
- }
680
+ const { stdout } = await execGuarded(
681
+ `ss -tlnp 2>/dev/null | grep -E '"(node|bun)"'`,
682
+ LISTING_TIMEOUT_MS
683
+ );
684
+ const seen = /* @__PURE__ */ new Map();
685
+ for (const line of stdout.trim() ? stdout.trim().split("\n") : []) {
686
+ const portMatch = line.match(/:(\d+)\s/);
687
+ const pidMatch = line.match(/pid=(\d+)/);
688
+ if (!portMatch) continue;
689
+ const port = Number(portMatch[1]);
690
+ const pid = pidMatch ? Number(pidMatch[1]) : 0;
691
+ if (!acceptPort(port, excluded)) continue;
692
+ if (!seen.has(port)) seen.set(port, pid);
645
693
  }
646
- } catch {
694
+ return {
695
+ state: "looked",
696
+ processes: [...seen.entries()].map(([port, pid]) => ({ port, pid }))
697
+ };
698
+ } catch (err) {
699
+ if (wasKilledByTimeout(err)) timedOut = true;
647
700
  }
648
- return FALLBACK_PORTS.filter((p) => acceptPort(p.port, excluded));
701
+ if (timedOut) return { state: "could-not-look" };
702
+ return {
703
+ state: "looked",
704
+ processes: FALLBACK_PORTS.filter((p) => acceptPort(p.port, excluded))
705
+ };
649
706
  }
650
707
  async function discoverListeningPorts(excludePorts = []) {
651
708
  const processes = await discoverListeningProcesses(excludePorts);
@@ -669,9 +726,7 @@ function pidFromNetstat(stdout, port) {
669
726
  async function resolveListeningPid(port) {
670
727
  if (!Number.isInteger(port) || port <= 0) return null;
671
728
  try {
672
- const { stdout } = await execP("netstat -anv -p tcp 2>/dev/null", {
673
- encoding: "utf8",
674
- timeout: 8e3,
729
+ const { stdout } = await execGuarded("netstat -anv -p tcp 2>/dev/null", 8e3, {
675
730
  maxBuffer: 16 * 1024 * 1024
676
731
  });
677
732
  const pid = pidFromNetstat(stdout, port);
@@ -679,9 +734,7 @@ async function resolveListeningPid(port) {
679
734
  } catch {
680
735
  }
681
736
  try {
682
- const { stdout } = await execP(`ss -tlnp 2>/dev/null`, {
683
- encoding: "utf8",
684
- timeout: 8e3,
737
+ const { stdout } = await execGuarded(`ss -tlnp 2>/dev/null`, 8e3, {
685
738
  maxBuffer: 16 * 1024 * 1024
686
739
  });
687
740
  for (const line of stdout.split("\n")) {
@@ -707,10 +760,10 @@ async function resolveProcessCwd(pid) {
707
760
  } catch {
708
761
  }
709
762
  try {
710
- const { stdout } = await execP(`lsof -b -w -p ${pid} -a -d cwd -Fn 2>/dev/null`, {
711
- encoding: "utf8",
712
- timeout: 8e3
713
- });
763
+ const { stdout } = await execGuarded(
764
+ `lsof -b -w -p ${pid} -a -d cwd -Fn 2>/dev/null`,
765
+ 8e3
766
+ );
714
767
  for (const line of stdout.split("\n")) {
715
768
  if (line.startsWith("n") && line.length > 1) {
716
769
  const cwd = line.slice(1).trim();
@@ -885,7 +938,8 @@ async function probePort(port, buildIconProxyUrl, listeningProcess) {
885
938
  const manifestParsed = manifestRes ? safeParseManifest(manifestRes.body) : null;
886
939
  const manifestLaunchUrl = typeof manifestParsed?.launchAsset?.url === "string" ? manifestParsed.launchAsset.url : null;
887
940
  const manifestClient = manifestParsed?.extra?.expoClient || manifestParsed?.extra || {};
888
- if (manifestParsed && (manifestLaunchUrl || typeof manifestClient.name === "string")) {
941
+ const manifestState = !manifestRes ? "no-answer" : manifestParsed && (manifestLaunchUrl || typeof manifestClient.name === "string") ? "resolved" : "no-manifest";
942
+ if (manifestState === "resolved") {
889
943
  knownNonPatched.add(port);
890
944
  const launchUrl = manifestLaunchUrl || `${buildLoopbackProbeBaseUrl("http:", probeHostname, port)}/index.bundle?platform=ios&dev=true&hot=true&minify=false`;
891
945
  const framework = launchUrl.includes(
@@ -906,17 +960,15 @@ async function probePort(port, buildIconProxyUrl, listeningProcess) {
906
960
  }
907
961
  if (statusRes && statusRes.body.includes("packager-status:running")) {
908
962
  knownNonPatched.add(port);
963
+ const result = makeResult(
964
+ probeHostname,
965
+ port,
966
+ expoRes && expoRes.statusCode === 200 ? "expo" : "metro",
967
+ owner
968
+ );
969
+ if (manifestState === "no-answer") result.bundleUrlProvisional = true;
909
970
  return enrichWithManifest(
910
- applyManifest(
911
- makeResult(
912
- probeHostname,
913
- port,
914
- expoRes && expoRes.statusCode === 200 ? "expo" : "metro",
915
- owner
916
- ),
917
- manifestRes,
918
- buildIconProxyUrl
919
- ),
971
+ applyManifest(result, manifestRes, buildIconProxyUrl),
920
972
  buildIconProxyUrl
921
973
  );
922
974
  }
@@ -1023,7 +1075,9 @@ async function attachAppSettingsBundle(result, projectRoot) {
1023
1075
  var __attachAppSettingsBundleForTests = attachAppSettingsBundle;
1024
1076
  async function scanDevServers(opts = {}) {
1025
1077
  await loadOptionalDemoApps();
1026
- const processes = await discoverListeningProcesses(opts.excludePorts);
1078
+ const scan = await scanListeningProcesses(opts.excludePorts);
1079
+ if (scan.state === "could-not-look") throw new DevServerScanUnavailableError();
1080
+ const processes = scan.processes;
1027
1081
  const currentPorts = new Set(processes.map((p) => p.port));
1028
1082
  for (const p of [...portCache.keys()]) {
1029
1083
  if (!currentPorts.has(p)) portCache.delete(p);
@@ -1089,6 +1143,7 @@ async function scanDevServers(opts = {}) {
1089
1143
  }
1090
1144
  // Annotate the CommonJS export names for ESM import in node:
1091
1145
  0 && (module.exports = {
1146
+ DevServerScanUnavailableError,
1092
1147
  __applyManifestForTests,
1093
1148
  __attachAppSettingsBundleForTests,
1094
1149
  __isSootSimSelfServerForTests,
@@ -1100,5 +1155,6 @@ async function scanDevServers(opts = {}) {
1100
1155
  probePort,
1101
1156
  resolveListeningPid,
1102
1157
  resolveProcessCwd,
1103
- scanDevServers
1158
+ scanDevServers,
1159
+ scanListeningProcesses
1104
1160
  });
package/dist-lib/sdk.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/sdk.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.370 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.372 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);