sootsim 0.1.309 → 0.1.310

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 (148) hide show
  1. package/dist-cli/bin.js +5 -5
  2. package/dist-cli/chunks/{agent-PJLXWBDD.js → agent-CPD4GIXP.js} +2 -2
  3. package/dist-cli/chunks/{agent-wrapper-3MUIIBXT.js → agent-wrapper-JZTNUUZE.js} +2 -2
  4. package/dist-cli/chunks/{app-fonts-U64NV2YF.js → app-fonts-CFIBFEVF.js} +2 -2
  5. package/dist-cli/chunks/{assert-M4P25OHW.js → assert-C5WAWJ6I.js} +2 -2
  6. package/dist-cli/chunks/{auth-4UUAINI4.js → auth-UY7RPLPH.js} +2 -2
  7. package/dist-cli/chunks/{beta-AC2BNWOQ.js → beta-NM7T7MDN.js} +2 -2
  8. package/dist-cli/chunks/{camera-LATKOQVT.js → camera-4YUYYYJI.js} +2 -2
  9. package/dist-cli/chunks/{chunk-HKQURR57.js → chunk-2KSLGBIU.js} +2 -2
  10. package/dist-cli/chunks/{chunk-YRNCMR5K.js → chunk-2TRPGEZE.js} +2 -2
  11. package/dist-cli/chunks/{chunk-3BN7ACIG.js → chunk-3EO5JEG7.js} +2 -2
  12. package/dist-cli/chunks/{chunk-ISONHFRC.js → chunk-3S7UEXZW.js} +1 -1
  13. package/dist-cli/chunks/{chunk-I5SSRJDW.js → chunk-4XMPRQGE.js} +1 -1
  14. package/dist-cli/chunks/{chunk-VK3PJJAQ.js → chunk-63EKEKDF.js} +1 -1
  15. package/dist-cli/chunks/{chunk-I2RMH3PV.js → chunk-63JWRDM6.js} +2 -2
  16. package/dist-cli/chunks/{chunk-Y2KNXEIX.js → chunk-66Z2ADUQ.js} +2 -2
  17. package/dist-cli/chunks/{chunk-7BSX3TEH.js → chunk-6UXXOG6P.js} +2 -2
  18. package/dist-cli/chunks/{chunk-GHXN67UJ.js → chunk-7RJEULWN.js} +2 -2
  19. package/dist-cli/chunks/{chunk-A6FYCXLX.js → chunk-BFNAFH27.js} +1 -1
  20. package/dist-cli/chunks/{chunk-FAI6B7KM.js → chunk-BMIIHY6K.js} +3 -3
  21. package/dist-cli/chunks/{chunk-5O56UY3I.js → chunk-C3GMSIRT.js} +2 -2
  22. package/dist-cli/chunks/{chunk-N4Z7NF3J.js → chunk-C3O6UUPY.js} +3 -3
  23. package/dist-cli/chunks/{chunk-IPNM6NRT.js → chunk-C4O4VRN5.js} +2 -2
  24. package/dist-cli/chunks/{chunk-N236X7SZ.js → chunk-CORSX7M5.js} +1 -1
  25. package/dist-cli/chunks/{chunk-W7C6FSWM.js → chunk-EPMLSKSB.js} +2 -2
  26. package/dist-cli/chunks/{chunk-V7MJLIGU.js → chunk-EPZUFQMX.js} +2 -2
  27. package/dist-cli/chunks/{chunk-BDOGRZ6M.js → chunk-EWRPLFYI.js} +1 -1
  28. package/dist-cli/chunks/{chunk-NMC3E6DO.js → chunk-FT2XATWO.js} +1 -1
  29. package/dist-cli/chunks/{chunk-ZE3HG74O.js → chunk-GH2OE6F6.js} +2 -2
  30. package/dist-cli/chunks/{chunk-3KB6LLD2.js → chunk-GQVBLBUJ.js} +2 -2
  31. package/dist-cli/chunks/{chunk-FYVL4NBD.js → chunk-IS5OOCN5.js} +1 -1
  32. package/dist-cli/chunks/{chunk-ODFSRDJM.js → chunk-LKAAQBT6.js} +1 -1
  33. package/dist-cli/chunks/{chunk-JVWHA7TR.js → chunk-M2LP2VYQ.js} +2 -2
  34. package/dist-cli/chunks/{chunk-6ZIFXWDJ.js → chunk-MUQDPJUP.js} +1 -1
  35. package/dist-cli/chunks/{chunk-S6YNVIOG.js → chunk-NLTJE335.js} +2 -2
  36. package/dist-cli/chunks/{chunk-ZYZVAMKO.js → chunk-OQO3HU4Y.js} +1 -1
  37. package/dist-cli/chunks/{chunk-26LS4GPM.js → chunk-PJKCYUT3.js} +2 -2
  38. package/dist-cli/chunks/{chunk-S3YHQIHR.js → chunk-QPZVGHRV.js} +1 -1
  39. package/dist-cli/chunks/{chunk-GEXLPJZ6.js → chunk-R7AS52NA.js} +2 -2
  40. package/dist-cli/chunks/{chunk-FOWD7TYC.js → chunk-RMIKUUCO.js} +1 -1
  41. package/dist-cli/chunks/{chunk-2LXM5BMK.js → chunk-RX4CFOVV.js} +1 -1
  42. package/dist-cli/chunks/{chunk-DLPIGWDZ.js → chunk-RYPPRVBM.js} +2 -2
  43. package/dist-cli/chunks/{chunk-223S4HOM.js → chunk-S7WXPIOY.js} +2 -2
  44. package/dist-cli/chunks/{chunk-7QL76I5Z.js → chunk-STWCCIBA.js} +2 -2
  45. package/dist-cli/chunks/{chunk-GVTCP23K.js → chunk-SY7E43UY.js} +3 -3
  46. package/dist-cli/chunks/{chunk-DFLNNIMW.js → chunk-TAQV44LZ.js} +3 -3
  47. package/dist-cli/chunks/{chunk-2HUVXSCB.js → chunk-VAGUPECL.js} +2 -2
  48. package/dist-cli/chunks/{chunk-H4F7PJTT.js → chunk-WWIQEYHT.js} +1 -1
  49. package/dist-cli/chunks/{chunk-25GKNYXJ.js → chunk-XBBNRESY.js} +1 -1
  50. package/dist-cli/chunks/{chunk-WKDTGITC.js → chunk-XKAXZ4DS.js} +1 -1
  51. package/dist-cli/chunks/{chunk-LFJQHZGK.js → chunk-XMOULANJ.js} +2 -2
  52. package/dist-cli/chunks/{chunk-LR5GL7TZ.js → chunk-YIJFCR5T.js} +1 -1
  53. package/dist-cli/chunks/{chunk-FSM2WGIT.js → chunk-YMD6WWI7.js} +2 -2
  54. package/dist-cli/chunks/{chunk-47AF7DZW.js → chunk-YRRUK3EK.js} +1 -1
  55. package/dist-cli/chunks/{chunk-ASR54LQA.js → chunk-YZPSUNTO.js} +2 -2
  56. package/dist-cli/chunks/{chunk-FJ5D7KBQ.js → chunk-Z6H5FR3U.js} +2 -2
  57. package/dist-cli/chunks/{chunk-SJHHKL2L.js → chunk-ZNK3ZAA5.js} +2 -2
  58. package/dist-cli/chunks/{chunk-POTUFLUZ.js → chunk-ZS7OXPHR.js} +1 -1
  59. package/dist-cli/chunks/{cleanup-264HUJBQ.js → cleanup-2ZM4QSDV.js} +2 -2
  60. package/dist-cli/chunks/{cli-version-VBD6G5WE.js → cli-version-WXOEWZDA.js} +2 -2
  61. package/dist-cli/chunks/{compat-2LLTMAGD.js → compat-MGY3FZSI.js} +2 -2
  62. package/dist-cli/chunks/{config-K67AEQAU.js → config-3W5VNME6.js} +2 -2
  63. package/dist-cli/chunks/{control-3VWXBZ2B.js → control-7LNRM2BK.js} +2 -2
  64. package/dist-cli/chunks/daemon-ZNCVHOWJ.js +4 -0
  65. package/dist-cli/chunks/{debug-JO43E32E.js → debug-4CMFC2CO.js} +3 -3
  66. package/dist-cli/chunks/{desktop-ZSEVBLER.js → desktop-Q6CZSS4R.js} +3 -3
  67. package/dist-cli/chunks/{detox-KI7MKMXW.js → detox-2AF4MXXN.js} +2 -2
  68. package/dist-cli/chunks/{device-6EWIZV5M.js → device-E2WCI2N2.js} +2 -2
  69. package/dist-cli/chunks/{diagnose-S3ET3TIZ.js → diagnose-CZGCKNVY.js} +2 -2
  70. package/dist-cli/chunks/disk-cleanup-4T6MDZBA.js +4 -0
  71. package/dist-cli/chunks/drivers-NEB27ZKQ.js +4 -0
  72. package/dist-cli/chunks/{film-LMO5IQCB.js → film-UDSAJZXL.js} +3 -3
  73. package/dist-cli/chunks/flow-GXXVEHEW.js +4 -0
  74. package/dist-cli/chunks/help-3RVUJUAN.js +4 -0
  75. package/dist-cli/chunks/{hidden-runtime-alias-Y6PI4YOZ.js → hidden-runtime-alias-CHAB56GM.js} +2 -2
  76. package/dist-cli/chunks/{home-paths-YGTX3HLF.js → home-paths-WFCI5ORX.js} +2 -2
  77. package/dist-cli/chunks/inspect-4H4VNQJ4.js +4 -0
  78. package/dist-cli/chunks/install-desktop-RGCBPM4J.js +4 -0
  79. package/dist-cli/chunks/{login-WSIJQW3G.js → login-57UP2EKB.js} +4 -4
  80. package/dist-cli/chunks/{logout-WFBUX573.js → logout-UYNCJTOC.js} +2 -2
  81. package/dist-cli/chunks/{maestro-PFLRSGR4.js → maestro-QMAPXPZ7.js} +3 -3
  82. package/dist-cli/chunks/{maestro-generate-VS26IJM5.js → maestro-generate-N2BJXJDH.js} +3 -3
  83. package/dist-cli/chunks/{mode-OOTPI3ED.js → mode-SY5G7WQD.js} +2 -2
  84. package/dist-cli/chunks/{optional-demo-registry-KBMT5UGA.js → optional-demo-registry-DH3L6FFX.js} +2 -2
  85. package/dist-cli/chunks/{perf-AR6BYBON.js → perf-NZ6VEDLA.js} +2 -2
  86. package/dist-cli/chunks/{permissions-R3ZC56LP.js → permissions-EMH2K5LX.js} +2 -2
  87. package/dist-cli/chunks/{record-NUCCKPZD.js → record-44PMWGYY.js} +3 -3
  88. package/dist-cli/chunks/{report-issue-G66JIO6G.js → report-issue-PLGMRWXG.js} +2 -2
  89. package/dist-cli/chunks/runtime-CUSKTS2J.js +4 -0
  90. package/dist-cli/chunks/{screenshot-command-OYQVHOKW.js → screenshot-command-GJT5XS7P.js} +3 -3
  91. package/dist-cli/chunks/{screenshot-layers-DNVWS54T.js → screenshot-layers-4JSTS5VY.js} +2 -2
  92. package/dist-cli/chunks/{screenshots-capture-LJ6LTZLL.js → screenshots-capture-AQQISSQD.js} +2 -2
  93. package/dist-cli/chunks/{serve-JOXV5ECW.js → serve-TJMO4KGX.js} +2 -2
  94. package/dist-cli/chunks/{setup-RTUGZNIA.js → setup-7ZSYCUX6.js} +2 -2
  95. package/dist-cli/chunks/{skills-ABCIWLFD.js → skills-GRQPAAD5.js} +2 -2
  96. package/dist-cli/chunks/{storage-2TXWI3HS.js → storage-GWRZNBAU.js} +2 -2
  97. package/dist-cli/chunks/store-MLODFZBM.js +4 -0
  98. package/dist-cli/chunks/telemetry-XL3UDJSE.js +4 -0
  99. package/dist-cli/chunks/{timeline-CNOX2CCQ.js → timeline-2FXM7HEU.js} +2 -2
  100. package/dist-cli/chunks/{upgrade-CS4AOUGL.js → upgrade-AV7UOK2X.js} +2 -2
  101. package/dist-cli/chunks/upload-6DXF4DAQ.js +4 -0
  102. package/dist-cli/chunks/{version-Q3L5LLSS.js → version-C72O2LMS.js} +2 -2
  103. package/dist-cli/chunks/{web-2CGGMN7W.js → web-4V3YGWNC.js} +2 -2
  104. package/dist-cli/chunks/{what-happened-A7SLCHUS.js → what-happened-RGD2DOQI.js} +2 -2
  105. package/dist-lib/agent-daemon-client.cjs +1 -1
  106. package/dist-lib/agent-events.cjs +1 -1
  107. package/dist-lib/agent-identity.cjs +1 -1
  108. package/dist-lib/agent-sessions.cjs +1 -1
  109. package/dist-lib/attached-projects.cjs +1 -1
  110. package/dist-lib/auth/shared-session.cjs +1 -1
  111. package/dist-lib/backend-origin.cjs +1 -1
  112. package/dist-lib/beta.cjs +1 -1
  113. package/dist-lib/beta.mjs +1 -1
  114. package/dist-lib/bridge-constants.cjs +1 -1
  115. package/dist-lib/cli-constants.cjs +1 -1
  116. package/dist-lib/config.cjs +1 -1
  117. package/dist-lib/detox/index.cjs +1 -1
  118. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  119. package/dist-lib/home-paths.cjs +1 -1
  120. package/dist-lib/host/bridge-host.cjs +1 -1
  121. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  122. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  123. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  124. package/dist-lib/host/websocket-proxy.cjs +1 -1
  125. package/dist-lib/index.cjs +1 -1
  126. package/dist-lib/jump-to-source-babel.cjs +1 -1
  127. package/dist-lib/menu.cjs +1 -1
  128. package/dist-lib/menu.mjs +1 -1
  129. package/dist-lib/metro.cjs +1 -1
  130. package/dist-lib/profiles.cjs +1 -1
  131. package/dist-lib/render-mode.cjs +1 -1
  132. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  133. package/dist-lib/sdk.cjs +1 -1
  134. package/dist-lib/sdk.mjs +1 -1
  135. package/dist-lib/skills.cjs +1 -1
  136. package/dist-lib/vite.cjs +1 -1
  137. package/package.json +1 -1
  138. package/dist-cli/chunks/daemon-4EOVMYNW.js +0 -4
  139. package/dist-cli/chunks/disk-cleanup-BSWNZ4AI.js +0 -4
  140. package/dist-cli/chunks/drivers-AYUTJNIJ.js +0 -4
  141. package/dist-cli/chunks/flow-2QKKLLQM.js +0 -4
  142. package/dist-cli/chunks/help-SOP6FLQI.js +0 -4
  143. package/dist-cli/chunks/inspect-RU5RWMDH.js +0 -4
  144. package/dist-cli/chunks/install-desktop-AWS5ITUE.js +0 -4
  145. package/dist-cli/chunks/runtime-KOIKZGYF.js +0 -4
  146. package/dist-cli/chunks/store-NQKZHF7K.js +0 -4
  147. package/dist-cli/chunks/telemetry-NYAZLCMX.js +0 -4
  148. package/dist-cli/chunks/upload-3QPV23AA.js +0 -4
