rnxsim 0.1.312 → 0.1.313

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 (152) hide show
  1. package/dist-cli/bin.js +5 -5
  2. package/dist-cli/chunks/{agent-NXVDDCFG.js → agent-XZ2KTPCU.js} +2 -2
  3. package/dist-cli/chunks/{agent-wrapper-DXJCFKL3.js → agent-wrapper-JJYYW2WH.js} +2 -2
  4. package/dist-cli/chunks/{app-fonts-W5AJZQJF.js → app-fonts-IXRNQG6B.js} +2 -2
  5. package/dist-cli/chunks/{assert-3LOJEUDT.js → assert-54T5SK5F.js} +2 -2
  6. package/dist-cli/chunks/{auth-MFTYYPNX.js → auth-FI5UDI45.js} +2 -2
  7. package/dist-cli/chunks/{beta-GT3NN67B.js → beta-JV6UKADW.js} +2 -2
  8. package/dist-cli/chunks/{camera-6EAK7CUL.js → camera-VL73YIKP.js} +2 -2
  9. package/dist-cli/chunks/{chunk-ZMZTHU7V.js → chunk-2D2UPBBR.js} +1 -1
  10. package/dist-cli/chunks/{chunk-5OX7ANRA.js → chunk-2YR5BGA5.js} +2 -2
  11. package/dist-cli/chunks/{chunk-EUAVBTKU.js → chunk-3NV2NCNX.js} +2 -2
  12. package/dist-cli/chunks/{chunk-FTC4M26Q.js → chunk-46EUUFJ5.js} +1 -1
  13. package/dist-cli/chunks/{chunk-33FKQH54.js → chunk-4NPPOV2N.js} +2 -2
  14. package/dist-cli/chunks/{chunk-G74YIEVS.js → chunk-5DHC6KHQ.js} +1 -1
  15. package/dist-cli/chunks/{chunk-YRV7HR3P.js → chunk-5TEF3ET3.js} +2 -2
  16. package/dist-cli/chunks/{chunk-VUFRB347.js → chunk-5TPRP5QT.js} +1 -1
  17. package/dist-cli/chunks/{chunk-DM6KUAOZ.js → chunk-5YJCOWCH.js} +1 -1
  18. package/dist-cli/chunks/{chunk-SI3BUTQR.js → chunk-7GN3LVWB.js} +2 -2
  19. package/dist-cli/chunks/{chunk-MNGQ42QE.js → chunk-BBULZ7CG.js} +3 -3
  20. package/dist-cli/chunks/{chunk-Y2FSZSO7.js → chunk-BTWORNNG.js} +1 -1
  21. package/dist-cli/chunks/{chunk-2SA2VTGP.js → chunk-D4FFVGI5.js} +1 -1
  22. package/dist-cli/chunks/{chunk-T4FT6CM7.js → chunk-DCEMHR2Y.js} +2 -2
  23. package/dist-cli/chunks/{chunk-FWYYCUAZ.js → chunk-DZS6WPUI.js} +1 -1
  24. package/dist-cli/chunks/{chunk-37I5AIS7.js → chunk-F5ZRSS3C.js} +1 -1
  25. package/dist-cli/chunks/{chunk-66NF2KNG.js → chunk-FSUYIVJ6.js} +1 -1
  26. package/dist-cli/chunks/{chunk-AY47WKS5.js → chunk-G2WW6L2C.js} +2 -2
  27. package/dist-cli/chunks/{chunk-274UD5FD.js → chunk-GASE6UBA.js} +1 -1
  28. package/dist-cli/chunks/{chunk-Q3RGLERJ.js → chunk-GGRX24GF.js} +2 -2
  29. package/dist-cli/chunks/{chunk-TCWQJILS.js → chunk-HI5TFJWN.js} +2 -2
  30. package/dist-cli/chunks/{chunk-7VWOSTD5.js → chunk-IJ5CAZZC.js} +1 -1
  31. package/dist-cli/chunks/{chunk-N6A3SXMR.js → chunk-IJO63TDP.js} +2 -2
  32. package/dist-cli/chunks/{chunk-7INBNA3U.js → chunk-KTHV3RUS.js} +2 -2
  33. package/dist-cli/chunks/{chunk-NLEMQ4PY.js → chunk-LF2ZVT7O.js} +2 -2
  34. package/dist-cli/chunks/{chunk-XRGEEPJ5.js → chunk-MJRLLB4R.js} +2 -2
  35. package/dist-cli/chunks/{chunk-PEPUGJVI.js → chunk-NFK7T35W.js} +1 -1
  36. package/dist-cli/chunks/chunk-NMF2ZMZQ.js +15 -0
  37. package/dist-cli/chunks/{chunk-LDQ7HVCW.js → chunk-OHAZNXLK.js} +1 -1
  38. package/dist-cli/chunks/{chunk-NPVGMH2N.js → chunk-OVFJFXUD.js} +2 -2
  39. package/dist-cli/chunks/{chunk-BRIZOR4K.js → chunk-OZSSI4WN.js} +2 -2
  40. package/dist-cli/chunks/{chunk-WBT32R6N.js → chunk-QKDWYITG.js} +3 -3
  41. package/dist-cli/chunks/{chunk-L24Z3CRS.js → chunk-RSZWCKNT.js} +3 -3
  42. package/dist-cli/chunks/{chunk-B7KMNHX7.js → chunk-RTN5C5RL.js} +1 -1
  43. package/dist-cli/chunks/{chunk-KR5BGMBZ.js → chunk-TIVZIMMW.js} +2 -2
  44. package/dist-cli/chunks/{chunk-TBMVBI26.js → chunk-TZFFR3SD.js} +2 -2
  45. package/dist-cli/chunks/{chunk-TYE3WBSR.js → chunk-UC6U3MML.js} +2 -2
  46. package/dist-cli/chunks/{chunk-U4PN6JOT.js → chunk-VFCMSYZK.js} +2 -2
  47. package/dist-cli/chunks/{chunk-HG7ORJMT.js → chunk-VNQEB4L7.js} +2 -2
  48. package/dist-cli/chunks/{chunk-KZW5WBGU.js → chunk-VZXWHRUZ.js} +3 -3
  49. package/dist-cli/chunks/{chunk-OR3XTXEB.js → chunk-W6K4EFPH.js} +2 -2
  50. package/dist-cli/chunks/{chunk-BKNOLP3J.js → chunk-WEXDAC74.js} +2 -2
  51. package/dist-cli/chunks/{chunk-YZRFF4YA.js → chunk-WF3T4SVI.js} +2 -2
  52. package/dist-cli/chunks/{chunk-MENV7VLD.js → chunk-WINYQ44O.js} +1 -1
  53. package/dist-cli/chunks/{chunk-VZBLFMYC.js → chunk-WMIIKMGK.js} +2 -2
  54. package/dist-cli/chunks/{chunk-GZDHEONW.js → chunk-WUSWBCWA.js} +3 -3
  55. package/dist-cli/chunks/{chunk-JG6S4RSH.js → chunk-WWZIXIRD.js} +1 -1
  56. package/dist-cli/chunks/{chunk-TGQNQ6XT.js → chunk-XEVZYVIW.js} +1 -1
  57. package/dist-cli/chunks/{chunk-3D57IBPC.js → chunk-YDGQTMQL.js} +1 -1
  58. package/dist-cli/chunks/{chunk-4BXCZHAU.js → chunk-YIFT42WN.js} +2 -2
  59. package/dist-cli/chunks/chunk-ZMJD5GEC.js +125 -0
  60. package/dist-cli/chunks/{cleanup-H3GWQB63.js → cleanup-P27PA6JI.js} +2 -2
  61. package/dist-cli/chunks/cli-version-WWLPBDQ7.js +4 -0
  62. package/dist-cli/chunks/{compat-5WG2XJV7.js → compat-ZD65FED3.js} +2 -2
  63. package/dist-cli/chunks/{config-ANMBVVLL.js → config-XMJRNM2A.js} +2 -2
  64. package/dist-cli/chunks/{control-NSGNQFJG.js → control-KMIQT3QP.js} +2 -2
  65. package/dist-cli/chunks/daemon-G2ME7NLB.js +4 -0
  66. package/dist-cli/chunks/{debug-CHV2O2KF.js → debug-PT4HOP7N.js} +3 -3
  67. package/dist-cli/chunks/{desktop-FIPIK4CH.js → desktop-S3FG72AK.js} +3 -3
  68. package/dist-cli/chunks/{detox-CVUJP7K6.js → detox-B3D4IFCN.js} +2 -2
  69. package/dist-cli/chunks/{device-6WCUM4W6.js → device-XBNDSB2R.js} +2 -2
  70. package/dist-cli/chunks/{diagnose-I6EMWEII.js → diagnose-HMQXJE5N.js} +2 -2
  71. package/dist-cli/chunks/{disk-cleanup-P27CYFTN.js → disk-cleanup-BLCZ5BSZ.js} +2 -2
  72. package/dist-cli/chunks/drivers-LDECZGP2.js +4 -0
  73. package/dist-cli/chunks/{film-UOQFFYNF.js → film-BJGTBYZB.js} +3 -3
  74. package/dist-cli/chunks/flow-UEQNVTU7.js +4 -0
  75. package/dist-cli/chunks/help-T5FYSVGB.js +4 -0
  76. package/dist-cli/chunks/{hidden-runtime-alias-NJYFSJKZ.js → hidden-runtime-alias-ANOYADHM.js} +2 -2
  77. package/dist-cli/chunks/{home-paths-XOV44JEF.js → home-paths-GT3LFNOR.js} +2 -2
  78. package/dist-cli/chunks/inspect-ZA6XF5LD.js +4 -0
  79. package/dist-cli/chunks/install-desktop-TIMUDHPL.js +4 -0
  80. package/dist-cli/chunks/{login-BPFQENCX.js → login-FJ737MWG.js} +4 -4
  81. package/dist-cli/chunks/{logout-5A45ZGY7.js → logout-ZCNMMHMY.js} +2 -2
  82. package/dist-cli/chunks/{maestro-E4CSDMLM.js → maestro-SZTNKLDF.js} +3 -3
  83. package/dist-cli/chunks/{maestro-generate-CKMOJQX2.js → maestro-generate-DCFAIZ4H.js} +3 -3
  84. package/dist-cli/chunks/{mode-SZYNMIQF.js → mode-GRMQCRXR.js} +2 -2
  85. package/dist-cli/chunks/{optional-demo-registry-FRH4SFVG.js → optional-demo-registry-W36EWFFB.js} +2 -2
  86. package/dist-cli/chunks/{perf-VXU2XJAX.js → perf-QYBAAUZG.js} +2 -2
  87. package/dist-cli/chunks/{permissions-IRIAOVND.js → permissions-3QCQ6VF4.js} +2 -2
  88. package/dist-cli/chunks/{record-RY7FPLLH.js → record-QPPC2S4E.js} +3 -3
  89. package/dist-cli/chunks/{report-issue-KNWXOE53.js → report-issue-7NMFP4HK.js} +2 -2
  90. package/dist-cli/chunks/runtime-XOAXMSTU.js +4 -0
  91. package/dist-cli/chunks/{screenshot-command-QLALR6GY.js → screenshot-command-67AECJFB.js} +3 -3
  92. package/dist-cli/chunks/{screenshot-layers-OQFMFVRL.js → screenshot-layers-ASWBYPJL.js} +2 -2
  93. package/dist-cli/chunks/{screenshots-capture-6TSRJFGB.js → screenshots-capture-PXA3HFQK.js} +2 -2
  94. package/dist-cli/chunks/{serve-F54J2NQO.js → serve-BI2NBAXG.js} +2 -2
  95. package/dist-cli/chunks/{setup-7V6UKX4U.js → setup-7DWPMRSB.js} +2 -2
  96. package/dist-cli/chunks/{skills-QQBOSETH.js → skills-S3Y22TUA.js} +2 -2
  97. package/dist-cli/chunks/{storage-TAPMKK5O.js → storage-XUIMJWAJ.js} +2 -2
  98. package/dist-cli/chunks/store-JTHEJLAZ.js +4 -0
  99. package/dist-cli/chunks/telemetry-ZYJGD2DB.js +4 -0
  100. package/dist-cli/chunks/{timeline-IAM564NA.js → timeline-TMPLQPSP.js} +2 -2
  101. package/dist-cli/chunks/{upgrade-CD55QXIX.js → upgrade-7HDSIM7K.js} +2 -2
  102. package/dist-cli/chunks/upload-GMSZPWM6.js +4 -0
  103. package/dist-cli/chunks/{version-3DYJ5AS3.js → version-HOCHZ37L.js} +2 -2
  104. package/dist-cli/chunks/{web-6NW6YLPI.js → web-DG3WBYD3.js} +2 -2
  105. package/dist-cli/chunks/{what-happened-CZZDOOVG.js → what-happened-XFVUTZR7.js} +2 -2
  106. package/dist-lib/agent-daemon-client.cjs +1 -1
  107. package/dist-lib/agent-events.cjs +1 -1
  108. package/dist-lib/agent-identity.cjs +1 -1
  109. package/dist-lib/agent-sessions.cjs +1 -1
  110. package/dist-lib/attached-projects.cjs +1 -1
  111. package/dist-lib/auth/shared-session.cjs +1 -1
  112. package/dist-lib/backend-origin.cjs +1 -1
  113. package/dist-lib/beta.cjs +1 -1
  114. package/dist-lib/beta.mjs +1 -1
  115. package/dist-lib/bridge-constants.cjs +1 -1
  116. package/dist-lib/cli-constants.cjs +1 -1
  117. package/dist-lib/config.cjs +1 -1
  118. package/dist-lib/detox/index.cjs +1 -1
  119. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  120. package/dist-lib/home-paths.cjs +1 -1
  121. package/dist-lib/host/bridge-host.cjs +1 -1
  122. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  123. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  124. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  125. package/dist-lib/host/websocket-proxy.cjs +1 -1
  126. package/dist-lib/index.cjs +1 -1
  127. package/dist-lib/jump-to-source-babel.cjs +1 -1
  128. package/dist-lib/menu.cjs +1 -1
  129. package/dist-lib/menu.mjs +1 -1
  130. package/dist-lib/metro.cjs +1 -1
  131. package/dist-lib/profiles.cjs +1 -1
  132. package/dist-lib/public-brand.cjs +1 -1
  133. package/dist-lib/render-mode.cjs +1 -1
  134. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  135. package/dist-lib/sdk.cjs +1 -1
  136. package/dist-lib/sdk.mjs +1 -1
  137. package/dist-lib/skills.cjs +15 -4
  138. package/dist-lib/vite.cjs +1 -1
  139. package/package.json +1 -1
  140. package/dist-cli/chunks/chunk-6UKJB2VC.js +0 -125
  141. package/dist-cli/chunks/chunk-HMDOLCKG.js +0 -15
  142. package/dist-cli/chunks/cli-version-3QPAJ3LC.js +0 -4
  143. package/dist-cli/chunks/daemon-JHF4BJ3U.js +0 -4
  144. package/dist-cli/chunks/drivers-HQ6AKZT6.js +0 -4
  145. package/dist-cli/chunks/flow-N27MRRNL.js +0 -4
  146. package/dist-cli/chunks/help-SF6FEGEE.js +0 -4
  147. package/dist-cli/chunks/inspect-CWFRFQTY.js +0 -4
  148. package/dist-cli/chunks/install-desktop-KLQDNXZQ.js +0 -4
  149. package/dist-cli/chunks/runtime-AR3GJTGK.js +0 -4
  150. package/dist-cli/chunks/store-7NX3S43H.js +0 -4
  151. package/dist-cli/chunks/telemetry-E7BUK6RA.js +0 -4
  152. package/dist-cli/chunks/upload-GZ6LIMYM.js +0 -4
