sootsim 0.1.141 → 0.1.143

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 +3 -3
  2. package/dist-cli/chunks/{agent-BFN5TIRU.js → agent-25GIVRCM.js} +2 -2
  3. package/dist-cli/chunks/{agent-wrapper-A4UNOJOD.js → agent-wrapper-SHRSOH5F.js} +2 -2
  4. package/dist-cli/chunks/{app-fonts-KEAMDLYZ.js → app-fonts-JUWOZS4H.js} +2 -2
  5. package/dist-cli/chunks/{assert-BWBAKX5N.js → assert-IVGHPA5A.js} +2 -2
  6. package/dist-cli/chunks/auto-bootstrap-GYRB6UPD.js +2 -0
  7. package/dist-cli/chunks/beta-5KJOURFA.js +2 -0
  8. package/dist-cli/chunks/{camera-P5TTGC72.js → camera-W33RHKCW.js} +2 -2
  9. package/dist-cli/chunks/{chunk-UYQDGXHQ.js → chunk-2BFY6NP3.js} +1 -1
  10. package/dist-cli/chunks/{chunk-ITJLXD4X.js → chunk-2R4BMZ6Z.js} +2 -2
  11. package/dist-cli/chunks/{chunk-JQTHQOPS.js → chunk-34SQBAH2.js} +2 -2
  12. package/dist-cli/chunks/{chunk-7A7VFR2C.js → chunk-4A5DOFDF.js} +1 -1
  13. package/dist-cli/chunks/{chunk-MHUNWWWS.js → chunk-7SBHZLQW.js} +14 -20
  14. package/dist-cli/chunks/{chunk-DM5KNA7Q.js → chunk-7SXBQTHJ.js} +2 -2
  15. package/dist-cli/chunks/{chunk-7SO2SJ4H.js → chunk-7TN63AI6.js} +1 -1
  16. package/dist-cli/chunks/chunk-A2ZAQHNC.js +1 -0
  17. package/dist-cli/chunks/{chunk-AJGTCVQX.js → chunk-AAYFZNPR.js} +1 -1
  18. package/dist-cli/chunks/{chunk-ETB6DHJM.js → chunk-BAEWF5VG.js} +2 -2
  19. package/dist-cli/chunks/{chunk-URPQTI2I.js → chunk-BHEMY7ME.js} +2 -2
  20. package/dist-cli/chunks/chunk-BJNIH4HL.js +119 -0
  21. package/dist-cli/chunks/{chunk-PVPWCA2K.js → chunk-DFKP5F2D.js} +1 -1
  22. package/dist-cli/chunks/{chunk-KMQWCYU7.js → chunk-DYCX25AE.js} +2 -2
  23. package/dist-cli/chunks/{chunk-YOJ6BZCH.js → chunk-GRFBOOAG.js} +1 -1
  24. package/dist-cli/chunks/chunk-GY6MAFMV.js +2 -0
  25. package/dist-cli/chunks/{chunk-33EJL7CG.js → chunk-HBFZA6VQ.js} +2 -2
  26. package/dist-cli/chunks/{chunk-SXHBK5IJ.js → chunk-HNNOZQPP.js} +2 -2
  27. package/dist-cli/chunks/{chunk-XERRDQLM.js → chunk-HX23DKRO.js} +1 -1
  28. package/dist-cli/chunks/{chunk-HDCTWR2Q.js → chunk-I3YEKOFK.js} +2 -2
  29. package/dist-cli/chunks/{chunk-IITPPGBS.js → chunk-JXZNBPSD.js} +1 -1
  30. package/dist-cli/chunks/{chunk-53DRW635.js → chunk-K635OII3.js} +3 -3
  31. package/dist-cli/chunks/{chunk-A5W3HB44.js → chunk-MREBZSAV.js} +1 -1
  32. package/dist-cli/chunks/chunk-NGA4DA7H.js +1 -0
  33. package/dist-cli/chunks/{chunk-I6SWX7OI.js → chunk-NLCQST4G.js} +2 -2
  34. package/dist-cli/chunks/{chunk-M7S4VLEL.js → chunk-PJNUAUBJ.js} +2 -6
  35. package/dist-cli/chunks/{chunk-RUXWU3UH.js → chunk-QDGEMD2I.js} +1 -1
  36. package/dist-cli/chunks/{chunk-JJBNA2JO.js → chunk-QJPM3RET.js} +2 -2
  37. package/dist-cli/chunks/{chunk-RBUJZXNR.js → chunk-QU2QUSZJ.js} +2 -2
  38. package/dist-cli/chunks/{chunk-LHS4PEAA.js → chunk-R6XZO5GZ.js} +2 -2
  39. package/dist-cli/chunks/{chunk-EIZ6LJP2.js → chunk-SWKPSL5W.js} +2 -2
  40. package/dist-cli/chunks/{chunk-AMSIP5PD.js → chunk-TPWSHYVO.js} +3 -3
  41. package/dist-cli/chunks/{chunk-4ISWLDJG.js → chunk-UC432AHL.js} +1 -1
  42. package/dist-cli/chunks/chunk-UN3RQBVH.js +5 -0
  43. package/dist-cli/chunks/{chunk-XQRCVSK3.js → chunk-VNNV5YRW.js} +1 -1
  44. package/dist-cli/chunks/{chunk-3LN2PP4L.js → chunk-VVN2YEL6.js} +2 -2
  45. package/dist-cli/chunks/chunk-X3H76FTW.js +1 -0
  46. package/dist-cli/chunks/{chunk-IILFDOSF.js → chunk-XMMYQPSE.js} +1 -1
  47. package/dist-cli/chunks/{chunk-XD7XHQUO.js → chunk-XXSE44NG.js} +2 -2
  48. package/dist-cli/chunks/{chunk-LHIPDN4B.js → chunk-XZXF5AYC.js} +1 -1
  49. package/dist-cli/chunks/{chunk-AQVB4G34.js → chunk-YJDPJTJ5.js} +2 -2
  50. package/dist-cli/chunks/{chunk-WUQHVDJU.js → chunk-YLR5ZRKX.js} +2 -2
  51. package/dist-cli/chunks/{chunk-NQJD2WTM.js → chunk-YPMUEFLF.js} +1 -1
  52. package/dist-cli/chunks/{chunk-JM5XCDBF.js → chunk-YSJYN72Y.js} +2 -2
  53. package/dist-cli/chunks/{chunk-MENSR2TZ.js → chunk-YTK7ZFAM.js} +1 -1
  54. package/dist-cli/chunks/cli-version-G27CVTU4.js +2 -0
  55. package/dist-cli/chunks/{compat-3Z67EPSJ.js → compat-4RDLRPPU.js} +3 -3
  56. package/dist-cli/chunks/{config-SH3NTYZ2.js → config-3MVPTQK6.js} +2 -2
  57. package/dist-cli/chunks/{control-2XVEDKYZ.js → control-FVYUXUVP.js} +2 -2
  58. package/dist-cli/chunks/{cpu-profile-FANLHU4S.js → cpu-profile-7ZH2O6BN.js} +2 -2
  59. package/dist-cli/chunks/daemon-35SSSS4Z.js +67 -0
  60. package/dist-cli/chunks/{debug-EIUEPLFN.js → debug-A6KPCY4Y.js} +3 -3
  61. package/dist-cli/chunks/{detox-EV3KYFKR.js → detox-2UJ7GS2I.js} +2 -2
  62. package/dist-cli/chunks/{device-UC5DAVA6.js → device-H7UO5Y3Q.js} +2 -2
  63. package/dist-cli/chunks/{diagnose-Q2M2AJBD.js → diagnose-N2GVYOSJ.js} +2 -2
  64. package/dist-cli/chunks/drivers-LZZBBF46.js +2 -0
  65. package/dist-cli/chunks/{electron-PXKF52Q6.js → electron-CZLJU4MK.js} +3 -3
  66. package/dist-cli/chunks/flow-D64O66ME.js +2 -0
  67. package/dist-cli/chunks/help-H6K3SYVG.js +2 -0
  68. package/dist-cli/chunks/{hints-HS7X2FIO.js → hints-6EUSL5M3.js} +2 -2
  69. package/dist-cli/chunks/{home-paths-KPMXMJQ7.js → home-paths-O66RZCQB.js} +2 -2
  70. package/dist-cli/chunks/{inspect-ZUWEMCIG.js → inspect-PI7TIHTS.js} +3 -3
  71. package/dist-cli/chunks/install-4VWYAR7Y.js +2 -0
  72. package/dist-cli/chunks/{install-desktop-H6ZTTVXC.js → install-desktop-MTUTQFM2.js} +3 -3
  73. package/dist-cli/chunks/{keys-6OBZZLCJ.js → keys-FHLYPKGB.js} +2 -2
  74. package/dist-cli/chunks/{launch-7JASEDHP.js → launch-4Y77LAZZ.js} +3 -3
  75. package/dist-cli/chunks/{login-JWMB6JNS.js → login-CM7CTLRY.js} +5 -5
  76. package/dist-cli/chunks/{logout-LWVFUKF5.js → logout-U6ADFOLS.js} +2 -2
  77. package/dist-cli/chunks/{maestro-WX22SLCR.js → maestro-CIEC2573.js} +2 -2
  78. package/dist-cli/chunks/optional-demo-registry-BONZAQPP.js +2 -0
  79. package/dist-cli/chunks/{preview-SDMLCW3U.js → preview-TBLTTHD5.js} +2 -2
  80. package/dist-cli/chunks/{profile-MQVLCO7R.js → profile-KUBUPLTD.js} +2 -2
  81. package/dist-cli/chunks/{react-2JFP5W4W.js → react-DKVACIO3.js} +2 -2
  82. package/dist-cli/chunks/{record-IJJ3SPXP.js → record-VLV2V7SN.js} +2 -2
  83. package/dist-cli/chunks/runtime-H6MVUEU5.js +2 -0
  84. package/dist-cli/chunks/{runtime-delivery-5M2P7LEI.js → runtime-delivery-JXJLNWVF.js} +2 -2
  85. package/dist-cli/chunks/{screenshot-4QAGJCPZ.js → screenshot-7QCTJTD4.js} +2 -2
  86. package/dist-cli/chunks/{screenshot-mode-PSAU7TH4.js → screenshot-mode-GJAESKSM.js} +2 -2
  87. package/dist-cli/chunks/{screenshots-73VI4UUL.js → screenshots-43LUBWAM.js} +2 -2
  88. package/dist-cli/chunks/{server-BXD5WKQS.js → server-7SWPNQR7.js} +3 -3
  89. package/dist-cli/chunks/setup-repo-7FNZWY7U.js +2 -0
  90. package/dist-cli/chunks/{skills-IEJOURWM.js → skills-O2EXQOQN.js} +2 -2
  91. package/dist-cli/chunks/{start-CLBAJ4LJ.js → start-W74HSVN6.js} +4 -4
  92. package/dist-cli/chunks/store-F4YJGQBN.js +2 -0
  93. package/dist-cli/chunks/telemetry-OUIYC7UJ.js +2 -0
  94. package/dist-cli/chunks/{test-42YWJ5ZT.js → test-LTDFFPPX.js} +3 -3
  95. package/dist-cli/chunks/{three-mode-5DU4IBF5.js → three-mode-RXT6PH5B.js} +2 -2
  96. package/dist-cli/chunks/{timeline-WJYQRW5S.js → timeline-PETWH7FT.js} +2 -2
  97. package/dist-cli/chunks/{upgrade-F7ADMCLU.js → upgrade-OVR52N6Q.js} +2 -2
  98. package/dist-cli/chunks/upload-CCWGR633.js +2 -0
  99. package/dist-cli/chunks/{version-SLA5P34B.js → version-JKXXLSJL.js} +2 -2
  100. package/dist-cli/chunks/{web-OGC6GSKM.js → web-QZTGXJE5.js} +2 -2
  101. package/dist-cli/chunks/{what-happened-VYXK3O2C.js → what-happened-X2VG2PJO.js} +2 -2
  102. package/dist-cli/chunks/{whoami-QL2LTKOF.js → whoami-YF6SXJQ5.js} +2 -2
  103. package/dist-lib/agent-daemon-client.cjs +1 -1
  104. package/dist-lib/agent-events.cjs +1 -1
  105. package/dist-lib/agent-sessions.cjs +1 -1
  106. package/dist-lib/attached-projects.cjs +1 -1
  107. package/dist-lib/auth/shared-session.cjs +1 -1
  108. package/dist-lib/backend-origin.cjs +1 -1
  109. package/dist-lib/beta.cjs +1 -1
  110. package/dist-lib/beta.mjs +1 -1
  111. package/dist-lib/bridge-constants.cjs +1 -1
  112. package/dist-lib/cli-constants.cjs +1 -1
  113. package/dist-lib/config.cjs +1 -1
  114. package/dist-lib/detox/index.cjs +1 -1
  115. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  116. package/dist-lib/home-paths.cjs +1 -1
  117. package/dist-lib/host/bridge-host.cjs +5 -1
  118. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  119. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  120. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  121. package/dist-lib/host/websocket-proxy.cjs +1 -1
  122. package/dist-lib/index.cjs +1 -1
  123. package/dist-lib/metro.cjs +1 -1
  124. package/dist-lib/profiles.cjs +1 -1
  125. package/dist-lib/render-mode.cjs +1 -1
  126. package/dist-lib/scripts/dev-server-scanner.cjs +5 -1
  127. package/dist-lib/sdk.cjs +1 -1
  128. package/dist-lib/sdk.mjs +1 -1
  129. package/dist-lib/skills.cjs +15 -14
  130. package/dist-lib/vite.cjs +1 -1
  131. package/package.json +1 -1
  132. package/scripts/dev-server-scanner.ts +23 -0
  133. package/dist-cli/chunks/auto-bootstrap-WJH44ZIE.js +0 -2
  134. package/dist-cli/chunks/beta-VFKZHKER.js +0 -2
  135. package/dist-cli/chunks/chunk-I3JPJMJB.js +0 -5
  136. package/dist-cli/chunks/chunk-MYKHUFW2.js +0 -1
  137. package/dist-cli/chunks/chunk-NOAONZTZ.js +0 -119
  138. package/dist-cli/chunks/chunk-SYRS7NKN.js +0 -1
  139. package/dist-cli/chunks/chunk-TUZVZ5QS.js +0 -1
  140. package/dist-cli/chunks/chunk-ZBN3P5JE.js +0 -2
  141. package/dist-cli/chunks/cli-version-3G6HHMRW.js +0 -2
  142. package/dist-cli/chunks/daemon-QGDVR4JT.js +0 -66
  143. package/dist-cli/chunks/drivers-VJIWLDTC.js +0 -2
  144. package/dist-cli/chunks/flow-RGMXGVLL.js +0 -2
  145. package/dist-cli/chunks/help-TBZZP4SA.js +0 -2
  146. package/dist-cli/chunks/install-FPYDDDQ4.js +0 -2
  147. package/dist-cli/chunks/optional-demo-registry-52MHQCYV.js +0 -2
  148. package/dist-cli/chunks/runtime-JJMZ4AF3.js +0 -2
  149. package/dist-cli/chunks/setup-repo-F2P5RZ4R.js +0 -2
  150. package/dist-cli/chunks/store-7DIOVJNK.js +0 -2
  151. package/dist-cli/chunks/telemetry-3XHPQYOQ.js +0 -2
  152. package/dist-cli/chunks/upload-TJ2XKWDS.js +0 -2