@@ -1,7 +1,7 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
- import{b as Dt,c as Bt}from"./chunk-S3YHQIHR.js";import{a as de}from"./chunk-I2RMH3PV.js";import{a as Pt,b as _t}from"./chunk-47AF7DZW.js";import{j as At}from"./chunk-223S4HOM.js";import{a as oe,b as D,c as A,d as Te,e as ae,f as X,g as pe,h as ye,i as Ot,j as Rt,k as Me,l as Et}from"./chunk-ASR54LQA.js";import{A as wt,B as $t,C as xt,F as St,H as vt,J as ue,K as kt,Q as Le,a as ke,b as rt,c as it,d as at,e as lt,f as ct,g as dt,h as ut,i as pt,j as mt,k as Be,l as Ce,r as je,s as ft,t as gt,u as ge,v as yt,w as Ie,x as qe,y as ht,z as bt}from"./chunk-I5SSRJDW.js";import{a as nt,f as It,h as Tt,j as Mt,k as Nt,l as Ft,m as ce}from"./chunk-GHXN67UJ.js";import{a as ot}from"./chunk-POTUFLUZ.js";import{a as Q}from"./chunk-JVWHA7TR.js";import{f as st}from"./chunk-S6YNVIOG.js";import{c as Ae,e as De}from"./chunk-ODFSRDJM.js";function We(e){return`(async () => {
4
+ import{b as Dt,c as Bt}from"./chunk-QPZVGHRV.js";import{a as de}from"./chunk-63JWRDM6.js";import{a as Pt,b as _t}from"./chunk-YRRUK3EK.js";import{j as At}from"./chunk-S7WXPIOY.js";import{a as oe,b as D,c as A,d as Te,e as ae,f as X,g as pe,h as ye,i as Ot,j as Rt,k as Me,l as Et}from"./chunk-YZPSUNTO.js";import{A as wt,B as $t,C as xt,F as St,H as vt,J as ue,K as kt,Q as Le,a as ke,b as rt,c as it,d as at,e as lt,f as ct,g as dt,h as ut,i as pt,j as mt,k as Be,l as Ce,r as je,s as ft,t as gt,u as ge,v as yt,w as Ie,x as qe,y as ht,z as bt}from"./chunk-4XMPRQGE.js";import{a as nt,f as It,h as Tt,j as Mt,k as Nt,l as Ft,m as ce}from"./chunk-7RJEULWN.js";import{a as ot}from"./chunk-ZS7OXPHR.js";import{a as Q}from"./chunk-M2LP2VYQ.js";import{f as st}from"./chunk-NLTJE335.js";import{c as Ae,e as De}from"./chunk-LKAAQBT6.js";function We(e){return`(async () => {
5
5
  const bridge = globalThis.SootSim && globalThis.SootSim.bridges && globalThis.SootSim.bridges.hotRemount
6
6
  if (!bridge || typeof bridge.reloadExternalApp !== 'function') return false
7
7
  await bridge.reloadExternalApp({ resetStorage: ${e?"true":"false"} })
@@ -567,7 +567,7 @@ import{b as Dt,c as Bt}from"./chunk-S3YHQIHR.js";import{a as de}from"./chunk-I2R
567
567
  `);console.log(`${o??""}
568
568
 
569
569
  ${n}
570
- `),process.exit(0)}let F=c.wsPort,N=c.simId,j=c.simIdSource,R=c.commandTimeoutMs;if(p==="get"&&f==="diagnosis"){let x=i.indexOf("diagnosis"),o=x>=0?[...i.slice(0,x),...i.slice(x+1)]:i,{runDiagnose:n}=await import("./diagnose-S3ET3TIZ.js"),r=await n(["recent",...o],t);process.exitCode=r;return}if(p==="do"&&f==="scan"){let{runCamera:x}=await import("./camera-LATKOQVT.js");await x(i,{port:t.port});return}if(f==="list"&&i.some(x=>x==="--drivers"||x==="-D")){let{buildDriverListRows:x}=await import("./drivers-AYUTJNIJ.js"),o=x();console.log(` available drivers (${o.length}):
570
+ `),process.exit(0)}let F=c.wsPort,N=c.simId,j=c.simIdSource,R=c.commandTimeoutMs;if(p==="get"&&f==="diagnosis"){let x=i.indexOf("diagnosis"),o=x>=0?[...i.slice(0,x),...i.slice(x+1)]:i,{runDiagnose:n}=await import("./diagnose-CZGCKNVY.js"),r=await n(["recent",...o],t);process.exitCode=r;return}if(p==="do"&&f==="scan"){let{runCamera:x}=await import("./camera-4YUYYYJI.js");await x(i,{port:t.port});return}if(f==="list"&&i.some(x=>x==="--drivers"||x==="-D")){let{buildDriverListRows:x}=await import("./drivers-NEB27ZKQ.js"),o=x();console.log(` available drivers (${o.length}):
571
571
  `);let n=Math.max(...o.map(a=>a.id.length),6),r=Math.max(...o.map(a=>a.kind.length),4);for(let a of o){let u=a.available?"\u2713":"\u2717",m=a.id.padEnd(n),g=a.kind.padEnd(r);console.log(` ${u} ${m} ${g} ${a.description}`),a.available&&a.detail?console.log(` ${a.detail}`):!a.available&&a.reason&&console.log(` unavailable: ${a.reason}`)}return}let d=Mt(c),q=N||"default",E=new Set(["errors","warnings","requests","js","eval","reload","globals","perf","storage-clear","list","wait","sleep"]),_=200;function J(x){let o=x.replace(/\s+/g," ").trim();if(!o)return"";if(/^<(!doctype html|html|\?xml)|<body[\s>]/i.test(o)){let r=/<title[^>]*>([^<]+)<\/title>/i.exec(x)?.[1]?.trim(),a=/<body[^>]*>([\s\S]*?)<\//i.exec(x)?.[1]?.replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim().slice(0,80),u=r||a||"html error page";return`<html ${x.length}B> "${u}" (body elided \u2014 add --json for the full payload)`}return o.length<=_?o:`${o.slice(0,_)}\u2026 (+${o.length-_} more bytes)`}function U(x){let o=x.displayUrl||x.url;return x.status!=null?`${x.method} ${o} -> ${x.status}${x.statusText?` ${x.statusText}`:""}`:x.error?`${x.method} ${o} -> ${x.error}`:`${x.method} ${o}`}async function I(x){let o=fe()?400:200;try{let{settled:n,elapsed:r}=await se({bridge:x,maxMs:o,pollMs:32,stablePolls:2});n||process.stderr.write(` \u26A0 auto-wait timed out after ${r??o}ms \u2014 next command may see mid-animation state. use \`sootsim do settle\` for a longer wait.
572
572
  `)}catch{}}function O(x,o){if(o.result?.reason==="offscreen"){let{x:n,y:r,screen:a}=o.result;console.error(` tap failed: ${x} resolved to (${Math.round(n)},${Math.round(r)}), outside the ${a?.width}x${a?.height} screen`),console.error(" the node exists but is scrolled out of view \u2014 scroll it on-screen first (sootsim do scroll / swipe), then tap.");return}console.error(` tap failed: ${x} stayed visible but did not receive a hittable press after ${o.attempts} attempt${o.attempts===1?"":"s"}`),o.result&&console.error(` last result: ${JSON.stringify(o.result)}`)}async function H(){try{return await d.send({type:"evaluate",code:`(() => ({
573
573
  console: ${Ie},
@@ -1,7 +1,7 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
- import{b}from"./chunk-Y2KNXEIX.js";import{e as $}from"./chunk-GHXN67UJ.js";import{b as y,c as R,d as m,e as w,f as a}from"./chunk-GEXLPJZ6.js";import{G as g,H as u,I as d,O as h,l as p}from"./chunk-25GKNYXJ.js";import S from"fs";import{WebSocket as E}from"ws";function C(t){if(!t||typeof t!="object")return!1;let e=Reflect.get(t,"sections");return typeof Reflect.get(t,"title")=="string"&&Array.isArray(e)&&e.every(o=>o&&typeof o=="object"&&typeof Reflect.get(o,"title")=="string"&&Array.isArray(Reflect.get(o,"items"))&&Reflect.get(o,"items").every(n=>n&&typeof n=="object"&&typeof Reflect.get(n,"summary")=="string"&&typeof Reflect.get(n,"hash")=="string"))}async function A(t,e=fetch){try{let o=new URL(w);o.searchParams.set("version",t);let n=await e(o,{headers:{accept:"application/json"},signal:AbortSignal.timeout(5e3)});if(!n.ok)return null;let s=await n.json();if(!s||typeof s!="object")return null;let r=Reflect.get(s,"entries");return!Array.isArray(r)||!C(r[0])?null:r[0]}catch{return null}}function O(t,e){let o=[`what's new in SootSim engine v${t}:`];if(!e||e.sections.length===0)o.push(" release notes are not available yet");else for(let n of e.sections){o.push(` ${n.title}:`);for(let s of n.items)o.push(` \u2022 ${s.summary}`)}return o.push(` full changelog: ${m}`),o.join(`
4
+ import{b}from"./chunk-66Z2ADUQ.js";import{e as $}from"./chunk-7RJEULWN.js";import{b as y,c as R,d as m,e as w,f as a}from"./chunk-R7AS52NA.js";import{G as g,H as u,I as d,O as h,l as p}from"./chunk-XBBNRESY.js";import S from"fs";import{WebSocket as E}from"ws";function C(t){if(!t||typeof t!="object")return!1;let e=Reflect.get(t,"sections");return typeof Reflect.get(t,"title")=="string"&&Array.isArray(e)&&e.every(o=>o&&typeof o=="object"&&typeof Reflect.get(o,"title")=="string"&&Array.isArray(Reflect.get(o,"items"))&&Reflect.get(o,"items").every(n=>n&&typeof n=="object"&&typeof Reflect.get(n,"summary")=="string"&&typeof Reflect.get(n,"hash")=="string"))}async function A(t,e=fetch){try{let o=new URL(w);o.searchParams.set("version",t);let n=await e(o,{headers:{accept:"application/json"},signal:AbortSignal.timeout(5e3)});if(!n.ok)return null;let s=await n.json();if(!s||typeof s!="object")return null;let r=Reflect.get(s,"entries");return!Array.isArray(r)||!C(r[0])?null:r[0]}catch{return null}}function O(t,e){let o=[`what's new in SootSim engine v${t}:`];if(!e||e.sections.length===0)o.push(" release notes are not available yet");else for(let n of e.sections){o.push(` ${n.title}:`);for(let s of n.items)o.push(` \u2022 ${s.summary}`)}return o.push(` full changelog: ${m}`),o.join(`
5
5
  `)}async function Q(t,e={}){let[o,...n]=t;if(!o||o==="--help"||o==="-h"){k();return}switch(o){case"install":return L(n,e);case"list":case"ls":return j(n);case"use":return T(n);case"remove":case"rm":return D(n);case"which":case"active":return G();case"notes":case"changelog":return U(n);default:console.error(` unknown runtime subcommand: ${o}`),k(),process.exit(1)}}function k(){console.log(`
6
6
  sootsim runtime \u2014 manage engine runtimes under ~/.sootsim/runtimes/
7
7
 
@@ -27,4 +27,4 @@ examples:
27
27
  sootsim runtime install --channel beta
28
28
  sootsim runtime use 1.2.3
29
29
  sootsim runtime notes
30
- `)}async function L(t,e){let{version:o,flags:n}=F(t),s=n.channel??e.channel??"stable",r=n.force===!0,l=n.setActive!==!1;g(),console.log("sootsim runtime install"),console.log(` cdn: ${a.resolveCdnOrigin()}`);try{let i=await a.install({version:o,channel:s,force:r,setActive:l,protectVersions:h()});return console.log(` version: ${i.version} (channel: ${i.channel})`),i.installed?console.log(` installed ${i.version}`):console.log(` already installed at ${i.runtimeDir}`),l&&await I(i.version),i}catch(i){console.error(` ${N(i)}`),process.exit(1)}}async function I(t){d(t),console.log(` active: ${t}`),await _(t)||console.log(` (no daemon running \u2014 next sootsim/electron launch will pick up ${t})`)}async function _(t){let{isDaemonLockfileFresh:e,readDaemonLockfile:o}=await import("./home-paths-YGTX3HLF.js"),n=o();if(!e(n))return!1;let s=$();return new Promise(r=>{let l=!1,i=!1,f=x=>{l||(l=!0,r(x))},c=new E(`ws://127.0.0.1:${s}`,{handshakeTimeout:800}),v=setTimeout(()=>{try{c.close()}catch{}f(i)},1500);c.on("open",()=>{try{c.send(JSON.stringify({type:"runtime:use",version:t,id:0})),i=!0}catch{}setTimeout(()=>{try{c.close()}catch{}},100)}),c.on("close",()=>{clearTimeout(v),f(i)}),c.on("error",()=>{clearTimeout(v),f(!1)})})}async function j(t){g();let e=a.listInstalled(),o=u();if(console.log("installed:"),e.length===0)console.log(" (none)");else for(let n of e)console.log(` ${n===o?"*":" "} ${n}`);try{let n=await a.fetchManifest();console.log("available (latest per channel):");for(let[r,l]of Object.entries(n.channels))console.log(` ${r.padEnd(8)} ${l.latest}`);let s=Object.keys(n.versions).sort(y).reverse();if(s.length>1){console.log("hosted versions:");for(let r of s)console.log(` ${r}`)}}catch(n){console.log(`available: (could not fetch manifest: ${N(n)})`)}}async function T(t){let e=t[0];e||(console.error(" usage: sootsim runtime use <version>"),process.exit(1));let o=a.listInstalled();o.includes(e)||(console.error(` version ${e} is not installed`),console.error(` installed: ${o.join(", ")||"(none)"}`),console.error(` run \`sootsim runtime install ${e}\` first`),process.exit(1)),await I(e)}async function D(t){let e=t[0];e||(console.error(" usage: sootsim runtime remove <version>"),process.exit(1)),u()===e&&(console.error(` cannot remove active runtime ${e}`),console.error(" switch with `sootsim runtime use <other>` first, or install another version"),process.exit(1)),h().includes(e)&&(console.error(` cannot remove runtime ${e} while a project is using it`),process.exit(1));let n=p(e);if(!S.existsSync(n)){console.error(` ${e} is not installed`);return}S.rmSync(n,{recursive:!0,force:!0}),console.log(` removed ${e}`)}async function G(){let t=u();if(!t){console.log(" no active runtime");return}console.log(t)}async function U(t){t.length>0&&(console.error(" usage: sootsim runtime notes"),process.exit(1));let{config:e}=await b(),o=e?.runtimeVersion??u();if(!o){console.log(" no active runtime"),console.log(` release notes: ${m}`);return}console.log(O(o,await A(o)))}function F(t){let e={},o=[];for(let n=0;n<t.length;n++){let s=t[n];if(s==="--channel"&&n+1<t.length){e.channel=t[n+1],n++;continue}if(s.startsWith("--channel=")){e.channel=s.slice(10);continue}if(s==="--force"){e.force=!0;continue}if(s==="--set-active=false"||s==="--no-set-active"){e.setActive=!1;continue}o.push(s)}return{version:o[0]??null,flags:e}}function N(t){return t instanceof Error?t.message:String(t)}export{A as a,O as b,Q as c};
30
+ `)}async function L(t,e){let{version:o,flags:n}=F(t),s=n.channel??e.channel??"stable",r=n.force===!0,l=n.setActive!==!1;g(),console.log("sootsim runtime install"),console.log(` cdn: ${a.resolveCdnOrigin()}`);try{let i=await a.install({version:o,channel:s,force:r,setActive:l,protectVersions:h()});return console.log(` version: ${i.version} (channel: ${i.channel})`),i.installed?console.log(` installed ${i.version}`):console.log(` already installed at ${i.runtimeDir}`),l&&await I(i.version),i}catch(i){console.error(` ${N(i)}`),process.exit(1)}}async function I(t){d(t),console.log(` active: ${t}`),await _(t)||console.log(` (no daemon running \u2014 next sootsim/electron launch will pick up ${t})`)}async function _(t){let{isDaemonLockfileFresh:e,readDaemonLockfile:o}=await import("./home-paths-WFCI5ORX.js"),n=o();if(!e(n))return!1;let s=$();return new Promise(r=>{let l=!1,i=!1,f=x=>{l||(l=!0,r(x))},c=new E(`ws://127.0.0.1:${s}`,{handshakeTimeout:800}),v=setTimeout(()=>{try{c.close()}catch{}f(i)},1500);c.on("open",()=>{try{c.send(JSON.stringify({type:"runtime:use",version:t,id:0})),i=!0}catch{}setTimeout(()=>{try{c.close()}catch{}},100)}),c.on("close",()=>{clearTimeout(v),f(i)}),c.on("error",()=>{clearTimeout(v),f(!1)})})}async function j(t){g();let e=a.listInstalled(),o=u();if(console.log("installed:"),e.length===0)console.log(" (none)");else for(let n of e)console.log(` ${n===o?"*":" "} ${n}`);try{let n=await a.fetchManifest();console.log("available (latest per channel):");for(let[r,l]of Object.entries(n.channels))console.log(` ${r.padEnd(8)} ${l.latest}`);let s=Object.keys(n.versions).sort(y).reverse();if(s.length>1){console.log("hosted versions:");for(let r of s)console.log(` ${r}`)}}catch(n){console.log(`available: (could not fetch manifest: ${N(n)})`)}}async function T(t){let e=t[0];e||(console.error(" usage: sootsim runtime use <version>"),process.exit(1));let o=a.listInstalled();o.includes(e)||(console.error(` version ${e} is not installed`),console.error(` installed: ${o.join(", ")||"(none)"}`),console.error(` run \`sootsim runtime install ${e}\` first`),process.exit(1)),await I(e)}async function D(t){let e=t[0];e||(console.error(" usage: sootsim runtime remove <version>"),process.exit(1)),u()===e&&(console.error(` cannot remove active runtime ${e}`),console.error(" switch with `sootsim runtime use <other>` first, or install another version"),process.exit(1)),h().includes(e)&&(console.error(` cannot remove runtime ${e} while a project is using it`),process.exit(1));let n=p(e);if(!S.existsSync(n)){console.error(` ${e} is not installed`);return}S.rmSync(n,{recursive:!0,force:!0}),console.log(` removed ${e}`)}async function G(){let t=u();if(!t){console.log(" no active runtime");return}console.log(t)}async function U(t){t.length>0&&(console.error(" usage: sootsim runtime notes"),process.exit(1));let{config:e}=await b(),o=e?.runtimeVersion??u();if(!o){console.log(" no active runtime"),console.log(` release notes: ${m}`);return}console.log(O(o,await A(o)))}function F(t){let e={},o=[];for(let n=0;n<t.length;n++){let s=t[n];if(s==="--channel"&&n+1<t.length){e.channel=t[n+1],n++;continue}if(s.startsWith("--channel=")){e.channel=s.slice(10);continue}if(s==="--force"){e.force=!0;continue}if(s==="--set-active=false"||s==="--no-set-active"){e.setActive=!1;continue}o.push(s)}return{version:o[0]??null,flags:e}}function N(t){return t instanceof Error?t.message:String(t)}export{A as a,O as b,Q as c};
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (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 k}from"./chunk-LR5GL7TZ.js";import{createHash as L}from"node:crypto";import D from"node:fs";import{createRequire as E}from"node:module";import x from"node:path";var w=/(^|\/)expo-splash-screen$/,A=/(^|\/)react-native-bootsplash$/;function R(n,e){let r=e.replace(/\/+$/,""),t=n.replace(/^\.\//,"").replace(/^\/+/,"");if(t)return`${r}/assets/${t}`}function d(n,e,r){return r?r(n):R(n,e)}function y(n){if(n==="cover")return"cover";if(n==="contain"||n==="native")return"contain"}function c(n){return typeof n=="string"&&n.length>0?n:void 0}function S(n){return typeof n=="number"&&Number.isFinite(n)?n:void 0}function O(n,e,r){if(!n||typeof n!="object")return null;let t=n,o={source:"expo-splash-screen",backgroundColor:c(t.backgroundColor)??"#ffffff"},i=c(t.image);i&&(o.imageUrl=d(i,e,r));let s=S(t.imageWidth);s!=null&&(o.imageWidthPx=s);let l=y(t.resizeMode);l&&(o.resizeMode=l);let a=t.dark;if(a&&typeof a=="object"){let u=a,g=c(u.backgroundColor),f=c(u.image);(g||f)&&(o.dark={},g&&(o.dark.backgroundColor=g),f&&(o.dark.imageUrl=d(f,e,r)))}return o}function v(n,e,r,t){let p=n[e],o=p&&typeof p=="object"?p.splash:void 0,i=n.splash,s=o&&typeof o=="object"?o:i;if(!s||typeof s!="object")return null;let a={source:"expo-legacy",backgroundColor:c(s.backgroundColor)??"#ffffff",imageWidthPx:S(s.imageWidth)??200,resizeMode:y(s.resizeMode)??"contain"},u=c(s.image);u&&(a.imageUrl=d(u,r,t));let g=s.dark;if(g&&typeof g=="object"){let f=g,m=c(f.backgroundColor),h=c(f.image);(m||h)&&(a.dark={},m&&(a.dark.backgroundColor=m),h&&(a.dark.imageUrl=d(h,r,t)))}return a}function j(n,e,r){if(!n||typeof n!="object")return null;let t=n,p=c(t.logo);if(!p)return null;let o={source:"react-native-bootsplash",backgroundColor:c(t.background)??"#fff",imageUrl:d(p,e,r),imageWidthPx:S(t.logoWidth)??100,resizeMode:"contain"},i=c(t.darkBackground),s=c(t.darkLogo);return(i||s)&&(o.dark={},i&&(o.dark.backgroundColor=i),s&&(o.dark.imageUrl=d(s,e,r))),o}function b(n,e,r,t={}){if(!n||typeof n!="object")return null;let p=n,o=p.plugins,i=null,s=null;if(Array.isArray(o))for(let l of o){let a=Array.isArray(l)?l[0]:l;if(typeof a!="string")continue;let u=Array.isArray(l)?l[1]??{}:{};!i&&w.test(a)?i=O(u,r,t.resolveAssetUrl):!s&&A.test(a)&&(s=j(u,r,t.resolveAssetUrl))}return s||i||v(p,e,r,t.resolveAssetUrl)}var C=E(import.meta.url);function I(n){try{let e=new URL(n),r=e.hostname.replace(/^\[|\]$/g,"").toLowerCase();if(r==="localhost"||r.endsWith(".localhost")||r==="0.0.0.0"||r==="::1"||/^127(?:\.\d{1,3}){3}$/.test(r))return e.origin}catch{}return null}function z(n){try{return D.statSync(x.join(n,"package.json")).isFile()}catch{return!1}}function K(n){let e=I(n.bundleUrl);if(!e)return null;let r=n.repoDir||process.env.CONTRAST_REPO_DIR,t=r?x.resolve(r):process.cwd();if(!r&&!z(t))return null;let o=k(t,{trustStart:n.exactProjectDir})?.appDir??null;if(!o)return null;let i=(n.platform||process.env.CONTRAST_PLATFORM||"ios").toLowerCase(),s=null;try{let a=C.resolve("@expo/config",{paths:[o,t]}),u=C(a);typeof u.getConfig=="function"&&(s=u.getConfig)}catch{}if(!s)return null;let l;try{let a=s(o,{skipSDKVersionRequirement:!0});a?.exp&&typeof a.exp=="object"&&(l=a.exp)}catch{}return!l||typeof l!="object"?null:b(l,i==="android"?"android":"ios",e)}function X(n){return encodeURIComponent(JSON.stringify(n))}function M(n){if(!n)return null;try{let e=JSON.parse(decodeURIComponent(n));if(!e||typeof e!="object")return null;let r=e;return r.source!=="expo-splash-screen"&&r.source!=="expo-legacy"&&r.source!=="react-native-bootsplash"||typeof r.backgroundColor!="string"?null:e}catch{return null}}function F(n){let e=new Set;return n.imageUrl&&e.add(n.imageUrl),n.dark?.imageUrl&&e.add(n.dark.imageUrl),[...e]}function W(n){let e=(n.split("?")[0].split(".").pop()||"").toLowerCase();return e==="png"?"image/png":e==="jpg"||e==="jpeg"?"image/jpeg":e==="webp"?"image/webp":e==="gif"?"image/gif":e==="svg"?"image/svg+xml":"application/octet-stream"}async function Q(n,e){let r=M(n);if(!r)return[];let t=[],p=new Set;for(let o of F(r)){let i=L("sha256").update(o).digest("hex");if(!p.has(i)){p.add(i);try{let s=await fetch(o);if(!s.ok){e?.onError?.(o,new Error(`${s.status} ${s.statusText}`));continue}let l=new Uint8Array(await s.arrayBuffer());t.push({url:o,urlhash:i,contentType:W(o),bytes:l}),e?.onStaged?.({url:o,byteLength:l.byteLength})}catch(s){e?.onError?.(o,s)}}}return t}import{spawn as T}from"child_process";function U(n,e={}){if(!n)throw new Error("openUrl requires a url");let r=e.platform??process.platform;return r==="darwin"?{command:"open",args:e.background===!1?[n]:["-g",n],via:"system"}:r==="win32"?{command:"cmd",args:["/c","start","",n],via:"system"}:{command:"xdg-open",args:[n],via:"system"}}async function N(n,e,r){return new Promise((t,p)=>{let o=T(n,e,{detached:r,stdio:"ignore"});o.once("error",p),o.once("spawn",()=>{r&&o.unref(),t(o.pid)})})}async function P(n,e={}){let r=U(n,e),t=await N(r.command,r.args,e.detached??!0);return{...r,pid:t,attachUrl:n}}async function $(n,e={}){await P(n,e)}export{K as a,X as b,Q as c,$ as d};
4
+ import{a as k}from"./chunk-YIJFCR5T.js";import{createHash as L}from"node:crypto";import D from"node:fs";import{createRequire as E}from"node:module";import x from"node:path";var w=/(^|\/)expo-splash-screen$/,A=/(^|\/)react-native-bootsplash$/;function R(n,e){let r=e.replace(/\/+$/,""),t=n.replace(/^\.\//,"").replace(/^\/+/,"");if(t)return`${r}/assets/${t}`}function d(n,e,r){return r?r(n):R(n,e)}function y(n){if(n==="cover")return"cover";if(n==="contain"||n==="native")return"contain"}function c(n){return typeof n=="string"&&n.length>0?n:void 0}function S(n){return typeof n=="number"&&Number.isFinite(n)?n:void 0}function O(n,e,r){if(!n||typeof n!="object")return null;let t=n,o={source:"expo-splash-screen",backgroundColor:c(t.backgroundColor)??"#ffffff"},i=c(t.image);i&&(o.imageUrl=d(i,e,r));let s=S(t.imageWidth);s!=null&&(o.imageWidthPx=s);let l=y(t.resizeMode);l&&(o.resizeMode=l);let a=t.dark;if(a&&typeof a=="object"){let u=a,g=c(u.backgroundColor),f=c(u.image);(g||f)&&(o.dark={},g&&(o.dark.backgroundColor=g),f&&(o.dark.imageUrl=d(f,e,r)))}return o}function v(n,e,r,t){let p=n[e],o=p&&typeof p=="object"?p.splash:void 0,i=n.splash,s=o&&typeof o=="object"?o:i;if(!s||typeof s!="object")return null;let a={source:"expo-legacy",backgroundColor:c(s.backgroundColor)??"#ffffff",imageWidthPx:S(s.imageWidth)??200,resizeMode:y(s.resizeMode)??"contain"},u=c(s.image);u&&(a.imageUrl=d(u,r,t));let g=s.dark;if(g&&typeof g=="object"){let f=g,m=c(f.backgroundColor),h=c(f.image);(m||h)&&(a.dark={},m&&(a.dark.backgroundColor=m),h&&(a.dark.imageUrl=d(h,r,t)))}return a}function j(n,e,r){if(!n||typeof n!="object")return null;let t=n,p=c(t.logo);if(!p)return null;let o={source:"react-native-bootsplash",backgroundColor:c(t.background)??"#fff",imageUrl:d(p,e,r),imageWidthPx:S(t.logoWidth)??100,resizeMode:"contain"},i=c(t.darkBackground),s=c(t.darkLogo);return(i||s)&&(o.dark={},i&&(o.dark.backgroundColor=i),s&&(o.dark.imageUrl=d(s,e,r))),o}function b(n,e,r,t={}){if(!n||typeof n!="object")return null;let p=n,o=p.plugins,i=null,s=null;if(Array.isArray(o))for(let l of o){let a=Array.isArray(l)?l[0]:l;if(typeof a!="string")continue;let u=Array.isArray(l)?l[1]??{}:{};!i&&w.test(a)?i=O(u,r,t.resolveAssetUrl):!s&&A.test(a)&&(s=j(u,r,t.resolveAssetUrl))}return s||i||v(p,e,r,t.resolveAssetUrl)}var C=E(import.meta.url);function I(n){try{let e=new URL(n),r=e.hostname.replace(/^\[|\]$/g,"").toLowerCase();if(r==="localhost"||r.endsWith(".localhost")||r==="0.0.0.0"||r==="::1"||/^127(?:\.\d{1,3}){3}$/.test(r))return e.origin}catch{}return null}function z(n){try{return D.statSync(x.join(n,"package.json")).isFile()}catch{return!1}}function K(n){let e=I(n.bundleUrl);if(!e)return null;let r=n.repoDir||process.env.CONTRAST_REPO_DIR,t=r?x.resolve(r):process.cwd();if(!r&&!z(t))return null;let o=k(t,{trustStart:n.exactProjectDir})?.appDir??null;if(!o)return null;let i=(n.platform||process.env.CONTRAST_PLATFORM||"ios").toLowerCase(),s=null;try{let a=C.resolve("@expo/config",{paths:[o,t]}),u=C(a);typeof u.getConfig=="function"&&(s=u.getConfig)}catch{}if(!s)return null;let l;try{let a=s(o,{skipSDKVersionRequirement:!0});a?.exp&&typeof a.exp=="object"&&(l=a.exp)}catch{}return!l||typeof l!="object"?null:b(l,i==="android"?"android":"ios",e)}function X(n){return encodeURIComponent(JSON.stringify(n))}function M(n){if(!n)return null;try{let e=JSON.parse(decodeURIComponent(n));if(!e||typeof e!="object")return null;let r=e;return r.source!=="expo-splash-screen"&&r.source!=="expo-legacy"&&r.source!=="react-native-bootsplash"||typeof r.backgroundColor!="string"?null:e}catch{return null}}function F(n){let e=new Set;return n.imageUrl&&e.add(n.imageUrl),n.dark?.imageUrl&&e.add(n.dark.imageUrl),[...e]}function W(n){let e=(n.split("?")[0].split(".").pop()||"").toLowerCase();return e==="png"?"image/png":e==="jpg"||e==="jpeg"?"image/jpeg":e==="webp"?"image/webp":e==="gif"?"image/gif":e==="svg"?"image/svg+xml":"application/octet-stream"}async function Q(n,e){let r=M(n);if(!r)return[];let t=[],p=new Set;for(let o of F(r)){let i=L("sha256").update(o).digest("hex");if(!p.has(i)){p.add(i);try{let s=await fetch(o);if(!s.ok){e?.onError?.(o,new Error(`${s.status} ${s.statusText}`));continue}let l=new Uint8Array(await s.arrayBuffer());t.push({url:o,urlhash:i,contentType:W(o),bytes:l}),e?.onStaged?.({url:o,byteLength:l.byteLength})}catch(s){e?.onError?.(o,s)}}}return t}import{spawn as T}from"child_process";function U(n,e={}){if(!n)throw new Error("openUrl requires a url");let r=e.platform??process.platform;return r==="darwin"?{command:"open",args:e.background===!1?[n]:["-g",n],via:"system"}:r==="win32"?{command:"cmd",args:["/c","start","",n],via:"system"}:{command:"xdg-open",args:[n],via:"system"}}async function N(n,e,r){return new Promise((t,p)=>{let o=T(n,e,{detached:r,stdio:"ignore"});o.once("error",p),o.once("spawn",()=>{r&&o.unref(),t(o.pid)})})}async function P(n,e={}){let r=U(n,e),t=await N(r.command,r.args,e.detached??!0);return{...r,pid:t,attachUrl:n}}async function $(n,e={}){await P(n,e)}export{K as a,X as b,Q as c,$ as d};
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
4
  var c="sootsim-agent-prompt-v1";function r(n){return typeof n=="string"?n.trim():""}function m(n){let e=r(n.text);if(!e)return"";let t=r(n.displayText),s=r(n.inspectSummary),o=r(n.inspectTrace);return!!s||!!o||/[\r\n]/.test(e)||!!t&&t!==e?JSON.stringify({__sootsimAgentPrompt:c,text:e,displayText:t,inspectSummary:s,inspectTrace:o}):e}function u(n){let e=r(n);if(!e)return null;try{let t=JSON.parse(e);if(t.__sootsimAgentPrompt!==c)return{text:e};let s=r(typeof t.text=="string"?t.text:void 0);if(!s)return null;let o=r(typeof t.displayText=="string"?t.displayText:void 0),i=r(typeof t.inspectSummary=="string"?t.inspectSummary:void 0),p=r(typeof t.inspectTrace=="string"?t.inspectTrace:void 0);return{text:s,...o?{displayText:o}:{},...i?{inspectSummary:i}:{},...p?{inspectTrace:p}:{}}}catch{return{text:e}}}export{m as a,u as b};
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
4
  import{randomUUID as k}from"node:crypto";import r from"node:fs";import{homedir as A}from"node:os";import o from"node:path";var L="SOOTSIM_HOME",R="active",P="daemon.json",O="dev-bridge.json",N="config.json",S=3e4;function c(){let e=process.env[L];return e&&e.length>0?o.resolve(e):o.join(A(),".sootsim")}function E(){if(process.env.SOOTSIM_FORCE_DAEMON_INSTALL==="1")return!1;let e=process.env.SOOTSIM_DEV;if(e==="1"||e==="true")return!0;if(e==="0"||e==="false")return!1;let t=process.argv[1];if(!t)return!1;try{return r.realpathSync(t).includes(`${o.sep}packages${o.sep}sootsim${o.sep}`)}catch{return!1}}function _(){return process.env.SOOTSIM_FORCE_DAEMON_INSTALL==="1"?!1:process.env.IS_TAMAGUI_DEV==="1"}function G(){return E()||_()}function d(){return o.join(c(),"runtimes")}function j(e){return o.join(d(),e)}function b(){return o.join(d(),R)}function y(){return o.join(c(),"electron")}function K(){return o.join(y(),"userData")}function W(e){return o.join(y(),e)}function w(){return o.join(c(),"profiles")}function I(){return o.join(c(),"daemon-app")}function F(){return o.join(I(),"SootSim Daemon.app")}function X(){return o.join(F(),"Contents","MacOS","sootsim-daemon")}function B(){return o.join(c(),"cache")}function a(){return o.join(c(),P)}function f(){return o.join(c(),O)}function g(){return o.join(c(),N)}function v(){try{let e=r.readFileSync(g(),"utf8"),t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}}function h(e){u();let t=v(),i={...t,...e};e.settings&&typeof e.settings=="object"&&(i.settings={...t.settings&&typeof t.settings=="object"?t.settings:{},...e.settings});let s=`${g()}.tmp`;return r.writeFileSync(s,`${JSON.stringify(i,null,2)}
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
4
  var g=Object.create;var e=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var m=(a=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(a,{get:(b,c)=>(typeof require<"u"?require:b)[c]}):a)(function(a){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+a+'" is not supported')});var n=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports),o=(a,b)=>{for(var c in b)e(a,c,{get:b[c],enumerable:!0})},l=(a,b,c,f)=>{if(b&&typeof b=="object"||typeof b=="function")for(let d of i(b))!k.call(a,d)&&d!==c&&e(a,d,{get:()=>b[d],enumerable:!(f=h(b,d))||f.enumerable});return a};var p=(a,b,c)=>(c=a!=null?g(j(a)):{},l(b||!a||!a.__esModule?e(c,"default",{value:a,enumerable:!0}):c,a));export{m as a,n as b,o as c,p as d};
@@ -1,7 +1,7 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (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 m,b as I}from"./chunk-2LXM5BMK.js";import{a as D}from"./chunk-FOWD7TYC.js";import{b as _}from"./chunk-FYVL4NBD.js";import{G as O,o as x,q as f}from"./chunk-25GKNYXJ.js";import p from"fs";import g from"path";var c="default",F="profiles.json",a=1;function n(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 w(){return g.join(f(),F)}function $(e){return`sootsim-profile-${n(e)}`}function G(e){return g.join(x(),"Partitions",$(e))}function v(e){return g.join(f(),"playwright",n(e))}function b(){try{let e=JSON.parse(p.readFileSync(w(),"utf8"));if(!e||e.version!==a)return{version:a,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:n(t.id),createdAt:t.createdAt,updatedAt:t.updatedAt})):[];return{version:a,profiles:r}}catch{return{version:a,profiles:[]}}}function E(e){return[...e].sort((r,t)=>r.id===c?-1:t.id===c?1:r.id.localeCompare(t.id))}function y(e){if(e.profiles.some(t=>t.id===c))return{...e,profiles:E(e.profiles)};let r=new Date().toISOString();return{version:a,profiles:E([{id:c,createdAt:r,updatedAt:r},...e.profiles])}}function P(e){O();let r=y(e),t=`${w()}.tmp`;return p.writeFileSync(t,`${JSON.stringify(r,null,2)}
4
+ import{a as m,b as I}from"./chunk-RX4CFOVV.js";import{a as D}from"./chunk-RMIKUUCO.js";import{b as _}from"./chunk-IS5OOCN5.js";import{G as O,o as x,q as f}from"./chunk-XBBNRESY.js";import p from"fs";import g from"path";var c="default",F="profiles.json",a=1;function n(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 w(){return g.join(f(),F)}function $(e){return`sootsim-profile-${n(e)}`}function G(e){return g.join(x(),"Partitions",$(e))}function v(e){return g.join(f(),"playwright",n(e))}function b(){try{let e=JSON.parse(p.readFileSync(w(),"utf8"));if(!e||e.version!==a)return{version:a,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:n(t.id),createdAt:t.createdAt,updatedAt:t.updatedAt})):[];return{version:a,profiles:r}}catch{return{version:a,profiles:[]}}}function E(e){return[...e].sort((r,t)=>r.id===c?-1:t.id===c?1:r.id.localeCompare(t.id))}function y(e){if(e.profiles.some(t=>t.id===c))return{...e,profiles:E(e.profiles)};let r=new Date().toISOString();return{version:a,profiles:E([{id:c,createdAt:r,updatedAt:r},...e.profiles])}}function P(e){O();let r=y(e),t=`${w()}.tmp`;return p.writeFileSync(t,`${JSON.stringify(r,null,2)}
5
5
  `,"utf8"),p.renameSync(t,w()),r}function U(){return P(b()).profiles}function B(e){let r=n(e);return U().find(t=>t.id===r)??null}function T(e=c){let r=n(e),t=B(r);return t||j(r)}function j(e){let r=n(e),t=y(b());if(t.profiles.some(u=>u.id===r))throw new Error(`profile already exists: ${r}`);let o=new Date().toISOString(),i={id:r,createdAt:o,updatedAt:o};return P({version:a,profiles:[...t.profiles,i]}),i}function ae(e){let r=n(e);if(r===c)throw new Error("the default profile cannot be deleted; clear it instead");let t=y(b()),o=t.profiles.find(i=>i.id===r);if(!o)throw new Error(`profile not found: ${r}`);return P({version:a,profiles:t.profiles.filter(i=>i.id!==r)}),q(r),o}function q(e){let r=n(e);for(let t of[G(r),v(r)])try{p.rmSync(t,{recursive:!0,force:!0})}catch{}}function H(){let e=m();return e?{available:!0,reason:null,detail:`${e.kind} @ ${e.path}`}:{available:!1,reason:"sootsim desktop app not installed (run `sootsim desktop install`)"}}async function z(e){let r=m();if(!r)return{launched:!1,message:"sootsim desktop app not installed"};try{let t=await I(e.url,r,{device:e.device,profileId:e.profileId,ephemeralProfile:e.ephemeralProfile,ownerPid:e.ownerPid});return t.launched?{launched:!0,message:e.url?`electron launched via ${t.via} \u2192 ${e.url}`:`electron launched via ${t.via}`,target:t.target,attachUrl:e.url}:{launched:!1,message:"desktop companion failed to start"}}catch(t){return{launched:!1,message:`electron launch failed: ${t instanceof Error?t.message:String(t)}`}}}var C={id:"electron",name:"electron",description:"sootsim desktop companion app (native window, menu bar)",kind:"native",availability:H,launch:z};import{spawn as K}from"child_process";import{closeSync as Y,mkdtempSync as V,openSync as J,readFileSync as X}from"fs";import{createRequire as Z}from"module";import{tmpdir as A}from"os";import{join as M}from"path";var Q=`
6
6
  const modulePath = process.env.SOOTSIM_PW_MODULE;
7
7
  const url = process.env.SOOTSIM_PW_URL;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
4
  import g from"node:fs";import f from"node:path";var D=["app.config.js","app.config.ts","app.config.cjs","app.config.mjs","app.json"],_=["sootsim.config.ts","sootsim.config.js","sootsim.config.mjs","sootsim.config.cjs"],S=new Set(["node_modules","artifacts","dist","build","out","coverage","tmp","public","ios","android","macos","windows","__fixtures__","__tests__","fixtures","fixture","examples","example"]),d=256,y=4;function A(s,r){for(let t of r){let n=f.join(s,t);try{if(g.statSync(n).isFile())return n}catch{}}return null}function m(s){return A(s,D)}function h(s){return A(s,_)}function k(s){try{let r=JSON.parse(g.readFileSync(f.join(s,"package.json"),"utf8"));if(!r||typeof r!="object")return[];let t=Reflect.get(r,"workspaces");if(Array.isArray(t))return t.filter(c=>typeof c=="string");if(!t||typeof t!="object")return[];let n=Reflect.get(t,"packages");return Array.isArray(n)?n.filter(c=>typeof c=="string"):[]}catch{return[]}}function b(s){let r=new Set,t=0,n=!0;for(let c of k(s)){if(t>=d){n=!1;break}if(!c||f.isAbsolute(c))continue;let a=c.split(/[\\/]+/).filter(Boolean);if(a.length===0||a.length>y||a.some(o=>o===".."||o==="**"))continue;let i=[s];for(let o of a){let e=[];for(let l of i){if(t>=d){n=!1;break}if(t++,o==="*"){let p;try{p=g.readdirSync(l,{withFileTypes:!0})}catch{continue}for(let u of p)!u.isDirectory()||u.isSymbolicLink()||u.name.startsWith(".")||S.has(u.name)||e.push(f.join(l,u.name))}else if(!o.includes("*")){let p=f.join(l,o);try{let u=g.lstatSync(p);u.isDirectory()&&!u.isSymbolicLink()&&e.push(p)}catch{}}}i=e,i.length>d&&(i.length=d,n=!1)}for(let o of i)r.add(o)}return{directories:[...r],complete:n}}function j(s){let r=[{dir:s,depth:0}],t=[],n=0,c=0,a=!0;for(;c<r.length&&n<d;){let i=r[c++];if(!i)break;if(n++,i.depth>0&&m(i.dir)&&(t.push(i.dir),t.length>1))return{directories:t,complete:!0};if(i.depth>=y)continue;let o;try{o=g.readdirSync(i.dir,{withFileTypes:!0})}catch{continue}for(let e of o)if(!(!e.isDirectory()||e.isSymbolicLink())&&!(e.name.startsWith(".")||S.has(e.name))){if(r.length>=d){a=!1;break}r.push({dir:f.join(i.dir,e.name),depth:i.depth+1})}}return{directories:t,complete:a&&c===r.length}}function w(s,r={}){let t=f.resolve(s),n=h(t);if(m(t)||r.trustStart&&g.existsSync(t)){let e=n;if(!e&&r.trustStart){let l=f.dirname(t);for(let p=0;p<y&&l!==f.dirname(l)&&(e=h(l),!e);p++)l=f.dirname(l)}return{appDir:t,configPath:e}}let c=b(t),a=c.directories.filter(e=>m(e));if(a.length>1||!c.complete)return null;if(a.length===1){let e=a[0];return{appDir:e,configPath:n??h(e)}}let i=j(t),o=i.directories;if(o.length>1||!i.complete)return null;if(o.length===1){let e=o[0];return{appDir:e,configPath:n??h(e)}}return n?{appDir:t,configPath:n}:null}export{w as a};
@@ -1,6 +1,6 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
- import{b as C}from"./chunk-FOWD7TYC.js";import{f as h}from"./chunk-GEXLPJZ6.js";import{G as B,O as b,g as S}from"./chunk-25GKNYXJ.js";import a from"node:fs";import c from"node:path";var g=1,k=`automatic-cleanup-v${g}.json`,A=`automatic-cleanup-v${g}.lock`,P=360*60*1e3;function w(){let i=c.join(S(),k);try{return JSON.parse(a.readFileSync(i,"utf8")).generation===g}catch{return!1}}function N(i){if(i<1024)return`${i} B`;let e=["KiB","MiB","GiB","TiB"],n=i/1024,s=e[0];for(let r=1;r<e.length&&n>=1024;r++)n/=1024,s=e[r];return`${n.toFixed(n>=10?1:2)} ${s}`}function p(i){let e;try{e=a.lstatSync(i)}catch{return 0}let n=e.blocks>0?e.blocks*512:e.size;if(!e.isDirectory()||e.isSymbolicLink())return n;let s=n;try{for(let r of a.readdirSync(i))s+=p(c.join(i,r))}catch{}return s}function E(i){for(let e of["SingletonLock","SingletonSocket","lockfile"])try{if(a.lstatSync(c.join(i,e)))return!0}catch{}return!1}function v(i,e){let n;try{n=a.readdirSync(i,{withFileTypes:!0})}catch{return[]}let s=E(e),r=[];for(let t of n){if(!t.isDirectory()||t.isSymbolicLink())continue;let o=c.join(i,t.name);if(C(t.name)){r.push({path:o,bytes:p(o),kind:"browser-cache",state:s?"in-use":"safe",selected:!s,detail:s?"browser profile is open; close it before cleanup":"disposable browser HTTP, bytecode, or GPU cache"});continue}r.push(...v(o,e))}return r}function L(i){let e=c.join(i,"profiles","playwright"),n;try{n=a.readdirSync(e,{withFileTypes:!0})}catch{return[]}return n.flatMap(s=>{if(!s.isDirectory()||s.isSymbolicLink())return[];let r=c.join(e,s.name);return v(r,r)})}function R(i){let e=c.join(i,"electron","userData");return v(e,e)}function U(i,e){let n=c.join(i,"recordings"),s;try{s=a.readdirSync(n,{withFileTypes:!0})}catch{return[]}return s.map(r=>{let t=c.join(n,r.name);return{path:t,bytes:p(t),kind:"recording",state:"aggressive",selected:e,detail:"user-created recording or captured-frame output"}})}function x(i){let e=new Set(b()),n=[...e],s=h.planLocalRetention({retainVersions:2,protectVersions:n}),r=h.planLocalRetention({retainVersions:1,protectVersions:n}),t=new Set(s.removeVersions),o=new Set(r.removeVersions),l=new Set([...s.keepVersions,...s.removeVersions,...r.keepVersions,...r.removeVersions]),m=[];for(let u of[...l].sort()){let d=h.product.runtimeDir(u),y="retained",f="retained runtime";e.has(u)&&u!==s.activeVersion?(y="in-use",f="runtime is serving a connected simulator"):t.has(u)?(y="safe",f="inactive runtime outside the two-version rollback window"):o.has(u)?(y="aggressive",f="most recent rollback runtime"):u===s.activeVersion&&(f="active runtime; always protected"),m.push({path:d,bytes:p(d),kind:"runtime-version",state:y,selected:y==="safe"||y==="aggressive"&&i,detail:f})}for(let u of s.removeCacheFiles)m.push({path:u,bytes:p(u),kind:"runtime-archive",state:"safe",selected:!0,detail:"downloaded archive is unnecessary after successful extraction"});return{activeRuntime:s.activeVersion,entries:m}}function T(i={}){let e=i.aggressive===!0,n=S(),s=x(e),r=[...s.entries,...L(n),...R(n),...U(n,e)].sort((t,o)=>o.bytes-t.bytes||t.path.localeCompare(o.path));return{home:n,activeRuntime:s.activeRuntime,entries:r,reclaimableBytes:r.reduce((t,o)=>t+(o.selected?o.bytes:0),0),protectedBytes:r.reduce((t,o)=>t+(o.selected?0:o.bytes),0),totalBytes:p(n)}}function D(i,e){let n=c.relative(i,e);if(!n||n.startsWith("..")||c.isAbsolute(n))throw new Error(`refusing cleanup target outside the SootSim home: ${e}`)}function I(i={}){let e=T(i),n=i.aggressive===!0?1:2;h.pruneLocalRetention({retainVersions:n,protectVersions:b()});for(let t of e.entries)if(t.selected&&!(t.kind==="runtime-archive"||t.kind==="runtime-version")){if(t.kind==="browser-cache"){let l=c.relative(e.home,t.path).split(c.sep),m=l[0]==="profiles"&&l[1]==="playwright"&&l[2]?c.join(e.home,"profiles","playwright",l[2]):l[0]==="electron"&&l[1]==="userData"?c.join(e.home,"electron","userData"):null;if(m&&E(m)){t.state="in-use",t.selected=!1,t.detail="browser profile opened while cleanup was starting";continue}}D(e.home,t.path),a.rmSync(t.path,{recursive:!0,force:!0})}let s=e.entries.filter(t=>t.selected&&!a.existsSync(t.path)).map(t=>t.path),r=p(e.home);return{...e,removedPaths:s,reclaimedBytes:Math.max(0,e.totalBytes-r),remainingBytes:r}}function $(){B();let i=S(),e=c.join(i,k),n=c.join(i,A);if(w())return{status:"already-complete",reclaimedBytes:0,remainingBytes:0,deferredInUseBytes:0};let s=null;for(let r=0;r<2&&s===null;r++)try{let t=a.openSync(n,"wx");try{a.writeFileSync(t,`${JSON.stringify({pid:process.pid,startedAt:Date.now()})}
4
+ import{b as C}from"./chunk-RMIKUUCO.js";import{f as h}from"./chunk-R7AS52NA.js";import{G as B,O as b,g as S}from"./chunk-XBBNRESY.js";import a from"node:fs";import c from"node:path";var g=1,k=`automatic-cleanup-v${g}.json`,A=`automatic-cleanup-v${g}.lock`,P=360*60*1e3;function w(){let i=c.join(S(),k);try{return JSON.parse(a.readFileSync(i,"utf8")).generation===g}catch{return!1}}function N(i){if(i<1024)return`${i} B`;let e=["KiB","MiB","GiB","TiB"],n=i/1024,s=e[0];for(let r=1;r<e.length&&n>=1024;r++)n/=1024,s=e[r];return`${n.toFixed(n>=10?1:2)} ${s}`}function p(i){let e;try{e=a.lstatSync(i)}catch{return 0}let n=e.blocks>0?e.blocks*512:e.size;if(!e.isDirectory()||e.isSymbolicLink())return n;let s=n;try{for(let r of a.readdirSync(i))s+=p(c.join(i,r))}catch{}return s}function E(i){for(let e of["SingletonLock","SingletonSocket","lockfile"])try{if(a.lstatSync(c.join(i,e)))return!0}catch{}return!1}function v(i,e){let n;try{n=a.readdirSync(i,{withFileTypes:!0})}catch{return[]}let s=E(e),r=[];for(let t of n){if(!t.isDirectory()||t.isSymbolicLink())continue;let o=c.join(i,t.name);if(C(t.name)){r.push({path:o,bytes:p(o),kind:"browser-cache",state:s?"in-use":"safe",selected:!s,detail:s?"browser profile is open; close it before cleanup":"disposable browser HTTP, bytecode, or GPU cache"});continue}r.push(...v(o,e))}return r}function L(i){let e=c.join(i,"profiles","playwright"),n;try{n=a.readdirSync(e,{withFileTypes:!0})}catch{return[]}return n.flatMap(s=>{if(!s.isDirectory()||s.isSymbolicLink())return[];let r=c.join(e,s.name);return v(r,r)})}function R(i){let e=c.join(i,"electron","userData");return v(e,e)}function U(i,e){let n=c.join(i,"recordings"),s;try{s=a.readdirSync(n,{withFileTypes:!0})}catch{return[]}return s.map(r=>{let t=c.join(n,r.name);return{path:t,bytes:p(t),kind:"recording",state:"aggressive",selected:e,detail:"user-created recording or captured-frame output"}})}function x(i){let e=new Set(b()),n=[...e],s=h.planLocalRetention({retainVersions:2,protectVersions:n}),r=h.planLocalRetention({retainVersions:1,protectVersions:n}),t=new Set(s.removeVersions),o=new Set(r.removeVersions),l=new Set([...s.keepVersions,...s.removeVersions,...r.keepVersions,...r.removeVersions]),m=[];for(let u of[...l].sort()){let d=h.product.runtimeDir(u),y="retained",f="retained runtime";e.has(u)&&u!==s.activeVersion?(y="in-use",f="runtime is serving a connected simulator"):t.has(u)?(y="safe",f="inactive runtime outside the two-version rollback window"):o.has(u)?(y="aggressive",f="most recent rollback runtime"):u===s.activeVersion&&(f="active runtime; always protected"),m.push({path:d,bytes:p(d),kind:"runtime-version",state:y,selected:y==="safe"||y==="aggressive"&&i,detail:f})}for(let u of s.removeCacheFiles)m.push({path:u,bytes:p(u),kind:"runtime-archive",state:"safe",selected:!0,detail:"downloaded archive is unnecessary after successful extraction"});return{activeRuntime:s.activeVersion,entries:m}}function T(i={}){let e=i.aggressive===!0,n=S(),s=x(e),r=[...s.entries,...L(n),...R(n),...U(n,e)].sort((t,o)=>o.bytes-t.bytes||t.path.localeCompare(o.path));return{home:n,activeRuntime:s.activeRuntime,entries:r,reclaimableBytes:r.reduce((t,o)=>t+(o.selected?o.bytes:0),0),protectedBytes:r.reduce((t,o)=>t+(o.selected?0:o.bytes),0),totalBytes:p(n)}}function D(i,e){let n=c.relative(i,e);if(!n||n.startsWith("..")||c.isAbsolute(n))throw new Error(`refusing cleanup target outside the SootSim home: ${e}`)}function I(i={}){let e=T(i),n=i.aggressive===!0?1:2;h.pruneLocalRetention({retainVersions:n,protectVersions:b()});for(let t of e.entries)if(t.selected&&!(t.kind==="runtime-archive"||t.kind==="runtime-version")){if(t.kind==="browser-cache"){let l=c.relative(e.home,t.path).split(c.sep),m=l[0]==="profiles"&&l[1]==="playwright"&&l[2]?c.join(e.home,"profiles","playwright",l[2]):l[0]==="electron"&&l[1]==="userData"?c.join(e.home,"electron","userData"):null;if(m&&E(m)){t.state="in-use",t.selected=!1,t.detail="browser profile opened while cleanup was starting";continue}}D(e.home,t.path),a.rmSync(t.path,{recursive:!0,force:!0})}let s=e.entries.filter(t=>t.selected&&!a.existsSync(t.path)).map(t=>t.path),r=p(e.home);return{...e,removedPaths:s,reclaimedBytes:Math.max(0,e.totalBytes-r),remainingBytes:r}}function $(){B();let i=S(),e=c.join(i,k),n=c.join(i,A);if(w())return{status:"already-complete",reclaimedBytes:0,remainingBytes:0,deferredInUseBytes:0};let s=null;for(let r=0;r<2&&s===null;r++)try{let t=a.openSync(n,"wx");try{a.writeFileSync(t,`${JSON.stringify({pid:process.pid,startedAt:Date.now()})}
5
5
  `,"utf8"),s=t}catch(o){a.closeSync(t);try{a.unlinkSync(n)}catch{}throw o}}catch(t){if((t instanceof Error&&"code"in t?t.code:null)!=="EEXIST")throw t;let l=0,m=0,u=null;try{u=a.lstatSync(n);let d=JSON.parse(a.readFileSync(n,"utf8"));l=typeof d.pid=="number"?d.pid:0,m=typeof d.startedAt=="number"?d.startedAt:0}catch{}if(l>0&&m>0&&Date.now()-m<P)try{return process.kill(l,0),{status:"busy",reclaimedBytes:0,remainingBytes:0,deferredInUseBytes:0}}catch{}if(!u)continue;try{let d=a.lstatSync(n);if(d.dev!==u.dev||d.ino!==u.ino)return{status:"busy",reclaimedBytes:0,remainingBytes:0,deferredInUseBytes:0};a.unlinkSync(n)}catch{}}if(s===null)return{status:"busy",reclaimedBytes:0,remainingBytes:0,deferredInUseBytes:0};try{if(w())return{status:"already-complete",reclaimedBytes:0,remainingBytes:0,deferredInUseBytes:0};let r=I(),t=r.entries.reduce((l,m)=>l+(m.state==="in-use"?m.bytes:0),0);if(t>0)return{status:"deferred",reclaimedBytes:r.reclaimedBytes,remainingBytes:r.remainingBytes,deferredInUseBytes:t};let o=`${e}.${process.pid}.tmp`;return a.writeFileSync(o,`${JSON.stringify({generation:g,completedAt:Date.now(),reclaimedBytes:r.reclaimedBytes})}
6
6
  `,"utf8"),a.renameSync(o,e),{status:"complete",reclaimedBytes:r.reclaimedBytes,remainingBytes:r.remainingBytes,deferredInUseBytes:0}}finally{a.closeSync(s);try{a.unlinkSync(n)}catch{}}}export{w as a,N as b,T as c,I as d,$ as e};
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
4
  function t(_){return`(async () => {
@@ -1,7 +1,7 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
- import{I as F,m as B,n as A,p as h,u as E,w as P}from"./chunk-I5SSRJDW.js";import{i as y,m as N,n as I}from"./chunk-GHXN67UJ.js";var k={timeoutMs:1800,settleMs:48,startWindowMs:64};function w(e){return new Promise(t=>setTimeout(t,e))}function z(e){return e.includes("--json")}function K(e){process.stdout.write(`${JSON.stringify(e??null,null,2)}
4
+ import{I as F,m as B,n as A,p as h,u as E,w as P}from"./chunk-4XMPRQGE.js";import{i as y,m as N,n as I}from"./chunk-7RJEULWN.js";var k={timeoutMs:1800,settleMs:48,startWindowMs:64};function w(e){return new Promise(t=>setTimeout(t,e))}function z(e){return e.includes("--json")}function K(e){process.stdout.write(`${JSON.stringify(e??null,null,2)}
5
5
  `)}function Q(e){process.stderr.write(`${e}
6
6
  `)}function b(e,t=Date.now()){let r=new Date(e),n=`${S(r.getHours())}:${S(r.getMinutes())}:${S(r.getSeconds())}`,s=t-e;if(s<0)return n;let o=Math.round(s/1e3);return o<60?`${n} +${o}s`:o<3600?`${n} +${Math.round(o/60)}m`:o<86400?`${n} +${Math.round(o/3600)}h`:`${n} +${Math.round(o/86400)}d`}function S(e){return e<10?`0${e}`:String(e)}async function O(e,t,...r){return N(e,`__sootsimTest.${t}`,...r)}async function j(e,t,...r){return I(e,`SootSim.bridges.mainShell.${t}`,...r)}async function X(e,t={}){try{let r=await O(e,"waitForScreenTransitions",k);if(!t.verbose||!r?.started)return;if(r.timedOut){console.log(` screen transition still active after ${r.waitedMs}ms; continuing`);return}r.waitedMs>0&&console.log(` waited ${r.waitedMs}ms for screen transition settle`)}catch{}}async function Z(e,t,r,...n){let s=Date.now()+Math.max(0,r);for(;;)try{return await j(e,t,...n)}catch(o){if(!F(o)||Date.now()>=s)throw o;await w(50)}}async function ee(e,t,r,n={}){let s=n.attempts??30,o=n.intervalMs??500,l=n.minNodeCount??10;for(let i=0;i<s;i++){let u=y(e,{commandTimeoutMs:t,simId:r,simIdSource:n.simIdSource});try{let c=await u.send({type:"evaluate",code:"(async () => (await window.__sootsimTest?.getNodeCount()) || 0)()"});if(typeof c=="number"&&c>l)return{bridge:u,count:c}}catch{}u.close(),await w(o)}return null}async function te(e,t,r,n={}){let s=n.timeoutMs??8e3,o=n.intervalMs??250,l=Date.now()+s;for(;Date.now()<l;){let i=y(e,{commandTimeoutMs:t,simId:r,simIdSource:n.simIdSource});try{return await i.send({type:"evaluate",code:"1"}),i}catch{i.close()}await w(o)}return null}async function ne(e,t={}){let r=t.timeoutMs??1e4,n=t.errorGraceMs??3e3,s=t.pollIntervalMs??200,o=Date.now(),l=o+r,i=-1,u=o,c=null,d=!1,m={ready:!1,source:"timeout",elapsedMs:0,nodes:0,targets:0,liveFrameActive:!1,liveFrameChannels:0,liveFramePublishes:0,flag:void 0,loadingText:"",externalReady:null,externalStatus:"",externalError:"",errors:0};for(;Date.now()<l;){try{let a=await e.send({type:"evaluate",code:B}),g=Date.now()-o,f=Number(a?.nodes)||0,$=Number(a?.targets)||0,C=a?.liveFrameActive===!0,W=Number(a?.liveFrameChannels)||0,q=Number(a?.liveFramePublishes)||0,x=Number(a?.errors)||0,T=a?.flag===!0,p=a?.externalReady,M=typeof a?.loadingText=="string"?a.loadingText.trim():"",D=typeof a?.externalStatus=="string"?a.externalStatus.trim():"",R=typeof a?.externalError=="string"?a.externalError.trim():"",v=typeof a?.externalError=="string"&&R.length>0;if(c=p,d=v,f!==i&&(i=f,u=g),m={ready:!1,source:"timeout",elapsedMs:g,nodes:f,targets:$,liveFrameActive:C,liveFrameChannels:W,liveFramePublishes:q,flag:a?.flag,loadingText:M,externalReady:typeof p=="boolean"?p:null,externalStatus:D,externalError:R,errors:x},T&&p!==!1&&!v&&!M&&h({liveFrameActive:C,nodes:f,targets:$})&&g-u>=A)return{...m,ready:!0,source:"flag"};if(g>=n&&x>0&&!T)return{...m,ready:!1,source:"error-bail"}}catch{}await w(s)}return c!==!1&&!d&&!m.loadingText&&h(m)?{...m,ready:!0,source:"nodes-fallback"}:{...m,ready:!1,source:"timeout",elapsedMs:Date.now()-o}}function H(e){let t=e.displayUrl||e.url;return e.status!=null?`${e.method} ${t} -> ${e.status}${e.statusText?` ${e.statusText}`:""}`:e.error?`${e.method} ${t} -> ${e.error}`:`${e.method} ${t}`}async function _(e,t,...r){return e.send({type:"call",path:`__sootsimTest.${t}`,args:r})}async function L(e,t={}){let r=await e.send({type:"evaluate",code:P});if(!r||typeof r!="object")return;let n=Math.max(0,Number(r.errors)||0),s=Math.max(0,Number(r.warnings)||0);if(n===0&&s===0)return;let o=[];if(n>0&&o.push(`${n} console error${n===1?"":"s"}`),s>0&&o.push(`${s} console warning${s===1?"":"s"}`),console.log(`
7
7
  console: ${o.join(", ")}`),t.errorsCommand&&console.log(` inspect: ${t.errorsCommand}`),s>0&&t.warningsCommand&&console.log(` inspect: ${t.warningsCommand}`),!t.includeTail||n===0)return;let l=await E(e,5);if(!(!Array.isArray(l)||l.length===0)){console.log(`
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (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{c as P,k as m,l as S,m as R,n as _,o as v}from"./chunk-ZE3HG74O.js";var k="sootsim:settings",d=["productAnalytics","crashReports","colorScheme","reduceMotion","boldText","fontSize","largerAccessibilitySizes","a11yMode","a11yDepth","screenshotCanvas","screenshotBackground","screenshotText","screenshotPose","screenshotDynamicSize","alwaysShowLiveWebViews","showFrame","showMenuBar","showRail","solidWindow","ambientGlow","agentProvider"];function p(){if(typeof window>"u")return null;let e=window.sootsimElectron;return e&&typeof e=="object"?e:null}function l(e){let t={};for(let n of d){if(!(n in e))continue;let o=e[n],i=S[n];i.validate&&!i.validate(o)||i.options&&!i.options.includes(o)||(t[n]=o)}return t}function K(e){let t={};for(let n of d)t[n]=e[n];return t}function M(){if(typeof localStorage>"u")return{};try{let e=localStorage.getItem(k);return e?l(JSON.parse(e)):{}}catch{return{}}}function T(e){if(!(typeof localStorage>"u"))try{localStorage.setItem(k,JSON.stringify(e))}catch{}}function x(){let t=p()?.sharedConfig?.settings;return!t||typeof t!="object"?{}:l(t)}function A(e){let t=p();if(t?.writeSharedConfig)try{t.writeSharedConfig({settings:e})}catch{}}async function L(e){let t=p();return t?.writeSharedConfig?(await t.writeSharedConfig({settings:e}),!0):!1}function b(){if(typeof window>"u")return null;let e=window.__sootsimSharedConfig;return e&&typeof e=="object"?e:null}function O(){let e=b()?.settings;return!e||typeof e!="object"?{}:l(e)}function B(e){if(!b())return;let t={settings:e};try{if(globalThis.__sootsimBridgeRequest?.writeSharedConfig?.(t))return}catch{}if(!(typeof fetch>"u"))try{fetch("/__sootsim/shared-config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),keepalive:!0}).catch(()=>{})}catch{}}async function F(e){if(!b()||typeof fetch>"u")return!1;let t=await fetch("/__sootsim/shared-config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:e}),keepalive:!0});if(!t.ok)throw new Error(`shared settings reset failed with HTTP ${t.status}`);return await t.text(),!0}function D(){let e=M(),t=O(),n=x();return{...e,...t,...n}}function V(e,t={}){let n=K(e);for(let o of d)t[o]!==void 0&&(n[o]=t[o]);T(n),A(n),B(n)}async function I(e,t={}){let n=K(e);for(let o of d)t[o]!==void 0&&(n[o]=t[o]);T(n),!await L(n)&&await F(n)}function j(e){if(typeof window>"u")return()=>{};let t=r=>{if(!(r.key!==k||r.newValue==null))try{e(l(JSON.parse(r.newValue)))}catch{}};window.addEventListener("storage",t);let n=p(),o;n?.onSharedConfigChanged&&(o=n.onSharedConfigChanged(r=>{let f=r?.settings;!f||typeof f!="object"||e(l(f))}));let a=globalThis.__sootsimBridgeRequest?.subscribeSharedConfig?.(r=>{let f=r?.settings;!f||typeof f!="object"||e(l(f))});return()=>{window.removeEventListener("storage",t),o?.(),a?.()}}var N=_(),q=v(),y=D(),c=new Set,g={};for(let e of d)N[e]!==void 0&&(c.add(e),y[e]!==void 0&&(g[e]=y[e]),delete y[e]);var s={...q,...y},w=[],u=null;function h(){for(let e of w)e()}function E(){h(),V(s,g)}function C(e,t){let n=S[e];return n.validate&&!n.validate(t)||n.options&&!n.options.includes(t)||s[e]===t?!1:(s={...s,[e]:t},e==="deviceModel"&&(u=null),!0)}j(e=>{let t={...s},n=!1;for(let[o,i]of Object.entries(e)){let a=o;if(c.has(a)){g[a]=i;continue}t[a]!==i&&(t[a]=i,n=!0)}n&&(s=t,u=null,h())});var z={get(e){return s[e]},set(e,t){C(e,t)&&E()},setRuntime(e,t){c.has(e)||(c.add(e),d.includes(e)&&(g[e]=s[e])),C(e,t)&&h()},isRuntimeControlled(e){return c.has(e)},getAll(){return s},apply(e){let t=!1,n={...s};for(let[o,i]of Object.entries(e)){if(i===void 0)continue;let a=o,r=S[a];r&&(r.validate&&!r.validate(i)||r.options&&!r.options.includes(i)||n[a]!==i&&(n[a]=i,t=!0))}t&&(s=n,u=null,E())},applyRuntime(e){let t=!1;for(let n of Object.keys(e)){let o=e[n];o!==void 0&&(c.has(n)||(c.add(n),d.includes(n)&&(g[n]=s[n])),C(n,o)&&(t=!0))}t&&h()},reset(){s=v(),u=null,E()},async resetDeviceContent(){let e=m.filter(n=>!c.has(n)).map(n=>[n,R[n]]),t=e.some(([n,o])=>s[n]!==o);s={...s,...Object.fromEntries(e)};for(let n of m)c.has(n)&&(g[n]=R[n]);t&&h(),await I(s,g)},subscribe(e){return w.push(e),()=>{w=w.filter(t=>t!==e)}},getDeviceSpec(){return u||(u=P(s.deviceModel)),u},getA11yMode(){return s.a11yMode},setA11yMode(e){this.set("a11yMode",e)},getInspectMode(){return s.inspectMode},setInspectMode(e){this.set("inspectMode",e)}};export{z as a};
4
+ import{c as P,k as m,l as S,m as R,n as _,o as v}from"./chunk-GH2OE6F6.js";var k="sootsim:settings",d=["productAnalytics","crashReports","colorScheme","reduceMotion","boldText","fontSize","largerAccessibilitySizes","a11yMode","a11yDepth","screenshotCanvas","screenshotBackground","screenshotText","screenshotPose","screenshotDynamicSize","alwaysShowLiveWebViews","showFrame","showMenuBar","showRail","solidWindow","ambientGlow","agentProvider"];function p(){if(typeof window>"u")return null;let e=window.sootsimElectron;return e&&typeof e=="object"?e:null}function l(e){let t={};for(let n of d){if(!(n in e))continue;let o=e[n],i=S[n];i.validate&&!i.validate(o)||i.options&&!i.options.includes(o)||(t[n]=o)}return t}function K(e){let t={};for(let n of d)t[n]=e[n];return t}function M(){if(typeof localStorage>"u")return{};try{let e=localStorage.getItem(k);return e?l(JSON.parse(e)):{}}catch{return{}}}function T(e){if(!(typeof localStorage>"u"))try{localStorage.setItem(k,JSON.stringify(e))}catch{}}function x(){let t=p()?.sharedConfig?.settings;return!t||typeof t!="object"?{}:l(t)}function A(e){let t=p();if(t?.writeSharedConfig)try{t.writeSharedConfig({settings:e})}catch{}}async function L(e){let t=p();return t?.writeSharedConfig?(await t.writeSharedConfig({settings:e}),!0):!1}function b(){if(typeof window>"u")return null;let e=window.__sootsimSharedConfig;return e&&typeof e=="object"?e:null}function O(){let e=b()?.settings;return!e||typeof e!="object"?{}:l(e)}function B(e){if(!b())return;let t={settings:e};try{if(globalThis.__sootsimBridgeRequest?.writeSharedConfig?.(t))return}catch{}if(!(typeof fetch>"u"))try{fetch("/__sootsim/shared-config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),keepalive:!0}).catch(()=>{})}catch{}}async function F(e){if(!b()||typeof fetch>"u")return!1;let t=await fetch("/__sootsim/shared-config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:e}),keepalive:!0});if(!t.ok)throw new Error(`shared settings reset failed with HTTP ${t.status}`);return await t.text(),!0}function D(){let e=M(),t=O(),n=x();return{...e,...t,...n}}function V(e,t={}){let n=K(e);for(let o of d)t[o]!==void 0&&(n[o]=t[o]);T(n),A(n),B(n)}async function I(e,t={}){let n=K(e);for(let o of d)t[o]!==void 0&&(n[o]=t[o]);T(n),!await L(n)&&await F(n)}function j(e){if(typeof window>"u")return()=>{};let t=r=>{if(!(r.key!==k||r.newValue==null))try{e(l(JSON.parse(r.newValue)))}catch{}};window.addEventListener("storage",t);let n=p(),o;n?.onSharedConfigChanged&&(o=n.onSharedConfigChanged(r=>{let f=r?.settings;!f||typeof f!="object"||e(l(f))}));let a=globalThis.__sootsimBridgeRequest?.subscribeSharedConfig?.(r=>{let f=r?.settings;!f||typeof f!="object"||e(l(f))});return()=>{window.removeEventListener("storage",t),o?.(),a?.()}}var N=_(),q=v(),y=D(),c=new Set,g={};for(let e of d)N[e]!==void 0&&(c.add(e),y[e]!==void 0&&(g[e]=y[e]),delete y[e]);var s={...q,...y},w=[],u=null;function h(){for(let e of w)e()}function E(){h(),V(s,g)}function C(e,t){let n=S[e];return n.validate&&!n.validate(t)||n.options&&!n.options.includes(t)||s[e]===t?!1:(s={...s,[e]:t},e==="deviceModel"&&(u=null),!0)}j(e=>{let t={...s},n=!1;for(let[o,i]of Object.entries(e)){let a=o;if(c.has(a)){g[a]=i;continue}t[a]!==i&&(t[a]=i,n=!0)}n&&(s=t,u=null,h())});var z={get(e){return s[e]},set(e,t){C(e,t)&&E()},setRuntime(e,t){c.has(e)||(c.add(e),d.includes(e)&&(g[e]=s[e])),C(e,t)&&h()},isRuntimeControlled(e){return c.has(e)},getAll(){return s},apply(e){let t=!1,n={...s};for(let[o,i]of Object.entries(e)){if(i===void 0)continue;let a=o,r=S[a];r&&(r.validate&&!r.validate(i)||r.options&&!r.options.includes(i)||n[a]!==i&&(n[a]=i,t=!0))}t&&(s=n,u=null,E())},applyRuntime(e){let t=!1;for(let n of Object.keys(e)){let o=e[n];o!==void 0&&(c.has(n)||(c.add(n),d.includes(n)&&(g[n]=s[n])),C(n,o)&&(t=!0))}t&&h()},reset(){s=v(),u=null,E()},async resetDeviceContent(){let e=m.filter(n=>!c.has(n)).map(n=>[n,R[n]]),t=e.some(([n,o])=>s[n]!==o);s={...s,...Object.fromEntries(e)};for(let n of m)c.has(n)&&(g[n]=R[n]);t&&h(),await I(s,g)},subscribe(e){return w.push(e),()=>{w=w.filter(t=>t!==e)}},getDeviceSpec(){return u||(u=P(s.deviceModel)),u},getA11yMode(){return s.a11yMode},setA11yMode(e){this.set("a11yMode",e)},getInspectMode(){return s.inspectMode},setInspectMode(e){this.set("inspectMode",e)}};export{z as a};
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (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{H as t,L as n,N as l,j as r}from"./chunk-25GKNYXJ.js";function m(){let e=t(),i=r()?n():null;return i&&l(i)?{primary:`engine dev source (:${i.bridgePort})`,installedRuntime:e?`installed runtime v${e}`:null,isDevBridge:!0}:{primary:e?`runtime v${e}`:"runtime not installed",installedRuntime:null,isDevBridge:!1}}export{m as a};
4
+ import{H as t,L as n,N as l,j as r}from"./chunk-XBBNRESY.js";function m(){let e=t(),i=r()?n():null;return i&&l(i)?{primary:`engine dev source (:${i.bridgePort})`,installedRuntime:e?`installed runtime v${e}`:null,isDevBridge:!0}:{primary:e?`runtime v${e}`:"runtime not installed",installedRuntime:null,isDevBridge:!1}}export{m as a};
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
4
  var p={"--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"}},m=new Set(["list","describe","find","get","do","wait","network","logs","shell"]),d=new Set(["do","get","wait","shell","debug"]),b=new Set(["detox","maestro","record","film","storage","permissions","perf","screenshot","mode","inspect","debug","timeline","what-happened","shell","assert","device","open","list","use","claim","close","compat","report-issue","desktop","login","logout","auth","setup","serve","daemon","runtime","upgrade","update","version","skill","config","cleanup","app-fonts","agent-wrapper","agent",...m]);function u(c){let r=c.slice(2),e={command:null,commandArgs:[],globalFlags:{},help:!1,version:!1,verbose:!1},s=0;for(;s<r.length;){let o=r[s];if(o==="--"){e.commandArgs.push(...r.slice(s+1));break}let i=Object.entries(p).find(([a,t])=>a===o||t.short===o);if(i){let[a,t]=i,l=a.replace(/^--/,"");if(t.type==="boolean")e.globalFlags[l]=!0,s++;else{let n=r[s+1];if(n===void 0||n.startsWith("-")){console.error(` warning: ${o} requires a value`),s++;continue}if(t.type==="number"){let g=Number(n);if(Number.isNaN(g)){console.error(` warning: ${o} requires a number, got "${n}"`),s+=2;continue}e.globalFlags[l]=g}else e.globalFlags[l]=n;s+=2}continue}if(!e.command&&!o.startsWith("-")){let a=o.indexOf("-");if(a>0){let t=o.slice(0,a),l=o.slice(a+1);if(d.has(t)&&l.length>0){e.command=t;let n=r.slice(s+1);e.commandArgs=[l,...n[0]==="--"?n.slice(1):n];break}}if(b.has(o)){e.command=o;let t=r.slice(s+1);e.commandArgs=t[0]==="--"?t.slice(1):t;break}e.commandArgs=r.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{m as a,u as b};
@@ -1,7 +1,7 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
- import{b as s,c as g,d as f,e as v}from"./chunk-FSM2WGIT.js";import"./chunk-FOWD7TYC.js";import"./chunk-GEXLPJZ6.js";import"./chunk-25GKNYXJ.js";import"./chunk-WKDTGITC.js";var b={"browser-cache":"browser caches",recording:"recordings and captured frames","runtime-archive":"downloaded runtime archives","runtime-version":"inactive runtime versions"};function y(r){let i=new Map;for(let t of r){let o=i.get(t.kind)??{bytes:0,count:0};o.bytes+=t.bytes,o.count++,i.set(t.kind,o)}return[...i].sort((t,o)=>o[1].bytes-t[1].bytes).map(([t,o])=>` ${b[t]}: ${s(o.bytes)} (${o.count} ${o.count===1?"item":"items"})`)}function h(){console.log(`
4
+ import{b as s,c as g,d as f,e as v}from"./chunk-YMD6WWI7.js";import"./chunk-RMIKUUCO.js";import"./chunk-R7AS52NA.js";import"./chunk-XBBNRESY.js";import"./chunk-XKAXZ4DS.js";var b={"browser-cache":"browser caches",recording:"recordings and captured frames","runtime-archive":"downloaded runtime archives","runtime-version":"inactive runtime versions"};function y(r){let i=new Map;for(let t of r){let o=i.get(t.kind)??{bytes:0,count:0};o.bytes+=t.bytes,o.count++,i.set(t.kind,o)}return[...i].sort((t,o)=>o[1].bytes-t[1].bytes).map(([t,o])=>` ${b[t]}: ${s(o.bytes)} (${o.count} ${o.count===1?"item":"items"})`)}function h(){console.log(`
5
5
  sootsim cleanup \u2014 inspect and reclaim local SootSim disk usage
6
6
 
7
7
  usage:
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (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}from"./chunk-ISONHFRC.js";import"./chunk-WKDTGITC.js";export{a as getCliVersion};
4
+ import{a}from"./chunk-3S7UEXZW.js";import"./chunk-XKAXZ4DS.js";export{a as getCliVersion};
@@ -1,7 +1,7 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (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{d as i,g as a,i as d,j as r}from"./chunk-VK3PJJAQ.js";import"./chunk-WKDTGITC.js";import{existsSync as m,readFileSync as k}from"node:fs";import{resolve as f}from"node:path";async function $(e){if(e.includes("--help")||e.includes("-h")){console.log(`
4
+ import{d as i,g as a,i as d,j as r}from"./chunk-63EKEKDF.js";import"./chunk-XKAXZ4DS.js";import{existsSync as m,readFileSync as k}from"node:fs";import{resolve as f}from"node:path";async function $(e){if(e.includes("--help")||e.includes("-h")){console.log(`
5
5
  sootsim compat \u2014 check package compatibility
6
6
 
7
7
  usage:
@@ -1,7 +1,7 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (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 s,B as r,x as t}from"./chunk-25GKNYXJ.js";import"./chunk-WKDTGITC.js";function l(){let e=s();console.log(` product analytics are ${e.productAnalytics?"ON":"OFF"}`),console.log(` config: ${t()}`);let o=process.env.DO_NOT_TRACK;(o==="1"||o==="true")&&console.log(` note: DO_NOT_TRACK=${o} is set \u2014 telemetry is off for this run`)}async function i(e){let o=e.find(n=>!n.startsWith("-"))?.toLowerCase();switch(o){case void 0:case"status":l();return;case"on":case"enable":r({...s(),productAnalytics:!0}),console.log(" product analytics ON"),console.log(` config: ${t()}`);return;case"off":case"disable":r({...s(),productAnalytics:!1}),console.log(" product analytics OFF"),console.log(` config: ${t()}`);return;default:console.error(` unknown telemetry action: ${o}`),console.error(" usage: sootsim config telemetry [on|off|status]"),process.exit(1)}}function c(){console.log(`
4
+ import{A as s,B as r,x as t}from"./chunk-XBBNRESY.js";import"./chunk-XKAXZ4DS.js";function l(){let e=s();console.log(` product analytics are ${e.productAnalytics?"ON":"OFF"}`),console.log(` config: ${t()}`);let o=process.env.DO_NOT_TRACK;(o==="1"||o==="true")&&console.log(` note: DO_NOT_TRACK=${o} is set \u2014 telemetry is off for this run`)}async function i(e){let o=e.find(n=>!n.startsWith("-"))?.toLowerCase();switch(o){case void 0:case"status":l();return;case"on":case"enable":r({...s(),productAnalytics:!0}),console.log(" product analytics ON"),console.log(` config: ${t()}`);return;case"off":case"disable":r({...s(),productAnalytics:!1}),console.log(" product analytics OFF"),console.log(` config: ${t()}`);return;default:console.error(` unknown telemetry action: ${o}`),console.error(" usage: sootsim config telemetry [on|off|status]"),process.exit(1)}}function c(){console.log(`
5
5
  sootsim config \u2014 manage local CLI preferences
6
6
 
7
7
  usage:
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (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,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w}from"./chunk-223S4HOM.js";import"./chunk-3BN7ACIG.js";import"./chunk-6ZIFXWDJ.js";import"./chunk-ASR54LQA.js";import"./chunk-I5SSRJDW.js";import"./chunk-LFJQHZGK.js";import"./chunk-2LXM5BMK.js";import"./chunk-2HUVXSCB.js";import"./chunk-7QL76I5Z.js";import"./chunk-FJ5D7KBQ.js";import"./chunk-A6FYCXLX.js";import"./chunk-Y2KNXEIX.js";import"./chunk-LR5GL7TZ.js";import"./chunk-GHXN67UJ.js";import"./chunk-FOWD7TYC.js";import"./chunk-GEXLPJZ6.js";import"./chunk-V7MJLIGU.js";import"./chunk-ZE3HG74O.js";import"./chunk-S6YNVIOG.js";import"./chunk-FYVL4NBD.js";import"./chunk-25GKNYXJ.js";import"./chunk-WKDTGITC.js";export{d as applyConfiguredRuntimeOrigin,h as buildOpenUrl,g as buildShellUrl,u as closeSimsBulk,b as normalizeDeepLinkTarget,v as planBulkCloseTargets,m as playwrightHostPidForSim,j as printConnectedSims,c as resolveBundleTarget,e as resolveDefaultShellBaseUrl,a as resolveDriverConnectWaitOptions,f as resolveShellBaseUrlForBridgePort,t as runClaimCommand,w as runCloseCommand,s as runFocusCommand,p as runLinkCommand,q as runOpenCommand,r as runUseCommand,n as signalDriverLaunchConnected,i as summarizeSimUrl,o as terminatePlaywrightHostsForSims,k as waitForSimMatch,l as waitForSimMatchOrHostExit};
4
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w}from"./chunk-S7WXPIOY.js";import"./chunk-3EO5JEG7.js";import"./chunk-MUQDPJUP.js";import"./chunk-YZPSUNTO.js";import"./chunk-4XMPRQGE.js";import"./chunk-XMOULANJ.js";import"./chunk-RX4CFOVV.js";import"./chunk-VAGUPECL.js";import"./chunk-STWCCIBA.js";import"./chunk-Z6H5FR3U.js";import"./chunk-BFNAFH27.js";import"./chunk-66Z2ADUQ.js";import"./chunk-YIJFCR5T.js";import"./chunk-7RJEULWN.js";import"./chunk-RMIKUUCO.js";import"./chunk-R7AS52NA.js";import"./chunk-EPZUFQMX.js";import"./chunk-GH2OE6F6.js";import"./chunk-NLTJE335.js";import"./chunk-IS5OOCN5.js";import"./chunk-XBBNRESY.js";import"./chunk-XKAXZ4DS.js";export{d as applyConfiguredRuntimeOrigin,h as buildOpenUrl,g as buildShellUrl,u as closeSimsBulk,b as normalizeDeepLinkTarget,v as planBulkCloseTargets,m as playwrightHostPidForSim,j as printConnectedSims,c as resolveBundleTarget,e as resolveDefaultShellBaseUrl,a as resolveDriverConnectWaitOptions,f as resolveShellBaseUrlForBridgePort,t as runClaimCommand,w as runCloseCommand,s as runFocusCommand,p as runLinkCommand,q as runOpenCommand,r as runUseCommand,n as signalDriverLaunchConnected,i as summarizeSimUrl,o as terminatePlaywrightHostsForSims,k as waitForSimMatch,l as waitForSimMatchOrHostExit};
@@ -0,0 +1,4 @@
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import { createRequire as __sootsimCreateRequire } from 'node:module'
3
+ var require = __sootsimCreateRequire(import.meta.url)
4
+ import{a,b,c,d,e,f}from"./chunk-RYPPRVBM.js";import"./chunk-C3GMSIRT.js";import"./chunk-2KSLGBIU.js";import"./chunk-2TRPGEZE.js";import"./chunk-ZNK3ZAA5.js";import"./chunk-M2LP2VYQ.js";import"./chunk-EPZUFQMX.js";import"./chunk-GH2OE6F6.js";import"./chunk-NLTJE335.js";import"./chunk-IS5OOCN5.js";import"./chunk-LKAAQBT6.js";import"./chunk-XBBNRESY.js";import"./chunk-3S7UEXZW.js";import"./chunk-EWRPLFYI.js";import"./chunk-XKAXZ4DS.js";export{c as daemonInstall,b as getDaemonServiceStatus,a as runDaemon,e as teardownDaemonService,d as teardownLegacyMacDaemonArtifacts,f as teardownSootsimHome};
@@ -1,7 +1,7 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (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{f,m as T}from"./chunk-ASR54LQA.js";import{L as S,M as $,N,O as A,P as v}from"./chunk-I5SSRJDW.js";import{h as D,j as O,l as x}from"./chunk-GHXN67UJ.js";import"./chunk-S6YNVIOG.js";import"./chunk-FYVL4NBD.js";import"./chunk-25GKNYXJ.js";import"./chunk-WKDTGITC.js";var H=["portals","sheets","layout","onlayout","animated","render","touch","yoga","all"],R="__sootsimShellAnimationTrace",q="__sootsimDebugAnimation";function L(){console.log(`
4
+ import{f,m as T}from"./chunk-YZPSUNTO.js";import{L as S,M as $,N,O as A,P as v}from"./chunk-4XMPRQGE.js";import{h as D,j as O,l as x}from"./chunk-7RJEULWN.js";import"./chunk-NLTJE335.js";import"./chunk-IS5OOCN5.js";import"./chunk-XBBNRESY.js";import"./chunk-XKAXZ4DS.js";var H=["portals","sheets","layout","onlayout","animated","render","touch","yoga","all"],R="__sootsimShellAnimationTrace",q="__sootsimDebugAnimation";function L(){console.log(`
5
5
  sootsim debug \u2014 drive __sootsimDebug from the terminal
6
6
 
7
7
  usage:
@@ -172,7 +172,7 @@ examples:
172
172
  } : null,
173
173
  samples,
174
174
  }
175
- })()`}async function c(i,l){return x(i,l)}async function Y(i,l){let g=D(i,{port:l.port,stripBooleanFlags:["--pretty","--json","--help","-h"]}),u=g.positional;(!u[0]||i.includes("--help")||i.includes("-h"))&&(L(),process.exit(0));let P=g.wsPort,_=g.simId,n=!i.includes("--json"),y=_?` --sim ${_}`:"",k=u[0],r=u.slice(1);if(new Set(["state","js","eval","perf","memory","sample-color"]).has(k)){let{runInspect:e}=await import("./inspect-RU5RWMDH.js");await e(["debug",...i],{port:l.port,verbose:l.verbose});return}let t=O(g);try{switch(k){case"enable":{let e=B(r[0]);e.length===0&&(console.error(` usage: sootsim debug enable <channel[,channel,...]>
175
+ })()`}async function c(i,l){return x(i,l)}async function Y(i,l){let g=D(i,{port:l.port,stripBooleanFlags:["--pretty","--json","--help","-h"]}),u=g.positional;(!u[0]||i.includes("--help")||i.includes("-h"))&&(L(),process.exit(0));let P=g.wsPort,_=g.simId,n=!i.includes("--json"),y=_?` --sim ${_}`:"",k=u[0],r=u.slice(1);if(new Set(["state","js","eval","perf","memory","sample-color"]).has(k)){let{runInspect:e}=await import("./inspect-4H4VNQJ4.js");await e(["debug",...i],{port:l.port,verbose:l.verbose});return}let t=O(g);try{switch(k){case"enable":{let e=B(r[0]);e.length===0&&(console.error(` usage: sootsim debug enable <channel[,channel,...]>
176
176
  known: ${H.join(", ")}`),process.exit(1));let o=await v(t,"enable",e);console.log(a({active:o},n));break}case"disable":{let e=B(r[0]),o=await v(t,"disable",e);console.log(a({active:o},n));break}case"toggle":{let e=r[0];e||(console.error(" usage: sootsim debug toggle <channel>"),process.exit(1));let o=await c(t,`window.__sootsimDebug.toggle(${JSON.stringify(e)})`);console.log(a({[e]:o},n));break}case"status":{let e=await S(t);console.log(a(e,n));break}case"channels":{let e=await c(t,"window.__sootsimDebug.channels()");console.log(a(e,n));break}case"flags":{let e=await $(t);console.log(a(e,n));break}case"snapshot":{let e=r[0],o=e?`window.__sootsimDebug.snapshot(${JSON.stringify(e)})`:"window.__sootsimDebug.snapshot()",s=await c(t,`(() => { const s = ${o}; if (!s) return null; return { label: s.label, at: s.at, size: s.nodes.size }; })()`);console.log(a(s,n));break}case"snapshots":{let e=await c(t,"window.__sootsimDebug.snapshots()");console.log(a(e,n));break}case"diff":{let e=r[0],o=r[1];(!e||!o)&&(console.error(" usage: sootsim debug diff <labelA> <labelB>"),process.exit(1));let s=`(() => {
177
177
  const d = window.__sootsimDebug.diff(${JSON.stringify(e)}, ${JSON.stringify(o)});
178
178
  if (!d) return null;
@@ -1,7 +1,7 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import { createRequire as __sootsimCreateRequire } from 'node:module'
3
3
  var require = __sootsimCreateRequire(import.meta.url)
4
- import{a as d}from"./chunk-FAI6B7KM.js";import"./chunk-N236X7SZ.js";import{a as u}from"./chunk-S3YHQIHR.js";import{a as l}from"./chunk-NMC3E6DO.js";import{g as m}from"./chunk-223S4HOM.js";import"./chunk-3BN7ACIG.js";import"./chunk-6ZIFXWDJ.js";import"./chunk-ASR54LQA.js";import"./chunk-I5SSRJDW.js";import{b as c,f as a}from"./chunk-LFJQHZGK.js";import{a as p}from"./chunk-2LXM5BMK.js";import"./chunk-2HUVXSCB.js";import"./chunk-7QL76I5Z.js";import"./chunk-FJ5D7KBQ.js";import"./chunk-A6FYCXLX.js";import"./chunk-Y2KNXEIX.js";import"./chunk-LR5GL7TZ.js";import"./chunk-GHXN67UJ.js";import"./chunk-FOWD7TYC.js";import"./chunk-GEXLPJZ6.js";import"./chunk-V7MJLIGU.js";import"./chunk-ZE3HG74O.js";import"./chunk-S6YNVIOG.js";import"./chunk-FYVL4NBD.js";import"./chunk-25GKNYXJ.js";import"./chunk-WKDTGITC.js";function v(o){let n=o.indexOf("--port");if(n<0)return;let e=o[n+1],t=e?Number(e):Number.NaN;return(!Number.isInteger(t)||t<=0)&&(console.error(` invalid --port value: ${e||"(missing)"}`),process.exit(1)),t}async function w(o,n){let e=v(o)??n.port;return e?m(String(e)):void 0}async function f(o,n){(o.includes("--help")||o.includes("-h"))&&(console.log(`
4
+ import{a as d}from"./chunk-BMIIHY6K.js";import"./chunk-CORSX7M5.js";import{a as u}from"./chunk-QPZVGHRV.js";import{a as l}from"./chunk-FT2XATWO.js";import{g as m}from"./chunk-S7WXPIOY.js";import"./chunk-3EO5JEG7.js";import"./chunk-MUQDPJUP.js";import"./chunk-YZPSUNTO.js";import"./chunk-4XMPRQGE.js";import{b as c,f as a}from"./chunk-XMOULANJ.js";import{a as p}from"./chunk-RX4CFOVV.js";import"./chunk-VAGUPECL.js";import"./chunk-STWCCIBA.js";import"./chunk-Z6H5FR3U.js";import"./chunk-BFNAFH27.js";import"./chunk-66Z2ADUQ.js";import"./chunk-YIJFCR5T.js";import"./chunk-7RJEULWN.js";import"./chunk-RMIKUUCO.js";import"./chunk-R7AS52NA.js";import"./chunk-EPZUFQMX.js";import"./chunk-GH2OE6F6.js";import"./chunk-NLTJE335.js";import"./chunk-IS5OOCN5.js";import"./chunk-XBBNRESY.js";import"./chunk-XKAXZ4DS.js";function v(o){let n=o.indexOf("--port");if(n<0)return;let e=o[n+1],t=e?Number(e):Number.NaN;return(!Number.isInteger(t)||t<=0)&&(console.error(` invalid --port value: ${e||"(missing)"}`),process.exit(1)),t}async function w(o,n){let e=v(o)??n.port;return e?m(String(e)):void 0}async function f(o,n){(o.includes("--help")||o.includes("-h"))&&(console.log(`
5
5
  sootsim desktop \u2014 launch the desktop companion
6
6
 
7
7
  usage:
@@ -16,7 +16,7 @@ examples:
16
16
  sootsim desktop
17
17
  sootsim desktop --port 5173
18
18
  sootsim desktop --profile qa
19
- `),process.exit(0));let e=o.find((k,s)=>o[s-1]==="--profile"),t=o.includes("--ephemeral");e&&t&&(console.error(" sootsim desktop: --profile cannot be combined with --ephemeral"),process.exit(1));let h=e?c(e).id:void 0,i=p();if(!i){if(u(),process.stdin.isTTY&&process.env.CI!=="1"&&process.env.SOOTSIM_NO_PROMPT!=="1"&&await l("run sootsim desktop install now?",!0)){console.log();let{runInstallDesktop:s}=await import("./install-desktop-AWS5ITUE.js");await s(["--yes"]),i=p()}i||process.exit(1)}console.log(` launching ${i.path}`);let g=await w(o,n),r=await a.launch({url:g,device:n.device,profileId:h,ephemeralProfile:t});r.launched||(console.error(` ${r.message}`),process.exit(1)),console.log(` ${r.message}`)}function x(){console.log(`
19
+ `),process.exit(0));let e=o.find((k,s)=>o[s-1]==="--profile"),t=o.includes("--ephemeral");e&&t&&(console.error(" sootsim desktop: --profile cannot be combined with --ephemeral"),process.exit(1));let h=e?c(e).id:void 0,i=p();if(!i){if(u(),process.stdin.isTTY&&process.env.CI!=="1"&&process.env.SOOTSIM_NO_PROMPT!=="1"&&await l("run sootsim desktop install now?",!0)){console.log();let{runInstallDesktop:s}=await import("./install-desktop-RGCBPM4J.js");await s(["--yes"]),i=p()}i||process.exit(1)}console.log(` launching ${i.path}`);let g=await w(o,n),r=await a.launch({url:g,device:n.device,profileId:h,ephemeralProfile:t});r.launched||(console.error(` ${r.message}`),process.exit(1)),console.log(` ${r.message}`)}function x(){console.log(`
20
20
  sootsim desktop \u2014 launch or install the desktop companion
21
21
 
22
22
  usage:
@@ -1,7 +1,7 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (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{e as $}from"./chunk-N4Z7NF3J.js";import"./chunk-7BSX3TEH.js";import"./chunk-ZYZVAMKO.js";import"./chunk-GVTCP23K.js";import"./chunk-S3YHQIHR.js";import"./chunk-I2RMH3PV.js";import"./chunk-47AF7DZW.js";import{c as F,d as M,e as E}from"./chunk-3KB6LLD2.js";import{a as P}from"./chunk-IPNM6NRT.js";import"./chunk-223S4HOM.js";import"./chunk-3BN7ACIG.js";import"./chunk-6ZIFXWDJ.js";import"./chunk-ASR54LQA.js";import"./chunk-I5SSRJDW.js";import"./chunk-LFJQHZGK.js";import"./chunk-2LXM5BMK.js";import"./chunk-2HUVXSCB.js";import"./chunk-7QL76I5Z.js";import"./chunk-FJ5D7KBQ.js";import"./chunk-A6FYCXLX.js";import"./chunk-Y2KNXEIX.js";import"./chunk-LR5GL7TZ.js";import"./chunk-GHXN67UJ.js";import"./chunk-POTUFLUZ.js";import"./chunk-5O56UY3I.js";import"./chunk-HKQURR57.js";import"./chunk-FOWD7TYC.js";import"./chunk-GEXLPJZ6.js";import"./chunk-JVWHA7TR.js";import"./chunk-V7MJLIGU.js";import"./chunk-ZE3HG74O.js";import"./chunk-S6YNVIOG.js";import"./chunk-FYVL4NBD.js";import"./chunk-ODFSRDJM.js";import"./chunk-25GKNYXJ.js";import"./chunk-WKDTGITC.js";import{spawn as G}from"child_process";import{existsSync as x,mkdirSync as W,readFileSync as B,writeFileSync as y,unlinkSync as U}from"fs";import{tmpdir as N}from"os";import{dirname as C,resolve as c,join as J,relative as q}from"path";function H(){try{let t=import.meta.resolve("sootsim/detox");return C(t.startsWith("file://")?t.slice(7):t)}catch{return c(import.meta.dirname,"..","..","detox")}}var V=`
4
+ import{e as $}from"./chunk-C3O6UUPY.js";import"./chunk-6UXXOG6P.js";import"./chunk-OQO3HU4Y.js";import"./chunk-SY7E43UY.js";import"./chunk-QPZVGHRV.js";import"./chunk-63JWRDM6.js";import"./chunk-YRRUK3EK.js";import{c as F,d as M,e as E}from"./chunk-GQVBLBUJ.js";import{a as P}from"./chunk-C4O4VRN5.js";import"./chunk-S7WXPIOY.js";import"./chunk-3EO5JEG7.js";import"./chunk-MUQDPJUP.js";import"./chunk-YZPSUNTO.js";import"./chunk-4XMPRQGE.js";import"./chunk-XMOULANJ.js";import"./chunk-RX4CFOVV.js";import"./chunk-VAGUPECL.js";import"./chunk-STWCCIBA.js";import"./chunk-Z6H5FR3U.js";import"./chunk-BFNAFH27.js";import"./chunk-66Z2ADUQ.js";import"./chunk-YIJFCR5T.js";import"./chunk-7RJEULWN.js";import"./chunk-ZS7OXPHR.js";import"./chunk-C3GMSIRT.js";import"./chunk-2KSLGBIU.js";import"./chunk-RMIKUUCO.js";import"./chunk-R7AS52NA.js";import"./chunk-M2LP2VYQ.js";import"./chunk-EPZUFQMX.js";import"./chunk-GH2OE6F6.js";import"./chunk-NLTJE335.js";import"./chunk-IS5OOCN5.js";import"./chunk-LKAAQBT6.js";import"./chunk-XBBNRESY.js";import"./chunk-XKAXZ4DS.js";import{spawn as G}from"child_process";import{existsSync as x,mkdirSync as W,readFileSync as B,writeFileSync as y,unlinkSync as U}from"fs";import{tmpdir as N}from"os";import{dirname as C,resolve as c,join as J,relative as q}from"path";function H(){try{let t=import.meta.resolve("sootsim/detox");return C(t.startsWith("file://")?t.slice(7):t)}catch{return c(import.meta.dirname,"..","..","detox")}}var V=`
5
5
  sootsim detox \u2014 run detox-style tests against a sootsim shell
6
6
 
7
7
  usage:
@@ -1,7 +1,7 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (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"./chunk-6ZIFXWDJ.js";import"./chunk-FJ5D7KBQ.js";import{h as d,j as l,m as a}from"./chunk-GHXN67UJ.js";import"./chunk-V7MJLIGU.js";import{b as c,c as r,d as g}from"./chunk-ZE3HG74O.js";import"./chunk-S6YNVIOG.js";import"./chunk-FYVL4NBD.js";import"./chunk-25GKNYXJ.js";import"./chunk-WKDTGITC.js";function h(){console.log(`
4
+ import"./chunk-MUQDPJUP.js";import"./chunk-Z6H5FR3U.js";import{h as d,j as l,m as a}from"./chunk-7RJEULWN.js";import"./chunk-EPZUFQMX.js";import{b as c,c as r,d as g}from"./chunk-GH2OE6F6.js";import"./chunk-NLTJE335.js";import"./chunk-IS5OOCN5.js";import"./chunk-XBBNRESY.js";import"./chunk-XKAXZ4DS.js";function h(){console.log(`
5
5
  sootsim device \u2014 inspect or change the live device preset for a sim
6
6
 
7
7
  usage:
@@ -1,7 +1,7 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (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{h as E,j as R,m as b}from"./chunk-GHXN67UJ.js";import{f as v}from"./chunk-S6YNVIOG.js";import"./chunk-FYVL4NBD.js";import"./chunk-25GKNYXJ.js";import"./chunk-WKDTGITC.js";function F(e){return e.ts??e.t??0}function W(e){return typeof e.message=="string"&&e.message.length>0?e.message:Array.isArray(e.args)?e.args.map(s=>typeof s=="string"?s:JSON.stringify(s)).join(" "):""}var B=new Set(["timeline","network","react","console","screen"]);function P(){console.log(`
4
+ import{h as E,j as R,m as b}from"./chunk-7RJEULWN.js";import{f as v}from"./chunk-NLTJE335.js";import"./chunk-IS5OOCN5.js";import"./chunk-XBBNRESY.js";import"./chunk-XKAXZ4DS.js";function F(e){return e.ts??e.t??0}function W(e){return typeof e.message=="string"&&e.message.length>0?e.message:Array.isArray(e.args)?e.args.map(s=>typeof s=="string"?s:JSON.stringify(s)).join(" "):""}var B=new Set(["timeline","network","react","console","screen"]);function P(){console.log(`
5
5
  sootsim get diagnosis \u2014 compact "what just went wrong?" report
6
6
 
7
7
  usage:
@@ -0,0 +1,4 @@
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import { createRequire as __sootsimCreateRequire } from 'node:module'
3
+ var require = __sootsimCreateRequire(import.meta.url)
4
+ import{a,b,c,d,e}from"./chunk-YMD6WWI7.js";import"./chunk-RMIKUUCO.js";import"./chunk-R7AS52NA.js";import"./chunk-XBBNRESY.js";import"./chunk-XKAXZ4DS.js";export{e as applyAutomaticSootsimCleanup,d as applySootsimCleanup,b as formatSootsimBytes,a as isAutomaticSootsimCleanupComplete,c as planSootsimCleanup};
@@ -0,0 +1,4 @@
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import { createRequire as __sootsimCreateRequire } from 'node:module'
3
+ var require = __sootsimCreateRequire(import.meta.url)
4
+ import"./chunk-CORSX7M5.js";import{f as a,g as b,h as c,i as d,j as e,k as f,l as g}from"./chunk-XMOULANJ.js";import"./chunk-RX4CFOVV.js";import"./chunk-RMIKUUCO.js";import"./chunk-IS5OOCN5.js";import"./chunk-XBBNRESY.js";import"./chunk-XKAXZ4DS.js";export{c as ALL_DRIVERS,g as buildDriverListRows,a as electronDriver,d as getAllDrivers,e as getDriver,b as playwrightDriver,f as resolveDriver};
@@ -1,7 +1,7 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (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{c as L,d as T}from"./chunk-W7C6FSWM.js";import{h as A,j as R,n as b}from"./chunk-GHXN67UJ.js";import"./chunk-S6YNVIOG.js";import"./chunk-FYVL4NBD.js";import"./chunk-25GKNYXJ.js";import"./chunk-WKDTGITC.js";import{spawnSync as x}from"node:child_process";import{existsSync as V,mkdirSync as W,unlinkSync as N,writeFileSync as E}from"node:fs";import{homedir as j}from"node:os";import{dirname as q,extname as H,join as K,resolve as I}from"node:path";var n=e=>new Promise(a=>setTimeout(a,e)),X=["--out","--fps","--script","--slow"],J=["--keep-three"],Q=["--background","--gradient","--gradient-angle","--colorway","--environment","--env-shape","--env-spread","--env-size","--env-color","--env-glow","--env-plastic","--room","--focus","--focus-amount","--focus-range"],Y=12e4,Z=16e6;function c(e,a){let s=e.indexOf(a);return s>=0?e[s+1]:void 0}async function r(e,a,s=3e4){return await e.send({type:"evaluate",code:a},{timeoutMs:s})}async function ae(e,a){if(e.length===0||e.includes("--help")||e.includes("-h"))return console.log(`
4
+ import{c as L,d as T}from"./chunk-EPMLSKSB.js";import{h as A,j as R,n as b}from"./chunk-7RJEULWN.js";import"./chunk-NLTJE335.js";import"./chunk-IS5OOCN5.js";import"./chunk-XBBNRESY.js";import"./chunk-XKAXZ4DS.js";import{spawnSync as x}from"node:child_process";import{existsSync as V,mkdirSync as W,unlinkSync as N,writeFileSync as E}from"node:fs";import{homedir as j}from"node:os";import{dirname as q,extname as H,join as K,resolve as I}from"node:path";var n=e=>new Promise(a=>setTimeout(a,e)),X=["--out","--fps","--script","--slow"],J=["--keep-three"],Q=["--background","--gradient","--gradient-angle","--colorway","--environment","--env-shape","--env-spread","--env-size","--env-color","--env-glow","--env-plastic","--room","--focus","--focus-amount","--focus-range"],Y=12e4,Z=16e6;function c(e,a){let s=e.indexOf(a);return s>=0?e[s+1]:void 0}async function r(e,a,s=3e4){return await e.send({type:"evaluate",code:a},{timeoutMs:s})}async function ae(e,a){if(e.length===0||e.includes("--help")||e.includes("-h"))return console.log(`
5
5
  sootsim film \u2014 record a flow flat, replay it on the 3d stage, save a clip
6
6
 
7
7
  usage:
@@ -35,7 +35,7 @@ examples:
35
35
  sootsim film flows/swap.yaml --script hero-arc --background gradient-tide --out ~/Desktop/swap-3d.mp4
36
36
  sootsim film flows/login.yaml --colorway deep-blue --environment on --env-shape pane --room on
37
37
  `),0;let s=e.find(d=>!d.startsWith("--")&&/\.ya?ml$/.test(d));if(!s||!V(I(s)))return console.error(` film: flow file not found: ${s??"(none given)"}`),1;let P=Number.parseInt(c(e,"--fps")??"30",10),h=c(e,"--script")??"hero-arc",z=e.includes("--keep-three"),v=s.replace(/^.*\//,"").replace(/\.ya?ml$/,""),O=c(e,"--out"),l=I(O??K(j(),"Desktop","sootsim-films",`${v}.webm`)),S=H(l).toLowerCase()===".mp4";if(S&&x("ffmpeg",["-version"]).status!==0)return console.error(" film: --out ends in .mp4 but ffmpeg is not installed"),console.error(" install ffmpeg or use a .webm output path"),1;let C=A(e,{port:a.port,stripValueFlags:[...X,...Q],stripBooleanFlags:J}),t=R({...C,commandTimeoutMs:6e4});try{let d=await r(t,`(() => { const s = window.SootSim?.bridges?.settings?.get?.() || {}
38
- return { threeMode: s.threeMode === true, editor: s.threeRecordingEditor === true } })()`);if(console.log(` film: recording flow ${v} on the flat canvas`),!await r(t,"(async () => !!(await window.SootSim?.bridges?.startRecording?.('video', undefined, { skipEntitlement: true })))()"))return console.error(" film: engine recording store did not start (is @sootsim/plugin-recording installed?)"),1;let D=Date.now();await n(500);let{runFlowPlayback:G}=await import("./flow-2QKKLLQM.js"),m=[s],y=c(e,"--sim");y&&m.push("--sim",y);let k=c(e,"--slow");k&&m.push("--slow",k);let f=await G(m);await n(400);let u=Math.min(Date.now()-D,Y);if(await r(t,"window.SootSim?.bridges?.stopRecording?.()"),f!==0)return console.error(` film: flow failed (exit ${f}) \u2014 not filming a broken take`),f;let F=!1;for(let o=0;o<50;o++){await n(400);let i=await r(t,`(() => { const s = window.SootSim?.bridges?.getRecordingState?.()
38
+ return { threeMode: s.threeMode === true, editor: s.threeRecordingEditor === true } })()`);if(console.log(` film: recording flow ${v} on the flat canvas`),!await r(t,"(async () => !!(await window.SootSim?.bridges?.startRecording?.('video', undefined, { skipEntitlement: true })))()"))return console.error(" film: engine recording store did not start (is @sootsim/plugin-recording installed?)"),1;let D=Date.now();await n(500);let{runFlowPlayback:G}=await import("./flow-GXXVEHEW.js"),m=[s],y=c(e,"--sim");y&&m.push("--sim",y);let k=c(e,"--slow");k&&m.push("--slow",k);let f=await G(m);await n(400);let u=Math.min(Date.now()-D,Y);if(await r(t,"window.SootSim?.bridges?.stopRecording?.()"),f!==0)return console.error(` film: flow failed (exit ${f}) \u2014 not filming a broken take`),f;let F=!1;for(let o=0;o<50;o++){await n(400);let i=await r(t,`(() => { const s = window.SootSim?.bridges?.getRecordingState?.()
39
39
  return { state: s?.state, hasBlob: !!s?.lastVideoBlob } })()`);if(i?.state==="idle"&&i.hasBlob){F=!0;break}}if(!F)return console.error(" film: flow recording never produced a video blob"),1;console.log(` film: flow captured (${(u/1e3).toFixed(1)}s)`),await r(t,"window.SootSim?.bridges?.settings?.set?.('threeMode', true)"),await L(t),await n(1400),await r(t,"window.SootSim?.bridges?.settings?.set?.('threeRecordingEditor', true)");let _=!1;for(let o=0;o<60;o++)if(await n(250),await r(t,`(() => { const rs = window.SootSim?.replayStore
40
40
  return rs?.value?.preview?.surface === 'video' && !!rs?.value?.preview?.flowVideoUrl })()`)){_=!0;break}if(!_)return console.error(" film: recording editor did not seed the replay store"),1;let p=T(e);delete p.script,p.resetPose=!0,await b(t,"SootSim.bridges.threeMode.configure",p),await n(2400),console.log(` film: filming the 3d stage (script: ${h})`);let M=await r(t,`(() => {
41
41
  const c = window.SootSim?.bridges?.threeMode?.getCanvas?.()
@@ -0,0 +1,4 @@
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import { createRequire as __sootsimCreateRequire } from 'node:module'
3
+ var require = __sootsimCreateRequire(import.meta.url)
4
+ import{c,d,e,f,g,h}from"./chunk-C3O6UUPY.js";import"./chunk-6UXXOG6P.js";import"./chunk-OQO3HU4Y.js";import{b as a,c as b}from"./chunk-SY7E43UY.js";import"./chunk-QPZVGHRV.js";import"./chunk-63JWRDM6.js";import"./chunk-YRRUK3EK.js";import"./chunk-GQVBLBUJ.js";import"./chunk-C4O4VRN5.js";import"./chunk-S7WXPIOY.js";import"./chunk-3EO5JEG7.js";import"./chunk-MUQDPJUP.js";import"./chunk-YZPSUNTO.js";import"./chunk-4XMPRQGE.js";import"./chunk-XMOULANJ.js";import"./chunk-RX4CFOVV.js";import"./chunk-VAGUPECL.js";import"./chunk-STWCCIBA.js";import"./chunk-Z6H5FR3U.js";import"./chunk-BFNAFH27.js";import"./chunk-66Z2ADUQ.js";import"./chunk-YIJFCR5T.js";import"./chunk-7RJEULWN.js";import"./chunk-ZS7OXPHR.js";import"./chunk-C3GMSIRT.js";import"./chunk-2KSLGBIU.js";import"./chunk-RMIKUUCO.js";import"./chunk-R7AS52NA.js";import"./chunk-M2LP2VYQ.js";import"./chunk-EPZUFQMX.js";import"./chunk-GH2OE6F6.js";import"./chunk-NLTJE335.js";import"./chunk-IS5OOCN5.js";import"./chunk-LKAAQBT6.js";import"./chunk-XBBNRESY.js";import"./chunk-XKAXZ4DS.js";export{e as discoverSootsimUrl,c as getLastFlowPreviewUploadResult,d as getLastFlowTraceSteps,g as hoistLeadingSimFlag,a as parseFlowFile,f as runFlowPlayback,h as runMaestroAuthoring,b as validateFlowFile};
@@ -0,0 +1,4 @@
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import { createRequire as __sootsimCreateRequire } from 'node:module'
3
+ var require = __sootsimCreateRequire(import.meta.url)
4
+ import{a,b,c}from"./chunk-2TRPGEZE.js";import"./chunk-ZNK3ZAA5.js";import"./chunk-M2LP2VYQ.js";import"./chunk-EPZUFQMX.js";import"./chunk-GH2OE6F6.js";import"./chunk-NLTJE335.js";import"./chunk-IS5OOCN5.js";import"./chunk-LKAAQBT6.js";import"./chunk-XBBNRESY.js";import"./chunk-3S7UEXZW.js";import"./chunk-EWRPLFYI.js";import"./chunk-XKAXZ4DS.js";export{c as printCommandHelp,b as printGroupHelp,a as printHelp};
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (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 e,b as s}from"./chunk-ODFSRDJM.js";import"./chunk-WKDTGITC.js";var n=[{title:"Overview",route:"/docs/sootsim/cli"},...e.slice().sort((o,t)=>o.order-t.order).map(o=>({title:o.navTitle,route:`/docs/sootsim/cli/${o.slug}`}))];var i=["do","get"];function g(o){if(o.command)return o;let t=o.commandArgs.find(r=>!r.startsWith("-"));if(!t)return o;for(let r of i)if(s(r,t))return{...o,command:r};return o}export{g as resolveHiddenRuntimeAlias};
4
+ import{a as e,b as s}from"./chunk-LKAAQBT6.js";import"./chunk-XKAXZ4DS.js";var n=[{title:"Overview",route:"/docs/sootsim/cli"},...e.slice().sort((o,t)=>o.order-t.order).map(o=>({title:o.navTitle,route:`/docs/sootsim/cli/${o.slug}`}))];var i=["do","get"];function g(o){if(o.command)return o;let t=o.commandArgs.find(r=>!r.startsWith("-"));if(!t)return o;for(let r of i)if(s(r,t))return{...o,command:r};return o}export{g as resolveHiddenRuntimeAlias};
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.309 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.310 | (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,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"./chunk-25GKNYXJ.js";import"./chunk-WKDTGITC.js";export{b as ACTIVE_RUNTIME_FILE,e as CONFIG_FILE,f as DAEMON_HEARTBEAT_STALE_MS,c as DAEMON_LOCKFILE,d as DEV_BRIDGE_LOCKFILE,a as SOOTSIM_HOME_ENV,J as activeRuntimeDir,m as activeRuntimeFile,u as cacheDir,R as claimDaemonLockfile,x as configFilePath,F as consumeRuntimeUpgradeNotice,s as daemonAppBundlePath,r as daemonAppDir,t as daemonAppLauncherPath,v as daemonLockfilePath,w as devBridgeLockfilePath,n as electronDir,o as electronUserDataDir,p as electronVersionDir,G as ensureSootsimHome,M as isDaemonLockfileFresh,N as isDevBridgeLockfileFresh,i as isDevWorkstation,h as isSootsimDevCheckout,q as profilesDir,H as readActiveRuntime,K as readDaemonLockfile,L as readDevBridgeLockfile,O as readLiveRuntimeVersions,C as readOrCreateAnonymousId,A as readPrivacyPreferences,y as readSharedConfig,S as removeDaemonLockfile,T as removeDevBridgeLockfile,l as runtimeDir,D as runtimeUpgradeNoticePath,k as runtimesDir,j as shouldSkipPersistentDaemon,g as sootsimHomeDir,I as writeActiveRuntime,P as writeDaemonLockfile,Q as writeDevBridgeLockfile,B as writePrivacyPreferences,E as writeRuntimeUpgradeNotice,z as writeSharedConfig};
4
+ import{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"./chunk-XBBNRESY.js";import"./chunk-XKAXZ4DS.js";export{b as ACTIVE_RUNTIME_FILE,e as CONFIG_FILE,f as DAEMON_HEARTBEAT_STALE_MS,c as DAEMON_LOCKFILE,d as DEV_BRIDGE_LOCKFILE,a as SOOTSIM_HOME_ENV,J as activeRuntimeDir,m as activeRuntimeFile,u as cacheDir,R as claimDaemonLockfile,x as configFilePath,F as consumeRuntimeUpgradeNotice,s as daemonAppBundlePath,r as daemonAppDir,t as daemonAppLauncherPath,v as daemonLockfilePath,w as devBridgeLockfilePath,n as electronDir,o as electronUserDataDir,p as electronVersionDir,G as ensureSootsimHome,M as isDaemonLockfileFresh,N as isDevBridgeLockfileFresh,i as isDevWorkstation,h as isSootsimDevCheckout,q as profilesDir,H as readActiveRuntime,K as readDaemonLockfile,L as readDevBridgeLockfile,O as readLiveRuntimeVersions,C as readOrCreateAnonymousId,A as readPrivacyPreferences,y as readSharedConfig,S as removeDaemonLockfile,T as removeDevBridgeLockfile,l as runtimeDir,D as runtimeUpgradeNoticePath,k as runtimesDir,j as shouldSkipPersistentDaemon,g as sootsimHomeDir,I as writeActiveRuntime,P as writeDaemonLockfile,Q as writeDevBridgeLockfile,B as writePrivacyPreferences,E as writeRuntimeUpgradeNotice,z as writeSharedConfig};
@@ -0,0 +1,4 @@
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import { createRequire as __sootsimCreateRequire } from 'node:module'
3
+ var require = __sootsimCreateRequire(import.meta.url)
4
+ import{i as a,j as b}from"./chunk-SY7E43UY.js";import"./chunk-QPZVGHRV.js";import"./chunk-63JWRDM6.js";import"./chunk-YRRUK3EK.js";import"./chunk-S7WXPIOY.js";import"./chunk-3EO5JEG7.js";import"./chunk-MUQDPJUP.js";import"./chunk-YZPSUNTO.js";import"./chunk-4XMPRQGE.js";import"./chunk-XMOULANJ.js";import"./chunk-RX4CFOVV.js";import"./chunk-VAGUPECL.js";import"./chunk-STWCCIBA.js";import"./chunk-Z6H5FR3U.js";import"./chunk-BFNAFH27.js";import"./chunk-66Z2ADUQ.js";import"./chunk-YIJFCR5T.js";import"./chunk-7RJEULWN.js";import"./chunk-ZS7OXPHR.js";import"./chunk-RMIKUUCO.js";import"./chunk-R7AS52NA.js";import"./chunk-M2LP2VYQ.js";import"./chunk-EPZUFQMX.js";import"./chunk-GH2OE6F6.js";import"./chunk-NLTJE335.js";import"./chunk-IS5OOCN5.js";import"./chunk-LKAAQBT6.js";import"./chunk-XBBNRESY.js";import"./chunk-XKAXZ4DS.js";export{a as printShellPerfReport,b as runInspect};
@@ -0,0 +1,4 @@
1
+ /*! sootsim v0.1.310 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import { createRequire as __sootsimCreateRequire } from 'node:module'
3
+ var require = __sootsimCreateRequire(import.meta.url)
4
+ import{a}from"./chunk-BMIIHY6K.js";import"./chunk-FT2XATWO.js";import"./chunk-RX4CFOVV.js";import"./chunk-XKAXZ4DS.js";export{a as runInstallDesktop};