rnxsim 0.1.369 → 0.1.371

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 (265) hide show
  1. package/cli/auth.ts +2 -1
  2. package/cli/bin.ts +283 -273
  3. package/cli/commands/app-fonts.ts +3 -2
  4. package/cli/commands/assert.ts +8 -7
  5. package/cli/commands/auth.ts +2 -1
  6. package/cli/commands/box/checkout-plane.ts +109 -29
  7. package/cli/commands/box/cloud-box.ts +294 -0
  8. package/cli/commands/box/plane-share.ts +208 -0
  9. package/cli/commands/box/rnx-command.ts +2 -2
  10. package/cli/commands/box/search-command.ts +157 -0
  11. package/cli/commands/box.ts +269 -13
  12. package/cli/commands/config.ts +2 -1
  13. package/cli/commands/control.ts +43 -34
  14. package/cli/commands/daemon.ts +22 -21
  15. package/cli/commands/debug.ts +17 -15
  16. package/cli/commands/detox.ts +5 -4
  17. package/cli/commands/device.ts +6 -5
  18. package/cli/commands/electron.ts +6 -5
  19. package/cli/commands/flow.ts +12 -11
  20. package/cli/commands/inspect/find.ts +2 -1
  21. package/cli/commands/inspect/keyboard.ts +2 -1
  22. package/cli/commands/inspect/sleep.ts +2 -1
  23. package/cli/commands/inspect/wait-event.ts +4 -3
  24. package/cli/commands/inspect/wait-idle.ts +2 -1
  25. package/cli/commands/inspect/wait-ready.ts +3 -2
  26. package/cli/commands/inspect/wait-selector.ts +4 -3
  27. package/cli/commands/inspect/wait.ts +2 -1
  28. package/cli/commands/inspect.ts +82 -80
  29. package/cli/commands/install-desktop.ts +5 -4
  30. package/cli/commands/login.ts +3 -2
  31. package/cli/commands/mode.ts +2 -1
  32. package/cli/commands/record.ts +38 -37
  33. package/cli/commands/runtime.ts +9 -8
  34. package/cli/commands/screenshot-layers.ts +4 -3
  35. package/cli/commands/screenshot-mode.ts +2 -1
  36. package/cli/commands/screenshot.ts +8 -7
  37. package/cli/commands/screenshots-capture.ts +2 -1
  38. package/cli/commands/serve.ts +5 -4
  39. package/cli/commands/shell-boolean-mode.ts +2 -1
  40. package/cli/commands/skills.ts +11 -10
  41. package/cli/commands/telemetry.ts +2 -1
  42. package/cli/commands/three-mode.ts +2 -1
  43. package/cli/commands/timeline.ts +4 -3
  44. package/cli/commands/upload.ts +14 -13
  45. package/cli/commands/what-happened.ts +2 -1
  46. package/cli/outbound-endpoints.ts +37 -1
  47. package/cli/recording-access.ts +6 -5
  48. package/cli/run-rnx.ts +140 -0
  49. package/dist-cli/bin.js +6 -6
  50. package/dist-cli/chunks/{agent-OUUFWDLF.js → agent-W2D2V7WF.js} +2 -2
  51. package/dist-cli/chunks/{agent-wrapper-7BE7DR4R.js → agent-wrapper-GVNM2Z4S.js} +2 -2
  52. package/dist-cli/chunks/app-fonts-J6R4TTXD.js +4 -0
  53. package/dist-cli/chunks/{assert-I3CMRNS7.js → assert-YN6U4ZTB.js} +11 -11
  54. package/dist-cli/chunks/auth-XGYZAK2P.js +12 -0
  55. package/dist-cli/chunks/{beta-BHSKY4K4.js → beta-WRDMHHWJ.js} +2 -2
  56. package/dist-cli/chunks/{box-3CVWXVTT.js → box-ML5TFUQW.js} +617 -596
  57. package/dist-cli/chunks/{camera-MNK73TYV.js → camera-OBEI4FZA.js} +2 -2
  58. package/dist-cli/chunks/{chunk-JXARZBWS.js → chunk-2FIT64GR.js} +1 -1
  59. package/dist-cli/chunks/{chunk-RYGQ6LZN.js → chunk-2LH4DYPM.js} +2 -2
  60. package/dist-cli/chunks/chunk-2QW3JH6T.js +99 -0
  61. package/dist-cli/chunks/{chunk-2APXX4RN.js → chunk-2W4YBCPX.js} +2 -2
  62. package/dist-cli/chunks/{chunk-X3PEDNLV.js → chunk-42YOIDLR.js} +2 -2
  63. package/dist-cli/chunks/{chunk-6BMM6OCW.js → chunk-47MSXLWK.js} +2 -2
  64. package/dist-cli/chunks/chunk-4OLUFHEZ.js +74 -0
  65. package/dist-cli/chunks/{chunk-WUR4FXWT.js → chunk-5PPVVGLH.js} +25 -25
  66. package/dist-cli/chunks/{chunk-AKJYEX54.js → chunk-6AZKZ5AJ.js} +2 -2
  67. package/dist-cli/chunks/{chunk-2PVVIPQS.js → chunk-6FPXLSBJ.js} +1 -1
  68. package/dist-cli/chunks/{chunk-CCI3DZKE.js → chunk-763GBI7G.js} +2 -2
  69. package/dist-cli/chunks/{chunk-CZ2HCNRK.js → chunk-7ASCDKA3.js} +1 -1
  70. package/dist-cli/chunks/{chunk-ZNNE5MAV.js → chunk-7Q4WHJDH.js} +1 -1
  71. package/dist-cli/chunks/{chunk-IYPMULI7.js → chunk-7TWD4P6J.js} +2 -2
  72. package/dist-cli/chunks/{chunk-45X3D6CI.js → chunk-7YB46LGI.js} +1 -1
  73. package/dist-cli/chunks/{chunk-3454VMHD.js → chunk-ADJSGO55.js} +2 -2
  74. package/dist-cli/chunks/{chunk-F4OTMARL.js → chunk-AGZZWLEL.js} +2 -2
  75. package/dist-cli/chunks/{chunk-UDXQCEJU.js → chunk-AVIH3TAZ.js} +11 -11
  76. package/dist-cli/chunks/{chunk-DCPDMF27.js → chunk-B26ZJUQA.js} +2 -2
  77. package/dist-cli/chunks/{chunk-D6MGELKZ.js → chunk-BNS5LNEU.js} +1 -1
  78. package/dist-cli/chunks/{chunk-FHRG772G.js → chunk-CJQXP4XM.js} +1 -1
  79. package/dist-cli/chunks/{chunk-OROUEG22.js → chunk-DP6RGTNN.js} +2 -2
  80. package/dist-cli/chunks/{chunk-V7I4CTAX.js → chunk-DYFOLOYL.js} +2 -2
  81. package/dist-cli/chunks/chunk-ERBGQEJ5.js +4 -0
  82. package/dist-cli/chunks/{chunk-H2GB2PLY.js → chunk-ESWSXF55.js} +2 -2
  83. package/dist-cli/chunks/{chunk-FGGESBWD.js → chunk-FLNGSIBL.js} +2 -2
  84. package/dist-cli/chunks/{chunk-4SCVGBOX.js → chunk-GQGS7TRK.js} +1 -1
  85. package/dist-cli/chunks/{chunk-WGE2P25F.js → chunk-H4DU457S.js} +1 -1
  86. package/dist-cli/chunks/{chunk-TBK5UXW2.js → chunk-HFY35VAG.js} +2 -2
  87. package/dist-cli/chunks/{chunk-JLOOLA47.js → chunk-HV3WOWQM.js} +1 -1
  88. package/dist-cli/chunks/{chunk-RV76U3EI.js → chunk-HZ365EMS.js} +10 -10
  89. package/dist-cli/chunks/chunk-IPNDXGVA.js +11 -0
  90. package/dist-cli/chunks/{chunk-TAC4CEIX.js → chunk-IX7Z6ZVJ.js} +2 -2
  91. package/dist-cli/chunks/{chunk-UQJY6O72.js → chunk-IYU2EOIU.js} +1 -1
  92. package/dist-cli/chunks/chunk-J6A5W2DI.js +30 -0
  93. package/dist-cli/chunks/chunk-JKRMBNPO.js +28 -0
  94. package/dist-cli/chunks/{chunk-VGJLCFSC.js → chunk-JUTLQ3GX.js} +1 -1
  95. package/dist-cli/chunks/{chunk-5QFJFASW.js → chunk-KHGXEU4L.js} +1 -1
  96. package/dist-cli/chunks/{chunk-A56GQVNF.js → chunk-KL34TRNW.js} +1 -1
  97. package/dist-cli/chunks/chunk-LFANRLWK.js +7 -0
  98. package/dist-cli/chunks/{chunk-NPVEBXU3.js → chunk-MOIQZVRU.js} +2 -2
  99. package/dist-cli/chunks/chunk-MW4E5EED.js +497 -0
  100. package/dist-cli/chunks/{chunk-AJJCYLBC.js → chunk-N3LAMTGS.js} +2 -2
  101. package/dist-cli/chunks/{chunk-QE5MC4V3.js → chunk-NQ4CI2VI.js} +1 -1
  102. package/dist-cli/chunks/{chunk-6F3WOWFC.js → chunk-OF3U4SZO.js} +2 -2
  103. package/dist-cli/chunks/{chunk-DKSZZABN.js → chunk-OF5OBB67.js} +1 -1
  104. package/dist-cli/chunks/{chunk-MXWME7ET.js → chunk-OQPZOEEP.js} +1 -1
  105. package/dist-cli/chunks/{chunk-SSBZA5VZ.js → chunk-OWDJQWJ7.js} +1 -1
  106. package/dist-cli/chunks/{chunk-YLNSLMQM.js → chunk-PTWMX4AA.js} +2 -2
  107. package/dist-cli/chunks/{chunk-TTUZ5MCK.js → chunk-RYJTPZCX.js} +1 -1
  108. package/dist-cli/chunks/{chunk-A72MIIJI.js → chunk-S3AH2O67.js} +1 -1
  109. package/dist-cli/chunks/{chunk-ZW6JXEVX.js → chunk-SH2HXHR2.js} +2 -2
  110. package/dist-cli/chunks/{chunk-EKAEEWC2.js → chunk-SHLJYXIN.js} +1 -1
  111. package/dist-cli/chunks/{chunk-4G4VCT2M.js → chunk-TL22EBF5.js} +2 -2
  112. package/dist-cli/chunks/{chunk-LU3AHE6T.js → chunk-TWNLRDIH.js} +2 -2
  113. package/dist-cli/chunks/{chunk-B5NW4TT3.js → chunk-UHYAY3RU.js} +2 -2
  114. package/dist-cli/chunks/{chunk-N5KDDGV6.js → chunk-UPMR6Y5P.js} +2 -2
  115. package/dist-cli/chunks/chunk-VEFSHPSU.js +24 -0
  116. package/dist-cli/chunks/{chunk-YPBDPVLR.js → chunk-WCB5XPCH.js} +2 -2
  117. package/dist-cli/chunks/{chunk-USHV3QFZ.js → chunk-WHZE63R2.js} +2 -2
  118. package/dist-cli/chunks/{chunk-ZEF57HQO.js → chunk-WLRIPAGJ.js} +1 -1
  119. package/dist-cli/chunks/{chunk-FBMNYSSW.js → chunk-Y7SKGRAV.js} +1 -1
  120. package/dist-cli/chunks/chunk-Z6CQDU74.js +4 -0
  121. package/dist-cli/chunks/{cleanup-H4XFRMZV.js → cleanup-PTJBMC34.js} +2 -2
  122. package/dist-cli/chunks/cli-version-6ZBD6GKP.js +4 -0
  123. package/dist-cli/chunks/{compat-NKGYERLN.js → compat-FJ2HWRAG.js} +2 -2
  124. package/dist-cli/chunks/config-PYGH7JPN.js +13 -0
  125. package/dist-cli/chunks/{connect-WWWAVVCF.js → connect-AJV4PZA4.js} +2 -2
  126. package/dist-cli/chunks/control-667PAYX4.js +4 -0
  127. package/dist-cli/chunks/daemon-EIBOHZYQ.js +4 -0
  128. package/dist-cli/chunks/{debug-RO6GLDIM.js → debug-XF2XUDHN.js} +20 -20
  129. package/dist-cli/chunks/desktop-HEZYNFYW.js +31 -0
  130. package/dist-cli/chunks/detox-JCFZJRNE.js +52 -0
  131. package/dist-cli/chunks/device-KGUVZHFW.js +18 -0
  132. package/dist-cli/chunks/{diagnose-HDRTUPDO.js → diagnose-KVJQ3TOI.js} +2 -2
  133. package/dist-cli/chunks/{disk-cleanup-QP2NYN43.js → disk-cleanup-7HQXJFUX.js} +2 -2
  134. package/dist-cli/chunks/{do-chain-6LP6SV5J.js → do-chain-3FYJNA2N.js} +2 -2
  135. package/dist-cli/chunks/drivers-5S6M5TJB.js +4 -0
  136. package/dist-cli/chunks/{env-4XD5D2G6.js → env-BX6S2SOM.js} +2 -2
  137. package/dist-cli/chunks/{film-I5SIXLS5.js → film-2WZUVYFA.js} +3 -3
  138. package/dist-cli/chunks/flow-6BZSWNHG.js +4 -0
  139. package/dist-cli/chunks/help-OGJBD4NP.js +4 -0
  140. package/dist-cli/chunks/{hidden-runtime-alias-LJV2S4M2.js → hidden-runtime-alias-PGF55OFH.js} +2 -2
  141. package/dist-cli/chunks/{home-paths-RFI2QRC3.js → home-paths-EGRMTSGE.js} +2 -2
  142. package/dist-cli/chunks/inspect-MZVDGAN4.js +4 -0
  143. package/dist-cli/chunks/install-desktop-QB76DNZF.js +4 -0
  144. package/dist-cli/chunks/login-HRFPYPZ3.js +26 -0
  145. package/dist-cli/chunks/{logout-DKXZZ6HU.js → logout-LRH5HZGP.js} +2 -2
  146. package/dist-cli/chunks/{maestro-WKGVVWRA.js → maestro-S53T4PPE.js} +3 -3
  147. package/dist-cli/chunks/{maestro-generate-KCK6RK2C.js → maestro-generate-YKIVKOB3.js} +3 -3
  148. package/dist-cli/chunks/mode-47JKNUNS.js +26 -0
  149. package/dist-cli/chunks/{optional-demo-registry-EUSKBIPP.js → optional-demo-registry-ARZSPS5Y.js} +2 -2
  150. package/dist-cli/chunks/{perf-IMZMA5MT.js → perf-J73OKB4T.js} +2 -2
  151. package/dist-cli/chunks/{permissions-SLWXTLH6.js → permissions-L3FPI56H.js} +2 -2
  152. package/dist-cli/chunks/{platform-HQ735LAE.js → platform-YAROAHRM.js} +3 -3
  153. package/dist-cli/chunks/privacy-JZQCXHKN.js +4 -0
  154. package/dist-cli/chunks/record-QAQMGYOO.js +72 -0
  155. package/dist-cli/chunks/report-issue-4FVZCAFQ.js +29 -0
  156. package/dist-cli/chunks/reset-NYFUFZCG.js +4 -0
  157. package/dist-cli/chunks/resolve-target-SP22ZGFZ.js +4 -0
  158. package/dist-cli/chunks/runtime-WTS2QMXZ.js +4 -0
  159. package/dist-cli/chunks/{screenshot-command-HAJB5FHK.js → screenshot-command-Q5MGGEWY.js} +11 -11
  160. package/dist-cli/chunks/screenshot-layers-4JW7DRL7.js +20 -0
  161. package/dist-cli/chunks/screenshots-capture-X5PMO44E.js +42 -0
  162. package/dist-cli/chunks/{serve-TM46TKFW.js → serve-3JWJ45J3.js} +20 -20
  163. package/dist-cli/chunks/setup-USPDJESI.js +4 -0
  164. package/dist-cli/chunks/{sim-client-LQUZSO45.js → sim-client-RL6DGOJE.js} +2 -2
  165. package/dist-cli/chunks/skills-QNO6GDJB.js +50 -0
  166. package/dist-cli/chunks/{state-RUVM4Z4S.js → state-OGUCSUC3.js} +2 -2
  167. package/dist-cli/chunks/{storage-GQ33UTYN.js → storage-TG7KFQZ3.js} +2 -2
  168. package/dist-cli/chunks/store-ZYMQW2LN.js +4 -0
  169. package/dist-cli/chunks/telemetry-7CSLUUIW.js +4 -0
  170. package/dist-cli/chunks/timeline-R4G5P335.js +24 -0
  171. package/dist-cli/chunks/{upgrade-AZDZLUIT.js → upgrade-RDTXJ6O3.js} +2 -2
  172. package/dist-cli/chunks/upload-PLF2DPMS.js +4 -0
  173. package/dist-cli/chunks/{version-N3ALB75G.js → version-GU2NUZDS.js} +2 -2
  174. package/dist-cli/chunks/{web-XPHFZATA.js → web-7PUVG3GE.js} +2 -2
  175. package/dist-cli/chunks/welcome-4GGUV7FY.js +5 -0
  176. package/dist-cli/chunks/what-happened-OHAAX6F6.js +25 -0
  177. package/dist-cli/chunks/{ws-bridge-RUXOYOU6.js → ws-bridge-Z3O35MNF.js} +2 -2
  178. package/dist-lib/agent-daemon-client.cjs +1 -1
  179. package/dist-lib/agent-events.cjs +1 -1
  180. package/dist-lib/agent-identity.cjs +1 -1
  181. package/dist-lib/agent-sessions.cjs +1 -1
  182. package/dist-lib/attached-projects.cjs +1 -1
  183. package/dist-lib/auth/shared-session.cjs +1 -1
  184. package/dist-lib/backend-origin.cjs +1 -1
  185. package/dist-lib/beta.cjs +1 -1
  186. package/dist-lib/beta.mjs +1 -1
  187. package/dist-lib/bridge-constants.cjs +1 -1
  188. package/dist-lib/bridge-contract-input.cjs +1 -1
  189. package/dist-lib/bridge-contract-input.mjs +1 -1
  190. package/dist-lib/bridge-contract.cjs +1 -1
  191. package/dist-lib/bridge-contract.mjs +1 -1
  192. package/dist-lib/cli-constants.cjs +1 -1
  193. package/dist-lib/config.cjs +1 -1
  194. package/dist-lib/detox/index.cjs +1 -1
  195. package/dist-lib/dev-bundle-resolution.cjs +69 -34
  196. package/dist-lib/home-paths.cjs +1 -1
  197. package/dist-lib/host/bridge-host.cjs +430 -106
  198. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  199. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  200. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  201. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  202. package/dist-lib/host/websocket-proxy.cjs +1 -1
  203. package/dist-lib/index.cjs +1 -1
  204. package/dist-lib/jump-to-source-babel.cjs +1 -1
  205. package/dist-lib/menu.cjs +1 -1
  206. package/dist-lib/menu.mjs +1 -1
  207. package/dist-lib/metro-production-bundle.cjs +1 -1
  208. package/dist-lib/metro-production-bundle.mjs +1 -1
  209. package/dist-lib/metro.cjs +1 -1
  210. package/dist-lib/profiles.cjs +1 -1
  211. package/dist-lib/public-brand.cjs +1 -1
  212. package/dist-lib/react-native-host-modules.cjs +2 -1
  213. package/dist-lib/react-native-host-modules.mjs +2 -1
  214. package/dist-lib/render-mode.cjs +1 -1
  215. package/dist-lib/scripts/dev-server-scanner.cjs +149 -93
  216. package/dist-lib/sdk.cjs +1 -1
  217. package/dist-lib/sdk.mjs +1 -1
  218. package/dist-lib/skills.cjs +757 -353
  219. package/dist-lib/vite.cjs +1 -1
  220. package/package.json +1 -1
  221. package/scripts/dev-server-scanner.ts +275 -92
  222. package/src/dev-bundle-resolution.ts +123 -40
  223. package/src/host/bridge-host.ts +11 -0
  224. package/src/host/plane-host.ts +203 -0
  225. package/src/react-native-host-modules.ts +1 -0
  226. package/dist-cli/chunks/app-fonts-66V7TL26.js +0 -4
  227. package/dist-cli/chunks/auth-3FMWUVJH.js +0 -12
  228. package/dist-cli/chunks/chunk-3NLB5LCN.js +0 -28
  229. package/dist-cli/chunks/chunk-5RWUFIZW.js +0 -24
  230. package/dist-cli/chunks/chunk-COXCR6UU.js +0 -7
  231. package/dist-cli/chunks/chunk-JH5KE2OI.js +0 -4
  232. package/dist-cli/chunks/chunk-ROISJKH3.js +0 -99
  233. package/dist-cli/chunks/chunk-SUHAD6N2.js +0 -30
  234. package/dist-cli/chunks/chunk-TIB3CTRX.js +0 -497
  235. package/dist-cli/chunks/chunk-YFZLDFZK.js +0 -74
  236. package/dist-cli/chunks/cli-version-MJWLDXBW.js +0 -4
  237. package/dist-cli/chunks/config-WK7467KI.js +0 -13
  238. package/dist-cli/chunks/control-ESI7IZNN.js +0 -4
  239. package/dist-cli/chunks/daemon-UCLO27YP.js +0 -4
  240. package/dist-cli/chunks/desktop-FF34Z5X4.js +0 -31
  241. package/dist-cli/chunks/detox-Q3CWY5UX.js +0 -52
  242. package/dist-cli/chunks/device-WN4ZWLES.js +0 -18
  243. package/dist-cli/chunks/drivers-OR2JPAXD.js +0 -4
  244. package/dist-cli/chunks/flow-4GWW5DYT.js +0 -4
  245. package/dist-cli/chunks/help-MIIWOT3C.js +0 -4
  246. package/dist-cli/chunks/inspect-3ZGNJENJ.js +0 -4
  247. package/dist-cli/chunks/install-desktop-BYOJVTLS.js +0 -4
  248. package/dist-cli/chunks/login-GNIFSAFE.js +0 -26
  249. package/dist-cli/chunks/mode-YVMX7OJY.js +0 -26
  250. package/dist-cli/chunks/privacy-EDC7PF7G.js +0 -4
  251. package/dist-cli/chunks/record-N4KTTVDI.js +0 -72
  252. package/dist-cli/chunks/report-issue-PP752HAD.js +0 -29
  253. package/dist-cli/chunks/reset-DRMKGVP4.js +0 -4
  254. package/dist-cli/chunks/resolve-target-7WWI32R3.js +0 -4
  255. package/dist-cli/chunks/runtime-EKJV2ZVI.js +0 -4
  256. package/dist-cli/chunks/screenshot-layers-GOCJVM2G.js +0 -20
  257. package/dist-cli/chunks/screenshots-capture-YYJLYA3V.js +0 -42
  258. package/dist-cli/chunks/setup-FVPVIYE4.js +0 -4
  259. package/dist-cli/chunks/skills-V5TE57FN.js +0 -50
  260. package/dist-cli/chunks/store-IKNBDDKM.js +0 -4
  261. package/dist-cli/chunks/telemetry-2ZVU6WLK.js +0 -4
  262. package/dist-cli/chunks/timeline-LP7DMJYT.js +0 -24
  263. package/dist-cli/chunks/upload-DFQK2Q7X.js +0 -4
  264. package/dist-cli/chunks/welcome-2NFYLWLJ.js +0 -5
  265. package/dist-cli/chunks/what-happened-EJ5PHKT7.js +0 -25
@@ -1,7 +1,7 @@
1
- /*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.371 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
- import{m as a}from"./chunk-2APXX4RN.js";import{t as l,v as i}from"./chunk-H2GB2PLY.js";function c(r){if(!r||typeof r!="object")return!1;let t=Reflect.get(r,"strategy");return typeof Reflect.get(r,"ok")=="boolean"&&(t==="data"||t==="full")&&Array.isArray(Reflect.get(r,"cleared"))&&typeof Reflect.get(r,"relaunched")=="boolean"}function d(){console.log(`
4
+ import{m as a}from"./chunk-2W4YBCPX.js";import{t as l,v as i}from"./chunk-ESWSXF55.js";function c(r){if(!r||typeof r!="object")return!1;let t=Reflect.get(r,"strategy");return typeof Reflect.get(r,"ok")=="boolean"&&(t==="data"||t==="full")&&Array.isArray(Reflect.get(r,"cleared"))&&typeof Reflect.get(r,"relaunched")=="boolean"}function d(){console.log(`
5
5
  rnx reset - clear the current guest app and relaunch it
6
6
 
7
7
  usage:
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.371 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
4
  function X(t,e){let n=["--max-ms","--maxMs","--maxms","--max_ms"];for(let r of n){let s=t.indexOf(r);if(s>=0&&t[s+1]){let o=Number(t[s+1]);if(Number.isFinite(o))return Math.max(100,o)}}return e}var P=new Set(["tap","double-tap","tap-text","tap-id","long-press","touch"]);function _(t){return typeof t=="string"&&P.has(t)}async function A(t){return await t.send({type:"evaluate",code:"window.__sootsimEngineState?.inspectActive === true"})===!0}async function G(t,e){if(!_(e))return!1;try{return await A(t)}catch{return!1}}async function V(t){let e=await t.send({type:"query",query:{kind:"count"}});return{nodes:b(e)?e.total:0}}async function Z(t,e=5){let n=await t.send({type:"query",query:{kind:"tree",depth:e}}),r=b(n)?n.nodes:[];return{depth:e,tree:r}}async function ee(t){let e=await t.send({type:"evaluate",code:"window.location.href"});return{url:typeof e=="string"?e:""}}function C(t){return t!==null&&typeof t=="object"&&[Reflect.get(t,"x"),Reflect.get(t,"y"),Reflect.get(t,"width"),Reflect.get(t,"height")].every(e=>typeof e=="number"?Number.isFinite(e):!1)}function I(t){return Array.isArray(t)?t.every(e=>{if(e===null||typeof e!="object"||!Number.isInteger(Reflect.get(e,"nodeId"))||typeof Reflect.get(e,"type")!="string"||!C(Reflect.get(e,"geometry")))return!1;for(let s of["testID","text","role","label"]){let o=Reflect.get(e,s);if(o!==void 0&&typeof o!="string")return!1}let n=Reflect.get(e,"pressable");if(n!==void 0&&n!==!0)return!1;let r=Reflect.get(e,"children");return r===void 0||I(r)}):!1}function b(t){let e=t!==null&&typeof t=="object"?Reflect.get(t,"total"):void 0;return t!==null&&typeof t=="object"&&typeof e=="number"&&Number.isInteger(e)&&e>=0&&I(Reflect.get(t,"nodes"))}function N(t){let e=t.replace(/[.+^$(){}|[\]\\]/g,"\\$&");return new RegExp(`^${e.replace(/\*/g,".*").replace(/\?/g,".")}$`,"i")}function F(t,e={}){let n=e.filter?.toLowerCase()??"",r=e.testIdLike?N(e.testIdLike):null,s=e.onlyGlob?N(e.onlyGlob):null,o=[],i=(a,y)=>{let p=[a.role,a.label,a.text,a.testID].filter(d=>typeof d=="string").join(" ");if((!n||p.toLowerCase().includes(n))&&(!r||r.test(a.testID??""))&&(!s||s.test(p))){let d=[a.role?`[${a.role}]`:a.pressable?"[tap]":`<${a.type}>`];if(a.text){let g=e.fullText||a.text.length<=50?a.text:`${a.text.slice(0,49).trimEnd()}\u2026`;d.push(JSON.stringify(g))}if(a.testID&&d.push(`#${a.testID}`),a.label&&a.label!==a.text&&d.push(`label=${JSON.stringify(a.label)}`),!e.hideXy){let g=a.geometry;d.push(`@(${Math.round(g.x)},${Math.round(g.y)}) ${Math.round(g.width)}x${Math.round(g.height)}`)}a.pressable&&d.push("(tap)"),o.push(`${" ".repeat(y+1)}${d.join(" ")}`)}for(let d of a.children??[])i(d,y+1)},u=t;if(e.subtreeRoot){let a=[...t],y;for(;a.length>0&&!y;){let p=a.shift();p&&(p.testID===e.subtreeRoot?y=p:a.push(...p.children??[]))}if(!y)return`__SUBTREE_NOT_FOUND__:${e.subtreeRoot}`;u=[y]}for(let a of u)i(a,0);return o.join(`
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.371 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
4
  var a=["Cache","Code Cache","DawnCache","DawnGraphiteCache","DawnWebGPUCache","GPUCache","GrShaderCache","ShaderCache"],r=new Set(a);function s(e){return r.has(e)}export{a,s as b};
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.371 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
- import{a as c}from"./chunk-IYPMULI7.js";import{M as u,l}from"./chunk-FBMNYSSW.js";import r from"fs";import e from"path";import{fileURLToPath as m}from"url";var s;function p(){if(s!==void 0)return s;let t=e.dirname(m(import.meta.url));for(let n=0;n<12&&t!==e.dirname(t);n++){if(r.existsSync(e.join(t,"packages/sootsim-engine/package.json"))&&r.existsSync(e.join(t,"public/sootsim")))return s=t,t;t=e.dirname(t)}return s=null,null}function d(){if(process.env.SOOTSIM_HOME&&u())return null;let t=p();if(!t)return null;let n=e.join(t,"public/sootsim");return r.existsSync(e.join(n,"index.html"))&&r.existsSync(e.join(n,"engine/index.html"))&&r.existsSync(e.join(n,"engine-tenant/worker.js"))?n:null}function g(){let t=d();if(t)return t;let n=u();if(!n)return null;let o=l(n);return r.existsSync(e.join(o,"index.html"))?o:null}var a=".runtime.localhost";function y(t){let n=t.trim();if(!c(n))throw new Error(`invalid rnx runtime version: ${t}`);let i=Buffer.from(n,"utf8").toString("hex").match(/.{1,60}/g);if(!i)throw new Error(`invalid rnx runtime version: ${t}`);return`${i.join(".")}${a}`}function f(t){return t.toLowerCase().endsWith(a)}function x(t){if(!f(t))return null;let n=t.slice(0,-a.length).split(".");if(n.length===0||n.some(i=>!/^[0-9a-f]{1,60}$/i.test(i)))return null;let o=n.join("");if(o.length%2!==0)return null;try{let i=Buffer.from(o,"hex").toString("utf8");return c(i)?i:null}catch{return null}}function S(t){let n=l(t);return r.existsSync(e.join(n,"index.html"))?n:null}function M(t){if(!f(t))return g();let n=x(t);return n?S(n):null}export{d as a,y as b,f as c,x as d,M as e};
4
+ import{a as c}from"./chunk-7TWD4P6J.js";import{M as u,l}from"./chunk-Y7SKGRAV.js";import r from"fs";import e from"path";import{fileURLToPath as m}from"url";var s;function p(){if(s!==void 0)return s;let t=e.dirname(m(import.meta.url));for(let n=0;n<12&&t!==e.dirname(t);n++){if(r.existsSync(e.join(t,"packages/sootsim-engine/package.json"))&&r.existsSync(e.join(t,"public/sootsim")))return s=t,t;t=e.dirname(t)}return s=null,null}function d(){if(process.env.SOOTSIM_HOME&&u())return null;let t=p();if(!t)return null;let n=e.join(t,"public/sootsim");return r.existsSync(e.join(n,"index.html"))&&r.existsSync(e.join(n,"engine/index.html"))&&r.existsSync(e.join(n,"engine-tenant/worker.js"))?n:null}function g(){let t=d();if(t)return t;let n=u();if(!n)return null;let o=l(n);return r.existsSync(e.join(o,"index.html"))?o:null}var a=".runtime.localhost";function y(t){let n=t.trim();if(!c(n))throw new Error(`invalid rnx runtime version: ${t}`);let i=Buffer.from(n,"utf8").toString("hex").match(/.{1,60}/g);if(!i)throw new Error(`invalid rnx runtime version: ${t}`);return`${i.join(".")}${a}`}function f(t){return t.toLowerCase().endsWith(a)}function x(t){if(!f(t))return null;let n=t.slice(0,-a.length).split(".");if(n.length===0||n.some(i=>!/^[0-9a-f]{1,60}$/i.test(i)))return null;let o=n.join("");if(o.length%2!==0)return null;try{let i=Buffer.from(o,"hex").toString("utf8");return c(i)?i:null}catch{return null}}function S(t){let n=l(t);return r.existsSync(e.join(n,"index.html"))?n:null}function M(t){if(!f(t))return g();let n=x(t);return n?S(n):null}export{d as a,y as b,f as c,x as d,M as e};
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.371 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
- import{i as s}from"./chunk-WGE2P25F.js";import{a as t}from"./chunk-A72MIIJI.js";import{F as o,G as n}from"./chunk-FBMNYSSW.js";function a(){return process.env.CI==="1"||process.env.CI==="true"||process.env.GITHUB_ACTIONS==="true"}function c(){return process.stdin.isTTY===!0&&!a()&&!t()}function l(e=o()){let r=process.env.DO_NOT_TRACK;return r==="1"||r==="true"||!c()?!1:e.configured&&e.productAnalytics}async function P(e){let r=o();if(r.configured)return r;if(!e.prompt||!c())return{productAnalytics:!1,crashReports:!1,configured:!1};let i=await s("Share anonymous package incompatibilities and error classes to improve rnx?",!1);return n({productAnalytics:i,crashReports:!1}),o()}export{c as a,l as b,P as c};
4
+ import{i as s}from"./chunk-H4DU457S.js";import{a as t}from"./chunk-S3AH2O67.js";import{F as o,G as n}from"./chunk-Y7SKGRAV.js";function a(){return process.env.CI==="1"||process.env.CI==="true"||process.env.GITHUB_ACTIONS==="true"}function c(){return process.stdin.isTTY===!0&&!a()&&!t()}function l(e=o()){let r=process.env.DO_NOT_TRACK;return r==="1"||r==="true"||!c()?!1:e.configured&&e.productAnalytics}async function P(e){let r=o();if(r.configured)return r;if(!e.prompt||!c())return{productAnalytics:!1,crashReports:!1,configured:!1};let i=await s("Share anonymous package incompatibilities and error classes to improve rnx?",!1);return n({productAnalytics:i,crashReports:!1}),o()}export{c as a,l as b,P as c};
@@ -0,0 +1,4 @@
1
+ /*! rnx v0.1.371 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import { createRequire as __sootsimCreateRequire } from 'node:module'
3
+ var require = __sootsimCreateRequire(import.meta.url)
4
+ import{AsyncLocalStorage as n}from"node:async_hooks";var t=class extends Error{code;constructor(e){super(`rnx exited with code ${e}`),this.name="RnxExit",this.code=e}},s=new n;function i(r){if(r instanceof t)throw r}function c(r){throw new t(r)}export{t as a,i as b,c};
@@ -1,7 +1,7 @@
1
- /*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.371 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
- import{a as w,b as E}from"./chunk-ZEF57HQO.js";import{P as T,Q as F,R as _,S as W,g as $}from"./chunk-FBMNYSSW.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)+`
4
+ import{a as w,b as E}from"./chunk-WLRIPAGJ.js";import{P as T,Q as F,R as _,S as W,g as $}from"./chunk-Y7SKGRAV.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
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
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
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(`
@@ -1,7 +1,7 @@
1
- /*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.371 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
- import{a as d}from"./chunk-CCI3DZKE.js";import{a as s}from"./chunk-N5KDDGV6.js";import{a as f,c}from"./chunk-45X3D6CI.js";import{a as e}from"./chunk-6F3WOWFC.js";import{a as n}from"./chunk-H2GB2PLY.js";import{d as m,e as p,f as u}from"./chunk-5QFJFASW.js";import{a}from"./chunk-TAC4CEIX.js";import{a as i}from"./chunk-MXWME7ET.js";function g(){return`${i.commandName} CLI v${a()} \xB7 ${d().primary}`}function E(){let r=p({bridgePort:7668,defaultShellUrl:n},e()),o=`
4
+ import{a as d}from"./chunk-763GBI7G.js";import{a as s}from"./chunk-UPMR6Y5P.js";import{a as f,c}from"./chunk-7YB46LGI.js";import{a as e}from"./chunk-OF3U4SZO.js";import{a as n}from"./chunk-ESWSXF55.js";import{d as m,e as p,f as u}from"./chunk-KHGXEU4L.js";import{a}from"./chunk-IX7Z6ZVJ.js";import{a as i}from"./chunk-OQPZOEEP.js";function g(){return`${i.commandName} CLI v${a()} \xB7 ${d().primary}`}function E(){let r=p({bridgePort:7668,defaultShellUrl:n},e()),o=`
5
5
  ${c}
6
6
  `;console.log(`${g()}
7
7
  ${o}${r}
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.371 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
4
  var c="sootsim-agent-prompt-v1";function r(n){return typeof n=="string"?n.trim():""}function m(n){let e=r(n.text);if(!e)return"";let t=r(n.displayText),s=r(n.inspectSummary),o=r(n.inspectTrace);return!!s||!!o||/[\r\n]/.test(e)||!!t&&t!==e?JSON.stringify({__sootsimAgentPrompt:c,text:e,displayText:t,inspectSummary:s,inspectTrace:o}):e}function u(n){let e=r(n);if(!e)return null;try{let t=JSON.parse(e);if(t.__sootsimAgentPrompt!==c)return{text:e};let s=r(typeof t.text=="string"?t.text:void 0);if(!s)return null;let o=r(typeof t.displayText=="string"?t.displayText:void 0),i=r(typeof t.inspectSummary=="string"?t.inspectSummary:void 0),p=r(typeof t.inspectTrace=="string"?t.inspectTrace:void 0);return{text:s,...o?{displayText:o}:{},...i?{inspectSummary:i}:{},...p?{inspectTrace:p}:{}}}catch{return{text:e}}}export{m as a,u as b};
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.371 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
4
  var f="\x1B[0m",p="\x1B[1m",a="\x1B[2m",m="\x1B[38;2;42;95;255m",x="\x1B[38;5;84m",d="\x1B[38;5;203m";function c(n,t){return!process.stdout.isTTY||process.env.NO_COLOR!==void 0?t:`${n}${t}${f}`}function s(n){return c(m,n)}function u(n){return c(p,n)}function i(n){return c(a,n)}function w(n){return c(x,n)}function h(n){return c(d,n)}function v(n){console.log(),console.log(` ${s("\u25E4\u25E2")} ${u("rnx")}`),n&&console.log(` ${i(n)}`)}function y(n,t){console.log(`
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.371 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
- import{b as r}from"./chunk-V7I4CTAX.js";function o(){if(!r())return null;let t=process.env.VITE_POSTHOG_API_KEY||"";if(!t)return null;let e=process.env.CONTRAST_POSTHOG_HOST||process.env.VITE_POSTHOG_HOST||"https://us.i.posthog.com";return{apiKey:t,host:e.replace(/\/+$/,"")}}function i(t,e){return t.trim().slice(0,e)}function s(t){let e=t.kind==="package_incompatibility"?{package_name:i(t.packageName,160),package_version:i(t.packageVersion,80),...t.unsupportedApi?{unsupported_api:i(t.unsupportedApi,160)}:{}}:{error_class:i(t.errorClass,160)};return{event:t.kind,distinct_id:"rnx-cli-diagnostic",properties:e}}var n=[];function a(t){r()&&n.push(t)}function c(t){let e=t instanceof Error?t.constructor.name:typeof t;a({kind:"error_shape",errorClass:e})}async function l(){if(n.length===0)return;let t=o();if(!t){n.length=0;return}let e=n.splice(0,n.length).map(s);try{await fetch(`${t.host}/batch/`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({api_key:t.apiKey,batch:e}),signal:AbortSignal.timeout(2e3)})}catch{}}export{s as a,a as b,c,l as d};
4
+ import{b as r}from"./chunk-DYFOLOYL.js";function o(){if(!r())return null;let t=process.env.VITE_POSTHOG_API_KEY||"";if(!t)return null;let e=process.env.CONTRAST_POSTHOG_HOST||process.env.VITE_POSTHOG_HOST||"https://us.i.posthog.com";return{apiKey:t,host:e.replace(/\/+$/,"")}}function i(t,e){return t.trim().slice(0,e)}function s(t){let e=t.kind==="package_incompatibility"?{package_name:i(t.packageName,160),package_version:i(t.packageVersion,80),...t.unsupportedApi?{unsupported_api:i(t.unsupportedApi,160)}:{}}:{error_class:i(t.errorClass,160)};return{event:t.kind,distinct_id:"rnx-cli-diagnostic",properties:e}}var n=[];function a(t){r()&&n.push(t)}function c(t){let e=t instanceof Error?t.constructor.name:typeof t;a({kind:"error_shape",errorClass:e})}async function l(){if(n.length===0)return;let t=o();if(!t){n.length=0;return}let e=n.splice(0,n.length).map(s);try{await fetch(`${t.host}/batch/`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({api_key:t.apiKey,batch:e}),signal:AbortSignal.timeout(2e3)})}catch{}}export{s as a,a as b,c,l as d};
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.371 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
4
  import{existsSync as s}from"node:fs";import{basename as a,dirname as p,join as l}from"node:path";import{fileURLToPath as m,pathToFileURL as c}from"node:url";var u="packages/sootsim/scripts/demo-app-registry.ts",f=8;function A(o){let r=o;for(let e=0;e<f;e++){if(a(r)==="node_modules")return null;let n=l(r,u);if(s(n))return n;let i=p(r);if(i===r)return null;r=i}return null}var t=null;async function S(){if(t)return t;let o=A(p(m(import.meta.url)));if(!o)return t=[],t;try{let r=await import(c(o).href);t=Array.isArray(r.APPS)?r.APPS:[]}catch{t=[]}return t}function D(){return t??[]}function O(o){let r=t;return t=o,{restore:()=>{t=r}}}export{A as a,S as b,D as c,O as d};
@@ -1,7 +1,7 @@
1
- /*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.371 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
- import{t as j,v as A,y as K,z as v}from"./chunk-H2GB2PLY.js";import{createHash as Y}from"node:crypto";import{mkdirSync as L,readFileSync as W,readdirSync as Q,unlinkSync as X,writeFileSync as D}from"node:fs";import{dirname as q,extname as Z,resolve as B}from"node:path";function H(t){let e=t[0]?.toLowerCase()??"toggle";return e!=="on"&&e!=="off"&&e!=="toggle"&&(console.error(` unknown argument: "${e}" (expected on | off | toggle)`),process.exit(1)),e}async function U(t,e,n){let o=j(t,{port:e.port}),i=H(o.positional),u=A({...o,commandTimeoutMs:5e3});try{let a=!!(await K(u,"SootSim.bridges.settings.get"))?.[n.modeKey],m=i==="on"?!0:i==="off"?!1:!a;if(a===m)return console.log(` ${n.displayName}: already ${m?"on":"off"}`),{current:a,target:m,changed:!1};if(!await u.send({type:"evaluate",acquireLock:!0,code:`(async () => {
4
+ import{t as j,v as A,y as U,z as v}from"./chunk-ESWSXF55.js";import{c as P}from"./chunk-ERBGQEJ5.js";import{createHash as Q}from"node:crypto";import{mkdirSync as W,readFileSync as q,readdirSync as X,unlinkSync as Z,writeFileSync as V}from"node:fs";import{dirname as G,extname as ee,resolve as B}from"node:path";function Y(t){let e=t[0]?.toLowerCase()??"toggle";return e!=="on"&&e!=="off"&&e!=="toggle"&&(console.error(` unknown argument: "${e}" (expected on | off | toggle)`),P(1)),e}async function L(t,e,n){let o=j(t,{port:e.port}),i=Y(o.positional),u=A({...o,commandTimeoutMs:5e3});try{let a=!!(await U(u,"SootSim.bridges.settings.get"))?.[n.modeKey],m=i==="on"?!0:i==="off"?!1:!a;if(a===m)return console.log(` ${n.displayName}: already ${m?"on":"off"}`),{current:a,target:m,changed:!1};if(!await u.send({type:"evaluate",acquireLock:!0,code:`(async () => {
5
5
  const modeKey = ${JSON.stringify(n.modeKey)}
6
6
  const target = ${JSON.stringify(m)}
7
7
  window.dispatchEvent(new CustomEvent('sootsim:shell-command', {
@@ -15,7 +15,7 @@ import{t as j,v as A,y as K,z as v}from"./chunk-H2GB2PLY.js";import{createHash a
15
15
  await new Promise((resolve) => setTimeout(resolve, 40))
16
16
  }
17
17
  return false
18
- })()`}))throw new Error(`${n.displayName} did not change to ${m?"on":"off"}; the live shell may not support this mode`);return console.log(` ${n.displayName}: ${a?"on":"off"} -> ${m?"on":"off"}`),{current:a,target:m,changed:!0}}finally{u.close()}}var z=12e3,ee=6e5,te=new Set(["load","seek","play","pause","render","measure"]);async function ye(t,e){(t.includes("--help")||t.includes("-h"))&&(console.log(`
18
+ })()`}))throw new Error(`${n.displayName} did not change to ${m?"on":"off"}; the live shell may not support this mode`);return console.log(` ${n.displayName}: ${a?"on":"off"} -> ${m?"on":"off"}`),{current:a,target:m,changed:!0}}finally{u.close()}}var J=12e3,te=6e5,ne=new Set(["load","seek","play","pause","render","measure"]);async function ve(t,e){(t.includes("--help")||t.includes("-h"))&&(console.log(`
19
19
  rnx mode three \u2014 toggle the 3d device stage
20
20
 
21
21
  usage:
@@ -85,8 +85,8 @@ examples:
85
85
  rnx mode three render ./cinematic.json --output ./frames --fps 30
86
86
  rnx mode three measure ./cinematic.json --width 450 --height 900 --at 0,1200
87
87
  rnx mode three off
88
- `),process.exit(0));let n=ie(t);if(n){await le(n,t,e);return}if(ne(t)){await oe(t,e);return}(await U(t,e,{modeKey:"threeMode",displayName:"three-mode",actionId:"toggle-three-mode"})).target&&await re(t,e)}function ne(t){return t[0]==="configure"||t.some(e=>["--device","--background","--gradient","--gradient-angle","--colorway","--script","--progress","--animate","--slow","--environment","--env-shape","--env-spread","--env-size","--env-color","--env-glow","--env-plastic","--setting","--focus","--focus-amount","--focus-range","--reset-pose"].includes(e))}async function oe(t,e){let n=j(t,{port:e.port,stripBooleanFlags:["--animate","--slow","--reset-pose"],stripValueFlags:["--device","--background","--gradient","--gradient-angle","--colorway","--script","--progress","--environment","--env-shape","--env-spread","--env-size","--env-color","--env-glow","--env-plastic","--setting","--focus","--focus-amount","--focus-range"]}),o=ue(t),i=A({...n,commandTimeoutMs:z+1e3});try{await J(i);let u=await v(i,"SootSim.bridges.threeMode.configure",o);console.log(` three-mode: configured (${me(u)})`)}finally{i.close()}}async function re(t,e){let n=j(t,{port:e.port}),o=A({...n,commandTimeoutMs:z+1e3});try{await J(o)}finally{o.close()}}async function J(t){let e=await t.send({type:"evaluate",code:`(async () => {
89
- const deadline = Date.now() + ${z}
88
+ `),P(0));let n=se(t);if(n){await ue(n,t,e);return}if(oe(t)){await re(t,e);return}(await L(t,e,{modeKey:"threeMode",displayName:"three-mode",actionId:"toggle-three-mode"})).target&&await ie(t,e)}function oe(t){return t[0]==="configure"||t.some(e=>["--device","--background","--gradient","--gradient-angle","--colorway","--script","--progress","--animate","--slow","--environment","--env-shape","--env-spread","--env-size","--env-color","--env-glow","--env-plastic","--setting","--focus","--focus-amount","--focus-range","--reset-pose"].includes(e))}async function re(t,e){let n=j(t,{port:e.port,stripBooleanFlags:["--animate","--slow","--reset-pose"],stripValueFlags:["--device","--background","--gradient","--gradient-angle","--colorway","--script","--progress","--environment","--env-shape","--env-spread","--env-size","--env-color","--env-glow","--env-plastic","--setting","--focus","--focus-amount","--focus-range"]}),o=me(t),i=A({...n,commandTimeoutMs:J+1e3});try{await K(i);let u=await v(i,"SootSim.bridges.threeMode.configure",o);console.log(` three-mode: configured (${ce(u)})`)}finally{i.close()}}async function ie(t,e){let n=j(t,{port:e.port}),o=A({...n,commandTimeoutMs:J+1e3});try{await K(o)}finally{o.close()}}async function K(t){let e=await t.send({type:"evaluate",code:`(async () => {
89
+ const deadline = Date.now() + ${J}
90
90
  while (Date.now() < deadline) {
91
91
  const settings = window.SootSim?.bridges?.settings?.get?.()
92
92
  if (settings && settings.threeMode !== true) {
@@ -100,8 +100,8 @@ examples:
100
100
  const bridge = window.SootSim?.bridges?.threeMode
101
101
  const state = typeof bridge?.getState === 'function' ? bridge.getState() : null
102
102
  return state || { ready: false }
103
- })()`});if(e?.ready===!0)return e;throw e?.disabled?new Error("3d mode is off; run `rnx mode three on` before configure"):new Error("3d mode runtime did not become ready")}function ie(t){for(let e=0;e<t.length;e+=1){let n=t[e];if(n==="--sim"||n==="--port"||n==="-p"){e+=1;continue}if(!n.startsWith("-"))return te.has(n)?n:null}return null}function _(t,e){let n=t.indexOf(e);return n>=0?t[n+1]:void 0}function y(t,e,n,o=0){let i=_(t,e);if(i===void 0)return n;let u=Number.parseFloat(i);if(!Number.isFinite(u)||u<o)throw new Error(`${e} expects a number greater than or equal to ${o}`);return u}function G(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function se(t,e){let n=Z(t).toLowerCase();return e==="recording"?n===".mp4"||n===".m4v"?"video/mp4":"video/webm":n===".jpg"||n===".jpeg"?"image/jpeg":n===".webp"?"image/webp":"image/png"}function V(t,e){if(Array.isArray(t))return t.map(o=>V(o,e));if(!G(t))return t;let n={};for(let[o,i]of Object.entries(t))n[o]=V(i,e);if((n.type==="recording"||n.type==="screenshot"||n.kind==="screen")&&typeof n.src=="string"&&!/^(?:blob:|data:|https?:)/i.test(n.src)){let o=B(e,n.src),i=W(o);n.src=`data:${se(o,n.type==="recording"?"recording":"screenshot")};base64,${i.toString("base64")}`}return n}function ae(t){let e=B(t),n=JSON.parse(W(e,"utf8"));return{absolutePath:e,timeline:V(n,q(e))}}async function de(t){await v(t,"SootSim.bridges.settings.set","threeMode",!0),await J(t)}async function le(t,e,n){let o=j(e,{port:n.port,commandTimeoutMs:ee,stripBooleanFlags:["--overwrite"],stripValueFlags:["--output","--fps","--width","--height","--from","--to","--count","--at"]}),i=A(o);try{if(await de(i),t==="seek"){let r=o.positional[1],l=r===void 0?Number.NaN:Number.parseFloat(r);if(!Number.isFinite(l))throw new Error("three-mode seek expects time in ms");let f=await v(i,"SootSim.bridges.threeMode.seek",l);console.log(` three-mode: ${Math.round(f.timeMs)}ms / ${Math.round(f.durationMs)}ms (${f.shotId??"no shot"})`);return}if(t==="play"||t==="pause"){let r=await v(i,`SootSim.bridges.threeMode.${t}`),l=G(r.timeline)?r.timeline:{};console.log(` three-mode: ${t} (${Math.round(Number(l.timeMs??0))}ms)`);return}let u=o.positional[1];if(!u)throw new Error(`three-mode ${t} expects a timeline JSON path`);let T=ae(u),a=await v(i,"SootSim.bridges.threeMode.loadTimeline",T.timeline);if(t==="load"){console.log(` three-mode: loaded ${T.absolutePath} (${Math.round(a.durationMs)}ms)`);return}if(t==="measure"){let r=y(e,"--fps",30,.001),l=Math.round(y(e,"--width",1920,1)),f=Math.round(y(e,"--height",1080,1)),h=_(e,"--at"),$;if(h!==void 0){let c=h.split(",").map(w=>{let S=Number.parseFloat(w);if(!Number.isFinite(S)||S<0)throw new Error(`--at expects comma-separated times in ms, got "${w}"`);return Math.min(S,a.durationMs)}),M=[];for(let w of c){let S=await v(i,"SootSim.bridges.threeMode.measure",{fps:r,width:l,height:f,from:w,count:1});M.push({...S.frames[0],index:M.length})}$={fps:r,from:c[0],to:c[c.length-1],width:l,height:f,frames:M}}else{let c=y(e,"--from",0,0),M=_(e,"--count"),w={fps:r,width:l,height:f,from:c};if(M===void 0){let S=y(e,"--to",a.durationMs,0);if(S<=c||S>a.durationMs)throw new Error(`--to must be greater than --from and at most ${a.durationMs}`);w.to=S}else w.count=Math.round(y(e,"--count",1,1));$=await v(i,"SootSim.bridges.threeMode.measure",w)}let b=`${JSON.stringify($,null,2)}
104
- `,I=_(e,"--output");if(I){let c=B(I);L(q(c),{recursive:!0}),D(c,b),process.stderr.write(` three-mode: measured ${$.frames.length} frames \u2192 ${c}
105
- `)}else process.stdout.write(b);return}let m=_(e,"--output");if(!m)throw new Error("three-mode render requires --output <dir>");let g=B(m),R=y(e,"--fps",30,.001),E=Math.round(y(e,"--width",1920,1)),k=Math.round(y(e,"--height",1080,1)),F=y(e,"--from",0,0),x=y(e,"--to",a.durationMs,0);if(x<=F||x>a.durationMs)throw new Error(`--to must be greater than --from and at most ${a.durationMs}`);let N=1e3/R,s=Math.ceil((x-F)/N);L(g,{recursive:!0});let p=Q(g).filter(r=>/^frame-\d{5}\.png$/.test(r)||r==="timeline-render.json");if(p.length>0&&!e.includes("--overwrite"))throw new Error(`${g} already has timeline frames; pass --overwrite to replace them`);for(let r of p)X(B(g,r));let d=[],O=4;for(let r=0;r<s;r+=O){let l=Math.min(O,s-r),f=F+r*N,h=Math.min(x,f+l*N),$=await v(i,"SootSim.bridges.threeMode.renderFrames",{fps:R,from:f,to:h,width:E,height:k,count:l});if($.frames.length!==l)throw new Error(`3d renderer returned ${$.frames.length} frames for a ${l}-frame batch`);for(let b of $.frames){let I=r+b.index,c=`frame-${String(I).padStart(5,"0")}.png`,M=b.dataUrl.indexOf(",");if(M<0||!b.dataUrl.slice(0,M).includes("image/png;base64"))throw new Error(`3d renderer returned a non-PNG frame at ${b.timeMs}ms`);let w=Buffer.from(b.dataUrl.slice(M+1),"base64");D(B(g,c),w),d.push({file:c,timeMs:b.timeMs,sha256:Y("sha256").update(w).digest("hex"),alpha:b.alpha,phoneCollision:b.phoneCollision})}process.stderr.write(`\r three-mode: rendered ${Math.min(r+l,s)}/${s}`)}process.stderr.write(`
106
- `);let C={version:2,timeline:T.absolutePath,fps:R,from:F,to:x,width:E,height:k,frameCount:s,transparent:d.every(r=>r.alpha.transparentPixels>0),frames:d};D(B(g,"timeline-render.json"),`${JSON.stringify(C,null,2)}
107
- `),console.log(` three-mode: wrote ${s} deterministic RGBA frames to ${g}`)}finally{i.close()}}function ue(t){let e=s=>t.find((p,d)=>t[d-1]===s),n={},o=e("--device");if(o){if(o!=="iphone-17-air"&&o!=="iphone-17-pro"&&o!=="pixel-10")throw new Error(`--device expects iphone-17-air, iphone-17-pro, or pixel-10, got "${o}"`);n.device=o}let i=e("--colorway");i&&(n.colorway=i);let u=e("--background");u&&(n.background=u);let T=e("--gradient");if(T){let s=T.split(",").map(C=>C.trim()).filter(Boolean),p=s.map((C,r)=>{let[l,f]=C.split("@"),h=f!==void 0?Number.parseFloat(f):s.length>1?r/(s.length-1):0;return h>1&&(h=h/100),Number.isFinite(h)||(h=s.length>1?r/(s.length-1):0),{color:l.trim(),offset:h}}),d=e("--gradient-angle"),O=d===void 0?void 0:Number.parseFloat(d);if(d!==void 0&&!Number.isFinite(O))throw new Error(`--gradient-angle expects a number, got "${d}"`);n.customGradient={stops:p,...O!==void 0?{angleDeg:O}:{}}}let a=e("--setting");if(a){if(a!=="none"&&a!=="room"&&a!=="white-backdrop")throw new Error(`--setting expects none, room, or white-backdrop, got "${a}"`);n.setting=a}let m={},g=P(e("--focus"),"--focus");g!==void 0&&(m.enabled=g);for(let[s,p]of[["--focus-amount","amount"],["--focus-range","range"]]){let d=e(s);d&&(m[p]=d)}Object.keys(m).length>0&&(n.focus=m),t.includes("--reset-pose")&&(n.resetPose=!0);let R=P(e("--environment"),"--environment"),E={},k={};for(let[s,p]of[["--env-shape","shape"],["--env-spread","spread"],["--env-size","size"],["--env-color","color"]]){let d=e(s);d&&(E[p]=d)}let F=P(e("--env-glow"),"--env-glow");F!==void 0&&(k.glow=F);let x=P(e("--env-plastic"),"--env-plastic");x!==void 0&&(k.plastic=x),(R!==void 0||Object.keys(E).length>0||Object.keys(k).length>0)&&(n.environment=R===!1?!1:{pins:E,effects:k});let N=e("--script");if(N){let s=e("--progress"),p=s===void 0?1:Number.parseFloat(s);if(!Number.isFinite(p))throw new Error(`--progress expects a number from 0 to 1, got "${s}"`);n.script={id:N,progress:p,animate:t.includes("--animate"),slow:t.includes("--slow")}}return n}function P(t,e){if(t===void 0)return;let n=t.toLowerCase();if(["on","true","yes","1"].includes(n))return!0;if(["off","false","no","0"].includes(n))return!1;throw new Error(`${e} expects on or off, got "${t}"`)}function me(t){return[`ready=${!!t.ready}`,`background=${String(t.background??"unknown")}`,`colorway=${String(t.colorway??"unknown")}`,`environment=${t.environmentActive?"on":"off"}`,`setting=${String(t.setting??"none")}`,`focus=${t.focus&&typeof t.focus=="object"&&t.focus.enabled?"on":"off"}`].join(", ")}export{U as a,ye as b,J as c,ue as d};
103
+ })()`});if(e?.ready===!0)return e;throw e?.disabled?new Error("3d mode is off; run `rnx mode three on` before configure"):new Error("3d mode runtime did not become ready")}function se(t){for(let e=0;e<t.length;e+=1){let n=t[e];if(n==="--sim"||n==="--port"||n==="-p"){e+=1;continue}if(!n.startsWith("-"))return ne.has(n)?n:null}return null}function _(t,e){let n=t.indexOf(e);return n>=0?t[n+1]:void 0}function y(t,e,n,o=0){let i=_(t,e);if(i===void 0)return n;let u=Number.parseFloat(i);if(!Number.isFinite(u)||u<o)throw new Error(`${e} expects a number greater than or equal to ${o}`);return u}function H(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function ae(t,e){let n=ee(t).toLowerCase();return e==="recording"?n===".mp4"||n===".m4v"?"video/mp4":"video/webm":n===".jpg"||n===".jpeg"?"image/jpeg":n===".webp"?"image/webp":"image/png"}function z(t,e){if(Array.isArray(t))return t.map(o=>z(o,e));if(!H(t))return t;let n={};for(let[o,i]of Object.entries(t))n[o]=z(i,e);if((n.type==="recording"||n.type==="screenshot"||n.kind==="screen")&&typeof n.src=="string"&&!/^(?:blob:|data:|https?:)/i.test(n.src)){let o=B(e,n.src),i=q(o);n.src=`data:${ae(o,n.type==="recording"?"recording":"screenshot")};base64,${i.toString("base64")}`}return n}function de(t){let e=B(t),n=JSON.parse(q(e,"utf8"));return{absolutePath:e,timeline:z(n,G(e))}}async function le(t){await v(t,"SootSim.bridges.settings.set","threeMode",!0),await K(t)}async function ue(t,e,n){let o=j(e,{port:n.port,commandTimeoutMs:te,stripBooleanFlags:["--overwrite"],stripValueFlags:["--output","--fps","--width","--height","--from","--to","--count","--at"]}),i=A(o);try{if(await le(i),t==="seek"){let r=o.positional[1],l=r===void 0?Number.NaN:Number.parseFloat(r);if(!Number.isFinite(l))throw new Error("three-mode seek expects time in ms");let f=await v(i,"SootSim.bridges.threeMode.seek",l);console.log(` three-mode: ${Math.round(f.timeMs)}ms / ${Math.round(f.durationMs)}ms (${f.shotId??"no shot"})`);return}if(t==="play"||t==="pause"){let r=await v(i,`SootSim.bridges.threeMode.${t}`),l=H(r.timeline)?r.timeline:{};console.log(` three-mode: ${t} (${Math.round(Number(l.timeMs??0))}ms)`);return}let u=o.positional[1];if(!u)throw new Error(`three-mode ${t} expects a timeline JSON path`);let T=de(u),a=await v(i,"SootSim.bridges.threeMode.loadTimeline",T.timeline);if(t==="load"){console.log(` three-mode: loaded ${T.absolutePath} (${Math.round(a.durationMs)}ms)`);return}if(t==="measure"){let r=y(e,"--fps",30,.001),l=Math.round(y(e,"--width",1920,1)),f=Math.round(y(e,"--height",1080,1)),h=_(e,"--at"),$;if(h!==void 0){let c=h.split(",").map(w=>{let S=Number.parseFloat(w);if(!Number.isFinite(S)||S<0)throw new Error(`--at expects comma-separated times in ms, got "${w}"`);return Math.min(S,a.durationMs)}),M=[];for(let w of c){let S=await v(i,"SootSim.bridges.threeMode.measure",{fps:r,width:l,height:f,from:w,count:1});M.push({...S.frames[0],index:M.length})}$={fps:r,from:c[0],to:c[c.length-1],width:l,height:f,frames:M}}else{let c=y(e,"--from",0,0),M=_(e,"--count"),w={fps:r,width:l,height:f,from:c};if(M===void 0){let S=y(e,"--to",a.durationMs,0);if(S<=c||S>a.durationMs)throw new Error(`--to must be greater than --from and at most ${a.durationMs}`);w.to=S}else w.count=Math.round(y(e,"--count",1,1));$=await v(i,"SootSim.bridges.threeMode.measure",w)}let b=`${JSON.stringify($,null,2)}
104
+ `,I=_(e,"--output");if(I){let c=B(I);W(G(c),{recursive:!0}),V(c,b),process.stderr.write(` three-mode: measured ${$.frames.length} frames \u2192 ${c}
105
+ `)}else process.stdout.write(b);return}let m=_(e,"--output");if(!m)throw new Error("three-mode render requires --output <dir>");let g=B(m),E=y(e,"--fps",30,.001),R=Math.round(y(e,"--width",1920,1)),k=Math.round(y(e,"--height",1080,1)),F=y(e,"--from",0,0),x=y(e,"--to",a.durationMs,0);if(x<=F||x>a.durationMs)throw new Error(`--to must be greater than --from and at most ${a.durationMs}`);let N=1e3/E,s=Math.ceil((x-F)/N);W(g,{recursive:!0});let p=X(g).filter(r=>/^frame-\d{5}\.png$/.test(r)||r==="timeline-render.json");if(p.length>0&&!e.includes("--overwrite"))throw new Error(`${g} already has timeline frames; pass --overwrite to replace them`);for(let r of p)Z(B(g,r));let d=[],O=4;for(let r=0;r<s;r+=O){let l=Math.min(O,s-r),f=F+r*N,h=Math.min(x,f+l*N),$=await v(i,"SootSim.bridges.threeMode.renderFrames",{fps:E,from:f,to:h,width:R,height:k,count:l});if($.frames.length!==l)throw new Error(`3d renderer returned ${$.frames.length} frames for a ${l}-frame batch`);for(let b of $.frames){let I=r+b.index,c=`frame-${String(I).padStart(5,"0")}.png`,M=b.dataUrl.indexOf(",");if(M<0||!b.dataUrl.slice(0,M).includes("image/png;base64"))throw new Error(`3d renderer returned a non-PNG frame at ${b.timeMs}ms`);let w=Buffer.from(b.dataUrl.slice(M+1),"base64");V(B(g,c),w),d.push({file:c,timeMs:b.timeMs,sha256:Q("sha256").update(w).digest("hex"),alpha:b.alpha,phoneCollision:b.phoneCollision})}process.stderr.write(`\r three-mode: rendered ${Math.min(r+l,s)}/${s}`)}process.stderr.write(`
106
+ `);let C={version:2,timeline:T.absolutePath,fps:E,from:F,to:x,width:R,height:k,frameCount:s,transparent:d.every(r=>r.alpha.transparentPixels>0),frames:d};V(B(g,"timeline-render.json"),`${JSON.stringify(C,null,2)}
107
+ `),console.log(` three-mode: wrote ${s} deterministic RGBA frames to ${g}`)}finally{i.close()}}function me(t){let e=s=>t.find((p,d)=>t[d-1]===s),n={},o=e("--device");if(o){if(o!=="iphone-17-air"&&o!=="iphone-17-pro"&&o!=="pixel-10")throw new Error(`--device expects iphone-17-air, iphone-17-pro, or pixel-10, got "${o}"`);n.device=o}let i=e("--colorway");i&&(n.colorway=i);let u=e("--background");u&&(n.background=u);let T=e("--gradient");if(T){let s=T.split(",").map(C=>C.trim()).filter(Boolean),p=s.map((C,r)=>{let[l,f]=C.split("@"),h=f!==void 0?Number.parseFloat(f):s.length>1?r/(s.length-1):0;return h>1&&(h=h/100),Number.isFinite(h)||(h=s.length>1?r/(s.length-1):0),{color:l.trim(),offset:h}}),d=e("--gradient-angle"),O=d===void 0?void 0:Number.parseFloat(d);if(d!==void 0&&!Number.isFinite(O))throw new Error(`--gradient-angle expects a number, got "${d}"`);n.customGradient={stops:p,...O!==void 0?{angleDeg:O}:{}}}let a=e("--setting");if(a){if(a!=="none"&&a!=="room"&&a!=="white-backdrop")throw new Error(`--setting expects none, room, or white-backdrop, got "${a}"`);n.setting=a}let m={},g=D(e("--focus"),"--focus");g!==void 0&&(m.enabled=g);for(let[s,p]of[["--focus-amount","amount"],["--focus-range","range"]]){let d=e(s);d&&(m[p]=d)}Object.keys(m).length>0&&(n.focus=m),t.includes("--reset-pose")&&(n.resetPose=!0);let E=D(e("--environment"),"--environment"),R={},k={};for(let[s,p]of[["--env-shape","shape"],["--env-spread","spread"],["--env-size","size"],["--env-color","color"]]){let d=e(s);d&&(R[p]=d)}let F=D(e("--env-glow"),"--env-glow");F!==void 0&&(k.glow=F);let x=D(e("--env-plastic"),"--env-plastic");x!==void 0&&(k.plastic=x),(E!==void 0||Object.keys(R).length>0||Object.keys(k).length>0)&&(n.environment=E===!1?!1:{pins:R,effects:k});let N=e("--script");if(N){let s=e("--progress"),p=s===void 0?1:Number.parseFloat(s);if(!Number.isFinite(p))throw new Error(`--progress expects a number from 0 to 1, got "${s}"`);n.script={id:N,progress:p,animate:t.includes("--animate"),slow:t.includes("--slow")}}return n}function D(t,e){if(t===void 0)return;let n=t.toLowerCase();if(["on","true","yes","1"].includes(n))return!0;if(["off","false","no","0"].includes(n))return!1;throw new Error(`${e} expects on or off, got "${t}"`)}function ce(t){return[`ready=${!!t.ready}`,`background=${String(t.background??"unknown")}`,`colorway=${String(t.colorway??"unknown")}`,`environment=${t.environmentActive?"on":"off"}`,`setting=${String(t.setting??"none")}`,`focus=${t.focus&&typeof t.focus=="object"&&t.focus.enabled?"on":"off"}`].join(", ")}export{L as a,ve as b,K as c,me as d};
@@ -0,0 +1,11 @@
1
+ /*! rnx v0.1.371 | (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 o}from"./chunk-SH2HXHR2.js";import{c as i}from"./chunk-ERBGQEJ5.js";var p=["ghs_","ghp_","gho_","ghu_","github_pat_"];function a(n){return!!(n&&n.length>=20&&p.some(e=>n.startsWith(e)))}function d(){let n=process.env.CONTRAST_INSTALLATION_TOKEN?.trim(),e=process.env.GITHUB_TOKEN?.trim(),t=n||e;if(!a(t))return null;let r=(process.env.CONTRAST_REPO||process.env.GITHUB_REPOSITORY||"").trim();if(!r)return null;let[s,u]=r.includes("/")?r.split("/",2):[null,null],l=(process.env.CONTRAST_REPO_ID||process.env.GITHUB_REPOSITORY_ID||"").trim(),c=(process.env.CONTRAST_INSTALLATION_ID||process.env.GITHUB_APP_INSTALLATION_ID||"").trim();return{kind:"github",token:t,repoId:r,repositoryId:l||null,owner:s||null,repo:u||null,installationId:c||null,source:n?"contrast-runner":"github-actions"}}function I(n){return n.startsWith("sk_rnx_")||n.startsWith("sk_sootsim_")}function g(){for(let n of["RNX_API_KEY","SOOTSIM_API_KEY"]){let e=process.env[n]?.trim();if(e&&I(e))return{secret:e,envName:n}}return null}function _(){let n=g();if(n)return{kind:"api-key",secret:n.secret,source:"env",envName:n.envName};let e=d();if(e)return e;let t=o();return t?.token?{kind:"session",token:t.token,origin:t.origin}:null}function A(n){return n.kind==="api-key"?`Bearer ${n.secret}`:`Bearer ${n.token}`}function k(n){return!n||n.kind!=="github"?null:{repoId:n.repoId,owner:n.owner??void 0,repo:n.repo??void 0,installationId:n.installationId}}function f(n){let e=_();if(e)return{auth:e,header:A(e)};process.stderr.write(`
5
+ rnx ${n} needs to be authenticated.
6
+
7
+ pick one:
8
+ \u2022 run \`rnx login\` to sign in with your GH account
9
+ \u2022 set RNX_API_KEY=sk_rnx_... (recommended for CI)
10
+
11
+ `),i(1)}export{_ as a,A as b,k as c,f as d};
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.371 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
- import{a as t}from"./chunk-MXWME7ET.js";import{readFileSync as a}from"node:fs";import{fileURLToPath as n}from"node:url";var r=null;function f(){if(r!=null)return r;let o=[()=>n(import.meta.resolve(`${t.packageName}/package.json`)),()=>n(new URL("../package.json",import.meta.url))];for(let i of o)try{let e=JSON.parse(a(i(),"utf8")).version;if(typeof e=="string"&&e)return r=e,r}catch{}return r="0.0.0",r}export{f as a};
4
+ import{a as t}from"./chunk-OQPZOEEP.js";import{readFileSync as a}from"node:fs";import{fileURLToPath as n}from"node:url";var r=null;function f(){if(r!=null)return r;let o=[()=>n(import.meta.resolve(`${t.packageName}/package.json`)),()=>n(new URL("../package.json",import.meta.url))];for(let i of o)try{let e=JSON.parse(a(i(),"utf8")).version;if(typeof e=="string"&&e)return r=e,r}catch{}return r="0.0.0",r}export{f as a};
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.371 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
4
  import i from"node:fs";import r from"node:path";var e=["app.config.js","app.config.ts","app.config.cjs","app.config.mjs","app.json"],p=["sootsim.config.ts","sootsim.config.js","sootsim.config.mjs","sootsim.config.cjs"];function c(n,t){for(let o of t){let s=r.join(n,o);try{if(i.statSync(s).isFile())return s}catch{}}return null}function f(n){return c(n,e)}function l(n){return c(n,p)}function u(n){let t=r.resolve(n);try{if(!i.statSync(t).isDirectory())return null}catch{return null}let o=l(t);return!o&&!f(t)&&!i.existsSync(r.join(t,"package.json"))?null:{appDir:t,configPath:o}}export{u as a};
@@ -0,0 +1,30 @@
1
+ /*! rnx v0.1.371 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import { createRequire as __sootsimCreateRequire } from 'node:module'
3
+ var require = __sootsimCreateRequire(import.meta.url)
4
+ import{b}from"./chunk-WHZE63R2.js";import{q as x}from"./chunk-ESWSXF55.js";import{c as l}from"./chunk-ERBGQEJ5.js";import{b as R,c as w,d as m,e as $,f as u}from"./chunk-7TWD4P6J.js";import{L as h,M as f,N as y,T as v,l as d}from"./chunk-Y7SKGRAV.js";import S from"fs";import{WebSocket as L}from"ws";function E(t){if(!t||typeof t!="object")return!1;let e=Reflect.get(t,"sections");return typeof Reflect.get(t,"title")=="string"&&Array.isArray(e)&&e.every(o=>o&&typeof o=="object"&&typeof Reflect.get(o,"title")=="string"&&Array.isArray(Reflect.get(o,"items"))&&Reflect.get(o,"items").every(n=>n&&typeof n=="object"&&typeof Reflect.get(n,"summary")=="string"&&typeof Reflect.get(n,"hash")=="string"))}async function A(t,e=fetch){try{let o=new URL($);o.searchParams.set("version",t);let n=await e(o,{headers:{accept:"application/json"},signal:AbortSignal.timeout(5e3)});if(!n.ok)return null;let r=await n.json();if(!r||typeof r!="object")return null;let i=Reflect.get(r,"entries");return!Array.isArray(i)||!E(i[0])?null:i[0]}catch{return null}}function O(t,e){let o=[`what's new in rnx engine v${t}:`];if(!e||e.sections.length===0)o.push(" release notes are not available yet");else for(let n of e.sections){o.push(` ${n.title}:`);for(let r of n.items)o.push(` \u2022 ${r.summary}`)}return o.push(` full changelog: ${m}`),o.join(`
5
+ `)}async function Y(t,e={}){let[o,...n]=t;if(!o||o==="--help"||o==="-h"){k();return}switch(o){case"install":return _(n,e);case"list":return T(n);case"use":return D(n);case"remove":return G(n);case"which":return U();case"notes":return F(n);default:console.error(` unknown runtime subcommand: ${o}`),k(),l(1)}}function k(){console.log(`
6
+ rnx runtime \u2014 manage engine runtimes under ~/.sootsim/runtimes/
7
+
8
+ usage:
9
+ rnx runtime install [version] install a version (default: channel latest)
10
+ rnx runtime list show installed + available versions
11
+ rnx runtime use <version> switch active runtime
12
+ rnx runtime remove <version> delete an installed runtime
13
+ rnx runtime which print active runtime version
14
+ rnx runtime notes print repo or default engine release notes
15
+
16
+ flags:
17
+ --channel <name> channel to resolve 'latest' from (default: stable)
18
+ --force reinstall even if the version is already on disk
19
+ --set-active=false do not switch active runtime after install
20
+
21
+ environment:
22
+ SOOTSIM_CDN_ORIGIN override the CDN base URL (default: ${w})
23
+
24
+ examples:
25
+ rnx runtime install
26
+ rnx runtime install 1.2.3
27
+ rnx runtime install --channel beta
28
+ rnx runtime use 1.2.3
29
+ rnx runtime notes
30
+ `)}async function _(t,e){let{version:o,flags:n}=M(t),r=n.channel??e.channel??"stable",i=n.force===!0,a=n.setActive!==!1;h(),console.log("rnx runtime install"),console.log(` cdn: ${u.resolveCdnOrigin()}`);try{let s=await u.install({version:o,channel:r,force:i,setActive:a,protectVersions:v()});return console.log(` version: ${s.version} (channel: ${s.channel})`),s.installed?console.log(` installed ${s.version}`):console.log(` already installed at ${s.runtimeDir}`),a&&await I(s.version),s}catch(s){console.error(` ${N(s)}`),l(1)}}async function I(t){y(t),console.log(` active: ${t}`),await j(t)||console.log(` (no daemon running \u2014 next sootsim/electron launch will pick up ${t})`)}async function j(t){let{isDaemonLockfileFresh:e,readDaemonLockfile:o}=await import("./home-paths-EGRMTSGE.js"),n=o();if(!e(n))return!1;let r=x();return new Promise(i=>{let a=!1,s=!1,g=C=>{a||(a=!0,i(C))},c=new L(`ws://127.0.0.1:${r}`,{handshakeTimeout:800}),p=setTimeout(()=>{try{c.close()}catch{}g(s)},1500);c.on("open",()=>{try{c.send(JSON.stringify({type:"runtime:use",version:t,id:0})),s=!0}catch{}setTimeout(()=>{try{c.close()}catch{}},100)}),c.on("close",()=>{clearTimeout(p),g(s)}),c.on("error",()=>{clearTimeout(p),g(!1)})})}async function T(t){h();let e=u.listInstalled(),o=f();if(console.log("installed:"),e.length===0)console.log(" (none)");else for(let n of e)console.log(` ${n===o?"*":" "} ${n}`);try{let n=await u.fetchManifest();console.log("available (latest per channel):");for(let[i,a]of Object.entries(n.channels))console.log(` ${i.padEnd(8)} ${a.latest}`);let r=Object.keys(n.versions).sort(R).reverse();if(r.length>1){console.log("hosted versions:");for(let i of r)console.log(` ${i}`)}}catch(n){console.log(`available: (could not fetch manifest: ${N(n)})`)}}async function D(t){let e=t[0];e||(console.error(" usage: rnx runtime use <version>"),l(1));let o=u.listInstalled();o.includes(e)||(console.error(` version ${e} is not installed`),console.error(` installed: ${o.join(", ")||"(none)"}`),console.error(` run \`rnx runtime install ${e}\` first`),l(1)),await I(e)}async function G(t){let e=t[0];e||(console.error(" usage: rnx runtime remove <version>"),l(1)),f()===e&&(console.error(` cannot remove active runtime ${e}`),console.error(" switch with `rnx runtime use <other>` first, or install another version"),l(1)),v().includes(e)&&(console.error(` cannot remove runtime ${e} while a project is using it`),l(1));let n=d(e);if(!S.existsSync(n)){console.error(` ${e} is not installed`);return}S.rmSync(n,{recursive:!0,force:!0}),console.log(` removed ${e}`)}async function U(){let t=f();if(!t){console.log(" no active runtime");return}console.log(t)}async function F(t){t.length>0&&(console.error(" usage: rnx runtime notes"),l(1));let{config:e}=await b(),o=e?.runtimeVersion??f();if(!o){console.log(" no active runtime"),console.log(` release notes: ${m}`);return}console.log(O(o,await A(o)))}function M(t){let e={},o=[];for(let n=0;n<t.length;n++){let r=t[n];if(r==="--channel"&&n+1<t.length){e.channel=t[n+1],n++;continue}if(r.startsWith("--channel=")){e.channel=r.slice(10);continue}if(r==="--force"){e.force=!0;continue}if(r==="--set-active=false"||r==="--no-set-active"){e.setActive=!1;continue}o.push(r)}return{version:o[0]??null,flags:e}}function N(t){return t instanceof Error?t.message:String(t)}export{A as a,O as b,Y as c};
@@ -0,0 +1,28 @@
1
+ /*! rnx v0.1.371 | (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 p}from"./chunk-2QW3JH6T.js";import{a as l,b as u}from"./chunk-IPNDXGVA.js";import{a as c}from"./chunk-SH2HXHR2.js";import{c as i}from"./chunk-ERBGQEJ5.js";async function d(e,t){if(t)return t.replace(/\/$/,"");if(e.kind==="session"&&e.origin)return e.origin.replace(/\/$/,"");let r=c();return r?.origin?r.origin.replace(/\/$/,""):(await p()).replace(/\/$/,"")}async function x(e,t={}){let r=l();if(r||(process.stderr.write(`
5
+ rnx ${e} needs auth before it can check recording access.
6
+
7
+ pick one:
8
+ \u2022 run \`rnx login\`
9
+ \u2022 set RNX_API_KEY=sk_rnx_... (recommended for CI)
10
+
11
+ `),i(1)),r.kind==="github"&&t.allowGitHubAuth)return;let o=await d(r,t.originOverride),n;try{n=await fetch(`${o}/api/sootsim/billing/subscription`,{headers:{authorization:u(r)}})}catch(s){process.stderr.write(`
12
+ rnx ${e} couldn't verify recording access.
13
+ ${s instanceof Error?s.message:String(s)}
14
+
15
+ `),i(1)}if(n.status===401&&(process.stderr.write(`
16
+ rnx ${e} couldn't verify recording access with the current auth against ${o}.
17
+ sign in again for that origin, or provide a valid RNX_API_KEY.
18
+
19
+ `),i(1)),!n.ok){let s=await n.text().catch(()=>"");process.stderr.write(`
20
+ rnx ${e} couldn't verify recording access (${n.status}).
21
+ ${s||"unexpected billing response"}
22
+
23
+ `),i(1)}let a=await n.json();if(a.entitlements?.desktopRecording===!0)return;let g=a.plan??"free";process.stderr.write(`
24
+ rnx ${e} recording requires Personal, Team, or an active trial.
25
+ current plan: ${g}.
26
+ free keeps basic 3d mode; the trial unlocks the full Personal surface.
27
+
28
+ `),i(1)}export{x as a};
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.369 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.371 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
4
  var m={"--help":{type:"boolean",short:"-h"},"--version":{type:"boolean",short:"-V"},"--verbose":{type:"boolean",short:"-v"},"--port":{type:"number",short:"-p"},"--device":{type:"string",short:"-d"},"--theme":{type:"string",short:"-t"},"--headless":{type:"boolean"},"--driver":{type:"string"},"--sim":{type:"string"},"--session":{type:"string"},"--tab":{type:"string"}},p=new Set(["list","describe","find","get","do","wait","network","logs","shell"]),d=new Set(["do","get","wait","shell","debug"]),b=new Set(["detox","maestro","record","film","storage","permissions","perf","screenshot","state","reset","camera","mode","debug","timeline","what-happened","shell","assert","device","open","ios","android","box","list","use","claim","close","compat","report-issue","desktop","login","logout","auth","setup","serve","daemon","runtime","upgrade","version","skill","config","cleanup","app-fonts","agent-wrapper","agent",...p]);function u(c){let n=c.slice(2),e={command:null,commandArgs:[],globalFlags:{},help:!1,version:!1,verbose:!1},s=0;for(;s<n.length;){let o=n[s];if(o==="--"){e.commandArgs.push(...n.slice(s+1));break}let i=Object.entries(m).find(([a,r])=>a===o||r.short===o);if(i){let[a,r]=i,l=a.replace(/^--/,"");if(r.type==="boolean")e.globalFlags[l]=!0,s++;else{let t=n[s+1];if(t===void 0||t.startsWith("-")){console.error(` warning: ${o} requires a value`),s++;continue}if(r.type==="number"){let g=Number(t);if(Number.isNaN(g)){console.error(` warning: ${o} requires a number, got "${t}"`),s+=2;continue}e.globalFlags[l]=g}else e.globalFlags[l]=t;s+=2}continue}if(!e.command&&!o.startsWith("-")){let a=o.indexOf("-");if(a>0){let r=o.slice(0,a),l=o.slice(a+1);if(d.has(r)&&l.length>0){e.command=r;let t=n.slice(s+1);e.commandArgs=[l,...t[0]==="--"?t.slice(1):t];break}}if(b.has(o)){e.command=o;let r=n.slice(s+1);e.commandArgs=r[0]==="--"?r.slice(1):r;break}e.commandArgs=n.slice(s);break}e.commandArgs.push(o),s++}return e.help=!!e.globalFlags.help,e.version=!!e.globalFlags.version,e.verbose=!!e.globalFlags.verbose,e}export{p as a,u as b};