@@ -1,5 +1,5 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{B as T,C as A,D as y,O as _,P as b,Q as S}from"./chunk-4ISWLDJG.js";import{c as N,e as F}from"./chunk-JQTHQOPS.js";import{b as k}from"./chunk-A5W3HB44.js";import"./chunk-PVPWCA2K.js";import"./chunk-7SO2SJ4H.js";import"./chunk-XQRCVSK3.js";function O(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--since"&&e+1<n.length){t.push(e,e+1);let s=n[e+1].trim(),l=/^(\d+(?:\.\d+)?)(ms|s|m)?$/.exec(s);if(l){let r=Number(l[1]),u=l[2]??"ms",v=u==="s"?r*1e3:u==="m"?r*6e4:r;return{since:Date.now()-v,consumed:t}}let i=Number(s);if(Number.isFinite(i)&&i>1e12)return{since:i,consumed:t}}return{consumed:t}}function B(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--kinds"&&e+1<n.length)return t.push(e,e+1),{kinds:n[e+1].split(",").map(s=>s.trim()).filter(Boolean),consumed:t};return{consumed:t}}function D(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--limit"&&e+1<n.length){t.push(e,e+1);let s=Number(n[e+1]);if(Number.isFinite(s)&&s>0)return{limit:s,consumed:t}}return{consumed:t}}function x(n){let t=[],e={label:"initial state",events:[],startedAt:n[0]?.t??null};t.push(e);for(let s of n)if(e.events.push(s),s.kind==="screen"||s.kind==="route"){let l=s.data,i=l?.phase;if(!i||i==="enter"||i==="appear"||i==="active"){let r=l?.name||l?.activeName||l?.path||l?.pathname||s.kind;t.length===1&&e.events.length===1?e.label=`${s.kind}: ${r}`:(e={label:`${s.kind}: ${r}`,events:[],startedAt:s.t},t.push(e))}}return t}async function J(n,t){let e=N(n,{port:t.port,stripBooleanFlags:["--summary","--all","--json","--no-advance","--help","-h","--flow","--noisy"],stripValueFlags:["--since","--kinds","--limit"]});(n.includes("--help")||n.includes("-h"))&&(console.log(`
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{B as T,C as A,D as y,O as _,P as b,Q as S}from"./chunk-UC432AHL.js";import{c as N,e as F}from"./chunk-34SQBAH2.js";import{b as k}from"./chunk-MREBZSAV.js";import"./chunk-DFKP5F2D.js";import"./chunk-7TN63AI6.js";import"./chunk-VNNV5YRW.js";function O(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--since"&&e+1<n.length){t.push(e,e+1);let s=n[e+1].trim(),l=/^(\d+(?:\.\d+)?)(ms|s|m)?$/.exec(s);if(l){let r=Number(l[1]),u=l[2]??"ms",v=u==="s"?r*1e3:u==="m"?r*6e4:r;return{since:Date.now()-v,consumed:t}}let i=Number(s);if(Number.isFinite(i)&&i>1e12)return{since:i,consumed:t}}return{consumed:t}}function B(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--kinds"&&e+1<n.length)return t.push(e,e+1),{kinds:n[e+1].split(",").map(s=>s.trim()).filter(Boolean),consumed:t};return{consumed:t}}function D(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--limit"&&e+1<n.length){t.push(e,e+1);let s=Number(n[e+1]);if(Number.isFinite(s)&&s>0)return{limit:s,consumed:t}}return{consumed:t}}function x(n){let t=[],e={label:"initial state",events:[],startedAt:n[0]?.t??null};t.push(e);for(let s of n)if(e.events.push(s),s.kind==="screen"||s.kind==="route"){let l=s.data,i=l?.phase;if(!i||i==="enter"||i==="appear"||i==="active"){let r=l?.name||l?.activeName||l?.path||l?.pathname||s.kind;t.length===1&&e.events.length===1?e.label=`${s.kind}: ${r}`:(e={label:`${s.kind}: ${r}`,events:[],startedAt:s.t},t.push(e))}}return t}async function J(n,t){let e=N(n,{port:t.port,stripBooleanFlags:["--summary","--all","--json","--no-advance","--help","-h","--flow","--noisy"],stripValueFlags:["--since","--kinds","--limit"]});(n.includes("--help")||n.includes("-h"))&&(console.log(`
3
3
  sootsim what-happened \u2014 show recent events from the semantic timeline
4
4
 
5
5
  usage:
@@ -1,2 +1,2 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{d as i}from"./chunk-I6SWX7OI.js";import{d as n}from"./chunk-DM5KNA7Q.js";import"./chunk-7SO2SJ4H.js";import"./chunk-XQRCVSK3.js";async function u(){let o=i();if(o||(console.log(" not signed in"),console.log(" set SOOTSIM_API_KEY=sk_sootsim_\u2026 or run `sootsim login`"),process.exit(1)),o.kind==="api-key"){let r=`${o.secret.slice(0,14)}\u2026`,t=o.source==="env"?"SOOTSIM_API_KEY env var":"saved key (~/.config/sootsim/credentials.json)";console.log(` api key ${r}`),console.log(` source: ${t}`);return}if(o.kind==="github"){console.log(` github token (${o.source})`),console.log(` repo: ${o.repoId}`);return}let e=await n(),s=e?.user;console.log(` ${s?.email||s?.name||s?.id||"signed in"}`),console.log(` origin: ${e?.origin??o.origin}`),e?.updatedAt&&console.log(` updated: ${e.updatedAt}`)}export{u as runWhoami};
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{d as i}from"./chunk-NLCQST4G.js";import{d as n}from"./chunk-7SXBQTHJ.js";import"./chunk-7TN63AI6.js";import"./chunk-VNNV5YRW.js";async function u(){let o=i();if(o||(console.log(" not signed in"),console.log(" set SOOTSIM_API_KEY=sk_sootsim_\u2026 or run `sootsim login`"),process.exit(1)),o.kind==="api-key"){let r=`${o.secret.slice(0,14)}\u2026`,t=o.source==="env"?"SOOTSIM_API_KEY env var":"saved key (~/.config/sootsim/credentials.json)";console.log(` api key ${r}`),console.log(` source: ${t}`);return}if(o.kind==="github"){console.log(` github token (${o.source})`),console.log(` repo: ${o.repoId}`);return}let e=await n(),s=e?.user;console.log(` ${s?.email||s?.name||s?.id||"signed in"}`),console.log(` origin: ${e?.origin??o.origin}`),e?.updatedAt&&console.log(` updated: ${e.updatedAt}`)}export{u as runWhoami};
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/beta.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/beta.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/beta.ts
4
4
  var IS_BETA = true;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -391,6 +391,10 @@ async function probePort(port, buildIconProxyUrl) {
391
391
  buildIconProxyUrl
392
392
  );
393
393
  }
