rnxsim 0.1.374 → 0.1.376

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 (196) hide show
  1. package/cli/commands/box.ts +5 -5
  2. package/cli/commands/control.ts +18 -4
  3. package/cli/ws-bridge.ts +5 -2
  4. package/dist-cli/bin.js +5 -5
  5. package/dist-cli/chunks/{agent-BKCNNEQV.js → agent-H42FCKFF.js} +2 -2
  6. package/dist-cli/chunks/{agent-wrapper-B3AS3ENV.js → agent-wrapper-BBZKTZS6.js} +2 -2
  7. package/dist-cli/chunks/{app-fonts-GWE22XIG.js → app-fonts-43VXIKF4.js} +2 -2
  8. package/dist-cli/chunks/{assert-ORX5Q6AH.js → assert-IXOLVO5Z.js} +2 -2
  9. package/dist-cli/chunks/{auth-REWJRBFP.js → auth-KFMFB6FU.js} +2 -2
  10. package/dist-cli/chunks/{beta-Q2VQZCLD.js → beta-5AO3SJB7.js} +2 -2
  11. package/dist-cli/chunks/{box-I5QZZJBJ.js → box-ZHM66L6K.js} +46 -46
  12. package/dist-cli/chunks/{camera-5HA2IJDC.js → camera-FNJVFCDQ.js} +2 -2
  13. package/dist-cli/chunks/{chunk-GH7XDCAP.js → chunk-37MCSPTE.js} +1 -1
  14. package/dist-cli/chunks/{chunk-N5GTOZJP.js → chunk-3PEMSUAQ.js} +3 -3
  15. package/dist-cli/chunks/chunk-4TQ5HOK3.js +7 -0
  16. package/dist-cli/chunks/{chunk-5VFQ7HKK.js → chunk-5YZYDEMI.js} +1 -1
  17. package/dist-cli/chunks/{chunk-XL53SSTO.js → chunk-6CV3R3XD.js} +2 -2
  18. package/dist-cli/chunks/{chunk-6PV4QLZ7.js → chunk-7LGK5XU6.js} +2 -2
  19. package/dist-cli/chunks/{chunk-XSXSVO4P.js → chunk-7R2TK2NY.js} +1 -1
  20. package/dist-cli/chunks/{chunk-HCORKEG6.js → chunk-7VZZQQEE.js} +3 -3
  21. package/dist-cli/chunks/{chunk-2QVA4PPE.js → chunk-AFOVILIL.js} +1 -1
  22. package/dist-cli/chunks/{chunk-PZYF2TKR.js → chunk-BEU7CD7E.js} +1 -1
  23. package/dist-cli/chunks/{chunk-ZAUPKGQP.js → chunk-CE4JQJ6Y.js} +2 -2
  24. package/dist-cli/chunks/{chunk-MHVH5IJU.js → chunk-CIE6CZXL.js} +2 -2
  25. package/dist-cli/chunks/{chunk-4S5CIP7Y.js → chunk-CSJ7L7ZL.js} +1 -1
  26. package/dist-cli/chunks/chunk-CWCQP53A.js +27 -0
  27. package/dist-cli/chunks/{chunk-HM5TGIVN.js → chunk-DCS5FK5N.js} +1 -1
  28. package/dist-cli/chunks/{chunk-R7NXLMFI.js → chunk-DEV3E3MV.js} +1 -1
  29. package/dist-cli/chunks/{chunk-PYH2MNFB.js → chunk-DGJMIVZM.js} +2 -2
  30. package/dist-cli/chunks/{chunk-2ZE4WXXF.js → chunk-DGX3MN65.js} +1 -1
  31. package/dist-cli/chunks/{chunk-KOSLTZXQ.js → chunk-DNPQMTW5.js} +2 -2
  32. package/dist-cli/chunks/{chunk-7DLC2M6S.js → chunk-DOVBJBVD.js} +2 -2
  33. package/dist-cli/chunks/{chunk-X2YXPZD4.js → chunk-DPBJ3S3J.js} +1 -1
  34. package/dist-cli/chunks/{chunk-PVGD4KKG.js → chunk-FVZBGPCU.js} +2 -2
  35. package/dist-cli/chunks/{chunk-XSWS6HY6.js → chunk-GDKMOIUT.js} +1 -1
  36. package/dist-cli/chunks/{chunk-SNMLG22Y.js → chunk-GIF2NJCS.js} +2 -2
  37. package/dist-cli/chunks/{chunk-VKOEADVP.js → chunk-GZE57ORL.js} +1 -1
  38. package/dist-cli/chunks/{chunk-KN6LU33B.js → chunk-H3U56DKI.js} +2 -2
  39. package/dist-cli/chunks/{chunk-4FYJOFJZ.js → chunk-HZLOYAPH.js} +2 -2
  40. package/dist-cli/chunks/{chunk-Y3LVGZKE.js → chunk-J2IKAEU2.js} +2 -2
  41. package/dist-cli/chunks/{chunk-6VPR6OTH.js → chunk-JXAXYK7W.js} +2 -2
  42. package/dist-cli/chunks/{chunk-IXYE6F2D.js → chunk-KJE2O2GK.js} +2 -2
  43. package/dist-cli/chunks/{chunk-G2IBWLBT.js → chunk-KMNVDZZI.js} +1 -1
  44. package/dist-cli/chunks/{chunk-7PBNTA3M.js → chunk-LC3QRIRB.js} +2 -2
  45. package/dist-cli/chunks/{chunk-A6JPQM7B.js → chunk-LGFTAQYC.js} +1 -1
  46. package/dist-cli/chunks/{chunk-I2C26UZ3.js → chunk-LQMUA5IY.js} +1 -1
  47. package/dist-cli/chunks/{chunk-IQ5HBVID.js → chunk-MFIQTWC5.js} +2 -2
  48. package/dist-cli/chunks/{chunk-TCB6DSON.js → chunk-MGALNF2F.js} +2 -2
  49. package/dist-cli/chunks/{chunk-DYE6WT2Q.js → chunk-MLBZZHOY.js} +2 -2
  50. package/dist-cli/chunks/{chunk-KVMYAHND.js → chunk-NNRF7GIB.js} +2 -2
  51. package/dist-cli/chunks/{chunk-6JBXWVSP.js → chunk-NORLYTTO.js} +2 -2
  52. package/dist-cli/chunks/{chunk-VSGEEW3N.js → chunk-P6KVGV3H.js} +11 -11
  53. package/dist-cli/chunks/chunk-PAJTUK33.js +4 -0
  54. package/dist-cli/chunks/{chunk-2W6ADNTG.js → chunk-QELIC5XP.js} +1 -1
  55. package/dist-cli/chunks/{chunk-GQVWJWCZ.js → chunk-QRDF33WD.js} +1 -1
  56. package/dist-cli/chunks/{chunk-AEMLIV3G.js → chunk-R76BA7C7.js} +3 -3
  57. package/dist-cli/chunks/{chunk-RXDJ422X.js → chunk-RVEB4CZ2.js} +2 -2
  58. package/dist-cli/chunks/{chunk-CBF7RQ3C.js → chunk-SK4M7NXT.js} +1 -1
  59. package/dist-cli/chunks/{chunk-RAYAIDJI.js → chunk-SKMG5DD7.js} +2 -2
  60. package/dist-cli/chunks/{chunk-VOYUOTN2.js → chunk-TEESPOYR.js} +1 -1
  61. package/dist-cli/chunks/{chunk-UQXSAYWY.js → chunk-TH2UFGVP.js} +1 -1
  62. package/dist-cli/chunks/{chunk-RE2IODEB.js → chunk-TLP3T3VO.js} +1 -1
  63. package/dist-cli/chunks/{chunk-2XDNHF7N.js → chunk-TZUABDIJ.js} +2 -2
  64. package/dist-cli/chunks/{chunk-R3HLZSGB.js → chunk-UB2W6OQM.js} +2 -2
  65. package/dist-cli/chunks/{chunk-UHTIDDI2.js → chunk-UYVXALPB.js} +2 -2
  66. package/dist-cli/chunks/{chunk-2MI2ROT4.js → chunk-VQDYFFIG.js} +2 -2
  67. package/dist-cli/chunks/{chunk-KWUKKULB.js → chunk-VWCNJPCJ.js} +2 -2
  68. package/dist-cli/chunks/{chunk-UAMMP7U7.js → chunk-VZIK4WIS.js} +2 -2
  69. package/dist-cli/chunks/{chunk-VDCYIT2N.js → chunk-W3FNXAQP.js} +1 -1
  70. package/dist-cli/chunks/{chunk-5WXRC4BW.js → chunk-XCDNVNP3.js} +1 -1
  71. package/dist-cli/chunks/{chunk-U52Z6BML.js → chunk-XSVILA4Z.js} +2 -2
  72. package/dist-cli/chunks/{chunk-WR6QFC62.js → chunk-XUTJ7ZWD.js} +2 -2
  73. package/dist-cli/chunks/{chunk-QKYOZQKE.js → chunk-YTXY3MHW.js} +2 -2
  74. package/dist-cli/chunks/{chunk-MU77ZSME.js → chunk-ZF7PVX44.js} +2 -2
  75. package/dist-cli/chunks/{chunk-RU565DEH.js → chunk-ZSSG7OR7.js} +1 -1
  76. package/dist-cli/chunks/{cleanup-4ZAL2PTZ.js → cleanup-MLOK2OZA.js} +2 -2
  77. package/dist-cli/chunks/cli-version-OBNR366V.js +4 -0
  78. package/dist-cli/chunks/{compat-6CEUDCO2.js → compat-SHMFSKU7.js} +2 -2
  79. package/dist-cli/chunks/{config-YHATX3ZX.js → config-TPEAEUJ2.js} +2 -2
  80. package/dist-cli/chunks/{connect-LXWD3ILH.js → connect-3LEXWTE5.js} +2 -2
  81. package/dist-cli/chunks/control-Z3FWA6BO.js +4 -0
  82. package/dist-cli/chunks/daemon-RSVYSC65.js +4 -0
  83. package/dist-cli/chunks/{debug-4RKDQCF4.js → debug-GUVAK2KR.js} +3 -3
  84. package/dist-cli/chunks/{desktop-ISJKVEQA.js → desktop-OOP2PTKP.js} +3 -3
  85. package/dist-cli/chunks/{detox-7P5NDA5M.js → detox-C2ILVBEC.js} +2 -2
  86. package/dist-cli/chunks/{device-JXBP6WUE.js → device-NXIQQJWR.js} +2 -2
  87. package/dist-cli/chunks/{diagnose-7JJWOZ23.js → diagnose-2JBGYE5L.js} +2 -2
  88. package/dist-cli/chunks/{disk-cleanup-MXIQGJWO.js → disk-cleanup-VURWJYQV.js} +2 -2
  89. package/dist-cli/chunks/{do-chain-KTAVIZMC.js → do-chain-DJ4UQC7A.js} +2 -2
  90. package/dist-cli/chunks/drivers-JMA2OIKU.js +4 -0
  91. package/dist-cli/chunks/{env-37X232UA.js → env-KTNPKEZR.js} +2 -2
  92. package/dist-cli/chunks/{film-5F5XDOIR.js → film-DCPS7EID.js} +3 -3
  93. package/dist-cli/chunks/flow-4DZ7B2OA.js +4 -0
  94. package/dist-cli/chunks/help-34CJMQY2.js +4 -0
  95. package/dist-cli/chunks/{hidden-runtime-alias-FAPVCHKI.js → hidden-runtime-alias-HHT2C7WE.js} +2 -2
  96. package/dist-cli/chunks/{home-paths-VW3CI5QK.js → home-paths-KTPGCPMS.js} +2 -2
  97. package/dist-cli/chunks/inspect-JF5WYJRD.js +4 -0
  98. package/dist-cli/chunks/install-desktop-ZIC4CDXI.js +4 -0
  99. package/dist-cli/chunks/{login-LDN6ETBS.js → login-TTJAOI2Q.js} +2 -2
  100. package/dist-cli/chunks/{logout-HOHKC7TH.js → logout-ERAQ6SKW.js} +2 -2
  101. package/dist-cli/chunks/{maestro-PCFZZHCH.js → maestro-W46QCF77.js} +3 -3
  102. package/dist-cli/chunks/{maestro-generate-6MSPC66O.js → maestro-generate-VBLM3MTU.js} +3 -3
  103. package/dist-cli/chunks/{mode-GRYQSTZH.js → mode-ZEDZK7R7.js} +2 -2
  104. package/dist-cli/chunks/{optional-demo-registry-RP2H6SQR.js → optional-demo-registry-ZUTPSVYQ.js} +2 -2
  105. package/dist-cli/chunks/{perf-WPW5FWOL.js → perf-YVT2WXT4.js} +2 -2
  106. package/dist-cli/chunks/{permissions-OXAWZHB2.js → permissions-L7VVDHFP.js} +2 -2
  107. package/dist-cli/chunks/{platform-SKTAMMLT.js → platform-7TJOU2FB.js} +3 -3
  108. package/dist-cli/chunks/privacy-57UOTB5J.js +4 -0
  109. package/dist-cli/chunks/{record-WFA3GUIX.js → record-VXG37P7U.js} +3 -3
  110. package/dist-cli/chunks/{report-issue-LB7QRUIO.js → report-issue-WNNOBZHC.js} +2 -2
  111. package/dist-cli/chunks/reset-H5NBFE5U.js +4 -0
  112. package/dist-cli/chunks/resolve-target-57TK5WLE.js +4 -0
  113. package/dist-cli/chunks/runtime-QU2NIF2K.js +4 -0
  114. package/dist-cli/chunks/{screenshot-command-OX4B5ZPE.js → screenshot-command-AN56TTG7.js} +3 -3
  115. package/dist-cli/chunks/{screenshot-layers-QOSO5ZRE.js → screenshot-layers-3W5R7DB2.js} +2 -2
  116. package/dist-cli/chunks/{screenshots-capture-XSRQO5SQ.js → screenshots-capture-6AWJY7XZ.js} +2 -2
  117. package/dist-cli/chunks/{serve-LNYA35IZ.js → serve-GLYO5Q7J.js} +2 -2
  118. package/dist-cli/chunks/setup-UA2HLD7S.js +4 -0
  119. package/dist-cli/chunks/{sim-client-MBY5YFOJ.js → sim-client-5C2RDQQO.js} +2 -2
  120. package/dist-cli/chunks/{skills-DVTU7NKR.js → skills-EYXWBRNQ.js} +2 -2
  121. package/dist-cli/chunks/{state-4AIXTMAN.js → state-REJ7W6K3.js} +2 -2
  122. package/dist-cli/chunks/{storage-OXHTXIRW.js → storage-CFMDHI3V.js} +2 -2
  123. package/dist-cli/chunks/store-XMCUA45G.js +4 -0
  124. package/dist-cli/chunks/telemetry-FBL3NAKB.js +4 -0
  125. package/dist-cli/chunks/{timeline-HY7NURFG.js → timeline-HMCHN5FO.js} +2 -2
  126. package/dist-cli/chunks/{upgrade-V6222XJR.js → upgrade-2QSPAA3P.js} +2 -2
  127. package/dist-cli/chunks/upload-DUQBKZYV.js +4 -0
  128. package/dist-cli/chunks/{version-32O3RRDO.js → version-IOA6QFGB.js} +2 -2
  129. package/dist-cli/chunks/{web-DA6HESOZ.js → web-NCGUYVCJ.js} +2 -2
  130. package/dist-cli/chunks/welcome-QYGSQCWQ.js +5 -0
  131. package/dist-cli/chunks/{what-happened-UEY6YRTH.js → what-happened-YTOUK4LO.js} +2 -2
  132. package/dist-cli/chunks/{ws-bridge-4WWOVU5V.js → ws-bridge-OF4OZARG.js} +2 -2
  133. package/dist-lib/agent-daemon-client.cjs +1 -1
  134. package/dist-lib/agent-events.cjs +1 -1
  135. package/dist-lib/agent-identity.cjs +1 -1
  136. package/dist-lib/agent-sessions.cjs +1 -1
  137. package/dist-lib/attached-projects.cjs +1 -1
  138. package/dist-lib/auth/shared-session.cjs +1 -1
  139. package/dist-lib/backend-origin.cjs +1 -1
  140. package/dist-lib/beta.cjs +1 -1
  141. package/dist-lib/beta.mjs +1 -1
  142. package/dist-lib/bridge-constants.cjs +1 -1
  143. package/dist-lib/bridge-contract-input.cjs +1 -1
  144. package/dist-lib/bridge-contract-input.mjs +1 -1
  145. package/dist-lib/bridge-contract.cjs +1 -1
  146. package/dist-lib/bridge-contract.mjs +1 -1
  147. package/dist-lib/cli-constants.cjs +1 -1
  148. package/dist-lib/config.cjs +1 -1
  149. package/dist-lib/detox/index.cjs +1 -1
  150. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  151. package/dist-lib/home-paths.cjs +1 -1
  152. package/dist-lib/host/bridge-host.cjs +148 -134
  153. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  154. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  155. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  156. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  157. package/dist-lib/host/websocket-proxy.cjs +1 -1
  158. package/dist-lib/index.cjs +3 -3
  159. package/dist-lib/jump-to-source-babel.cjs +1 -1
  160. package/dist-lib/menu.cjs +1 -1
  161. package/dist-lib/menu.mjs +1 -1
  162. package/dist-lib/metro-production-bundle.cjs +1 -1
  163. package/dist-lib/metro-production-bundle.mjs +1 -1
  164. package/dist-lib/metro.cjs +1 -1
  165. package/dist-lib/profiles.cjs +1 -1
  166. package/dist-lib/public-brand.cjs +1 -1
  167. package/dist-lib/react-native-host-modules.cjs +1 -1
  168. package/dist-lib/react-native-host-modules.mjs +1 -1
  169. package/dist-lib/render-mode.cjs +1 -1
  170. package/dist-lib/scripts/dev-server-scanner.cjs +18 -4
  171. package/dist-lib/sdk.cjs +1 -1
  172. package/dist-lib/sdk.mjs +1 -1
  173. package/dist-lib/skills.cjs +219 -198
  174. package/dist-lib/vite.cjs +1 -1
  175. package/package.json +1 -1
  176. package/scripts/dev-server-scanner.ts +23 -5
  177. package/dist-cli/chunks/chunk-DB2JB52S.js +0 -4
  178. package/dist-cli/chunks/chunk-L6VQSQ5O.js +0 -7
  179. package/dist-cli/chunks/chunk-OO7E4JTZ.js +0 -27
  180. package/dist-cli/chunks/cli-version-OZYTASIM.js +0 -4
  181. package/dist-cli/chunks/control-LBL5A6WE.js +0 -4
  182. package/dist-cli/chunks/daemon-JCFSBU66.js +0 -4
  183. package/dist-cli/chunks/drivers-IQ5GCHPH.js +0 -4
  184. package/dist-cli/chunks/flow-74OQVMSN.js +0 -4
  185. package/dist-cli/chunks/help-OCNTRGIJ.js +0 -4
  186. package/dist-cli/chunks/inspect-Z2NKYQEG.js +0 -4
  187. package/dist-cli/chunks/install-desktop-47P2MA4T.js +0 -4
  188. package/dist-cli/chunks/privacy-XEXZ6AIX.js +0 -4
  189. package/dist-cli/chunks/reset-CYS4XX4I.js +0 -4
  190. package/dist-cli/chunks/resolve-target-YYCTSFNM.js +0 -4
  191. package/dist-cli/chunks/runtime-JFQ6JIA6.js +0 -4
  192. package/dist-cli/chunks/setup-3W2UEM2H.js +0 -4
  193. package/dist-cli/chunks/store-43NVGPZX.js +0 -4
  194. package/dist-cli/chunks/telemetry-ZQRYJXGE.js +0 -4
  195. package/dist-cli/chunks/upload-DUKPPETT.js +0 -4
  196. package/dist-cli/chunks/welcome-X7PCNKS6.js +0 -5
@@ -1,7 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import{a as fe,b as Ge}from"./chunk-IXYE6F2D.js";import{e as rt}from"./chunk-UHTIDDI2.js";import{c as Ve}from"./chunk-KWUKKULB.js";import{a as Ze,b as et,d as ot}from"./chunk-WR6QFC62.js";import{a as Ne,c as Fe,d as k,e as de,f as A,g as me,h as He,i as pe,j as je,k as We,m as Qe,n as Ye,o as Xe}from"./chunk-VSGEEW3N.js";import{m as L}from"./chunk-2XDNHF7N.js";import{a as Ke,b as qe}from"./chunk-2W6ADNTG.js";import{h as tt,p as nt}from"./chunk-4S5CIP7Y.js";import{a as Je}from"./chunk-PVGD4KKG.js";import{a as ze}from"./chunk-VKOEADVP.js";import{b as le,e as Me}from"./chunk-PYH2MNFB.js";import{b as Oe,f as Be,g as B,h as P,i as D,n as De,o as ce,p as ue,r as Ae,s as Le,t as T,u as I,v as E}from"./chunk-OO7E4JTZ.js";import{b as G,c as d}from"./chunk-UQXSAYWY.js";import{f as _e}from"./chunk-ZAUPKGQP.js";import{a as Ee}from"./chunk-VDCYIT2N.js";import{D as Re,M as se,P as ae,R as O,T as Te,l as ie}from"./chunk-GQVWJWCZ.js";import{a as oe}from"./chunk-5VFQ7HKK.js";import{spawn as mt,spawnSync as pt}from"node:child_process";import _ from"node:fs";import Kt from"node:os";import U from"node:path";import{WebSocket as ge}from"ws";function it(e){return new Error(`could not resolve a native bundle for ${e}. pass an explicit bundle URL or open Connect and choose the app there.`)}function Ot(e,n){return e?.includes("/one/metro-entry.bundle")?"one":typeof n=="string"&&n?"expo":"unknown"}function Bt(e,n,t){return`${e}//${n}:${t}`}function Dt(e){if(typeof window>"u")return!1;try{let n=new URL(e);return k(n.hostname)&&k(window.location.hostname)&&n.origin!==window.location.origin}catch{return!1}}async function lt(e,n){let t={...n,cache:n?.cache??"no-store"};return Dt(e)?fetch(`/__fetch-proxy?url=${encodeURIComponent(e)}`,t):fetch(e,t)}function At(e){return e==="https:"?443:80}function Lt(e){let n=e.pathname||"/";return(n==="/"||n==="")&&!e.search&&!e.hash}async function ct(e){try{let n=await fetch("/__server-scan",{cache:"no-store"});if(!n.ok||!(n.headers.get("content-type")||"").toLowerCase().includes("json"))return null;let t=await n.json();if(!Array.isArray(t))return null;let r=t.find(o=>!!o&&typeof o=="object"&&o.port===e&&typeof o.bundleUrl=="string");return!r||r.bundleUrlProvisional?null:{bundleUrl:pe(r.bundleUrl),port:e,framework:typeof r.framework=="string"?r.framework:"unknown",projectName:typeof r.projectName=="string"?r.projectName:void 0}}catch{return null}}var Nt=5e3,Ft=3e4,Ht=1e3;async function st(e,n){let t,r=lt(`${e}/`,{headers:{"expo-platform":"ios"}}).then(async c=>c.ok?{ok:!0,body:await c.text()}:null,()=>{}),o=await Promise.race([r,new Promise(c=>setTimeout(()=>c("timeout"),Nt).unref?.())]);if(o==="timeout"||o===void 0)return{state:"no-answer"};if(o===null)return{state:"no-manifest"};if(t=o.body,!t.trim())return{state:"no-answer"};let i;try{i=JSON.parse(t)}catch{return{state:"no-manifest"}}let a=i?.extra?.expoClient||i?.extra||{},s=typeof i?.launchAsset?.url=="string"?i.launchAsset.url:void 0,l=s?He(s,e):void 0;return!l&&!a.name?{state:"no-manifest"}:{state:"resolved",bundle:{bundleUrl:pe(l||`${e}${me}`),port:n,framework:Ot(l,a.sdkVersion),projectName:a.name}}}async function at(e){try{let n=await lt(`${e}/status`);return n.ok?(await n.text()).includes("packager-status:running"):!1}catch{return!1}}async function ut(e,n){let t=e.replace(/\/+$/,""),r=await st(t,n),o=!1;if(r.state==="no-answer"){if(o=await at(t),!o)return null;let i=Date.now()+Ft;for(;r.state==="no-answer"&&Date.now()<i;)await new Promise(a=>setTimeout(a,Ht)),r=await st(t,n)}return r.state==="resolved"?r.bundle:r.state==="no-answer"||!o&&!await at(t)?null:{bundleUrl:`${t}${me}`,port:n,framework:"metro"}}async function jt(e,n){try{if(k(new URL(e).hostname)){let t=await ct(n);if(t)return t}}catch{}return ut(e,n)}async function Wt(e){let n=await ct(e);return n||((await Promise.all(Ne.map(r=>ut(Fe("http:",r,e),e)))).find(r=>r!==null)??null)}async function dt(e){let n=e.trim();if(/^\d+$/.test(n)){let s=parseInt(n,10),l=await Wt(s);if(l)return l;throw it(`localhost:${s}`)}let t=n.startsWith("http")?n:`http://${n}`,r;try{r=new URL(t)}catch{throw new Error(`could not parse "${e}". pass a dev-server port, a dev-server base URL, or a full bundle URL.`)}let o=r.protocol||"http:",i=r.port?parseInt(r.port,10):At(o),a=Bt(o,r.hostname,i);if(Lt(r)){let s=await jt(a,i);if(s)return s;throw it(a)}return{bundleUrl:r.toString(),port:i,framework:"unknown"}}var qt=12e4,ft=100,Vt=5e3,gt=1e4,Gt={rn:"/rn",connectrn:"/rn","connect-rn":"/rn",clock:"/app/clock","native-ui":"/app/native-ui",tamagui:"/app/tamagui",settings:"/app/settings",photos:"/app/photos",camera:"/app/camera"};function $(e){return new Promise(n=>setTimeout(n,e))}function ht(e){let n=process.env[e]?.trim();if(!n)return null;let t=Number(n);return Number.isInteger(t)&&t>0?t:null}function zt(){let e=ht("SOOTSIM_DRIVER_CONNECT_TIMEOUT_MS")??ht("SOOTSIM_PW_CONNECT_TIMEOUT_MS")??qt;return{timeoutMs:e,hostTimeoutMs:e+Vt,intervalMs:ft,attempts:Math.max(1,Math.ceil(e/ft))}}function wt(e){return e==="electron"||e==="playwright"}function he(e,n){return n==="playwright"?e.meta?.sootsimHostDriver==="playwright":e.userAgent?.includes("Electron/")===!0}function Jt(e,n){return e.includes("--headless")?!0:e.includes("--headed")?!1:n==="playwright"&&process.platform==="linux"&&!process.env.DISPLAY&&!process.env.WAYLAND_DISPLAY?(console.error(" no display detected \u2192 running playwright headless (override with --headed)"),!0):!1}function J(e){return e.trim()}async function Qt(e,n=!1){let t=ae();bt(e,n,t);let r=ce(e);if((n||r!==null)&&await we(e,250))return e;if(t&&O(t)&&await we(t.bridgePort,500))return t.bridgePort;if(t&&O(t))throw new Error(`rnx bridge lockfile is fresh (port ${t.bridgePort}) but the bridge is not reachable. run \`rnx daemon restart\` or \`rnx daemon uninstall\`.`);await Yt();let o=Xt(["serve","--quiet","--port",String(e)]),i=null;o.once("exit",(s,l)=>{i=String(s??l??"unknown")}),o.unref();let a=Date.now()+gt;for(;Date.now()<a;){let s=ae();if(bt(e,n,s),s&&O(s)&&await we(s.bridgePort,250))return console.error(` Started a local bridge on port ${s.bridgePort}. Run \`rnx daemon install\` to keep it ready between commands.`),s.bridgePort;if(i)throw new Error(`rnx bridge exited before becoming ready (exit ${i})`);await $(150)}throw new Error(`rnx bridge did not start within ${Math.round(gt/1e3)}s`)}function bt(e,n,t){if(!(!n||!t||!O(t)||t.bridgePort===e))throw new Error(`${oe.commandName} open: requested bridge port ${e}, but the active daemon owns port ${t.bridgePort}. explicit --port never selects another bridge; stop that daemon or use an isolated SOOTSIM_HOME.`)}async function Yt(){let e=se();if(e&&_.existsSync(ie(e)))return;console.error(" installing rnx engine runtime...");let{runRuntime:n}=await import("./runtime-JFQ6JIA6.js");await n(["install"],{})}function Xt(e){let n=process.argv[1];return n&&_.existsSync(n)?mt(process.execPath,[n,...e],{detached:!0,stdio:"ignore",env:process.env}):mt(oe.commandName,e,{detached:!0,stdio:"ignore",env:process.env})}function we(e,n){return new Promise(t=>{let r=new ge(`ws://127.0.0.1:${e}`,{handshakeTimeout:n}),o=!1,i=a=>{o||(o=!0,r.readyState===ge.OPEN?r.close():r.readyState===ge.CONNECTING&&r.terminate(),t(a))};r.once("open",()=>i(!0)),r.on("error",()=>i(!1)),setTimeout(()=>i(!1),n)})}function ve(e){try{let n=new URL(e),t=n.pathname.replace(/\/+$/,"")||"/";return n.searchParams.has("open")||n.searchParams.has("port")||n.searchParams.has("bundle")||n.searchParams.has("demo")||n.pathname.includes("/sootsim/index.html")||t==="/sootsim"||n.pathname==="/__soot"||n.pathname==="/__soot/"||t==="/rn"||/^\/rn\/[^/]+$/i.test(t)||/^\/app\/[^/]+$/i.test(t)||t==="/__soot/rn"||/^\/__soot\/rn\/[^/]+$/i.test(t)||/^\/__soot\/app\/[^/]+$/i.test(t)}catch{return!1}}function Zt(e){try{let n=new URL(e,"http://sootsim.local");if(n.origin!=="http://sootsim.local")return!1;let t=n.pathname.replace(/\/+$/,"")||"/";return t==="/rn"||/^\/rn\/[^/]+$/i.test(t)||/^\/app\/[^/]+$/i.test(t)||t==="/__soot/rn"||/^\/__soot\/rn\/[^/]+$/i.test(t)||/^\/__soot\/app\/[^/]+$/i.test(t)}catch{return!1}}function en(e,n){let t=new URL(e,"http://sootsim.local"),r=new URL(n),o=Q(r.pathname),i=t.pathname.startsWith("/__soot/")?t.pathname.slice(7):t.pathname;return r.pathname=`${o}${i}`,r.search=t.search,r.hash=t.hash,r.toString()}function tn(e){try{let n=new URL(e).pathname.replace(/\/+$/,"")||"/";return/^\/preview\/[^/]+$/.test(n)||/^\/build\/.+/.test(n)}catch{return!1}}async function mr(e){let n=J(e);return(await Se(n)).bundleUrl}function nn(e){try{let n=new URL(e.startsWith("http")?e:`http://${e}`),t=n.pathname||"/";if(t!=="/"&&t!==""||n.search||n.hash||!k(n.hostname))return null;let r=n.port?Number(n.port):n.protocol==="https:"?443:80;return Number.isFinite(r)&&r>0?r:null}catch{return null}}async function Se(e){let n=J(e),t=/^\d+$/.test(n)?Number(n):nn(n);if(t&&t>0){let r=await We(t);if(r&&!r.bundleUrlProvisional)return{bundleUrl:r.bundleUrl,port:r.port,framework:r.framework,projectName:r.projectName}}return dt(n)}function Q(e){let n=e.replace(/\/+$/,"")||"/";return n==="/__soot"||n.startsWith("/__soot/")?"/__soot":""}function rn(e,n){let t=J(e),r=new URL(n),o=Q(r.pathname);return r.pathname=`${o}/rn`,r.searchParams.delete("bundle"),r.searchParams.delete("demo"),r.searchParams.delete("app"),r.searchParams.delete("open"),r.searchParams.delete("port"),/^\d+$/.test(t)?r.pathname=`${o}/rn/${t}`:(r.pathname=`${o}/rn`,r.searchParams.set("open",t)),r.toString()}function Pt(e){let n=J(e);return/^\d+$/.test(n)||/^https?:\/\//i.test(n)?!0:/^(localhost|127\.0\.0\.1|\[::1\]|[^/]+\.localhost):\d+(?:\/.*)?$/i.test(n)}async function on(e,n,t={}){let r=t.resolvedBundle??await Se(e),o=new URL(n),i=Q(o.pathname);o.pathname=`${i}/rn`,o.searchParams.delete("open"),o.searchParams.delete("port"),o.searchParams.delete("demo"),o.searchParams.delete("app");let a=t.hot===void 0?r.bundleUrl:je(r.bundleUrl,t.hot);return o.searchParams.set("bundle",a),o.toString()}function sn(e){return e.startsWith("~/")?U.join(Kt.homedir(),e.slice(2)):U.isAbsolute(e)?e:U.resolve(process.cwd(),e)}function an(e){let n={},t={};for(let o=0;o<e.length;o++){if(e[o]==="--replace"){let i=e[o+1];i||(console.error(" rnx open: --replace expects <module>=<file>"),d(1));let a=i.indexOf("=");(a<=0||a===i.length-1)&&(console.error(" rnx open: --replace expects <module>=<file>"),d(1));let s=i.slice(0,a).trim(),l=sn(i.slice(a+1).trim());_.existsSync(l)||(console.error(` rnx open: replacement file not found: ${l}`),d(1)),n[s]={file:l},o++;continue}if(e[o]==="--remap"){let i=e[o+1],a=i?i.indexOf("="):-1;(!i||a<=0||a===i.length-1)&&(console.error(" rnx open: --remap expects <host:port>=<host:port>"),d(1)),t[i.slice(0,a).trim()]=i.slice(a+1).trim(),o++;continue}}let r={};return Object.keys(n).length>0&&(r.modules=n),Object.keys(t).length>0&&(r.network={remap:t}),r.modules||r.network?r:void 0}async function ln(e){if(!e)return null;let n=await Ye(e.bundleUrl);return n?ze(n):null}async function cn(e){if(_.existsSync(U.join(ie(e),"index.html")))return;console.error(` installing configured engine runtime ${e}...`);let n=await _e.install({version:e,setActive:!1,protectVersions:Te()});console.error(` installed engine runtime ${n.version}`)}function un(e,n){let t=n??(fe()?void 0:se()??void 0);if(!t)return e;let r=new URL(e);if(!k(r.hostname)){if(!n)return e;throw new Error(`runtimeVersion ${t} requires a local rnx host; got ${r.origin}`)}return r.hostname=Ge(t),r.toString()}function It(){return De().shellBaseUrl}function dn(e){return ce(e)?.shellBaseUrl??Oe(e)??It()}async function mn(e,n){try{let t=new URL(e),r=t.searchParams.get("bundle")||"";if(!r||!n)return e;let o=Qe({bundleUrl:r,projectDir:n.appDir});if(o.length===0)return e;let i=await pn(o);return i.length===0?e:(t.searchParams.set("appFonts",Xe(i)),t.toString())}catch{return e}}async function pn(e){let n=await Promise.all(e.map(async r=>{let o=new AbortController,i=setTimeout(()=>o.abort(),1500);try{let a=await fetch(r.url,{method:"HEAD",signal:o.signal});return a.status>=200&&a.status<400?r:null}catch{return null}finally{clearTimeout(i)}})),t=[];for(let r of n)r!==null&&t.push(r);return t}async function fn(e,n,t={}){if(!e)return new URL(n).toString();if(ve(e))return new URL(e).toString();if(Zt(e))return en(e,n);let r=Gt[e.toLowerCase()];if(r){let o=new URL(n),i=Q(o.pathname);return o.pathname=`${i}${r}`,o.toString()}return Pt(e)?on(e,n,t):rn(e,n)}async function gn(e,n){try{let t=new URL(e),r=t.searchParams.get("bundle")||"";if(!r||!n)return e;let o=Ze({bundleUrl:r,projectDir:n.appDir});return!o||o.imageUrl&&!await hn(o.imageUrl)?e:(t.searchParams.set("appSplash",et(o)),t.toString())}catch{return e}}async function hn(e){let n=new AbortController,t=setTimeout(()=>n.abort(),1500);try{let r=await fetch(e,{method:"HEAD",signal:n.signal});return r.status>=200&&r.status<400}catch{return!1}finally{clearTimeout(t)}}async function z(e,n=It(),t={}){let r=await fn(e,n,t),o=await gn(await mn(r,t.project),t.project);if(!t.device)return o;let i=new URL(o);return i.searchParams.set("device",t.device),i.toString()}function vt(e,n){let t=e?.url||e?.origin||n;try{let r=new URL(t);return r.searchParams.delete("bundle"),r.searchParams.delete("demo"),r.searchParams.delete("app"),r.searchParams.delete("open"),r.searchParams.delete("port"),r.searchParams.delete("inspectOpen"),r.searchParams.delete("appFonts"),r.searchParams.delete("appSplash"),r.toString()}catch{return n}}async function wn(e,n,t,r={}){let o=new URL(await z(e,n,r));return o.searchParams.set("inspectOpen",t),o.toString()}async function bn(e,n,t,r={}){let o=r.attempts??30,i=r.intervalMs??500,a=r.minNodeCount??10;for(let s=0;s<o;s++){let l=I(e,{commandTimeoutMs:n,simId:t,simIdSource:"flag"});try{let c=await l.send({type:"evaluate",code:"(async () => (await window.__sootsimTest?.getNodeCount()) || 0)()"});if(typeof c=="number"&&c>a)return{bridge:l,count:c}}catch{}l.close(),await $(i)}return null}function vn(e){if(!e)return null;try{let n=new URL(e);if(n.searchParams.has("bundle")){let t=n.searchParams.get("bundle")||"";try{let r=new URL(t),o=r.pathname.length>36?`...${r.pathname.slice(-36)}`:r.pathname;return`bundle ${r.host}${o}`}catch{return"bundle"}}return n.searchParams.has("port")?`connect :${n.searchParams.get("port")||""}`:n.searchParams.has("open")?`connect ${n.searchParams.get("open")||""}`:n.searchParams.has("demo")?`demo ${n.searchParams.get("demo")||"default"}`:n.pathname.includes("/sootsim/index.html")||n.pathname==="/sootsim/"||n.pathname==="/sootsim"?"embedded rnx":null}catch{return null}}function yn(e){let n=e.indexOf(":");if(n<=0)return e.length>24?`${e.slice(0,21)}\u2026`:e;let t=e.slice(0,n),r=e.slice(n+1),o=r.length>12?`${r.slice(0,8)}\u2026`:r;return t==="TM_SESSION"||t==="CLAUDE_CODE_SESSION_ID"||t==="CODEX_THREAD_ID"?`agent ${o}`:`${t} ${o}`}function pr(e,n){if(e.length===0){console.log(" no sims connected");return}console.log(` connected sims (${e.length}):
5
- `);for(let t of e){let r=t.lockedBy&&t.lockExpiresAt?`locked by ${yn(t.lockedBy)} (${Math.max(0,Math.round((t.lockExpiresAt-Date.now())/1e3))}s)`:"",o=[t.isPrimary?"primary":"",t.id===n?"selected":"",t.readyState,t.userVisible===!1?"hidden":t.userVisible===!0?"visible":"",t.attachedCliCount&&t.attachedCliCount>0?"in use":"",t.userFocused?"focused":"",r].filter(Boolean);console.log(` ${t.id}${o.length?` [${o.join(", ")}]`:""}`);let i=vn(t.url);if(i)console.log(` loaded: ${i}`);else if(t.url){let s=t.url.length>96?`${t.url.slice(0,93)}\u2026`:t.url;console.log(` url: ${s}`)}else t.origin&&console.log(` origin: ${t.origin}`);let a=Sn(t);a&&console.log(` engine: ${a}`),t.title&&console.log(` title: ${t.title}`),t.visibilityState&&t.visibilityState!=="visible"&&console.log(` visibility: ${t.visibilityState}`),console.log(` connected: ${yt(Date.now()-t.connectedAt)}`),t.lastActiveAt&&t.lastActiveAt>0&&console.log(` last active: ${yt(Date.now()-t.lastActiveAt)}`)}}function Sn(e){let n=e.url||e.origin||"";if(!n)return null;try{let t=new URL(n).port;return t==="5173"?"dev \u2014 local source (:5173)":t==="3000"?"Contrast app embedded (:3000)":fe()?`dev \u2014 local build (:${t||"?"})`:`runtime \u2014 published engine (:${t||"?"})`}catch{return null}}function yt(e){let n=Math.max(0,Math.round(e/1e3));return n<60?`${n}s ago`:n<3600?`${Math.round(n/60)}m ago`:n<86400?`${Math.round(n/3600)}h ago`:`${Math.round(n/86400)}d ago`}async function fr(e,n,t,r={}){let o=r.attempts??30,i=r.intervalMs??500;for(let a=0;a<o;a++){let s=I(e,{commandTimeoutMs:n});try{let c=(await s.listSims()).find(t);if(c)return c}catch{}finally{s.close()}await $(i)}return null}async function $n(e,n,t,r,o={}){let i=o.attempts??30,a=o.intervalMs??500,s=!!r&&Number.isInteger(r)&&r>1,l=()=>s&&r!==void 0&&!ye(r);for(let c=0;c<i;c++){if(l())return{kind:"host-exit"};let m=I(e,{commandTimeoutMs:n});try{let h=(await m.listSims()).find(t);if(h)return l()?{kind:"host-exit"}:{kind:"match",sim:h}}catch{}finally{m.close()}if(l())return{kind:"host-exit"};await $(a)}return{kind:"timeout"}}async function xn(e,n,t,r={}){let o=r.attempts??20,i=r.intervalMs??250;for(let a=0;a<o;a++){let s=I(e,{commandTimeoutMs:n});try{let c=(await s.listSims()).find(m=>m.id===t);if(!c||c.readyState!=="open")return!0}catch{return!0}finally{s.close()}await $(i)}return!1}function Pn(e){let n=e.meta;if(!n||n.sootsimHostDriver!=="playwright")return null;let t=Number(n.sootsimHostPid);return!Number.isInteger(t)||t<=1||t===process.pid?null:t}function In(e){if(!e.connectAckFile)return!1;try{return _.writeFileSync(e.connectAckFile,`${JSON.stringify({connectedAt:Date.now(),pid:e.pid??null})}
6
- `,{flag:"w"}),!0}catch{return!1}}function St(e){if(e.diagnosticLogPath)try{let n=_.readFileSync(e.diagnosticLogPath,"utf8").trim();if(!n){console.error(` ${U.basename(e.diagnosticLogPath)} was empty`);return}let t=n.length>4e3?`\u2026
7
- ${n.slice(-4e3)}`:n;console.error(` ${U.basename(e.diagnosticLogPath)}:`),console.error(t)}catch(n){let t=n instanceof Error?n.message:String(n);console.error(` failed to read ${U.basename(e.diagnosticLogPath)}: ${t}`)}}function ye(e){try{return process.kill(e,0),!0}catch(n){return n?.code==="EPERM"}}async function kn(e,n=2500){let t=Date.now()+n;for(;Date.now()<t;){if(!ye(e))return!0;await $(100)}return!ye(e)}function Cn(e){let n=pt("ps",["-o","command=","-p",String(e)],{encoding:"utf8",stdio:["ignore","pipe","pipe"]}),t=pt("ps",["eww","-o","command=","-p",String(e)],{encoding:"utf8",stdio:["ignore","pipe","pipe"]});if(n.status!==0||t.status!==0)return!1;let r=(n.stdout||"").trimEnd(),o=(t.stdout||"").trimEnd();return(o.startsWith(r)?o.slice(r.length):o).includes("SOOTSIM_PW_URL=")}async function be(e,n){let t=new Set(n),r=new Set;for(let o of e){if(!t.has(o.id))continue;let i=Pn(o);i&&r.add(i)}for(let o of r){if(!Cn(o)){console.log(` skipped pid ${o}: not a rnx playwright host (stale sim record)`);continue}try{process.kill(o,"SIGTERM")}catch{}if(await kn(o)){console.log(` closed playwright host process ${o}`);continue}try{process.kill(o,"SIGKILL"),console.log(` force-closed playwright host process ${o}`)}catch{}}}function Y(e,n){if(n){let o=n.trim(),i=e.find(a=>a.id===o);if(!i)throw new Error(`no sim connected with id ${o}`);return i}let t=e.find(o=>o.isPrimary&&o.readyState==="open");if(t)return t;let r=e.find(o=>o.readyState==="open");if(r)return r;throw new Error("no sim connected")}function $t(e,n,t,r=!1){let[o,i]=[e,n.url].map(a=>{if(!a)return a;try{let s=new URL(a);if(s.searchParams.has("sootsimConfig"))return s.searchParams.set("sootsimConfig","[redacted]"),s.toString()}catch{}return a});if(r){console.log(` Opened ConnectRN [${t}]`);return}console.log(` ${t==="current sim"?"loaded":"opened"}: ${o} [${t}]`),console.log(` current sim: ${n.id}`),console.log(JSON.stringify({simId:n.id,url:i},null,2))}async function xt(e,n,t){if(t.includes("--no-describe"))return;let r=process.env.SOOTSIM_QUIET_TARGET_NOTICE;process.env.SOOTSIM_QUIET_TARGET_NOTICE="1";try{await Un(e,n,{stableMs:150,maxMs:400});let o=I(e,{commandTimeoutMs:3e3,simId:n,cliLabel:"open --describe",simIdSource:"flag"});try{let i=null;try{i=await nt(o,1)}catch{}if(i&&!i.ready){let s=i.loadingText?`still showing "${i.loadingText}"`:i.flag!==!0?"guest ready event has not fired":i.targets<=0?"no visible app content is inspectable yet":"app tree is still stabilizing";console.log(` app still loading: ${s} (nodes: ${i.nodes}, targets: ${i.targets})`),console.log(" before interacting, run: rnx wait ready --max-ms 120000")}let a=await tt(o,{describe:!0,verbose:!1,filter:"",compact:!0,hideXy:!1,maxDepth:12});if(!a?.tree)return;console.log(""),console.log(a.tree)}finally{o.close()}}catch{}finally{r===void 0?delete process.env.SOOTSIM_QUIET_TARGET_NOTICE:process.env.SOOTSIM_QUIET_TARGET_NOTICE=r}}async function Un(e,n,t){let r=Date.now()+t.maxMs,o="(async () => (await window.__sootsimTest?.getNodeCount?.()) || 0)()",i=I(e,{commandTimeoutMs:2e3,simId:n,simIdSource:"flag"});try{let a=-1,s=0;for(;Date.now()<r;){let l=-1;try{let c=await i.send({type:"evaluate",code:o});typeof c=="number"&&(l=c)}catch{}if(l>=0&&l===a){if(Date.now()-s>=t.stableMs)return}else a=l,s=Date.now();await $(50)}}finally{i.close()}}async function Rn(e,n={}){let t=T(e,{port:n.port,commandTimeoutMs:n.timeoutMs});t.positional.length!==1&&(console.error(" rnx open: expected exactly one <url-or-route>"),console.error(" examples: rnx open /settings | rnx open myapp://settings"),d(1));let r=E(t),o=t.simId?` --sim ${t.simId}`:"";try{let i=await qe(r,t.positional[0]??"");console.log(` opened deep link: ${i}`)}catch(i){console.error(` link failed: ${i instanceof Error?i.message:String(i)}`),await L(r,{errorsCommand:`rnx get errors 5${o}`,warningsCommand:`rnx get warnings 5${o}`,requestsCommand:`rnx get requests 5${o}`}),d(1)}finally{r.close()}}async function gr(e,n={}){let t=T(e,{port:n.port,commandTimeoutMs:n.timeoutMs,stripBooleanFlags:["--new","--headless","--headed","--ephemeral","--hot","--no-hmr","--no-describe","--quiet"],stripValueFlags:["--base-url","--replace","--driver","--profile","--cdp-port","--device","--viewport"]}),r=e.find((f,p)=>e[p-1]==="--profile"),o=e.includes("--quiet"),i=e.includes("--ephemeral"),a=e.find((f,p)=>e[p-1]==="--cdp-port"),s=a?Number(a):void 0;a&&(!Number.isFinite(s)||s<=0)&&(console.error(` rnx open: --cdp-port must be a positive port number, got "${a}"`),d(1)),r&&i&&(console.error(" rnx open: --profile cannot be combined with --ephemeral"),d(1));let l=r?Ve(r).id:void 0,c=e.includes("--new")||!!l||i,m=an(e);c&&t.simIdSource==="flag"&&(console.error(" rnx open: --new, --profile, and --ephemeral cannot be combined with --sim"),d(1));let u=t.positional[0]||"";if(Ke(u)){c&&(console.error(" rnx open: deep links target the current app; remove --new, --profile, or --ephemeral"),d(1)),await Rn(e,n);return}if(tn(u)){let f=(()=>{try{return k(new URL(u).hostname)}catch{return!1}})();console.log(" that\u2019s an rnx preview/build link \u2014 a full player page, not a driveable sim."),console.log(" opening it in your browser for viewing\u2026");try{await ot(u,{background:!1})}catch(p){console.error(` could not launch a browser: ${p instanceof Error?p.message:String(p)}`),console.error(` open it yourself: ${u}`),d(1)}console.log(f?" to drive it under the CLI, point `rnx open` at the app\u2019s dev port instead (e.g. `rnx open 8081`).":" the CLI can\u2019t drive a remote preview (the engine only attaches to the local bridge from localhost). to drive the app, run it locally and `rnx open <port>`.");return}let h=Pt(u)?await Se(u):void 0,N=await ln(h),X=await Je(N),F=X?.runtimeVersion,H=de(de(X?{...X,runtimeVersion:void 0}:void 0,n.runtimeConfig),m);F&&await cn(F);let Z=e.find((f,p)=>e[p-1]==="--base-url");if(Z&&!t.explicitPort){let f=ue(Z);f&&(t.wsPort=f)}t.wsPort=await Qt(t.wsPort,t.explicitPort);let M=e.find((f,p)=>e[p-1]==="--driver")||"";M&&!wt(M)&&(console.error(` unknown driver "${M}" \u2014 run \`rnx list --drivers\``),d(1));let v=wt(M)?M:process.env.CI==="1"||process.env.CI==="true"||process.env.GITHUB_ACTIONS==="true"||Ee()||!process.stdin.isTTY?"playwright":Re()||"playwright",Ct=Jt(e,v);s&&v!=="playwright"&&(console.error(" rnx open: --cdp-port is only honored by the playwright driver"),d(1));let $e=e.includes("--hot"),xe=e.includes("--no-hmr");$e&&xe&&(console.error(" rnx open: --hot and --no-hmr cannot be combined"),d(1));let Ut=$e?!0:xe?!1:v!=="playwright",C=e.find((f,p)=>e[p-1]==="--device");C&&!(C in le)&&(console.error(` rnx open: unknown device "${C}"`),console.error(` known devices: ${Me().join(", ")}`),d(1));let ee=C?le[C]:void 0,j=e.find((f,p)=>e[p-1]==="--viewport"),W=j?/^(\d+)x(\d+)$/.exec(j):null;j&&!W&&(console.error(` rnx open: --viewport must be <width>x<height>, got "${j}"`),d(1));let Rt=W?{width:Number(W[1]),height:Number(W[2])}:void 0,K={hot:Ut,device:C,resolvedBundle:h,project:N},Tt=F?`http://localhost:${t.wsPort}/`:Z||dn(t.wsPort),x=un(Tt,F),Pe=e.includes("--base-url");Ae(t.wsPort,x);let Et=B();if(!c){let f=E(t),p=t.simId?` --sim ${t.simId}`:"",re=!1;try{let g=null,V=null;try{let w=await f.listSims();if(t.simIdSource==="saved")g=w.find(b=>b.id===Et&&b.readyState==="open"&&he(b,v))??null,g||D();else if(t.simIdSource==="flag"&&(g=Y(w,t.simId),!he(g,v)))throw new Error(`sim ${g.id} is not managed by the ${v} driver`);if(!g&&t.simIdSource!=="flag"){V=await z(u,A(x,H),K);let b=new URL(V);b.searchParams.delete("inspectOpen"),g=w.find(S=>{if(S.readyState!=="open"||!S.url||!he(S,v))return!1;try{let Ue=new URL(S.url);return Ue.searchParams.delete("inspectOpen"),Ue.toString()===b.toString()}catch{return!1}})??null}if(!g)if(t.simIdSource!=="flag")re=!0;else throw new Error("no sim connected");if(!re&&g){let b=Pe||ve(u)?x:vt(g,x),S=V??await z(u,A(b,H),K);f.send({type:"evaluate",simId:g.id,code:`window.location.href = ${JSON.stringify(S)}`}).catch(()=>{})}}catch(w){console.error(` open failed: ${w instanceof Error?w.message:String(w)}`),await L(f,{errorsCommand:`rnx get errors 5${p}`,warningsCommand:`rnx get warnings 5${p}`,requestsCommand:`rnx get requests 5${p}`}),d(1)}if(!re&&g){await $(1500);let w=await bn(t.wsPort,t.commandTimeoutMs,g.id);w||(console.error(" timed out waiting for current sim to load target"),d(1)),w.bridge.close(),P(g.id);let b=Pe||ve(u)?x:vt(g,x),S=V??await z(u,A(b,H),K);return $t(S,{...g,url:S},"current sim",o),await xt(t.wsPort,g.id,e),t.wsPort}}finally{f.close()}}let _t=A(x,H),Ie=`cli-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,ke=await wn(u,_t,Ie,K),Ce=Be();Ce||(console.error(" could not resolve a stable owning process; refusing unsupervised sim host"),d(1));let Mt=f=>f.url?.includes(`inspectOpen=${Ie}`)??!1,R=rt(v);R||(console.error(` unknown driver "${v}" \u2014 run \`rnx list --drivers\``),d(1));let q=zt(),y=await R.launch({url:ke,bridgePort:ue(x)??t.wsPort,headless:Ct,profileId:l,ephemeralProfile:i,cdpPort:s,device:C,ownerPid:Ce,viewport:Rt??(ee?{width:ee.width+120,height:ee.height+60}:void 0),connectTimeoutMs:q.hostTimeoutMs});y.launched||(console.error(` ${R.name} driver: ${y.message}`),d(1));let te=await $n(t.wsPort,t.commandTimeoutMs,Mt,y.pid,{attempts:q.attempts,intervalMs:q.intervalMs});if(te.kind==="host-exit"&&(St(y),console.error(` ${R.name} host crashed \u2014 sim is no longer attached`),d(1)),te.kind==="timeout"){if(y.pid)try{process.kill(y.pid,"SIGTERM"),console.error(` closed ${R.name} host process ${y.pid}`)}catch{}St(y),console.error(` timed out after ${q.timeoutMs}ms waiting for opened sim to connect`),d(1)}let ne=te.sim;return P(ne.id),In(y),$t(ke,ne,`${R.name} driver`,o),await xt(t.wsPort,ne.id,e),t.wsPort}async function kt(e,n={}){let t=T(e,{port:n.port,commandTimeoutMs:n.timeoutMs,stripBooleanFlags:["--force"]}),r=e.includes("--force"),o=E(t),i=t.simId?` --sim ${t.simId}`:"";try{try{let a=await o.listSims(),s=Y(a,t.positional[0]||t.simId);if(s.lockedBy&&s.lockExpiresAt&&s.lockExpiresAt>Date.now()){let l=Math.max(0,Math.round((s.lockExpiresAt-Date.now())/1e3));s.lockedByKind==="user-active"&&(console.error(` refused: ${s.id} is locked by the active user (${l}s) \u2014 that's a live human tab`),console.error(" run `rnx open --new` for a fresh investigation sim"),d(1)),r||(console.error(` refused: ${s.id} is leased by ${s.lockedBy} (${l}s)`),console.error(` \`sootsim use ${s.id} --force\` to take it, or \`rnx open --new\` for a fresh sim`),d(1))}await o.focusSim(s.id),P(s.id),console.log(` using: ${s.id}`)}catch(a){G(a),console.error(` use failed: ${a instanceof Error?a.message:String(a)}`),await L(o,{errorsCommand:`rnx get errors 5${i}`,warningsCommand:`rnx get warnings 5${i}`,requestsCommand:`rnx get requests 5${i}`}),d(1)}}finally{o.close()}}async function hr(e,n={}){await kt(e,n)}async function wr(e,n={}){await kt(e,n)}async function br(e,n={}){let t=T(e,{port:n.port,commandTimeoutMs:n.timeoutMs,stripBooleanFlags:["--force"]}),r=e.includes("--force"),o=E(t);try{try{let i=await o.listSims(),a=Y(i,t.positional[0]||t.simId),s=r&&a.lockedBy&&a.lockedByKind!=="user-active"?a.lockedBy:null,l=await o.claim(a.id,{force:r});P(a.id);let c=Math.max(0,Math.round((l.lockExpiresAt-Date.now())/1e3)),m=l.bootedCount>0?` (booted ${l.bootedCount})`:"";console.log(` claimed: ${l.simId} [${c}s]${m}`),s&&console.log(` took over from: ${s}`)}catch(i){if(i instanceof Le){let a=Math.max(0,Math.round(i.lock.expiresInMs/1e3));console.error(` claim failed: locked by ${i.lock.by} for ${a}s more`),console.error(" use --force to take it, or `rnx open --new` for a fresh sim"),d(1)}console.error(` claim failed: ${i instanceof Error?i.message:String(i)}`),d(1)}}finally{o.close()}}async function Tn(e,n,t,r){if(r.length===0)return{closed:[],remaining:[]};await Promise.all(r.map(i=>e.closeSim(i).catch(()=>{})));let o=new Set(r);for(let i=0;i<40;i++){let a=[];try{let s=I(n,{commandTimeoutMs:t});try{a=(await s.listSims()).filter(c=>o.has(c.id)&&c.readyState==="open").map(c=>c.id)}finally{s.close()}}catch{a=[]}if(a.length===0)return{closed:[...o],remaining:[]};if(i===39)return{closed:[...o].filter(s=>!a.includes(s)),remaining:a};await $(250)}return{closed:[...o],remaining:[]}}function En(e,n){let t=e.filter(u=>u.readyState==="open"),r=t.map(u=>u.id),o=n.explicitKeepId?.trim()||"",i=n.savedKeepId?.trim()||"",a=i?t.some(u=>u.id===i):!1,s=i&&!a?i:null,l=null,c=null,m=null;if(n.closeOthers)if(o){let u=t.find(h=>h.id===o);u?l=u.id:c=o}else if(i&&a)l=i;else{let u=t.find(h=>h.isPrimary)??t[0]??null;u&&(l=u.id,i&&!a&&(m=u.id))}return{openIds:r,keepId:l,targets:c?[]:r.filter(u=>u!==l),staleSavedId:s,missingExplicitKeepId:c,fallbackKeepId:m}}async function vr(e,n={}){let t=T(e,{port:n.port,commandTimeoutMs:n.timeoutMs,stripBooleanFlags:["--all","--others"]}),r=E(t),o=t.simId?` --sim ${t.simId}`:"",i=e.includes("--all"),a=e.includes("--others");if(i||a){try{let s=await r.listSims(),l=B(),c=t.positional[0]||(t.simIdSource==="flag"?t.simId:void 0),m=En(s,{closeOthers:a,explicitKeepId:c,savedKeepId:l});if(m.staleSavedId&&D(),m.fallbackKeepId&&(P(m.fallbackKeepId),console.log(` saved sim ${m.staleSavedId} is gone \u2014 keeping primary ${m.fallbackKeepId}`)),m.missingExplicitKeepId&&(console.error(` close failed: keep sim ${m.missingExplicitKeepId} is not connected; not closing other sims`),d(1)),m.targets.length===0){console.log(m.keepId?` nothing to close \u2014 only the kept sim ${m.keepId} is connected`:m.staleSavedId?` nothing to close \u2014 no sims connected (cleared stale current sim ${m.staleSavedId})`:" nothing to close \u2014 no sims connected");return}let u=await Tn(r,t.wsPort,t.commandTimeoutMs,m.targets);await be(s,m.targets);let h=B();h&&u.closed.includes(h)&&(m.keepId?P(m.keepId):D());let N=` closed ${u.closed.length} sim(s)${m.keepId?` (kept ${m.keepId})`:""}`;console.log(N),u.remaining.length>0&&(console.error(` close failed: still connected: ${u.remaining.join(", ")}`),d(1))}catch(s){G(s),console.error(` close failed: ${s instanceof Error?s.message:String(s)}`),d(1)}finally{r.close()}return}try{try{let s=await r.listSims(),l=Y(s,t.positional[0]||t.simId),c=s.find(u=>u.id!==l.id&&u.readyState==="open");await r.closeSim(l.id),await xn(t.wsPort,t.commandTimeoutMs,l.id)||(await be(s,[l.id]),console.error(` close failed: ${l.id} is still connected`),d(1)),await be(s,[l.id]),B()===l.id&&(c?P(c.id):D()),console.log(` closed: ${l.id}`)}catch(s){G(s),console.error(` close failed: ${s instanceof Error?s.message:String(s)}`),await L(r,{errorsCommand:`rnx get errors 5${o}`,warningsCommand:`rnx get warnings 5${o}`,requestsCommand:`rnx get requests 5${o}`}),d(1)}}finally{r.close()}}export{zt as a,Qt as b,mr as c,un as d,It as e,dn as f,z as g,wn as h,vn as i,pr as j,fr as k,$n as l,Pn as m,In as n,be as o,Rn as p,gr as q,hr as r,wr as s,br as t,Tn as u,En as v,vr as w};
@@ -1,27 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import{a as w,b as E}from"./chunk-2ZE4WXXF.js";import{P as T,Q as F,R as _,S as W,g as $}from"./chunk-GQVWJWCZ.js";import ae from"node:fs";import S from"node:path";import{WebSocket as C}from"ws";var ye="http://localhost:7668/";function H(e){if(typeof e=="number")return Number.isInteger(e)&&e>0?e:null;if(typeof e!="string")return null;let t=e.trim();if(!t)return null;let r=Number(t);return Number.isInteger(r)&&r>0?r:null}function z(e){let t=H(e);return t===null?0:t}function V(e={}){let t=H(e.explicitPort);return t!==null?t:7668+z(e.portOffset)}var Q=5173;var Z=2e3;function Te(e){let t=e-7668;return t<0||t>Z?null:`http://localhost:${Q+t}/`}var _e=4001,Oe="sootsim close";var h="http://localhost:5173/";import{existsSync as ee,mkdirSync as te,readFileSync as re,rmSync as B,writeFileSync as ne}from"fs";import{tmpdir as ie}from"os";import{dirname as oe,join as se,resolve as le}from"path";var x=1,G="SOOTSIM_CLI_CURRENT_SIM_PATH",ce=["SOOTSIM_CLI_IDENTITY","TM_SESSION","CLAUDE_CODE_SESSION_ID","CODEX_THREAD_ID","TERM_SESSION_ID","ITERM_SESSION_ID","TMUX_PANE","STY","KITTY_WINDOW_ID","WEZTERM_PANE","ALACRITTY_WINDOW_ID","WINDOWID","VSCODE_INJECTION"],j=/^(?:tmux|screen)|^tm$/i;function q(e,t=20){let r=e,n=w(e);if(!n||n<=1){let o=E(e);return e>1&&o&&!j.test(o)?e:null}for(let o=0;o<t;o++){let s=E(n);if(s&&j.test(s))return r;let u=w(n);if(!u||u<=1)return s?n:r;r=n,n=u}return n}function v(){for(let t of ce){let r=process.env[t];if(r&&r.trim())return{key:`${t}:${r.trim()}`,source:t,stable:!0}}let e=q(process.ppid);return e&&e>1?{key:`gppid-${e}`,source:"grand-ppid",stable:!0}:{key:`pid-${process.ppid}`,source:"ppid",stable:!1}}function de(){return v().key}function ke(){return q(process.ppid)}function R(){if(process.env[G])return le(process.env[G]);let e=de();return se(ie(),`sootsim-current-sim-${e}.json`)}function ue(){let e=R();if(!ee(e))return null;try{let t=JSON.parse(re(e,"utf8"));return t.version!==x||typeof t.simId!="string"||!t.simId.trim()||typeof t.updatedAt!="string"?(B(e,{force:!0}),null):{version:x,simId:t.simId.trim(),updatedAt:t.updatedAt}}catch{return B(e,{force:!0}),null}}function k(){return ue()?.simId||null}function Ce(e){let t=e.trim();if(!t)return;let r=R();te(oe(r),{recursive:!0}),ne(r,JSON.stringify({version:x,simId:t,updatedAt:new Date().toISOString()},null,2)+`
5
- `)}function J(){B(R(),{force:!0})}var me="RNX_PLACEMENT";function We(){return process.env[me]==="local-box"?"local-box":"host"}function Y(e){return`ws://localhost:${e}`}var L=null;function M(){return F().filter(e=>W(e))}function X(e){let t=S.resolve(e);for(;;){if(ae.existsSync(S.join(t,".git")))return t;let r=S.dirname(t);if(r===t)return null;t=r}}function K(e,t){let r=S.relative(e,t);return r===""||r!==".."&&!r.startsWith(`..${S.sep}`)&&!S.isAbsolute(r)}function fe(){let e=M();if(e.length===0)return null;if(process.env.SOOTSIM_BRIDGE_PORT!==void 0||process.env.PORT_OFFSET!==void 0){let r=V({explicitPort:process.env.SOOTSIM_BRIDGE_PORT,portOffset:process.env.PORT_OFFSET}),n=e.find(o=>o.bridgePort===r);if(n)return n}let t=null;try{t=process.cwd()}catch{}if(t){let r=X(t),n=e.filter(o=>{let s=X(o.cwd);return r&&s?r===s:K(t,o.cwd)||K(o.cwd,t)});if(n.length>0)return n.find(o=>o.bridgePort===7668)??n[0]}return e.find(r=>r.bridgePort===7668)??e[0]}function ge(){let e=$();if(L?.homeDir===e)return L.world;let t=pe();return L={homeDir:e,world:t},t}function pe(){let e=fe();if(e)return{source:"dev-bridge",bridgePort:e.bridgePort,shellBaseUrl:e.shellPort?`http://localhost:${e.shellPort}/`:h};let t=T();return t&&_(t)?{source:"daemon",bridgePort:t.bridgePort,shellBaseUrl:t.runtimePort>0?`http://localhost:${t.runtimePort}/`:h}:{source:"default",bridgePort:7668,shellBaseUrl:h}}function he(e){let t=M().find(n=>n.bridgePort===e);if(t)return{source:"dev-bridge",shellBaseUrl:t.shellPort?`http://localhost:${t.shellPort}/`:h};let r=T();return r&&_(r)&&r.bridgePort===e?{source:"daemon",shellBaseUrl:r.runtimePort>0?`http://localhost:${r.runtimePort}/`:h}:null}function He(e){let t;try{let o=new URL(e);t=o.port?Number(o.port):o.protocol==="https:"?443:80}catch{return null}if(!Number.isFinite(t)||t<=0)return null;let r=M().find(o=>o.shellPort===t||o.runtimePort===t||o.bridgePort===t);if(r)return r.bridgePort;let n=T();return n&&_(n)&&(n.runtimePort===t||n.bridgePort===t)?n.bridgePort:null}function Se(){return ge().bridgePort}function Ve(e,t){let r=he(e),n=r?.source==="dev-bridge"?"dev bridge":r?.source==="daemon"?"daemon bridge":"bridge",o=r?.source==="dev-bridge"?`dev-bridges/${e}.json`:r?.source==="daemon"?"daemon.json":"no lockfile",s=t??r?.shellBaseUrl;process.stderr.write(` \u2192 ${n} :${e} (${s?`shell ${s}, `:""}${o})
6
- `)}var A=class extends Error{lock;constructor(t,r){super(t),this.name="BridgeSimLockedError",this.lock=r}};function be(e){return e==="flag"?"via --sim":e==="saved"?"saved via `rnx use`":"primary fallback \u2014 no sim pinned"}function Ge(e,t={}){let r=new Set,n=t.port??Se(),o=t.port!==void 0,s=t.commandTimeoutMs??15e3,u,a="none",I=new Set(t.stripBooleanFlags??[]),P=new Set(t.stripValueFlags??[]);for(let l=0;l<e.length;l++){let i=e[l];if(i==="--port"||i==="-p"){r.add(l),o=!0,l+1<e.length&&(r.add(l+1),n=Number(e[l+1])),l++;continue}if(i.startsWith("--port=")){r.add(l),o=!0,n=Number(i.slice(7));continue}if(i==="--timeout"){r.add(l),l+1<e.length&&(r.add(l+1),s=Number(e[l+1])),l++;continue}if(i==="--sim"||i==="--session"||i==="--tab"){r.add(l),l+1<e.length&&(r.add(l+1),u=e[l+1]?.trim()||void 0,a="flag"),l++;continue}let c=i.startsWith("--sim=")?i.slice(6):i.startsWith("--session=")?i.slice(10):i.startsWith("--tab=")?i.slice(6):void 0;if(c!==void 0){r.add(l),u=c.trim()||void 0,a="flag";continue}if(I.has(i)){r.add(l);continue}P.has(i)&&(r.add(l),l+1<e.length&&r.add(l+1),l++)}if(!u){let l=k();l&&(u=l.trim()||void 0,a="saved")}return{positional:e.filter((l,i)=>!r.has(i)),wsPort:n,explicitPort:o,simId:u,simIdSource:a,commandTimeoutMs:s}}function Ie(e,t={}){let r=1,n=t.commandTimeoutMs??15e3,o=new Map,s=new C(Y(e)),u=v(),a=new Promise((i,c)=>{s.on("open",()=>{try{s.send(JSON.stringify({type:"bridge:hello",id:0,cliIdentityKey:u.key,cliIdentitySource:u.source,cliLabel:t.cliLabel}))}catch{}i()}),s.on("error",d=>{let m=d.message?`: ${d.message}`:"";c(new Error(`could not connect to ${Y(e)}${m}`))})});a.catch(()=>{});let I=!1,P=!1;function l(i,c){if(P||process.env.SOOTSIM_QUIET_TARGET_NOTICE==="1"||i.startsWith("bridge:")||i==="focus"||i==="close")return;P=!0;let d=c??"primary",m=be(c?t.simIdSource:"none");process.stderr.write(` \u2192 ${d} (${m})
7
- `)}return s.on("message",i=>{let c;try{c=JSON.parse(i.toString())}catch{return}if(c.id===0)return;let d=o.get(c.id);d&&(o.delete(c.id),c._otherCliCount>0&&!I&&(I=!0,process.stderr.write(`
8
- \u26A0 ${c._otherCliCount} other CLI identity/identities are driving this sim
9
- taps, scrolls, and keyboard input from multiple agents will collide on
10
- the same screen state (this is not a bridge throughput limit).
11
- use \`rnx open --new\` for an isolated sim per agent.
12
-
13
- `)),c.error?c._locked?d.reject(new A(c.error,c._locked)):d.reject(new Error(c.error)):d.resolve(c.result))}),s.on("close",(i,c)=>{let d=c?.toString()||"connection closed";for(let[m,p]of o)o.delete(m),p.reject(new Error(`sim disconnected: ${d} (code ${i})`))}),{async send(i,c){let d=c?.timeoutMs??n,m=async f=>{await a;let g=r++;return new Promise((b,U)=>{let N=setTimeout(()=>{o.delete(g),U(new Error(`command timed out after ${Math.round(d/1e3)}s`))},d);o.set(g,{resolve:O=>{clearTimeout(N),b(O)},reject:O=>{clearTimeout(N),U(O)}});let y={...i,id:g};y.simId===void 0&&f&&(y.simId=f),l(i.type??"",y.simId),s.send(JSON.stringify(y))})},p=t.simIdSource==="flag"?t.simId:k()??t.simId;try{return await m(p)}catch(f){let g=f instanceof Error?f.message:String(f),b=`no sim connected with id ${p}`;throw t.simIdSource!=="flag"&&p&&i.simId===void 0&&(g===b||g.startsWith(`${b};`))?(J(),new Error(`saved sim ${p} is gone${g.slice(b.length)}; run \`rnx list\` and \`rnx use <sim>\`, or open a fresh sim`)):f}},async listSims(){let i=await this.send({type:"bridge:list-sims"});return Array.isArray(i)?i:[]},async focusSim(i){return this.send({type:"focus",simId:i})},async closeSim(i){return this.send({type:"close",simId:i})},async claim(i,c={}){return await this.send({type:"bridge:claim",simId:i,force:c.force===!0})},close(){try{s.readyState===C.OPEN&&s.send(JSON.stringify({type:"bridge:bye",id:0}))}catch{}s.close();let i=setTimeout(()=>{s.readyState!==C.CLOSED&&s.terminate()},250)}}}function je(e){return Ie(e.wsPort,{commandTimeoutMs:e.commandTimeoutMs,simId:e.simId,simIdSource:e.simIdSource})}function Pe(e,t){let r=e.filter(s=>s.readyState==="open"&&s.id!==t),n=r.find(s=>s.userFocused)??r.find(s=>s.userVisible===!0&&s.isPrimary)??r.find(s=>s.userVisible===!0)??r.find(s=>s.isPrimary);if(!n)return null;let o=[n.isPrimary?"primary":null,n.userVisible===!1?"hidden":n.userVisible===!0?"visible":null,n.userFocused?"focused":null].filter(Boolean);return`${n.id}${o.length?` [${o.join(", ")}]`:""}`}async function qe(e){try{let t=await e.send({type:"evaluate",code:`(() => ({
14
- hidden: document.hidden,
15
- visibilityState: document.visibilityState,
16
- hasFocus: typeof document.hasFocus === 'function' ? document.hasFocus() : null,
17
- simId: window.__sootsimBridge?.id ?? window.SootSim?.state?.simId ?? null,
18
- url: location.href
19
- }))()`}),r=typeof t=="object"&&t!==null?t:{hidden:t===!0};if(r.hidden===!0===!0){let o=null;try{o=Pe(await e.listSims(),r.simId)}catch{}return process.stderr.write(`
20
- \u26A0 target sim${r.simId?` ${r.simId}`:""} is hidden (document.hidden = true)
21
- `+(r.visibilityState?` visibility: ${r.visibilityState}
22
- `:"")+` animations and rAF callbacks are throttled \u2014 coordinates may be wrong
23
- and launch/transition animations will not complete.
24
- `+(o?` another open sim looks usable: ${o}; target it with --sim.
25
- `:" run `rnx list` to find the visible sim and target it with --sim.\n")+` page-level window.focus() cannot unhide a browser tab.
26
-
27
- `),{hidden:!0,warned:!0,simId:r.simId}}return{hidden:!1,warned:!1,simId:r.simId}}catch{return{hidden:!1,warned:!1}}}async function Je(e,t,r={}){let n={type:"evaluate",code:t};return r.acquireLock&&(n.acquireLock=!0),e.send(n)}async function Ye(e,t,...r){return e.send({type:"call",path:t,args:r})}async function Xe(e,t,...r){return e.send({type:"call",path:t,args:r,acquireLock:!0})}export{ye as a,Te as b,_e as c,Oe as d,de as e,ke as f,k as g,Ce as h,J as i,h as j,me as k,We as l,Y as m,ge as n,he as o,He as p,Se as q,Ve as r,A as s,Ge as t,Ie as u,je as v,qe as w,Je as x,Ye as y,Xe as z};
@@ -1,4 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import{a}from"./chunk-U52Z6BML.js";import"./chunk-5VFQ7HKK.js";import"./chunk-RU565DEH.js";export{a as getCliVersion};
@@ -1,4 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w}from"./chunk-L6VQSQ5O.js";import"./chunk-IXYE6F2D.js";import"./chunk-XSWS6HY6.js";import"./chunk-UHTIDDI2.js";import"./chunk-KWUKKULB.js";import"./chunk-WR6QFC62.js";import"./chunk-VSGEEW3N.js";import"./chunk-HM5TGIVN.js";import"./chunk-2XDNHF7N.js";import"./chunk-2W6ADNTG.js";import"./chunk-4S5CIP7Y.js";import"./chunk-KOSLTZXQ.js";import"./chunk-RE2IODEB.js";import"./chunk-PVGD4KKG.js";import"./chunk-VKOEADVP.js";import"./chunk-7DLC2M6S.js";import"./chunk-PYH2MNFB.js";import"./chunk-OO7E4JTZ.js";import"./chunk-2ZE4WXXF.js";import"./chunk-UQXSAYWY.js";import"./chunk-XSXSVO4P.js";import"./chunk-ZAUPKGQP.js";import"./chunk-VDCYIT2N.js";import"./chunk-GQVWJWCZ.js";import"./chunk-5VFQ7HKK.js";import"./chunk-RU565DEH.js";export{d as applyRuntimeGenerationOrigin,h as buildOpenUrl,g as buildShellUrl,u as closeSimsBulk,b as ensureBridgeForOpen,v as planBulkCloseTargets,m as playwrightHostPidForSim,j as printConnectedSims,c as resolveBundleTarget,e as resolveDefaultShellBaseUrl,a as resolveDriverConnectWaitOptions,f as resolveShellBaseUrlForBridgePort,t as runClaimCommand,w as runCloseCommand,s as runFocusCommand,p as runLinkCommand,q as runOpenCommand,r as runUseCommand,n as signalDriverLaunchConnected,i as summarizeSimUrl,o as terminatePlaywrightHostsForSims,k as waitForSimMatch,l as waitForSimMatchOrHostExit};
@@ -1,4 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import{a,b,c,d,e,f}from"./chunk-UAMMP7U7.js";import"./chunk-7PBNTA3M.js";import"./chunk-DYE6WT2Q.js";import"./chunk-2MI2ROT4.js";import"./chunk-VOYUOTN2.js";import"./chunk-7DLC2M6S.js";import"./chunk-PYH2MNFB.js";import"./chunk-OO7E4JTZ.js";import"./chunk-2ZE4WXXF.js";import"./chunk-UQXSAYWY.js";import"./chunk-2QVA4PPE.js";import"./chunk-GQVWJWCZ.js";import"./chunk-U52Z6BML.js";import"./chunk-5VFQ7HKK.js";import"./chunk-RU565DEH.js";export{c as daemonInstall,b as getDaemonServiceStatus,a as runDaemon,e as teardownDaemonService,d as teardownLegacyMacDaemonArtifacts,f as teardownSootsimHome};
@@ -1,4 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import"./chunk-X2YXPZD4.js";import{a,b,c,d,e,f,g}from"./chunk-UHTIDDI2.js";import"./chunk-KWUKKULB.js";import"./chunk-HM5TGIVN.js";import"./chunk-2ZE4WXXF.js";import"./chunk-XSXSVO4P.js";import"./chunk-GQVWJWCZ.js";import"./chunk-RU565DEH.js";export{c as ALL_DRIVERS,g as buildDriverListRows,a as electronDriver,d as getAllDrivers,e as getDriver,b as playwrightDriver,f as resolveDriver};
@@ -1,4 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import{c,d,e,f,g,h,i}from"./chunk-AEMLIV3G.js";import"./chunk-CBF7RQ3C.js";import"./chunk-MU77ZSME.js";import{a,b}from"./chunk-HCORKEG6.js";import"./chunk-R7NXLMFI.js";import"./chunk-GH7XDCAP.js";import"./chunk-MHVH5IJU.js";import"./chunk-R3HLZSGB.js";import"./chunk-6VPR6OTH.js";import"./chunk-RAYAIDJI.js";import"./chunk-G2IBWLBT.js";import"./chunk-QKYOZQKE.js";import"./chunk-L6VQSQ5O.js";import"./chunk-IXYE6F2D.js";import"./chunk-XSWS6HY6.js";import"./chunk-UHTIDDI2.js";import"./chunk-KWUKKULB.js";import"./chunk-WR6QFC62.js";import"./chunk-VSGEEW3N.js";import"./chunk-HM5TGIVN.js";import"./chunk-2XDNHF7N.js";import"./chunk-2W6ADNTG.js";import"./chunk-4S5CIP7Y.js";import"./chunk-KOSLTZXQ.js";import"./chunk-RE2IODEB.js";import"./chunk-PVGD4KKG.js";import"./chunk-VKOEADVP.js";import"./chunk-2MI2ROT4.js";import"./chunk-7DLC2M6S.js";import"./chunk-PYH2MNFB.js";import"./chunk-OO7E4JTZ.js";import"./chunk-2ZE4WXXF.js";import"./chunk-I2C26UZ3.js";import"./chunk-UQXSAYWY.js";import"./chunk-4FYJOFJZ.js";import"./chunk-2QVA4PPE.js";import"./chunk-XSXSVO4P.js";import"./chunk-ZAUPKGQP.js";import"./chunk-VDCYIT2N.js";import"./chunk-GQVWJWCZ.js";import"./chunk-5VFQ7HKK.js";import"./chunk-RU565DEH.js";export{f as discoverSootsimUrl,c as getLastFlowPreviewUploadResult,d as getLastFlowTraceSteps,h as hoistLeadingSimFlag,a as parseFlowFile,e as resolveAppFrontmatterTarget,g as runFlowPlayback,i as runMaestroAuthoring,b as validateFlowFile};
@@ -1,4 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import{a,b,c}from"./chunk-7PBNTA3M.js";import"./chunk-DYE6WT2Q.js";import"./chunk-2MI2ROT4.js";import"./chunk-VOYUOTN2.js";import"./chunk-7DLC2M6S.js";import"./chunk-PYH2MNFB.js";import"./chunk-OO7E4JTZ.js";import"./chunk-2ZE4WXXF.js";import"./chunk-2QVA4PPE.js";import"./chunk-GQVWJWCZ.js";import"./chunk-U52Z6BML.js";import"./chunk-5VFQ7HKK.js";import"./chunk-RU565DEH.js";export{c as printCommandHelp,b as printGroupHelp,a as printHelp};
@@ -1,4 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import{g as a,h as b}from"./chunk-HCORKEG6.js";import"./chunk-R7NXLMFI.js";import"./chunk-GH7XDCAP.js";import"./chunk-MHVH5IJU.js";import"./chunk-G2IBWLBT.js";import"./chunk-QKYOZQKE.js";import"./chunk-L6VQSQ5O.js";import"./chunk-IXYE6F2D.js";import"./chunk-XSWS6HY6.js";import"./chunk-UHTIDDI2.js";import"./chunk-KWUKKULB.js";import"./chunk-WR6QFC62.js";import"./chunk-VSGEEW3N.js";import"./chunk-HM5TGIVN.js";import"./chunk-2XDNHF7N.js";import"./chunk-2W6ADNTG.js";import"./chunk-4S5CIP7Y.js";import"./chunk-KOSLTZXQ.js";import"./chunk-RE2IODEB.js";import"./chunk-PVGD4KKG.js";import"./chunk-VKOEADVP.js";import"./chunk-2MI2ROT4.js";import"./chunk-7DLC2M6S.js";import"./chunk-PYH2MNFB.js";import"./chunk-OO7E4JTZ.js";import"./chunk-2ZE4WXXF.js";import"./chunk-I2C26UZ3.js";import"./chunk-UQXSAYWY.js";import"./chunk-4FYJOFJZ.js";import"./chunk-2QVA4PPE.js";import"./chunk-XSXSVO4P.js";import"./chunk-ZAUPKGQP.js";import"./chunk-VDCYIT2N.js";import"./chunk-GQVWJWCZ.js";import"./chunk-5VFQ7HKK.js";import"./chunk-RU565DEH.js";export{a as printShellPerfReport,b as runInspect};
@@ -1,4 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import{a}from"./chunk-KN6LU33B.js";import"./chunk-HM5TGIVN.js";import"./chunk-UQXSAYWY.js";import"./chunk-PZYF2TKR.js";import"./chunk-RU565DEH.js";export{a as runInstallDesktop};
@@ -1,4 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import{a,b,c}from"./chunk-6PV4QLZ7.js";import"./chunk-PZYF2TKR.js";import"./chunk-VDCYIT2N.js";import"./chunk-GQVWJWCZ.js";import"./chunk-RU565DEH.js";export{a as canPromptForPrivacyChoice,b as diagnosticsAllowedForCurrentProcess,c as ensurePrivacyChoice};
@@ -1,4 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import{a}from"./chunk-XL53SSTO.js";import"./chunk-2XDNHF7N.js";import"./chunk-4S5CIP7Y.js";import"./chunk-OO7E4JTZ.js";import"./chunk-2ZE4WXXF.js";import"./chunk-GQVWJWCZ.js";import"./chunk-RU565DEH.js";export{a as runReset};
@@ -1,4 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import{a,b}from"./chunk-QKYOZQKE.js";import"./chunk-4S5CIP7Y.js";import"./chunk-RU565DEH.js";export{a as readTargetFlag,b as resolveTargetCoords};
@@ -1,4 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import{c as a}from"./chunk-N5GTOZJP.js";import"./chunk-PVGD4KKG.js";import"./chunk-VKOEADVP.js";import"./chunk-OO7E4JTZ.js";import"./chunk-2ZE4WXXF.js";import"./chunk-UQXSAYWY.js";import"./chunk-ZAUPKGQP.js";import"./chunk-GQVWJWCZ.js";import"./chunk-5VFQ7HKK.js";import"./chunk-RU565DEH.js";export{a as runRuntime};
@@ -1,4 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import{a}from"./chunk-SNMLG22Y.js";import"./chunk-RXDJ422X.js";import"./chunk-KN6LU33B.js";import"./chunk-L6VQSQ5O.js";import"./chunk-IXYE6F2D.js";import"./chunk-XSWS6HY6.js";import"./chunk-UHTIDDI2.js";import"./chunk-KWUKKULB.js";import"./chunk-WR6QFC62.js";import"./chunk-VSGEEW3N.js";import"./chunk-HM5TGIVN.js";import"./chunk-2XDNHF7N.js";import"./chunk-2W6ADNTG.js";import"./chunk-4S5CIP7Y.js";import"./chunk-KOSLTZXQ.js";import"./chunk-RE2IODEB.js";import"./chunk-PVGD4KKG.js";import"./chunk-VKOEADVP.js";import"./chunk-UAMMP7U7.js";import"./chunk-7PBNTA3M.js";import"./chunk-DYE6WT2Q.js";import"./chunk-2MI2ROT4.js";import"./chunk-VOYUOTN2.js";import"./chunk-7DLC2M6S.js";import"./chunk-PYH2MNFB.js";import"./chunk-OO7E4JTZ.js";import"./chunk-2ZE4WXXF.js";import"./chunk-UQXSAYWY.js";import"./chunk-2QVA4PPE.js";import"./chunk-XSXSVO4P.js";import"./chunk-ZAUPKGQP.js";import"./chunk-Y3LVGZKE.js";import"./chunk-6PV4QLZ7.js";import"./chunk-PZYF2TKR.js";import"./chunk-VDCYIT2N.js";import"./chunk-GQVWJWCZ.js";import"./chunk-U52Z6BML.js";import"./chunk-5VFQ7HKK.js";import"./chunk-RU565DEH.js";export{a as runSetup};
@@ -1,4 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import{a}from"./chunk-KOSLTZXQ.js";import"./chunk-PYH2MNFB.js";import"./chunk-RU565DEH.js";export{a as settingsStore};
@@ -1,4 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import{a,b,c,d}from"./chunk-Y3LVGZKE.js";import"./chunk-6PV4QLZ7.js";import"./chunk-PZYF2TKR.js";import"./chunk-VDCYIT2N.js";import"./chunk-GQVWJWCZ.js";import"./chunk-RU565DEH.js";export{a as buildCliDiagnosticEvent,d as flushCliTelemetry,b as trackCliDiagnostic,c as trackCliError};
@@ -1,4 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import{e as a,f as b,g as c}from"./chunk-R3HLZSGB.js";import"./chunk-6VPR6OTH.js";import"./chunk-RAYAIDJI.js";import"./chunk-WR6QFC62.js";import"./chunk-VSGEEW3N.js";import"./chunk-RE2IODEB.js";import"./chunk-VKOEADVP.js";import"./chunk-OO7E4JTZ.js";import"./chunk-2ZE4WXXF.js";import"./chunk-UQXSAYWY.js";import"./chunk-GQVWJWCZ.js";import"./chunk-5VFQ7HKK.js";import"./chunk-RU565DEH.js";export{a as resolveDefaultUploadOrigin,b as resolvePublicPreviewOrigin,c as runUpload};
@@ -1,5 +0,0 @@
1
- /*! rnx v0.1.374 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import { createRequire as __sootsimCreateRequire } from 'node:module'
3
- var require = __sootsimCreateRequire(import.meta.url)
4
- import{a as t}from"./chunk-SNMLG22Y.js";import"./chunk-RXDJ422X.js";import"./chunk-KN6LU33B.js";import{q as e}from"./chunk-L6VQSQ5O.js";import"./chunk-IXYE6F2D.js";import"./chunk-XSWS6HY6.js";import"./chunk-UHTIDDI2.js";import"./chunk-KWUKKULB.js";import"./chunk-WR6QFC62.js";import"./chunk-VSGEEW3N.js";import"./chunk-HM5TGIVN.js";import"./chunk-2XDNHF7N.js";import"./chunk-2W6ADNTG.js";import"./chunk-4S5CIP7Y.js";import"./chunk-KOSLTZXQ.js";import"./chunk-RE2IODEB.js";import"./chunk-PVGD4KKG.js";import"./chunk-VKOEADVP.js";import"./chunk-UAMMP7U7.js";import"./chunk-7PBNTA3M.js";import"./chunk-DYE6WT2Q.js";import"./chunk-2MI2ROT4.js";import"./chunk-VOYUOTN2.js";import"./chunk-7DLC2M6S.js";import"./chunk-PYH2MNFB.js";import"./chunk-OO7E4JTZ.js";import"./chunk-2ZE4WXXF.js";import"./chunk-UQXSAYWY.js";import"./chunk-2QVA4PPE.js";import"./chunk-XSXSVO4P.js";import"./chunk-ZAUPKGQP.js";import"./chunk-Y3LVGZKE.js";import{a as r}from"./chunk-6PV4QLZ7.js";import{f as o}from"./chunk-PZYF2TKR.js";import"./chunk-VDCYIT2N.js";import{C as n}from"./chunk-GQVWJWCZ.js";import"./chunk-U52Z6BML.js";import"./chunk-5VFQ7HKK.js";import"./chunk-RU565DEH.js";async function u(){return!n()&&r()?(await t([],{launchConnectRN:!0}),0):(o("Run any React Native app in a local simulator."),console.log(`
5
- Opening ConnectRN`),await e(["ConnectRN","--no-describe","--quiet"]),0)}export{u as runWelcome};