@@ -1,7 +1,7 @@
1
- /*! rnx v0.1.312 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.313 | (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 y,b as M}from"./chunk-G74YIEVS.js";import{a as A}from"./chunk-B7KMNHX7.js";import{b as C}from"./chunk-7VWOSTD5.js";import{G as T,o as E,q as b}from"./chunk-66NF2KNG.js";import v from"fs";import S from"path";var h="default",H="profiles.json",u=1;function d(e){let t=e.trim();if(!t)throw new Error("profile id is required");if(!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(t))throw new Error("profile ids must start with a letter or number and contain only letters, numbers, dot, dash, or underscore");if(t==="."||t==="..")throw new Error(`invalid profile id: ${t}`);return t}function P(){return S.join(b(),H)}function z(e){return`sootsim-profile-${d(e)}`}function J(e){return S.join(E(),"Partitions",z(e))}function x(e){return S.join(b(),"playwright",d(e))}function k(){try{let e=JSON.parse(v.readFileSync(P(),"utf8"));if(!e||e.version!==u)return{version:u,profiles:[]};let t=Array.isArray(e.profiles)?e.profiles.filter(r=>!!r&&typeof r.id=="string"&&typeof r.createdAt=="string"&&typeof r.updatedAt=="string").map(r=>({id:d(r.id),createdAt:r.createdAt,updatedAt:r.updatedAt})):[];return{version:u,profiles:t}}catch{return{version:u,profiles:[]}}}function R(e){return[...e].sort((t,r)=>t.id===h?-1:r.id===h?1:t.id.localeCompare(r.id))}function O(e){if(e.profiles.some(r=>r.id===h))return{...e,profiles:R(e.profiles)};let t=new Date().toISOString();return{version:u,profiles:R([{id:h,createdAt:t,updatedAt:t},...e.profiles])}}function D(e){T();let t=O(e),r=`${P()}.tmp`;return v.writeFileSync(r,`${JSON.stringify(t,null,2)}
4
+ import{a as y,b as M}from"./chunk-5DHC6KHQ.js";import{a as A}from"./chunk-RTN5C5RL.js";import{b as C}from"./chunk-IJ5CAZZC.js";import{G as T,o as E,q as b}from"./chunk-FSUYIVJ6.js";import v from"fs";import S from"path";var h="default",H="profiles.json",u=1;function d(e){let t=e.trim();if(!t)throw new Error("profile id is required");if(!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(t))throw new Error("profile ids must start with a letter or number and contain only letters, numbers, dot, dash, or underscore");if(t==="."||t==="..")throw new Error(`invalid profile id: ${t}`);return t}function P(){return S.join(b(),H)}function z(e){return`sootsim-profile-${d(e)}`}function J(e){return S.join(E(),"Partitions",z(e))}function x(e){return S.join(b(),"playwright",d(e))}function k(){try{let e=JSON.parse(v.readFileSync(P(),"utf8"));if(!e||e.version!==u)return{version:u,profiles:[]};let t=Array.isArray(e.profiles)?e.profiles.filter(r=>!!r&&typeof r.id=="string"&&typeof r.createdAt=="string"&&typeof r.updatedAt=="string").map(r=>({id:d(r.id),createdAt:r.createdAt,updatedAt:r.updatedAt})):[];return{version:u,profiles:t}}catch{return{version:u,profiles:[]}}}function R(e){return[...e].sort((t,r)=>t.id===h?-1:r.id===h?1:t.id.localeCompare(r.id))}function O(e){if(e.profiles.some(r=>r.id===h))return{...e,profiles:R(e.profiles)};let t=new Date().toISOString();return{version:u,profiles:R([{id:h,createdAt:t,updatedAt:t},...e.profiles])}}function D(e){T();let t=O(e),r=`${P()}.tmp`;return v.writeFileSync(r,`${JSON.stringify(t,null,2)}
5
5
  `,"utf8"),v.renameSync(r,P()),t}function K(){return D(k()).profiles}function Y(e){let t=d(e);return K().find(r=>r.id===t)??null}function L(e=h){let t=d(e),r=Y(t);return r||V(t)}function V(e){let t=d(e),r=O(k());if(r.profiles.some(i=>i.id===t))throw new Error(`profile already exists: ${t}`);let o=new Date().toISOString(),n={id:t,createdAt:o,updatedAt:o};return D({version:u,profiles:[...r.profiles,n]}),n}function ve(e){let t=d(e);if(t===h)throw new Error("the default profile cannot be deleted; clear it instead");let r=O(k()),o=r.profiles.find(n=>n.id===t);if(!o)throw new Error(`profile not found: ${t}`);return D({version:u,profiles:r.profiles.filter(n=>n.id!==t)}),X(t),o}function X(e){let t=d(e);for(let r of[J(t),x(t)])try{v.rmSync(r,{recursive:!0,force:!0})}catch{}}function Z(){let e=y();return e?{available:!0,reason:null,detail:`${e.kind} @ ${e.path}`}:{available:!1,reason:"rnxsim desktop app not installed (run `rnxsim desktop install`)"}}async function Q(e){let t=y();if(!t)return{launched:!1,message:"rnxsim desktop app not installed"};try{let r=await M(e.url,t,{device:e.device,profileId:e.profileId,ephemeralProfile:e.ephemeralProfile,ownerPid:e.ownerPid});return r.launched?{launched:!0,message:e.url?`electron launched via ${r.via} \u2192 ${e.url}`:`electron launched via ${r.via}`,target:r.target,attachUrl:e.url}:{launched:!1,message:"desktop companion failed to start"}}catch(r){return{launched:!1,message:`electron launch failed: ${r instanceof Error?r.message:String(r)}`}}}var W={id:"electron",name:"electron",description:"rnxsim desktop companion app (native window, menu bar)",kind:"native",availability:Z,launch:Q};import{spawn as ie}from"child_process";import{closeSync as se,mkdtempSync as ae,openSync as le,readFileSync as ce}from"fs";import{tmpdir as G}from"os";import{join as B}from"path";import{spawnSync as $}from"node:child_process";import{existsSync as F,readFileSync as ee}from"node:fs";import{createRequire as re}from"node:module";import{dirname as te,join as oe}from"node:path";var ne=`
6
6
  const { existsSync } = require('node:fs');
7
7
  const modulePath = process.env.SOOTSIM_PW_MODULE;
@@ -502,6 +502,6 @@ const cleanupProfile = () => {
502
502
  process.stderr.write(String((err && err.stack) || err) + '\\n');
503
503
  process.exit(1);
504
504
  });
505
- `;function ue(){let e=I();return e?{available:!0,reason:null,detail:`resolved via ${e.spec}@${e.version}`}:{available:!1,reason:"playwright not installed in the current workspace"}}function he(e,t){return process.platform!=="linux"||e.headless||process.env.DISPLAY||process.env.WAYLAND_DISPLAY||!/missing x server|cannot open display|x server|x11/i.test(t)?null:" hint: linux without DISPLAY/WAYLAND_DISPLAY \u2014 rerun without --headed (or add --headless) to run playwright headless."}function pe(e){return e.profileId?x(L(e.profileId).id):e.ephemeralProfile?ae(B(G(),"sootsim-playwright-profile-")):""}async function fe(e){let t=I();if(!t)return{launched:!1,message:"playwright not installed \u2014 run `bun add -D playwright` first"};if(!e.url)return{launched:!1,message:"playwright driver requires a target url"};let r=e.ownerPid;if(r===void 0||!Number.isInteger(r)||r<=1)return{launched:!1,message:"playwright driver requires a valid owning session process"};let o={...process.env},n=U(t,o);if(!n.ok)return{launched:!1,message:`playwright browser provisioning failed: ${n.message}`};let i=B(G(),`sootsim-playwright-host-${Date.now().toString(36)}-${process.pid}.log`),a=`${i}.connected`,l=le(i,"a");try{let s=ie(process.execPath,["-e",de],{detached:!0,stdio:["ignore","ignore",l],env:{...o,SOOTSIM_PW_MODULE:t.modulePath,SOOTSIM_PW_URL:e.url,SOOTSIM_PW_BRIDGE_PORT:e.bridgePort?String(e.bridgePort):"",SOOTSIM_PW_HEADLESS:e.headless??!0?"1":"0",SOOTSIM_PW_USERDATADIR:pe(e),SOOTSIM_PW_CDP_PORT:e.cdpPort?String(e.cdpPort):"",SOOTSIM_PW_VIEWPORT:e.viewport?`${e.viewport.width}x${e.viewport.height}`:"",SOOTSIM_PW_CONNECTED_ACK_FILE:a,SOOTSIM_PW_CONNECT_TIMEOUT_MS:String(e.connectTimeoutMs??12e4),SOOTSIM_PW_OWNER_PID:String(r)}});s.unref();let p=await new Promise(c=>{let w=setTimeout(()=>c(null),4e3);s.once("exit",q=>{clearTimeout(w),c(q??0)})});if(p!==null){let c=ce(i,"utf8").trim(),w=he(e,c);return{launched:!1,message:`playwright host exited early (code ${p}) \u2014 host log ${i}${c?`:
505
+ `;function ue(){let e=I();return e?{available:!0,reason:null,detail:`resolved via ${e.spec}@${e.version}`}:{available:!1,reason:"playwright not installed in the current workspace"}}function he(e,t){return process.platform!=="linux"||e.headless||process.env.DISPLAY||process.env.WAYLAND_DISPLAY||!/missing x server|cannot open display|x server|x11/i.test(t)?null:" hint: linux without DISPLAY/WAYLAND_DISPLAY \u2014 rerun without --headed (or add --headless) to run playwright headless."}function pe(e){return e.profileId?x(L(e.profileId).id):e.ephemeralProfile?ae(B(G(),"sootsim-playwright-profile-")):""}async function fe(e){let t=I();if(!t)return{launched:!1,message:"playwright not installed \u2014 run `bun add -D playwright` first"};if(!e.url)return{launched:!1,message:"playwright driver requires a target url"};let r=e.ownerPid;if(r===void 0||!Number.isInteger(r)||r<=1)return{launched:!1,message:"playwright driver requires a valid owning session process"};let o={...process.env},n=U(t,o);if(!n.ok)return{launched:!1,message:`playwright browser provisioning failed: ${n.message}`};let i=B(G(),`sootsim-playwright-host-${Date.now().toString(36)}-${process.pid}.log`),a=`${i}.connected`,l=le(i,"a");try{let s=ie(process.execPath,["-e",de],{detached:!0,stdio:["ignore","ignore",l],env:{...o,SOOTSIM_PW_MODULE:t.modulePath,SOOTSIM_PW_URL:e.url,SOOTSIM_PW_BRIDGE_PORT:e.bridgePort?String(e.bridgePort):"",SOOTSIM_PW_HEADLESS:e.headless??!0?"1":"0",SOOTSIM_PW_USERDATADIR:pe(e),SOOTSIM_PW_CDP_PORT:e.cdpPort?String(e.cdpPort):"",...e.viewport?{SOOTSIM_PW_VIEWPORT:`${e.viewport.width}x${e.viewport.height}`}:{},SOOTSIM_PW_CONNECTED_ACK_FILE:a,SOOTSIM_PW_CONNECT_TIMEOUT_MS:String(e.connectTimeoutMs??12e4),SOOTSIM_PW_OWNER_PID:String(r)}});s.unref();let p=await new Promise(c=>{let w=setTimeout(()=>c(null),4e3);s.once("exit",q=>{clearTimeout(w),c(q??0)})});if(p!==null){let c=ce(i,"utf8").trim(),w=he(e,c);return{launched:!1,message:`playwright host exited early (code ${p}) \u2014 host log ${i}${c?`:
506
506
  ${c}`:""}${w?`
507
507
  ${w}`:""}`}}let f=C(r),g=` \u2014 browser closes when pid ${r}${f?` (${f})`:""} exits`;return{launched:!0,message:`playwright chrome launched \u2192 ${e.url}${g}`,pid:s.pid,target:t.spec,attachUrl:e.url,connectAckFile:a,diagnosticLogPath:i}}catch(s){return{launched:!1,message:`playwright launch failed: ${s instanceof Error?s.message:String(s)}`}}finally{se(l)}}var j={id:"playwright",name:"playwright",description:"programmatic chromium via the playwright package \u2014 headless default",kind:"automation",availability:ue,launch:fe};var m=[W,j];function $e(){return m}function Fe(e){return m.find(t=>t.id===e)??null}function Ue(e,t){if(e)return m.find(o=>o.id===e)??null;for(let r of t){let o=m.find(n=>n.id===r);if(o&&o.availability().available)return o}return null}function Ge(){return m.map(e=>{let t=e.availability();return{id:e.id,name:e.name,kind:e.kind,description:e.description,available:t.available,reason:t.reason,detail:t.detail??null}})}export{K as a,L as b,V as c,ve as d,X as e,W as f,j as g,m as h,$e as i,Fe as j,Ue as k,Ge as l};