394
+ const looksLikeMetroPackager = statusRes && statusRes.statusCode === 200 || expoRes && expoRes.statusCode === 200 || manifestRes && manifestRes.statusCode === 200 && manifestParsed != null;
395
+ if (looksLikeMetroPackager) {
396
+ return null;
397
+ }
394
398
  const oneRes = await httpGet(port, onePath, "HEAD");
395
399
  if (oneRes && oneRes.statusCode > 0 && oneRes.statusCode < 400 && /application\/javascript/i.test(oneRes.contentType || "")) {
396
400
  knownNonPatched.add(port);
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/host/fetch-proxy-overrides.ts
4
4
  var FETCH_PROXY_BROWSER_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -382,6 +382,10 @@ async function probePort(port, buildIconProxyUrl) {
382
382
  buildIconProxyUrl
383
383
  );
384
384
  }
385
+ const looksLikeMetroPackager = statusRes && statusRes.statusCode === 200 || expoRes && expoRes.statusCode === 200 || manifestRes && manifestRes.statusCode === 200 && manifestParsed != null;
386
+ if (looksLikeMetroPackager) {
387
+ return null;
388
+ }
385
389
  const oneRes = await httpGet(port, onePath, "HEAD");
386
390
  if (oneRes && oneRes.statusCode > 0 && oneRes.statusCode < 400 && /application\/javascript/i.test(oneRes.contentType || "")) {
387
391
  knownNonPatched.add(port);
package/dist-lib/sdk.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/sdk.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // cli/commands/inspect/core.ts
4
4
  function resolveMaxMsFlag(args, fallbackMs) {
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -10306,6 +10306,10 @@ async function probePort(port, buildIconProxyUrl) {
10306
10306
  buildIconProxyUrl
10307
10307
  );
10308
10308
  }
10309
+ const looksLikeMetroPackager = statusRes && statusRes.statusCode === 200 || expoRes && expoRes.statusCode === 200 || manifestRes && manifestRes.statusCode === 200 && manifestParsed != null;
10310
+ if (looksLikeMetroPackager) {
10311
+ return null;
10312
+ }
10309
10313
  const oneRes = await httpGet(port, onePath, "HEAD");
10310
10314
  if (oneRes && oneRes.statusCode > 0 && oneRes.statusCode < 400 && /application\/javascript/i.test(oneRes.contentType || "")) {
10311
10315
  knownNonPatched.add(port);
@@ -15325,10 +15329,6 @@ var init_app_state_reset = __esm({
15325
15329
  ),
15326
15330
  )
15327
15331
  } catch {}
15328
- try {
15329
- const names = await caches.keys()
15330
- await Promise.all(names.map((name) => caches.delete(name)))
15331
- } catch {}
15332
15332
  try {
15333
15333
  document.cookie.split(';').forEach((cookie) => {
15334
15334
  const name = cookie.split('=')[0]?.trim()
@@ -15470,11 +15470,18 @@ function executeSyncHttp(url, method, params) {
15470
15470
  if (params?.multipartForm) {
15471
15471
  throw new Error("http: multipartForm is not supported by sootsim yet");
15472
15472
  }
15473
+ const childEnv = { ...process.env };
15474
+ for (const key of Object.keys(childEnv)) {
15475
+ if (key.startsWith("BUN_INSPECT") || key === "NODE_OPTIONS") {
15476
+ delete childEnv[key];
15477
+ }
15478
+ }
15473
15479
  const child = (0, import_child_process6.spawnSync)(process.execPath, ["-e", HTTP_CHILD_SRC], {
15474
15480
  input: JSON.stringify({ url, method, headers: params?.headers, body: params?.body }),
15475
15481
  encoding: "utf8",
15476
15482
  timeout: HTTP_TIMEOUT_MS,
15477
- maxBuffer: 64 * 1024 * 1024
15483
+ maxBuffer: 64 * 1024 * 1024,
15484
+ env: childEnv
15478
15485
  });
15479
15486
  if (child.error) {
15480
15487
  throw new Error(`http ${method} ${url} failed: ${child.error.message}`);
@@ -16917,13 +16924,7 @@ var init_bridge_flow_runner = __esm({
16917
16924
  }
16918
16925
  const wantsClear = !!(opts && typeof opts === "object" && opts.clearState);
16919
16926
  if (wantsClear) {
16920
- await this.evaluate(`(async () => {
16921
- await (${CLEAR_APP_STATE_EVAL})
16922
- try {
16923
- const regs = await navigator.serviceWorker?.getRegistrations?.()
16924
- await Promise.all((regs || []).map((reg) => reg.unregister()))
16925
- } catch {}
16926
- })()`);
16927
+ await this.evaluate(CLEAR_APP_STATE_EVAL, 6e4);
16927
16928
  }
16928
16929
  if (!this.firstLaunchDone && !wantsClear) {
16929
16930
  this.firstLaunchDone = true;
@@ -17430,7 +17431,7 @@ var init_bridge_flow_runner = __esm({
17430
17431
  const explicitWait = typeof step.wait === "number" ? step.wait : 0;
17431
17432
  const waitForTimeout = typeof step.waitFor?.timeout === "number" ? step.waitFor.timeout : 0;
17432
17433
  const stepCeiling = Math.max(6e4, explicitWait + 15e3, waitForTimeout + 15e3);
17433
- if (step.runFlow) {
17434
+ if (step.runFlow || step.launchApp) {
17434
17435
  await this.runStep(step, i);
17435
17436
  continue;
17436
17437
  }
package/dist-lib/vite.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.143 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sootsim",
3
- "version": "0.1.141",
3
+ "version": "0.1.143",
4
4
  "description": "sootsim CLI + vite/metro plugins + skills registry. bridge client for driving the proprietary sootsim-engine over WebSocket.",
5
5
  "author": "Tamagui LLC",
6
6
  "license": "MIT",
@@ -496,6 +496,29 @@ export async function probePort(
496
496
  // it has the metro side-effect documented above. older One bare-dev-server
497
497
  // setups that don't serve a manifest still resolve through this path; new
498
498
  // expo/metro/one setups are caught above and never reach here.
499
+ //
500
+ // hard safety gate (the recurring "metro on 8081 crashes" regression): a
501
+ // plain expo/metro packager that is still BOOTING serves `/status`,
502
+ // `/_expo/status`, and the `/` manifest a few seconds apart, so during the
503
+ // boot window all three wave-1 catches above can miss (status body not yet
504
+ // `packager-status:running`, manifest not yet parseable). without this gate
505
+ // we then fire the lethal HEAD against a metro that IS a metro — and the
506
+ // engine, handed a bogus `one/metro-entry.bundle` URL, opens an HMR socket
507
+ // whose `register-entrypoints` throws UnableToResolveError inside
508
+ // HmrServer._registerEntryPoint → unhandledRejection → metro exits. a real
509
+ // legacy bare-One dev server answers NONE of these metro/expo endpoints, so
510
+ // skipping the HEAD here never hides a genuine One server — it just defers
511
+ // this port to the next scan, by which point wave 1 identifies it cleanly.
512
+ const looksLikeMetroPackager =
513
+ (statusRes && statusRes.statusCode === 200) ||
514
+ (expoRes && expoRes.statusCode === 200) ||
515
+ (manifestRes && manifestRes.statusCode === 200 && manifestParsed != null)
516
+ if (looksLikeMetroPackager) {
517
+ // do NOT cache as knownNonPatched — we want a fresh wave-1 pass next scan
518
+ // once the packager finishes booting and its manifest/status are ready.
519
+ return null
520
+ }
521
+
499
522
  const oneRes = await httpGet(port, onePath, 'HEAD')
500
523
  if (
501
524
  oneRes &&
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c,d}from"./chunk-AMSIP5PD.js";import"./chunk-JQTHQOPS.js";import"./chunk-A5W3HB44.js";import"./chunk-PVPWCA2K.js";import"./chunk-7SO2SJ4H.js";import"./chunk-XQRCVSK3.js";export{c as ensureDaemonRunning,a as ensureRuntimeInstalled,d as ensureSootsimReady,b as resolveBootstrapPort};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c,d,e}from"./chunk-IILFDOSF.js";import"./chunk-XQRCVSK3.js";export{e as BETA_ASK_HEADLINE,c as BETA_LABEL,d as BETA_TAGLINE,b as BETA_VERSION_TARGET,a as IS_BETA};
@@ -1,5 +0,0 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a as R,b as C}from"./chunk-RUXWU3UH.js";var x="sootsimConfig";function f(e){return!!e&&Object.keys(e).length>0}function _(e){return e?f(e.modules)||f(e.turboModules)||f(e.nativeModules)||f(e.env)||f(e.network?.remap)||f(e.settings)||f(e.initialState):!1}function k(e,r){let t=new URL(e);return _(r)?t.searchParams.set(x,JSON.stringify(r)):t.searchParams.delete(x),t.toString()}import{exec as A}from"child_process";import N from"http";import L from"net";import{promisify as O}from"util";var ne="/index.bundle?platform=ios&dev=true&hot=true&minify=false";function D(e){return/^https?:\/\//i.test(e)}function T(e){return e.endsWith(".bundle")}function E(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 M(e){try{let r=D(e),t=new URL(e,"http://soot.local");return t.pathname=t.pathname.replace(/\.\.bundle$/,".bundle"),T(t.pathname)?(t.searchParams.delete("transform.bytecode"),E(t),r?t.toString():`${t.pathname}${t.search}${t.hash}`):e}catch{return e}}var P=O(A);R();var $=250,I=1500,B=120;function H(e,r=B){return new Promise(t=>{let o=new L.Socket,s=!1,i=a=>{s||(s=!0,o.destroy(),t(a))};o.setTimeout(r),o.once("connect",()=>i(!0)),o.once("timeout",()=>i(!1)),o.once("error",()=>i(!1)),o.connect(e,"localhost")})}function h(e,r,t="GET",o=$,s={}){return new Promise(i=>{let a=N.request({hostname:"localhost",port:e,path:r,method:t,timeout:o,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(o,()=>{a.destroy(),i(null)}),a.end()})}var j=[8081,8082,8083,8084,8085,8086,3e3,3001,19e3].map(e=>({port:e,pid:0}));function v(e,r){return!(e<=0||e>=2e4||r.has(e)||e>=5170&&e<=5200)}async function W(e=[]){let r=new Set(e);try{let{stdout:t}=await P("lsof -iTCP -sTCP:LISTEN -P -n 2>/dev/null | grep -E '^(node|bun)'",{encoding:"utf8",timeout:2e3});if(t.trim()){let o=new Map;for(let s of t.trim().split(`
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]);v(c,r)&&(o.has(c)||o.set(c,a))}if(o.size>0)return[...o.entries()].map(([s,i])=>({port:s,pid:i}))}}catch{}try{let{stdout:t}=await P(`ss -tlnp 2>/dev/null | grep -E '"(node|bun)"'`,{encoding:"utf8",timeout:2e3});if(t.trim()){let o=new Map;for(let s of t.trim().split(`
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;v(n,r)&&(o.has(n)||o.set(n,u))}if(o.size>0)return[...o.entries()].map(([s,i])=>({port:s,pid:i}))}}catch{}return j.filter(t=>v(t.port,r))}var y=new Map;async function F(e){if(e<=0)return null;let r=y.get(e);if(r)return r;try{let{stdout:t}=await P(`lsof -p ${e} -a -d cwd -Fn 2>/dev/null`,{encoding:"utf8",timeout:1500});for(let o of t.split(`
5
- `))if(o.startsWith("n")&&o.length>1){let s=o.slice(1).trim();if(s)return y.set(e,s),s}}catch{}return null}function G(e,r){return{port:e,framework:r,bundleUrl:p(e,`http://localhost:${e}/index.bundle?platform=ios&dev=true&hot=true&minify=false`),hmrUrl:`ws://localhost:${e}/hot`,lastSeen:Date.now()}}function p(e,r){let t=C().find(s=>s.preferredPort===e),o=t?.runtimeConfig?k(r,t.runtimeConfig):r;return M(o)}function z(e){return e.includes("/node_modules/one/metro-entry.bundle")}function J(e){try{let r=JSON.parse(e);return r&&typeof r=="object"?r:null}catch{return null}}function w(e,r,t){if(!r)return e;try{let o=JSON.parse(r.body),s=o?.extra?.expoClient||o?.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=o?.launchAsset?.url;i&&!e.patched&&!z(e.bundleUrl)&&(e.bundleUrl=p(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,m=new Set,S=new Set;async function K(e,r){if(!await H(e))return null;let t="/node_modules/one/metro-entry.bundle?platform=ios&dev=true",[o,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",I,{"expo-platform":"ios"}),m.has(e)?Promise.resolve(null):h(e,"/_expo/status")]);a&&a.statusCode===200?m.delete(e):m.has(e)||m.add(e);let n=i?J(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 g=u||`http://localhost:${e}/index.bundle?platform=ios&dev=true&hot=true&minify=false`,U=g.includes("/one/metro-entry.bundle")?"one":"expo";return w({port:e,framework:U,bundleUrl:p(e,g),hmrUrl:`ws://localhost:${e}/hot`,lastSeen:Date.now()},i,r)}if(s&&s.body.includes("packager-status:running"))return d.add(e),w(G(e,a&&a.statusCode===200?"expo":"metro"),i,r);if(o&&o.statusCode===200&&o.body.includes("sootsim-patched"))return d.delete(e),w({port:e,framework:"one",bundleUrl:p(e,`http://localhost:${e}/__soot/bundle.js`),hmrUrl:`ws://localhost:${e}/hot`,lastSeen:Date.now(),patched:!0},i,r);let l=await h(e,t,"HEAD");return l&&l.statusCode>0&&l.statusCode<400&&/application\/javascript/i.test(l.contentType||"")?(d.add(e),S.add(e),w({port:e,framework:"one",bundleUrl:p(e,`http://localhost:${e}${t}&minify=false`),hmrUrl:`ws://localhost:${e}/hot`,lastSeen:Date.now()},i,r)):(d.add(e),null)}function V(e){let r=e.projectName?.trim().toLowerCase();return!!(r==="soot"||r==="sootsim"||e.bundleId?.trim().toLowerCase()?.startsWith("dev.soot"))}var b=new Map,q=3e4,Q=1500;function Y(e){return!e||e.framework==="metro"||e.framework==="unknown"}function X(e){return e?p(e.port,e.bundleUrl)===e.bundleUrl:!0}function Z(e,r,t=Date.now()){if(r===0||e.pid!==r||!X(e.result))return!1;let o=t-e.cachedAt;return!(e.result===null&&o>=q||Y(e.result)&&o>=Q)}async function le(e={}){let r=await W(e.excludePorts),t=new Set(r.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[...m])t.has(n)||m.delete(n);for(let n of[...S])t.has(n)||S.delete(n);let o=[],s=[];for(let{port:n,pid:u}of r){let c=b.get(n);if(c&&Z(c,u)){c.result&&o.push(c.result);continue}c&&c.pid!==u&&(d.delete(n),m.delete(n),S.delete(n)),s.push({port:n,pid:u})}s.length>0&&(await Promise.all(s.map(u=>K(u.port,e.buildIconProxyUrl)))).forEach((u,c)=>{let{port:l,pid:g}=s[c];g!==0&&b.set(l,{pid:g,result:u,cachedAt:Date.now()}),u&&o.push(u)});let i=new Map;for(let{port:n,pid:u}of r)u>0&&i.set(n,u);await Promise.all(o.map(async n=>{let u=i.get(n.port);if(!u)return;n.pid=u;let c=await F(u);c&&(n.cwd=c)}));let a=new Set(i.values());for(let n of[...y.keys()])a.has(n)||y.delete(n);return o.filter(n=>!V(n))}export{k as a,ne as b,M as c,K as d,le as e};
@@ -1 +0,0 @@
1
- /*! sootsim v0.1.141 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */