sootsim 0.1.150 → 0.1.152

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 (150) hide show
  1. package/dist-cli/bin.js +3 -3
  2. package/dist-cli/chunks/{agent-LSSBQD6J.js → agent-URVJOKFR.js} +2 -2
  3. package/dist-cli/chunks/{agent-wrapper-HYZ3VS4M.js → agent-wrapper-73YIYNDO.js} +2 -2
  4. package/dist-cli/chunks/{app-fonts-XXHCZZVE.js → app-fonts-OEG4MO3O.js} +2 -2
  5. package/dist-cli/chunks/{assert-7I2ANKDG.js → assert-XE7724HR.js} +2 -2
  6. package/dist-cli/chunks/auto-bootstrap-KIVFMYKA.js +2 -0
  7. package/dist-cli/chunks/beta-YMZIDOZC.js +2 -0
  8. package/dist-cli/chunks/{camera-4D7T4PZW.js → camera-XDX3TEIA.js} +2 -2
  9. package/dist-cli/chunks/{chunk-7YEISEQ2.js → chunk-3M46FQ2H.js} +2 -2
  10. package/dist-cli/chunks/chunk-3QQ4WEDP.js +1 -0
  11. package/dist-cli/chunks/{chunk-DNTULI35.js → chunk-42IGHH7U.js} +1 -1
  12. package/dist-cli/chunks/{chunk-GXFEY4YV.js → chunk-4ZQHJ2LD.js} +1 -1
  13. package/dist-cli/chunks/{chunk-NK5T7NYR.js → chunk-6WD7VNN7.js} +1 -1
  14. package/dist-cli/chunks/{chunk-WQF5CLFD.js → chunk-A3NUKJZO.js} +3 -3
  15. package/dist-cli/chunks/{chunk-3RRDJNXM.js → chunk-A6AU7FG6.js} +2 -2
  16. package/dist-cli/chunks/{chunk-PGAGVXOZ.js → chunk-AHDSZKGA.js} +2 -2
  17. package/dist-cli/chunks/{chunk-3CENW2HN.js → chunk-AN6JOHDA.js} +2 -2
  18. package/dist-cli/chunks/{chunk-IADOI73U.js → chunk-AOCR2CD7.js} +2 -2
  19. package/dist-cli/chunks/{chunk-KIDONDPE.js → chunk-BBTJZTFD.js} +2 -2
  20. package/dist-cli/chunks/{chunk-PFFELWZN.js → chunk-BQJV36HU.js} +2 -2
  21. package/dist-cli/chunks/{chunk-36L4ANT2.js → chunk-BSHQ5LBD.js} +1 -1
  22. package/dist-cli/chunks/{chunk-6UA5JZ4E.js → chunk-FI3MX5RA.js} +2 -2
  23. package/dist-cli/chunks/{chunk-BFGPENAX.js → chunk-G3Q7KPV4.js} +1 -1
  24. package/dist-cli/chunks/{chunk-65GDTEX7.js → chunk-H2OQW4BL.js} +3 -3
  25. package/dist-cli/chunks/{chunk-3K237XV5.js → chunk-HJJXFBPX.js} +1 -1
  26. package/dist-cli/chunks/{chunk-NI2TIFUK.js → chunk-HQVHLEVY.js} +1 -1
  27. package/dist-cli/chunks/{chunk-6SXJQK5R.js → chunk-IFJ6JPWX.js} +3 -3
  28. package/dist-cli/chunks/{chunk-NISJ26VT.js → chunk-IGOGHY64.js} +2 -2
  29. package/dist-cli/chunks/{chunk-LBZGVNQE.js → chunk-IPKUT3NW.js} +1 -1
  30. package/dist-cli/chunks/{chunk-45XLWBNT.js → chunk-KQ5DX2FL.js} +1 -1
  31. package/dist-cli/chunks/{chunk-CDLPRRMH.js → chunk-LHSK2AQC.js} +2 -2
  32. package/dist-cli/chunks/{chunk-KO4VABY3.js → chunk-LOXEQ4OP.js} +1 -1
  33. package/dist-cli/chunks/{chunk-QIGU47UD.js → chunk-MGPNEZMT.js} +1 -1
  34. package/dist-cli/chunks/{chunk-3MWCUIK4.js → chunk-NJHB3U4Y.js} +2 -2
  35. package/dist-cli/chunks/{chunk-VJRAGYZ6.js → chunk-NNCA2HGI.js} +2 -2
  36. package/dist-cli/chunks/{chunk-B43JOK5N.js → chunk-NZPLKMSV.js} +2 -2
  37. package/dist-cli/chunks/{chunk-BUKMAGA6.js → chunk-OW3UFAND.js} +2 -2
  38. package/dist-cli/chunks/{chunk-NSEXBZUW.js → chunk-QEQF7ENZ.js} +2 -2
  39. package/dist-cli/chunks/{chunk-5Q464MLB.js → chunk-QFCV5A2F.js} +1 -1
  40. package/dist-cli/chunks/chunk-QKOVR72W.js +1 -0
  41. package/dist-cli/chunks/chunk-SARXTEIR.js +2 -0
  42. package/dist-cli/chunks/chunk-T2NDDQMC.js +1 -0
  43. package/dist-cli/chunks/{chunk-BWVKFTFM.js → chunk-TD3Z6FJN.js} +1 -1
  44. package/dist-cli/chunks/{chunk-NHDDW7WP.js → chunk-TW5OHRSG.js} +1 -1
  45. package/dist-cli/chunks/{chunk-LPVQM4H7.js → chunk-U67KLQVW.js} +2 -2
  46. package/dist-cli/chunks/{chunk-YLSVHL4W.js → chunk-US6SE4QV.js} +2 -2
  47. package/dist-cli/chunks/{chunk-IIJQQIAP.js → chunk-V5WZEFDP.js} +2 -2
  48. package/dist-cli/chunks/{chunk-YSN32GSR.js → chunk-V7YDKVRT.js} +2 -2
  49. package/dist-cli/chunks/{chunk-WNJOX4AQ.js → chunk-VIELKBJ6.js} +2 -2
  50. package/dist-cli/chunks/{chunk-JPWK6SFZ.js → chunk-WZXPKEQL.js} +1 -1
  51. package/dist-cli/chunks/{chunk-3J5I64W6.js → chunk-X4SL3FWM.js} +2 -2
  52. package/dist-cli/chunks/{chunk-MFPT2P6I.js → chunk-YRCAWRYU.js} +1 -1
  53. package/dist-cli/chunks/{chunk-WZ5JKRIA.js → chunk-YUHAC5LG.js} +2 -2
  54. package/dist-cli/chunks/cli-version-TWV3TFQ3.js +2 -0
  55. package/dist-cli/chunks/{compat-EPSPO3GI.js → compat-FE2GEVSP.js} +3 -3
  56. package/dist-cli/chunks/{config-7YGGAVYO.js → config-QKDBBBFW.js} +2 -2
  57. package/dist-cli/chunks/{control-TMFCD2NX.js → control-L3JMCHKG.js} +2 -2
  58. package/dist-cli/chunks/{cpu-profile-44YYVMOE.js → cpu-profile-YLKJMGUU.js} +2 -2
  59. package/dist-cli/chunks/{daemon-4XLAN5CC.js → daemon-BFAKPK23.js} +2 -2
  60. package/dist-cli/chunks/{debug-MUYM2RWK.js → debug-5XWSMAEY.js} +3 -3
  61. package/dist-cli/chunks/{detox-NZJVVCA3.js → detox-6YK4JUL7.js} +2 -2
  62. package/dist-cli/chunks/{device-7HMHAQ2Q.js → device-XAGXQWCU.js} +2 -2
  63. package/dist-cli/chunks/{diagnose-FXVOC7LV.js → diagnose-LSEBEQRY.js} +2 -2
  64. package/dist-cli/chunks/drivers-NS3LOKMD.js +2 -0
  65. package/dist-cli/chunks/{electron-NKK6Z2F3.js → electron-SA3SV6UY.js} +3 -3
  66. package/dist-cli/chunks/flow-XTVNMYAH.js +2 -0
  67. package/dist-cli/chunks/help-22JRBXSN.js +2 -0
  68. package/dist-cli/chunks/{hints-BLVNUKRX.js → hints-EHBTJHUI.js} +2 -2
  69. package/dist-cli/chunks/{home-paths-2QMRDV5X.js → home-paths-2N2B7LN2.js} +2 -2
  70. package/dist-cli/chunks/{inspect-E6Z6N3PK.js → inspect-KL7CMTWX.js} +114 -105
  71. package/dist-cli/chunks/install-IZDG63T5.js +2 -0
  72. package/dist-cli/chunks/{install-desktop-O2E7FC4R.js → install-desktop-6M27SW3X.js} +3 -3
  73. package/dist-cli/chunks/{keys-GWXMM5CC.js → keys-5DN6QA44.js} +2 -2
  74. package/dist-cli/chunks/{launch-KWMHPASG.js → launch-T2FDKJG4.js} +3 -3
  75. package/dist-cli/chunks/{login-AJO4L3ZI.js → login-OQV4ZCHQ.js} +4 -4
  76. package/dist-cli/chunks/{logout-ZVGPEGAB.js → logout-4LVSTCVR.js} +2 -2
  77. package/dist-cli/chunks/{maestro-4QX23OEI.js → maestro-NEFF35FI.js} +2 -2
  78. package/dist-cli/chunks/optional-demo-registry-BELFZOQ7.js +2 -0
  79. package/dist-cli/chunks/{preview-CGBGA343.js → preview-45X2RX4V.js} +2 -2
  80. package/dist-cli/chunks/{profile-RLKDXLSK.js → profile-CB6ROMKP.js} +2 -2
  81. package/dist-cli/chunks/{react-W2VGA55C.js → react-APJTHAUG.js} +2 -2
  82. package/dist-cli/chunks/{record-CF2HMY5Y.js → record-FHQFTXRJ.js} +2 -2
  83. package/dist-cli/chunks/runtime-B7K6SZWG.js +2 -0
  84. package/dist-cli/chunks/{runtime-delivery-DZWXR2A5.js → runtime-delivery-OVTPB7AF.js} +2 -2
  85. package/dist-cli/chunks/{screenshot-YV7USPJA.js → screenshot-X6PKMHZD.js} +2 -2
  86. package/dist-cli/chunks/{screenshot-mode-V27UKIG6.js → screenshot-mode-AFR7MPX7.js} +2 -2
  87. package/dist-cli/chunks/{screenshots-BUOMYKKW.js → screenshots-LPXTJRA3.js} +2 -2
  88. package/dist-cli/chunks/{server-6EZSHZV3.js → server-UNWWKLBD.js} +3 -3
  89. package/dist-cli/chunks/setup-repo-6NH6DGUZ.js +2 -0
  90. package/dist-cli/chunks/{skills-NXDCB76R.js → skills-NLF6QK66.js} +2 -2
  91. package/dist-cli/chunks/{slides-6LF76Q4J.js → slides-AV3CI3OJ.js} +2 -2
  92. package/dist-cli/chunks/{start-5VNJWI56.js → start-VQOSYBXB.js} +4 -4
  93. package/dist-cli/chunks/store-Q4QFSOED.js +2 -0
  94. package/dist-cli/chunks/telemetry-RQO4MFL2.js +2 -0
  95. package/dist-cli/chunks/{test-KPKJXRDI.js → test-XN75KVKO.js} +3 -3
  96. package/dist-cli/chunks/{three-mode-RWCVKNGM.js → three-mode-7WW3Q4SM.js} +2 -2
  97. package/dist-cli/chunks/{timeline-SRG5UM44.js → timeline-ZAVFYKLA.js} +2 -2
  98. package/dist-cli/chunks/{upgrade-LMUTKCI4.js → upgrade-Y2ADK7EE.js} +2 -2
  99. package/dist-cli/chunks/upload-WYFEDT7T.js +2 -0
  100. package/dist-cli/chunks/{version-P4LKM55A.js → version-RUSJ5QZA.js} +2 -2
  101. package/dist-cli/chunks/web-UMQ7ZOWC.js +2 -0
  102. package/dist-cli/chunks/{what-happened-AFWB7XTD.js → what-happened-33FFOC5R.js} +2 -2
  103. package/dist-cli/chunks/{whoami-YXJ6KECJ.js → whoami-FAAZEBWU.js} +2 -2
  104. package/dist-lib/agent-daemon-client.cjs +1 -1
  105. package/dist-lib/agent-events.cjs +1 -1
  106. package/dist-lib/agent-sessions.cjs +1 -1
  107. package/dist-lib/attached-projects.cjs +1 -1
  108. package/dist-lib/auth/shared-session.cjs +1 -1
  109. package/dist-lib/backend-origin.cjs +1 -1
  110. package/dist-lib/beta.cjs +1 -1
  111. package/dist-lib/beta.mjs +1 -1
  112. package/dist-lib/bridge-constants.cjs +1 -1
  113. package/dist-lib/cli-constants.cjs +1 -1
  114. package/dist-lib/config.cjs +1 -1
  115. package/dist-lib/detox/index.cjs +1 -1
  116. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  117. package/dist-lib/home-paths.cjs +1 -1
  118. package/dist-lib/host/bridge-host.cjs +1 -1
  119. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  120. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  121. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  122. package/dist-lib/host/websocket-proxy.cjs +1 -1
  123. package/dist-lib/index.cjs +1 -1
  124. package/dist-lib/metro.cjs +1 -1
  125. package/dist-lib/profiles.cjs +1 -1
  126. package/dist-lib/render-mode.cjs +1 -1
  127. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  128. package/dist-lib/sdk.cjs +1 -1
  129. package/dist-lib/sdk.mjs +1 -1
  130. package/dist-lib/skills.cjs +3 -3
  131. package/dist-lib/vite.cjs +1 -1
  132. package/package.json +1 -1
  133. package/dist-cli/chunks/auto-bootstrap-YJM7QYAO.js +0 -2
  134. package/dist-cli/chunks/beta-EQOZMXP3.js +0 -2
  135. package/dist-cli/chunks/chunk-H5YQDCRA.js +0 -1
  136. package/dist-cli/chunks/chunk-OYWQKX2A.js +0 -2
  137. package/dist-cli/chunks/chunk-PHRIZLTZ.js +0 -1
  138. package/dist-cli/chunks/chunk-YKWGZWBE.js +0 -1
  139. package/dist-cli/chunks/cli-version-QHAJ7OMR.js +0 -2
  140. package/dist-cli/chunks/drivers-GM6GJG7Q.js +0 -2
  141. package/dist-cli/chunks/flow-3E4SG5M7.js +0 -2
  142. package/dist-cli/chunks/help-VIYWVIUB.js +0 -2
  143. package/dist-cli/chunks/install-U7C5NDWU.js +0 -2
  144. package/dist-cli/chunks/optional-demo-registry-LKCGAST6.js +0 -2
  145. package/dist-cli/chunks/runtime-A7DUL4IU.js +0 -2
  146. package/dist-cli/chunks/setup-repo-MCAZJVL5.js +0 -2
  147. package/dist-cli/chunks/store-SX54DA6L.js +0 -2
  148. package/dist-cli/chunks/telemetry-PHXMPEY3.js +0 -2
  149. package/dist-cli/chunks/upload-3YJQJYAD.js +0 -2
  150. package/dist-cli/chunks/web-5ZYKOZJG.js +0 -2
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.150 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.152 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import{execFileSync as h,spawn as g}from"child_process";import{existsSync as s,readdirSync as k}from"fs";import{dirname as m,join as l,resolve as a}from"path";import{fileURLToPath as v}from"url";var c;function p(){if(c!==void 0)return c;try{c=m(v(import.meta.resolve("sootsim-engine/package.json")))}catch{c=null}return c}var I="dev.sootsim.simulator";function x(){let n=p();if(!n)return null;let e=l(n,"dist-electron/main.cjs");if(!s(e))return null;let i=D(n);return i?{path:i,platform:process.platform,kind:"dev-electron",engineDir:n}:null}function b(){let n=p();return n?s(l(n,"src-electron/main.ts")):!1}function D(n){let e=n;for(let i=0;i<6;i++){let t=l(e,"node_modules/.bin/electron");if(s(t))return t;let r=m(e);if(r===e)break;e=r}return null}function C(){let n=p(),i=["/Applications/sootsim.app",a(process.env.HOME||"","Applications/sootsim.app"),...n?[a(n,"app/sootsim.app")]:[]].find(t=>s(t));if(i)return{path:i,platform:"darwin",kind:"mac-app"};try{let t=h("mdfind",[`kMDItemCFBundleIdentifier == "${I}"`],{encoding:"utf8",timeout:3e3}).trim();if(t)return{path:t.split(`
3
3
  `)[0],platform:"darwin",kind:"mac-app"}}catch{}return null}function f(n){if(!s(n))return null;let e=k(n).filter(i=>i.startsWith("sootsim")&&i.endsWith(".AppImage")).sort().reverse()[0];return e?l(n,e):null}function w(){let n=p(),i=[a(process.env.HOME||"","Applications/sootsim.AppImage"),a(process.env.HOME||"",".local/bin/sootsim.AppImage"),"/opt/sootsim/sootsim.AppImage","/opt/sootsim/sootsim",...n?[a(n,"app/sootsim.AppImage"),a(n,"release/linux-unpacked/sootsim")]:[]].find(r=>s(r));if(i)return{path:i,platform:"linux",kind:i.endsWith(".AppImage")?"linux-appimage":"linux-binary"};let t=n?f(a(n,"app"))||f(a(n,"release")):null;return t?{path:t,platform:"linux",kind:"linux-appimage"}:null}function A(){let n=x();if(n)return n;if(b()){let e=p(),i=l(e,"dist-electron/main.cjs");return s(i)?console.error(` no node_modules/.bin/electron found near ${e}. run \`bun install\`.`):console.error(` dist-electron/main.cjs missing in ${e}.
4
4
  run: bun run --cwd packages/sootsim-engine build:electron-main
@@ -1,2 +1,2 @@
1
- /*! sootsim v0.1.150 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.152 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  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"}},c=new Set(["list","describe","find","get","do","wait","network","logs","shell"]),p=new Set(["do","get","wait","shell","debug"]),b={tap:"sootsim do tap","double-tap":"sootsim do double-tap","tap-text":"sootsim do tap-text","tap-id":"sootsim do tap-id",type:"sootsim do type","type-into":"sootsim do type-into",key:"sootsim do key",dispatch:"sootsim do dispatch",dismiss:"sootsim do dismiss",scroll:"sootsim do scroll",drag:"sootsim do drag",swipe:"sootsim do swipe",pinch:"sootsim do pinch",reload:"sootsim do reload",sleep:"sootsim do sleep",settle:"sootsim do settle",tree:"sootsim get tree",a11y:"sootsim get a11y",count:"sootsim get count",layout:"sootsim get layout",url:"sootsim get url",globals:"sootsim get globals",errors:"sootsim get errors",warnings:"sootsim get warnings",requests:"sootsim get requests",node:"sootsim get node",state:"sootsim debug state",js:"sootsim debug js",eval:"sootsim debug eval",perf:"sootsim debug perf","sample-color":"sootsim debug sample-color","find-id":"sootsim find --testid",query:"sootsim find --text|--role|--type|--pressable|--visible",capture:"sootsim screenshot"},u=new Set(["preview","test","detox","maestro","flow","record","profile","cpu-profile","react","screenshot","screenshots","screenshot-mode","slides","three-mode","3d-mode","inspect","debug","camera","timeline","what-happened","diagnose","shell","assert","device","open","list","use","focus","claim","close","config","compat","scan","electron","login","logout","whoami","install","setup-repo","install-desktop","server","daemon","runtime","upgrade","version","launch","start","skills","upload","app-fonts","keys","hints","agent-wrapper","agent",...c,...Object.keys(b)]);function h(g){let i=g.slice(2),e={command:null,commandArgs:[],globalFlags:{},help:!1,version:!1,verbose:!1},s=0;for(;s<i.length;){let o=i[s];if(o==="--"){e.commandArgs.push(...i.slice(s+1));break}let a=Object.entries(m).find(([n,t])=>n===o||t.short===o);if(a){let[n,t]=a,l=n.replace(/^--/,"");if(t.type==="boolean")e.globalFlags[l]=!0,s++;else{let r=i[s+1];if(r===void 0||r.startsWith("-")){console.error(` warning: ${o} requires a value`),s++;continue}if(t.type==="number"){let d=Number(r);if(Number.isNaN(d)){console.error(` warning: ${o} requires a number, got "${r}"`),s+=2;continue}e.globalFlags[l]=d}else e.globalFlags[l]=r;s+=2}continue}if(!e.command&&!o.startsWith("-")){let n=o.indexOf("-");if(n>0){let t=o.slice(0,n),l=o.slice(n+1);if(p.has(t)&&l.length>0){e.command=t;let r=i.slice(s+1);e.commandArgs=[l,...r[0]==="--"?r.slice(1):r];break}}if(u.has(o)){e.command=o;let t=i.slice(s+1);e.commandArgs=t[0]==="--"?t.slice(1):t;break}e.commandArgs=i.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{c as a,b,h as c};
@@ -1,3 +1,3 @@
1
- /*! sootsim v0.1.150 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{n as d}from"./chunk-NHDDW7WP.js";import{chmodSync as S,existsSync as f,mkdirSync as k,readFileSync as A,rmSync as i,writeFileSync as y}from"node:fs";import{dirname as c,join as D,resolve as m}from"node:path";var s=1,p="SOOTSIM_SHARED_AUTH_FILE",u="https://sootbean.com";function w(){let t=process.env[p];return t?.trim()?c(m(t)):d()}function a(){let t=process.env[p];return t?.trim()?m(t):D(w(),"desktop-auth.json")}function g(t){if(!t||typeof t!="object")return null;let e=t;return typeof e.id!="string"||!e.id.trim()?null:{id:e.id.trim(),name:typeof e.name=="string"?e.name:void 0,email:typeof e.email=="string"?e.email:void 0,image:typeof e.image=="string"?e.image:void 0,githubUsername:typeof e.githubUsername=="string"?e.githubUsername:void 0,teams:Array.isArray(e.teams)?e.teams.map(r=>{if(!r||typeof r!="object")return null;let n=r;return typeof n.id!="string"||typeof n.name!="string"?null:{id:n.id,name:n.name,role:n.role==="owner"?"owner":"member",githubOrg:typeof n.githubOrg=="string"?n.githubOrg:null}}).filter(r=>!!r):void 0}}function v(t){if(!t||typeof t!="object")return null;let e=t;if(e.version!==s||typeof e.token!="string"||!e.token.trim())return null;let r=typeof e.origin=="string"&&e.origin.trim()?e.origin.trim():u,n=e.source==="cli"||e.source==="electron"||e.source==="browser"||e.source==="unknown"?e.source:"unknown",o=typeof e.updatedAt=="string"&&e.updatedAt?e.updatedAt:new Date().toISOString(),h=typeof e.validatedAt=="string"&&e.validatedAt?e.validatedAt:void 0;return{version:s,token:e.token.trim(),user:g(e.user),origin:r,source:n,updatedAt:o,validatedAt:h}}function b(){let t=a();if(!f(t))return null;try{let e=JSON.parse(A(t,"utf8")),r=v(e);return r||(i(t,{force:!0}),null)}catch{return i(t,{force:!0}),null}}function O(t){let e=a();k(c(e),{recursive:!0});let r={version:s,token:t.token.trim(),user:t.user?g(t.user):null,origin:t.origin?.trim()||u,source:t.source,updatedAt:t.updatedAt||new Date().toISOString(),validatedAt:t.validatedAt};y(e,JSON.stringify(r,null,2)+`
1
+ /*! sootsim v0.1.152 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{n as d}from"./chunk-TW5OHRSG.js";import{chmodSync as S,existsSync as f,mkdirSync as k,readFileSync as A,rmSync as i,writeFileSync as y}from"node:fs";import{dirname as c,join as D,resolve as m}from"node:path";var s=1,p="SOOTSIM_SHARED_AUTH_FILE",u="https://sootbean.com";function w(){let t=process.env[p];return t?.trim()?c(m(t)):d()}function a(){let t=process.env[p];return t?.trim()?m(t):D(w(),"desktop-auth.json")}function g(t){if(!t||typeof t!="object")return null;let e=t;return typeof e.id!="string"||!e.id.trim()?null:{id:e.id.trim(),name:typeof e.name=="string"?e.name:void 0,email:typeof e.email=="string"?e.email:void 0,image:typeof e.image=="string"?e.image:void 0,githubUsername:typeof e.githubUsername=="string"?e.githubUsername:void 0,teams:Array.isArray(e.teams)?e.teams.map(r=>{if(!r||typeof r!="object")return null;let n=r;return typeof n.id!="string"||typeof n.name!="string"?null:{id:n.id,name:n.name,role:n.role==="owner"?"owner":"member",githubOrg:typeof n.githubOrg=="string"?n.githubOrg:null}}).filter(r=>!!r):void 0}}function v(t){if(!t||typeof t!="object")return null;let e=t;if(e.version!==s||typeof e.token!="string"||!e.token.trim())return null;let r=typeof e.origin=="string"&&e.origin.trim()?e.origin.trim():u,n=e.source==="cli"||e.source==="electron"||e.source==="browser"||e.source==="unknown"?e.source:"unknown",o=typeof e.updatedAt=="string"&&e.updatedAt?e.updatedAt:new Date().toISOString(),h=typeof e.validatedAt=="string"&&e.validatedAt?e.validatedAt:void 0;return{version:s,token:e.token.trim(),user:g(e.user),origin:r,source:n,updatedAt:o,validatedAt:h}}function b(){let t=a();if(!f(t))return null;try{let e=JSON.parse(A(t,"utf8")),r=v(e);return r||(i(t,{force:!0}),null)}catch{return i(t,{force:!0}),null}}function O(t){let e=a();k(c(e),{recursive:!0});let r={version:s,token:t.token.trim(),user:t.user?g(t.user):null,origin:t.origin?.trim()||u,source:t.source,updatedAt:t.updatedAt||new Date().toISOString(),validatedAt:t.validatedAt};y(e,JSON.stringify(r,null,2)+`
3
3
  `);try{S(e,384)}catch{}return r}function l(){i(a(),{force:!0})}async function E(t){let e=b();if(!e?.token)return null;let r=t||e.origin||u;try{let n=await fetch(`${r.replace(/\/$/,"")}/api/auth/me`,{headers:{authorization:`Bearer ${e.token}`}});if(n.status===401)return l(),null;if(!n.ok)return e;let o=await n.json();return o.user?.id?O({token:e.token,user:o.user,origin:r,source:e.source,validatedAt:new Date().toISOString()}):(l(),null)}catch{return e}}export{b as a,O as b,l as c,E as d};
@@ -1,2 +1,2 @@
1
- /*! sootsim v0.1.150 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.152 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  var t=4001,n="sootsim close";export{t as a,n as b};
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.150 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.152 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  function M(t,e){let r=["--max-ms","--maxMs","--maxms","--max_ms"];for(let n of r){let s=t.indexOf(n);if(s>=0&&t[s+1]){let o=Number(t[s+1]);if(Number.isFinite(o))return Math.max(100,o)}}return e}var w=new Set(["tap","double-tap","tap-text","tap-id","long-press","touch"]);function S(t){return typeof t=="string"&&w.has(t)}async function v(t){return await t.send({type:"evaluate",code:"window.__sootsimEngineState?.inspectActive === true"})===!0}async function H(t,e){if(!S(e))return!1;try{return await v(t)}catch{return!1}}async function C(t){let e=await t.send({type:"evaluate",code:"(async () => await window.__sootsimTest.getNodeCount())()"});return{nodes:typeof e=="number"?e:0}}async function B(t,e=5){let r=await t.send({type:"evaluate",code:`(async () => await window.__sootsimTest.dumpTree(${e}))()`});return{depth:e,tree:r}}async function W(t){let e=await t.send({type:"evaluate",code:"window.location.href"});return{url:typeof e=="string"?e:""}}async function F(t,e){let r=`(async () => {
3
3
  const t = window.__sootsimTest
4
4
  const mainShell = window.SootSim?.bridges?.mainShell
@@ -1,3 +1,3 @@
1
- /*! sootsim v0.1.150 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{A as m,n as P,p as a}from"./chunk-NHDDW7WP.js";import l from"fs";import c from"path";var s="default",S="profiles.json",i=1;function o(e){let r=e.trim();if(!r)throw new Error("profile id is required");if(!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(r))throw new Error("profile ids must start with a letter or number and contain only letters, numbers, dot, dash, or underscore");if(r==="."||r==="..")throw new Error(`invalid profile id: ${r}`);return r}function d(){return c.join(a(),S)}function I(e){return`sootsim-profile-${o(e)}`}function h(e){return c.join(P(),"Partitions",I(e))}function A(e){return c.join(a(),"playwright",o(e))}function u(){try{let e=JSON.parse(l.readFileSync(d(),"utf8"));if(!e||e.version!==i)return{version:i,profiles:[]};let r=Array.isArray(e.profiles)?e.profiles.filter(t=>!!t&&typeof t.id=="string"&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string").map(t=>({id:o(t.id),createdAt:t.createdAt,updatedAt:t.updatedAt})):[];return{version:i,profiles:r}}catch{return{version:i,profiles:[]}}}function x(e){return[...e].sort((r,t)=>r.id===s?-1:t.id===s?1:r.id.localeCompare(t.id))}function p(e){if(e.profiles.some(t=>t.id===s))return{...e,profiles:x(e.profiles)};let r=new Date().toISOString();return{version:i,profiles:x([{id:s,createdAt:r,updatedAt:r},...e.profiles])}}function g(e){m();let r=p(e),t=`${d()}.tmp`;return l.writeFileSync(t,`${JSON.stringify(r,null,2)}
1
+ /*! sootsim v0.1.152 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{A as m,n as P,p as a}from"./chunk-TW5OHRSG.js";import l from"fs";import c from"path";var s="default",S="profiles.json",i=1;function o(e){let r=e.trim();if(!r)throw new Error("profile id is required");if(!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(r))throw new Error("profile ids must start with a letter or number and contain only letters, numbers, dot, dash, or underscore");if(r==="."||r==="..")throw new Error(`invalid profile id: ${r}`);return r}function d(){return c.join(a(),S)}function I(e){return`sootsim-profile-${o(e)}`}function h(e){return c.join(P(),"Partitions",I(e))}function A(e){return c.join(a(),"playwright",o(e))}function u(){try{let e=JSON.parse(l.readFileSync(d(),"utf8"));if(!e||e.version!==i)return{version:i,profiles:[]};let r=Array.isArray(e.profiles)?e.profiles.filter(t=>!!t&&typeof t.id=="string"&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string").map(t=>({id:o(t.id),createdAt:t.createdAt,updatedAt:t.updatedAt})):[];return{version:i,profiles:r}}catch{return{version:i,profiles:[]}}}function x(e){return[...e].sort((r,t)=>r.id===s?-1:t.id===s?1:r.id.localeCompare(t.id))}function p(e){if(e.profiles.some(t=>t.id===s))return{...e,profiles:x(e.profiles)};let r=new Date().toISOString();return{version:i,profiles:x([{id:s,createdAt:r,updatedAt:r},...e.profiles])}}function g(e){m();let r=p(e),t=`${d()}.tmp`;return l.writeFileSync(t,`${JSON.stringify(r,null,2)}
3
3
  `,"utf8"),l.renameSync(t,d()),r}function y(){return g(u()).profiles}function E(e){let r=o(e);return y().find(t=>t.id===r)??null}function _(e=s){let r=o(e),t=E(r);return t||D(r)}function D(e){let r=o(e),t=p(u());if(t.profiles.some(w=>w.id===r))throw new Error(`profile already exists: ${r}`);let f=new Date().toISOString(),n={id:r,createdAt:f,updatedAt:f};return g({version:i,profiles:[...t.profiles,n]}),n}function F(e){let r=o(e);if(r===s)throw new Error("the default profile cannot be deleted; clear it instead");let t=p(u()),f=t.profiles.find(n=>n.id===r);if(!f)throw new Error(`profile not found: ${r}`);return g({version:i,profiles:t.profiles.filter(n=>n.id!==r)}),v(r),f}function v(e){let r=o(e);for(let t of[h(r),A(r)])try{l.rmSync(t,{recursive:!0,force:!0})}catch{}}export{A as a,y as b,_ as c,D as d,F as e,v as f};
@@ -1,5 +1,5 @@
1
- /*! sootsim v0.1.150 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a as C,b as k}from"./chunk-BFGPENAX.js";var x="sootsimConfig";function m(e){return!!e&&Object.keys(e).length>0}function D(e){return e?m(e.modules)||m(e.turboModules)||m(e.nativeModules)||m(e.env)||m(e.network?.remap)||m(e.settings)||m(e.initialState):!1}function M(e,o){let t=new URL(e);return D(o)?t.searchParams.set(x,JSON.stringify(o)):t.searchParams.delete(x),t.toString()}import{exec as N}from"child_process";import L from"http";import O from"net";import{promisify as $}from"util";var te="/index.bundle?platform=ios&dev=true&hot=true&minify=false";function T(e){return/^https?:\/\//i.test(e)}function E(e){return e.endsWith(".bundle")}function A(e){process.env.SOOTSIM_PREVIEW_PROD_BUNDLE&&(e.searchParams.set("dev","false"),e.searchParams.set("minify","true"),e.searchParams.has("hot")&&e.searchParams.set("hot","false"))}function U(e){try{let o=T(e),t=new URL(e,"http://soot.local");return t.pathname=t.pathname.replace(/\.\.bundle$/,".bundle"),E(t.pathname)?(t.searchParams.delete("transform.bytecode"),A(t),o?t.toString():`${t.pathname}${t.search}${t.hash}`):e}catch{return e}}var v=$(N);C();var I=250,B=1500,H=120;function j(e,o=H){return new Promise(t=>{let r=new O.Socket,s=!1,i=a=>{s||(s=!0,r.destroy(),t(a))};r.setTimeout(o),r.once("connect",()=>i(!0)),r.once("timeout",()=>i(!1)),r.once("error",()=>i(!1)),r.connect(e,"localhost")})}function h(e,o,t="GET",r=I,s={}){return new Promise(i=>{let a=L.request({hostname:"localhost",port:e,path:o,method:t,timeout:r,headers:s},n=>{let u="";n.on("data",l=>u+=l.toString());let c=(()=>{let l=n.headers["content-type"];if(typeof l=="string")return l;if(Array.isArray(l))return l[0]})();n.on("end",()=>i({statusCode:n.statusCode||0,body:u,contentType:c}))});a.on("error",()=>i(null)),a.setTimeout(r,()=>{a.destroy(),i(null)}),a.end()})}var W=[8081,8082,8083,8084,8085,8086,3e3,3001,19e3].map(e=>({port:e,pid:0}));function P(e,o){return!(e<=0||e>=2e4||o.has(e)||e>=5170&&e<=5200)}async function F(e=[]){let o=new Set(e);try{let{stdout:t}=await v("lsof -iTCP -sTCP:LISTEN -P -n 2>/dev/null | grep -E '^(node|bun)'",{encoding:"utf8",timeout:2e3});if(t.trim()){let r=new Map;for(let s of t.trim().split(`
1
+ /*! sootsim v0.1.152 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{a as C,b as k}from"./chunk-G3Q7KPV4.js";var x="sootsimConfig";function m(e){return!!e&&Object.keys(e).length>0}function D(e){return e?m(e.modules)||m(e.turboModules)||m(e.nativeModules)||m(e.env)||m(e.network?.remap)||m(e.settings)||m(e.initialState):!1}function M(e,o){let t=new URL(e);return D(o)?t.searchParams.set(x,JSON.stringify(o)):t.searchParams.delete(x),t.toString()}import{exec as N}from"child_process";import L from"http";import O from"net";import{promisify as $}from"util";var te="/index.bundle?platform=ios&dev=true&hot=true&minify=false";function T(e){return/^https?:\/\//i.test(e)}function E(e){return e.endsWith(".bundle")}function A(e){process.env.SOOTSIM_PREVIEW_PROD_BUNDLE&&(e.searchParams.set("dev","false"),e.searchParams.set("minify","true"),e.searchParams.has("hot")&&e.searchParams.set("hot","false"))}function U(e){try{let o=T(e),t=new URL(e,"http://soot.local");return t.pathname=t.pathname.replace(/\.\.bundle$/,".bundle"),E(t.pathname)?(t.searchParams.delete("transform.bytecode"),A(t),o?t.toString():`${t.pathname}${t.search}${t.hash}`):e}catch{return e}}var v=$(N);C();var I=250,B=1500,H=120;function j(e,o=H){return new Promise(t=>{let r=new O.Socket,s=!1,i=a=>{s||(s=!0,r.destroy(),t(a))};r.setTimeout(o),r.once("connect",()=>i(!0)),r.once("timeout",()=>i(!1)),r.once("error",()=>i(!1)),r.connect(e,"localhost")})}function h(e,o,t="GET",r=I,s={}){return new Promise(i=>{let a=L.request({hostname:"localhost",port:e,path:o,method:t,timeout:r,headers:s},n=>{let u="";n.on("data",l=>u+=l.toString());let c=(()=>{let l=n.headers["content-type"];if(typeof l=="string")return l;if(Array.isArray(l))return l[0]})();n.on("end",()=>i({statusCode:n.statusCode||0,body:u,contentType:c}))});a.on("error",()=>i(null)),a.setTimeout(r,()=>{a.destroy(),i(null)}),a.end()})}var W=[8081,8082,8083,8084,8085,8086,3e3,3001,19e3].map(e=>({port:e,pid:0}));function P(e,o){return!(e<=0||e>=2e4||o.has(e)||e>=5170&&e<=5200)}async function F(e=[]){let o=new Set(e);try{let{stdout:t}=await v("lsof -iTCP -sTCP:LISTEN -P -n 2>/dev/null | grep -E '^(node|bun)'",{encoding:"utf8",timeout:2e3});if(t.trim()){let r=new Map;for(let s of t.trim().split(`
3
3
  `)){let i=s.trim().split(/\s+/);if(i.length<9)continue;let a=Number(i[1]),u=i[8].match(/:(\d+)$/);if(!u)continue;let c=Number(u[1]);P(c,o)&&(r.has(c)||r.set(c,a))}if(r.size>0)return[...r.entries()].map(([s,i])=>({port:s,pid:i}))}}catch{}try{let{stdout:t}=await v(`ss -tlnp 2>/dev/null | grep -E '"(node|bun)"'`,{encoding:"utf8",timeout:2e3});if(t.trim()){let r=new Map;for(let s of t.trim().split(`
4
4
  `)){let i=s.match(/:(\d+)\s/),a=s.match(/pid=(\d+)/);if(!i)continue;let n=Number(i[1]),u=a?Number(a[1]):0;P(n,o)&&(r.has(n)||r.set(n,u))}if(r.size>0)return[...r.entries()].map(([s,i])=>({port:s,pid:i}))}}catch{}return W.filter(t=>P(t.port,o))}var y=new Map;async function G(e){if(e<=0)return null;let o=y.get(e);if(o)return o;try{let{stdout:t}=await v(`lsof -p ${e} -a -d cwd -Fn 2>/dev/null`,{encoding:"utf8",timeout:1500});for(let r of t.split(`
5
5
  `))if(r.startsWith("n")&&r.length>1){let s=r.slice(1).trim();if(s)return y.set(e,s),s}}catch{}return null}function z(e,o){return{port:e,framework:o,bundleUrl:g(e,`http://localhost:${e}/index.bundle?platform=ios&dev=true&hot=true&minify=false`),hmrUrl:`ws://localhost:${e}/hot`,lastSeen:Date.now()}}function g(e,o){let t=k().find(s=>s.preferredPort===e),r=t?.runtimeConfig?M(o,t.runtimeConfig):o;return U(r)}function J(e){return e.includes("/node_modules/one/metro-entry.bundle")}function K(e){try{let o=JSON.parse(e);return o&&typeof o=="object"?o:null}catch{return null}}function w(e,o,t){if(!o)return e;try{let r=JSON.parse(o.body),s=r?.extra?.expoClient||r?.extra||{};s.name&&(e.projectName=s.name),s.ios?.bundleIdentifier&&(e.bundleId=s.ios.bundleIdentifier),e.framework==="metro"&&s.sdkVersion&&(e.framework="expo");let i=r?.launchAsset?.url;i&&!e.patched&&!J(e.bundleUrl)&&(e.bundleUrl=g(e.port,i));let a=s.iconUrl||s.ios?.iconUrl||s.icon||s.ios?.icon;if(a)if(e.iconPath=a,t)if(a.startsWith("http"))e.iconUrl=t(a);else{let n=a.replace(/^\.\//,"");e.iconUrl=t(`http://localhost:${e.port}/assets/${n}`)}else e.iconUrl=a.startsWith("http")?a:`http://localhost:${e.port}/assets/${a.replace(/^\.\//,"")}`}catch{}return e}var d=new Set,p=new Set,S=new Set;async function V(e,o){if(!await j(e))return null;let t="/node_modules/one/metro-entry.bundle?platform=ios&dev=true",[r,s,i,a]=await Promise.all([d.has(e)?Promise.resolve(null):h(e,"/__soot/"),h(e,"/status"),S.has(e)?Promise.resolve(null):h(e,"/","GET",B,{"expo-platform":"ios"}),p.has(e)?Promise.resolve(null):h(e,"/_expo/status")]);a&&a.statusCode===200?p.delete(e):p.has(e)||p.add(e);let n=i?K(i.body):null,u=typeof n?.launchAsset?.url=="string"?n.launchAsset.url:null,c=n?.extra?.expoClient||n?.extra||{};if(n&&(u||typeof c.name=="string")){d.add(e);let R=u||`http://localhost:${e}/index.bundle?platform=ios&dev=true&hot=true&minify=false`,_=R.includes("/one/metro-entry.bundle")?"one":"expo";return w({port:e,framework:_,bundleUrl:g(e,R),hmrUrl:`ws://localhost:${e}/hot`,lastSeen:Date.now()},i,o)}if(s&&s.body.includes("packager-status:running"))return d.add(e),w(z(e,a&&a.statusCode===200?"expo":"metro"),i,o);if(r&&r.statusCode===200&&r.body.includes("sootsim-patched"))return d.delete(e),w({port:e,framework:"one",bundleUrl:g(e,`http://localhost:${e}/__soot/bundle.js`),hmrUrl:`ws://localhost:${e}/hot`,lastSeen:Date.now(),patched:!0},i,o);if(s&&s.statusCode===200||a&&a.statusCode===200||i&&i.statusCode===200&&n!=null)return null;let f=await h(e,t,"HEAD");return f&&f.statusCode>0&&f.statusCode<400&&/application\/javascript/i.test(f.contentType||"")?(d.add(e),S.add(e),w({port:e,framework:"one",bundleUrl:g(e,`http://localhost:${e}${t}&minify=false`),hmrUrl:`ws://localhost:${e}/hot`,lastSeen:Date.now()},i,o)):(d.add(e),null)}function q(e){let o=e.projectName?.trim().toLowerCase();return!!(o==="soot"||o==="sootsim"||e.bundleId?.trim().toLowerCase()?.startsWith("dev.soot"))}var b=new Map,Q=3e4,Y=1500;function X(e){return!e||e.framework==="metro"||e.framework==="unknown"}function Z(e){return e?g(e.port,e.bundleUrl)===e.bundleUrl:!0}function ee(e,o,t=Date.now()){if(o===0||e.pid!==o||!Z(e.result))return!1;let r=t-e.cachedAt;return!(e.result===null&&r>=Q||X(e.result)&&r>=Y)}async function de(e={}){let o=await F(e.excludePorts),t=new Set(o.map(n=>n.port));for(let n of[...b.keys()])t.has(n)||b.delete(n);for(let n of[...d])t.has(n)||d.delete(n);for(let n of[...p])t.has(n)||p.delete(n);for(let n of[...S])t.has(n)||S.delete(n);let r=[],s=[];for(let{port:n,pid:u}of o){let c=b.get(n);if(c&&ee(c,u)){c.result&&r.push(c.result);continue}c&&c.pid!==u&&(d.delete(n),p.delete(n),S.delete(n)),s.push({port:n,pid:u})}s.length>0&&(await Promise.all(s.map(u=>V(u.port,e.buildIconProxyUrl)))).forEach((u,c)=>{let{port:l,pid:f}=s[c];f!==0&&b.set(l,{pid:f,result:u,cachedAt:Date.now()}),u&&r.push(u)});let i=new Map;for(let{port:n,pid:u}of o)u>0&&i.set(n,u);await Promise.all(r.map(async n=>{let u=i.get(n.port);if(!u)return;n.pid=u;let c=await G(u);c&&(n.cwd=c)}));let a=new Set(i.values());for(let n of[...y.keys()])a.has(n)||y.delete(n);return r.filter(n=>!q(n))}export{M as a,te as b,U as c,V as d,de as e};