sootsim 0.1.86 → 0.1.88

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 (142) hide show
  1. package/dist-cli/bin.js +4 -4
  2. package/dist-cli/chunks/{agent-S3WLX5Z4.js → agent-ZI2Y3H3Y.js} +2 -2
  3. package/dist-cli/chunks/{agent-wrapper-PFPEQTPG.js → agent-wrapper-YSBDQL6H.js} +2 -2
  4. package/dist-cli/chunks/{assert-RQD66YGE.js → assert-KKVJVH7K.js} +2 -2
  5. package/dist-cli/chunks/auto-bootstrap-2DEJ2DPE.js +2 -0
  6. package/dist-cli/chunks/beta-FXDJPPHT.js +2 -0
  7. package/dist-cli/chunks/{chunk-FO52BFW4.js → chunk-2QNNBZLX.js} +2 -2
  8. package/dist-cli/chunks/chunk-2XLZKDMI.js +1 -0
  9. package/dist-cli/chunks/{chunk-XZE53P4L.js → chunk-4QXF57UL.js} +2 -2
  10. package/dist-cli/chunks/chunk-4TRU5DGK.js +1 -0
  11. package/dist-cli/chunks/{chunk-535UNERF.js → chunk-5GY5KZ33.js} +2 -2
  12. package/dist-cli/chunks/{chunk-P7IKKZTG.js → chunk-5ITY4LBR.js} +2 -2
  13. package/dist-cli/chunks/{chunk-VUYCS6QI.js → chunk-7GIE3OPK.js} +2 -2
  14. package/dist-cli/chunks/chunk-ACDG2MSQ.js +2 -0
  15. package/dist-cli/chunks/{chunk-CSJS4MRN.js → chunk-CAJ6QHMM.js} +2 -2
  16. package/dist-cli/chunks/{chunk-JITAVV2G.js → chunk-DA3PPE4Y.js} +1 -1
  17. package/dist-cli/chunks/{chunk-OBHJKTWA.js → chunk-DPOLCAFU.js} +2 -2
  18. package/dist-cli/chunks/{chunk-NLH7FNSG.js → chunk-FYK7GIM7.js} +1 -1
  19. package/dist-cli/chunks/{chunk-3GCSX5H5.js → chunk-GZUD44W5.js} +1 -1
  20. package/dist-cli/chunks/{chunk-UWSP2AT7.js → chunk-HFUOM2TC.js} +1 -1
  21. package/dist-cli/chunks/{chunk-KQYOS5SM.js → chunk-I63MGIRV.js} +1 -1
  22. package/dist-cli/chunks/{chunk-PVMX5UNR.js → chunk-ICPLDWHO.js} +2 -2
  23. package/dist-cli/chunks/{chunk-JBYW57OA.js → chunk-IPRXAXSY.js} +2 -2
  24. package/dist-cli/chunks/{chunk-CMAANHYQ.js → chunk-J6U3467L.js} +1 -1
  25. package/dist-cli/chunks/{chunk-TSNBQ4ZV.js → chunk-JDKTIGQG.js} +2 -2
  26. package/dist-cli/chunks/{chunk-XB4QIINM.js → chunk-JJPIAFVR.js} +5 -5
  27. package/dist-cli/chunks/chunk-JWR47SLY.js +2 -0
  28. package/dist-cli/chunks/{chunk-FF5KD3BS.js → chunk-LDBQP5NY.js} +2 -2
  29. package/dist-cli/chunks/{chunk-V7CFSKMC.js → chunk-LYBRU6QS.js} +2 -2
  30. package/dist-cli/chunks/{chunk-6LG7WJMD.js → chunk-MMNQO2HZ.js} +2 -2
  31. package/dist-cli/chunks/{chunk-XFJYEKYK.js → chunk-MR7YARGW.js} +3 -3
  32. package/dist-cli/chunks/{chunk-6A7IWFXR.js → chunk-NFOZL6H3.js} +5 -5
  33. package/dist-cli/chunks/{chunk-5DFVKWYQ.js → chunk-PQJTZ2Q2.js} +3 -3
  34. package/dist-cli/chunks/chunk-QCEJKIV5.js +2 -0
  35. package/dist-cli/chunks/{chunk-VFGAEMSI.js → chunk-QO3BBIOT.js} +2 -2
  36. package/dist-cli/chunks/{chunk-EDWDFOPL.js → chunk-QOTYEI7J.js} +22 -10
  37. package/dist-cli/chunks/{chunk-7YZHI7V6.js → chunk-QSZW3XPY.js} +1 -1
  38. package/dist-cli/chunks/chunk-RC77QMAW.js +1 -0
  39. package/dist-cli/chunks/{chunk-JB467MUR.js → chunk-RICUSEFS.js} +2 -2
  40. package/dist-cli/chunks/{chunk-STHMWSVN.js → chunk-RKII4C6H.js} +2 -2
  41. package/dist-cli/chunks/{chunk-OCTDP37S.js → chunk-UKQFKONV.js} +2 -2
  42. package/dist-cli/chunks/{chunk-CQAQTU5K.js → chunk-UOADFPJR.js} +1 -1
  43. package/dist-cli/chunks/{chunk-2IYMBWHL.js → chunk-VLX4A5H7.js} +1 -1
  44. package/dist-cli/chunks/{chunk-JMILXXI4.js → chunk-W6XDYKEI.js} +2 -2
  45. package/dist-cli/chunks/{chunk-3TNIXR6J.js → chunk-WV4XAMMB.js} +1 -1
  46. package/dist-cli/chunks/{chunk-DKW7Q4F3.js → chunk-XCFMLRSZ.js} +2 -2
  47. package/dist-cli/chunks/chunk-YII7ZDGB.js +23 -0
  48. package/dist-cli/chunks/{chunk-NBBH2PVW.js → chunk-YMAPZJC5.js} +2 -2
  49. package/dist-cli/chunks/{chunk-5NW6W7YF.js → chunk-ZJ7REGNA.js} +1 -1
  50. package/dist-cli/chunks/cli-version-3L7QYH7O.js +2 -0
  51. package/dist-cli/chunks/{compat-I2U3P4KP.js → compat-MVJ4SLW6.js} +3 -3
  52. package/dist-cli/chunks/{config-S73CCGP5.js → config-YRXKPGDD.js} +2 -2
  53. package/dist-cli/chunks/{control-QR6MY7RA.js → control-5VL7ZZ7H.js} +2 -2
  54. package/dist-cli/chunks/{cpu-profile-RFYCTVAF.js → cpu-profile-TI4YCPG7.js} +2 -2
  55. package/dist-cli/chunks/{daemon-D5MV2B22.js → daemon-EAT4F6GF.js} +3 -3
  56. package/dist-cli/chunks/{debug-ZYEI75AG.js → debug-BZQK7KMK.js} +3 -3
  57. package/dist-cli/chunks/{detox-J5IH52RV.js → detox-4WPDF7PV.js} +2 -2
  58. package/dist-cli/chunks/{device-NOBLSUOD.js → device-KNKIQ3IS.js} +2 -2
  59. package/dist-cli/chunks/{diagnose-B6J5ZUHV.js → diagnose-OCOEEXIA.js} +2 -2
  60. package/dist-cli/chunks/drivers-OP2GUBTA.js +2 -0
  61. package/dist-cli/chunks/{electron-PSX4KDCC.js → electron-F4OGNAMN.js} +3 -3
  62. package/dist-cli/chunks/flow-5E5RFKRC.js +2 -0
  63. package/dist-cli/chunks/help-PSZ4URF3.js +2 -0
  64. package/dist-cli/chunks/{hints-ZE4I3YO3.js → hints-PI7V27DL.js} +2 -2
  65. package/dist-cli/chunks/{home-paths-N76MJE3D.js → home-paths-FQDBE3DP.js} +2 -2
  66. package/dist-cli/chunks/{inspect-V2TXTDOG.js → inspect-7WG5VC3M.js} +107 -107
  67. package/dist-cli/chunks/install-7LDS6J3P.js +2 -0
  68. package/dist-cli/chunks/{install-desktop-6ZRTRRCU.js → install-desktop-DTHVNNX7.js} +3 -3
  69. package/dist-cli/chunks/{keys-L2RN4URM.js → keys-CWPKHEL2.js} +2 -2
  70. package/dist-cli/chunks/{launch-BJGXPNZR.js → launch-EXF3NWKL.js} +3 -3
  71. package/dist-cli/chunks/{login-HYNEMAYR.js → login-RF5HX4YK.js} +4 -4
  72. package/dist-cli/chunks/{logout-AO4YS27T.js → logout-NSIQDJTY.js} +2 -2
  73. package/dist-cli/chunks/{maestro-PRACYFKV.js → maestro-U3AWFYNR.js} +2 -2
  74. package/dist-cli/chunks/{preview-ZTANXVEK.js → preview-HBWH34VL.js} +2 -2
  75. package/dist-cli/chunks/{profile-FNMAGUDB.js → profile-B5DQIC27.js} +2 -2
  76. package/dist-cli/chunks/{react-6ZV2FQIM.js → react-XJM4CQDU.js} +2 -2
  77. package/dist-cli/chunks/{record-MLFVJZ6Y.js → record-MWURHSDY.js} +2 -2
  78. package/dist-cli/chunks/runtime-N7O7ZZW3.js +2 -0
  79. package/dist-cli/chunks/{runtime-delivery-ATYW2SQR.js → runtime-delivery-MFASKX5N.js} +2 -2
  80. package/dist-cli/chunks/{screenshot-UOMYMFZ4.js → screenshot-G3B6PTD2.js} +2 -2
  81. package/dist-cli/chunks/{screenshot-mode-MWSVD4YG.js → screenshot-mode-F27AGWOL.js} +2 -2
  82. package/dist-cli/chunks/{screenshots-GSA3VCWB.js → screenshots-HCDJ3V5T.js} +2 -2
  83. package/dist-cli/chunks/{server-YPFC6POG.js → server-ZI7V4MJW.js} +9 -9
  84. package/dist-cli/chunks/setup-repo-NEBHRCOI.js +2 -0
  85. package/dist-cli/chunks/{skills-YE5OPWMQ.js → skills-KT2MHBGR.js} +2 -2
  86. package/dist-cli/chunks/{start-BSSQ5U2V.js → start-AYOMCDKK.js} +4 -4
  87. package/dist-cli/chunks/store-3HPKFGMD.js +2 -0
  88. package/dist-cli/chunks/telemetry-FAMOGMOZ.js +2 -0
  89. package/dist-cli/chunks/{test-5JMLBH2O.js → test-6KILPMZ4.js} +3 -3
  90. package/dist-cli/chunks/{three-mode-TRBWZJQY.js → three-mode-MATEVUJA.js} +2 -2
  91. package/dist-cli/chunks/{timeline-YMZPIEB4.js → timeline-XTURFCUR.js} +2 -2
  92. package/dist-cli/chunks/{upgrade-JLAS7FIF.js → upgrade-5OPHZEOL.js} +3 -3
  93. package/dist-cli/chunks/upload-ZKE2F7SV.js +2 -0
  94. package/dist-cli/chunks/{web-D6S5UXOO.js → web-UWZTDXS3.js} +2 -2
  95. package/dist-cli/chunks/{what-happened-65NXWU2S.js → what-happened-E4QWSIJN.js} +2 -2
  96. package/dist-cli/chunks/{whoami-6BSB6FQC.js → whoami-PINWMH4V.js} +2 -2
  97. package/dist-lib/agent-daemon-client.cjs +1 -1
  98. package/dist-lib/agent-events.cjs +1 -1
  99. package/dist-lib/agent-sessions.cjs +1 -1
  100. package/dist-lib/attached-projects.cjs +1 -1
  101. package/dist-lib/auth/shared-session.cjs +1 -1
  102. package/dist-lib/backend-origin.cjs +1 -1
  103. package/dist-lib/beta.cjs +1 -1
  104. package/dist-lib/beta.mjs +1 -1
  105. package/dist-lib/bridge-constants.cjs +1 -1
  106. package/dist-lib/cli-constants.cjs +1 -1
  107. package/dist-lib/config.cjs +1 -1
  108. package/dist-lib/detox/index.cjs +1 -1
  109. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  110. package/dist-lib/home-paths.cjs +1 -1
  111. package/dist-lib/host/bridge-host.cjs +1 -1
  112. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  113. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  114. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  115. package/dist-lib/host/websocket-proxy.cjs +1 -1
  116. package/dist-lib/index.cjs +1 -1
  117. package/dist-lib/metro.cjs +1 -1
  118. package/dist-lib/profiles.cjs +1 -1
  119. package/dist-lib/render-mode.cjs +1 -1
  120. package/dist-lib/scripts/demo-app-registry.cjs +1 -1
  121. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  122. package/dist-lib/skills.cjs +9 -2
  123. package/dist-lib/vite.cjs +1 -1
  124. package/package.json +1 -1
  125. package/dist-cli/chunks/auto-bootstrap-PWF7OYCV.js +0 -2
  126. package/dist-cli/chunks/beta-2HH7F2DQ.js +0 -2
  127. package/dist-cli/chunks/chunk-5ZYANOOI.js +0 -23
  128. package/dist-cli/chunks/chunk-I3JMONYJ.js +0 -2
  129. package/dist-cli/chunks/chunk-KGYC4SZA.js +0 -2
  130. package/dist-cli/chunks/chunk-M6GOCS27.js +0 -2
  131. package/dist-cli/chunks/chunk-NIRJVBXJ.js +0 -1
  132. package/dist-cli/chunks/chunk-QUYC7CVV.js +0 -1
  133. package/dist-cli/chunks/chunk-Y7BXSTVX.js +0 -1
  134. package/dist-cli/chunks/cli-version-TGWWTYQX.js +0 -2
  135. package/dist-cli/chunks/drivers-RRHVOU6S.js +0 -2
  136. package/dist-cli/chunks/flow-FWNVFKMP.js +0 -2
  137. package/dist-cli/chunks/install-4PINRR2O.js +0 -2
  138. package/dist-cli/chunks/runtime-5762IE56.js +0 -2
  139. package/dist-cli/chunks/setup-repo-QBQ4VWFO.js +0 -2
  140. package/dist-cli/chunks/store-EG4SONAH.js +0 -2
  141. package/dist-cli/chunks/telemetry-XXN4LRDS.js +0 -2
  142. package/dist-cli/chunks/upload-K6UNCFQH.js +0 -2
@@ -1,2 +1,2 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import{execFileSync as p,spawn as l}from"child_process";import{existsSync as s}from"fs";import{homedir as u}from"os";import{join as d}from"path";var g=["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","~/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","/Applications/Chromium.app/Contents/MacOS/Chromium","~/Applications/Chromium.app/Contents/MacOS/Chromium","/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","~/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","/Applications/Brave Browser.app/Contents/MacOS/Brave Browser","~/Applications/Brave Browser.app/Contents/MacOS/Brave Browser","/Applications/Arc.app/Contents/MacOS/Arc","~/Applications/Arc.app/Contents/MacOS/Arc"],f=["/usr/bin/google-chrome","/usr/bin/chromium","/usr/bin/chromium-browser","/usr/bin/microsoft-edge","/usr/bin/brave-browser","/snap/bin/chromium"],h=["C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe","C:\\Program Files\\Microsoft\\Edge\\Application\\msedge.exe","C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe","C:\\Program Files\\BraveSoftware\\Brave-Browser\\Application\\brave.exe","C:\\Program Files (x86)\\BraveSoftware\\Brave-Browser\\Application\\brave.exe"],C=["google-chrome","chromium","chromium-browser","microsoft-edge","brave-browser"],O=["chrome","msedge","brave"];function w(r){return r.startsWith("~/")?d(u(),r.slice(2)):r}function a(r){for(let n of r){let o=w(n);if(s(o))return o}return null}function U(r,n){try{let e=p(n==="win32"?"where":"which",[r],{encoding:"utf8",timeout:1500,stdio:["ignore","pipe","ignore"]}).trim();return e?e.split(/\r?\n/)[0]:null}catch{return null}}function M(r=process.platform){let n=process.env.CHROME_PATH||process.env.CHROMIUM_PATH;if(n&&s(n))return n;let o=a(r==="darwin"?g:r==="win32"?h:f);if(o)return o;let e=r==="win32"?O:C;for(let t of e){let i=U(t,r);if(i)return i}return null}function A(r,n={}){if(!r)throw new Error("openUrl requires a url");let o=n.platform??process.platform;return n.newWindow?c(r,{...n,platform:o,newWindow:!0}):o==="darwin"?{command:"open",args:n.background===!1?[r]:["-g",r],via:"system"}:o==="win32"?{command:"cmd",args:["/c","start","",r],via:"system"}:{command:"xdg-open",args:[r],via:"system"}}function c(r,n={}){if(!r)throw new Error("openUrl requires a url");let o=n.platform??process.platform,e="chromiumBinary"in n?n.chromiumBinary:M(o);if(!e)throw new Error("browser launch requires Chrome, Chromium, Edge, Brave, or Arc");let t=[];return n.newWindow!==!1&&t.push("--new-window"),t.push(r),{command:e,args:t,via:"chromium",target:e}}async function m(r,n,o){return new Promise((e,t)=>{let i=l(r,n,{detached:o,stdio:"ignore"});i.once("error",t),i.once("spawn",()=>{o&&i.unref(),e(i.pid)})})}async function x(r,n={}){let o=A(r,n),e=await m(o.command,o.args,n.detached??!0);return{...o,pid:e,attachUrl:r}}async function y(r,n={}){let o=c(r,n),e=await m(o.command,o.args,n.detached??!0);return{...o,pid:e,attachUrl:r}}async function E(r,n={}){await x(r,n)}export{M as a,x as b,y as c,E as d};
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import r from"node:fs";import{homedir as O}from"node:os";import n from"node:path";var L="SOOTSIM_HOME",E="active",A="daemon.json",j="config.json",I=3e4;function c(){let e=process.env[L];return e&&e.length>0?n.resolve(e):n.join(O(),".sootsim")}function K(){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(`${n.sep}packages${n.sep}sootsim${n.sep}`)}catch{return!1}}function f(){return n.join(c(),"runtimes")}function _(e){return n.join(f(),e)}function D(){return n.join(f(),E)}function S(){return n.join(c(),"electron")}function U(){return n.join(S(),"userData")}function Y(e){return n.join(S(),e)}function N(){return n.join(c(),"profiles")}function F(){return n.join(c(),"daemon-app")}function T(){return n.join(F(),"SootSim Daemon.app")}function G(){return n.join(T(),"Contents","MacOS","sootsim-daemon")}function C(){return n.join(c(),"cache")}function p(){return n.join(c(),A)}function d(){return n.join(c(),j)}function v(){try{let e=r.readFileSync(d(),"utf8"),t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}}function M(e){y();let t=v(),s={...t,...e};e.settings&&typeof e.settings=="object"&&(s.settings={...t.settings&&typeof t.settings=="object"?t.settings:{},...e.settings});let u=`${d()}.tmp`;return r.writeFileSync(u,`${JSON.stringify(s,null,2)}
3
3
  `,"utf8"),r.renameSync(u,d()),s}function X(){return v().telemetry!==!1}function q(e){M({telemetry:e})}function y(){r.mkdirSync(c(),{recursive:!0}),r.mkdirSync(f(),{recursive:!0}),r.mkdirSync(S(),{recursive:!0}),r.mkdirSync(N(),{recursive:!0}),r.mkdirSync(C(),{recursive:!0})}function w(){try{let e=r.readFileSync(D(),"utf8").trim();return e.length>0?e:null}catch{return null}}function z(e){r.mkdirSync(f(),{recursive:!0}),r.writeFileSync(D(),`${e}
4
4
  `,"utf8")}function Q(){try{return r.readdirSync(f(),{withFileTypes:!0}).filter(e=>e.isDirectory()).map(e=>e.name).sort(P)}catch{return[]}}function P(e,t){let s=i=>{let a=i.indexOf("-"),l=a>=0?i.slice(0,a):i,k=a>=0?i.slice(a+1):"",b=l.split(".").map(g=>Number.parseInt(g,10));return b.some(g=>!Number.isFinite(g))?[[Number.POSITIVE_INFINITY],i]:[b,k]},[u,o]=s(e),[x,m]=s(t);for(let i=0;i<Math.max(u.length,x.length);i++){let a=u[i]??0,l=x[i]??0;if(a!==l)return a-l}return o===m?0:o?m?o<m?-1:1:-1:1}function W(){let e=w();if(!e)return null;let t=_(e);try{if(r.statSync(t).isDirectory())return t}catch{}return null}var h=16*1024;function R(){try{let e=r.openSync(p(),"r");try{let t=Buffer.alloc(h),s=r.readSync(e,t,0,h,0),u=t.subarray(0,s).toString("utf8"),o=JSON.parse(u);return o&&o.schema===1&&typeof o.pid=="number"&&typeof o.bridgePort=="number"&&typeof o.runtimePort=="number"&&typeof o.startedAt=="number"&&typeof o.heartbeatAt=="number"?o:null}finally{r.closeSync(e)}}catch{return null}}function $(e,t=Date.now()){if(!e||t-e.heartbeatAt>I)return!1;try{return process.kill(e.pid,0),!0}catch{return!1}}function H(e){y();let t=`${p()}.tmp`;r.writeFileSync(t,`${JSON.stringify(e,null,2)}
@@ -1,5 +1,5 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{b as Ns}from"./chunk-KQYOS5SM.js";var ui=`(async () => {
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{b as Ns}from"./chunk-I63MGIRV.js";var ui=`(async () => {
3
3
  try { localStorage.clear() } catch {}
4
4
  try { sessionStorage.clear() } catch {}
5
5
  try {
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import{existsSync as C,mkdirSync as D,readFileSync as O,rmSync as s,writeFileSync as g}from"fs";import{tmpdir as P}from"os";import{dirname as R,join as A,resolve as x}from"path";import{execFileSync as a}from"child_process";import{readFileSync as I}from"fs";import{createRequire as S}from"module";var o=null;function u(r){o||(o=_());try{return o(r)}catch{return null}}function _(){let r=Number(process.env.PPID);if(Number.isFinite(r)&&r>1&&r!==process.ppid)return()=>r;if(process.platform==="linux")return y();if(process.platform==="darwin"){let n=E();return n||T()}return()=>null}function y(){return r=>{try{let n=I(`/proc/${r}/stat`,"utf8"),t=n.lastIndexOf(")");if(t<0)return null;let i=n.slice(t+1).trim().split(/\s+/),e=Number(i[1]);return Number.isFinite(e)&&e>0?e:null}catch{return null}}}var N=3,d=216,b=16;function E(){if(!process.versions?.bun)return null;try{let r=S(import.meta.url),{dlopen:n,FFIType:t}=r("bun:ffi"),i=n("/usr/lib/libproc.dylib",{proc_pidinfo:{args:[t.i32,t.i32,t.u64,t.ptr,t.i32],returns:t.i32}}),e=Buffer.alloc(d);return m=>{if(Number(i.symbols.proc_pidinfo(m,N,0n,e,d))<=0)return null;let p=e.readUInt32LE(b);return p>0?p:null}}catch{return null}}function T(){return r=>{try{let t=a("lsof",["-R","-p",String(r),"-d","cwd","-a"],{encoding:"utf8",timeout:2e3,stdio:["ignore","pipe","ignore"]}).split(`
3
3
  `)[1];if(!t)return null;let i=t.trim().split(/\s+/),e=Number(i[2]);return Number.isFinite(e)&&e>1?e:null}catch{return null}}}var c=1,f="SOOTSIM_CLI_CURRENT_SIM_PATH",v=["SOOTSIM_CLI_IDENTITY","CLAUDE_CODE_SESSION_ID","CODEX_THREAD_ID","TERM_SESSION_ID","ITERM_SESSION_ID","TMUX_PANE","STY","KITTY_WINDOW_ID","WEZTERM_PANE","ALACRITTY_WINDOW_ID","WINDOWID","VSCODE_INJECTION"];function F(r,n=20){let t=u(r);if(!t||t<=1)return null;for(let i=0;i<n;i++){let e=u(t);if(!e||e<=1)return t;t=e}return t}function k(){for(let n of v){let t=process.env[n];if(t&&t.trim())return{key:`${n}:${t.trim()}`,source:n,stable:!0}}let r=F(process.ppid);return r&&r>1?{key:`gppid-${r}`,source:"grand-ppid",stable:!0}:{key:`pid-${process.ppid}`,source:"ppid",stable:!1}}function L(){return k().key}function l(){if(process.env[f])return x(process.env[f]);let r=L();return A(P(),`sootsim-current-sim-${r}.json`)}function h(){let r=l();if(!C(r))return null;try{let n=JSON.parse(O(r,"utf8"));return n.version!==c||typeof n.simId!="string"||!n.simId.trim()||typeof n.updatedAt!="string"?(s(r,{force:!0}),null):{version:c,simId:n.simId.trim(),updatedAt:n.updatedAt}}catch{return s(r,{force:!0}),null}}function J(){return h()?.simId||null}function j(r){let n=r.trim();if(!n)return;let t=l();D(R(t),{recursive:!0}),g(t,JSON.stringify({version:c,simId:n,updatedAt:new Date().toISOString()},null,2)+`
4
4
  `)}function K(){s(l(),{force:!0})}export{k as a,L as b,J as c,j as d,K as e};
@@ -1,3 +1,3 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{i as n}from"./chunk-NLH7FNSG.js";var i=[];for(let[t,e]of Object.entries(n))e.cliFlag&&i.push({name:`--${e.cliFlag}`,short:e.cliFlagShort?`-${e.cliFlagShort}`:void 0,key:t,type:e.type==="enum"?"string":e.type,description:e.description,options:e.options,default:e.default});var a=i;function g(){let t=[];for(let e of a){let s=e.short?`${e.short}, ${e.name}`:` ${e.name}`,o=e.options?` [${e.options.join("|")}]`:"",r=e.default!==void 0?` (default: ${e.default})`:"";t.push(` ${s.padEnd(24)}${e.description}${o}${r}`)}return t.join(`
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{i as n}from"./chunk-FYK7GIM7.js";var i=[];for(let[t,e]of Object.entries(n))e.cliFlag&&i.push({name:`--${e.cliFlag}`,short:e.cliFlagShort?`-${e.cliFlagShort}`:void 0,key:t,type:e.type==="enum"?"string":e.type,description:e.description,options:e.options,default:e.default});var a=i;function g(){let t=[];for(let e of a){let s=e.short?`${e.short}, ${e.name}`:` ${e.name}`,o=e.options?` [${e.options.join("|")}]`:"",r=e.default!==void 0?` (default: ${e.default})`:"";t.push(` ${s.padEnd(24)}${e.description}${o}${r}`)}return t.join(`
3
3
  `)}export{g as a};
@@ -0,0 +1,23 @@
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{a as k,c as T,e as C}from"./chunk-WV4XAMMB.js";import{E as v,F as P}from"./chunk-VLX4A5H7.js";import{WebSocket as I}from"ws";function x(){let e=v();return e&&P(e)?e.bridgePort:7668}var w=class extends Error{lock;constructor(t,i){super(t),this.name="BridgeSimLockedError",this.lock=i}};function $(e){return e==="flag"?"via --sim":e==="saved"?"saved via `sootsim use`":"primary fallback \u2014 no sim pinned"}function R(e,t={}){let i=new Set,a=t.port??x(),l=t.commandTimeoutMs??15e3,r,m="none",p=new Set(t.stripBooleanFlags??[]),b=new Set(t.stripValueFlags??[]);for(let n=0;n<e.length;n++){let d=e[n];if(d==="--port"||d==="-p"){i.add(n),n+1<e.length&&(i.add(n+1),a=Number(e[n+1])),n++;continue}if(d.startsWith("--port=")){i.add(n),a=Number(d.slice(7));continue}if(d==="--timeout"){i.add(n),n+1<e.length&&(i.add(n+1),l=Number(e[n+1])),n++;continue}if(d==="--sim"||d==="--session"||d==="--tab"){i.add(n),n+1<e.length&&(i.add(n+1),r=e[n+1]?.trim()||void 0,m="flag"),n++;continue}let s=d.startsWith("--sim=")?d.slice(6):d.startsWith("--session=")?d.slice(10):d.startsWith("--tab=")?d.slice(6):void 0;if(s!==void 0){i.add(n),r=s.trim()||void 0,m="flag";continue}if(p.has(d)){i.add(n);continue}b.has(d)&&(i.add(n),n+1<e.length&&i.add(n+1),n++)}if(!r){let n=T();n&&(r=n.trim()||void 0,m="saved")}return{positional:e.filter((n,d)=>!i.has(d)),wsPort:a,simId:r,simIdSource:m,commandTimeoutMs:l}}function E(e,t={}){let i=1,a=t.commandTimeoutMs??15e3,l=new Map,r=new I(`ws://localhost:${e}`),m=t.simId?{key:`sim:${t.simId}`,source:"explicit-sim-id",stable:!0}:k(),p=new Promise((s,o)=>{r.on("open",()=>{try{r.send(JSON.stringify({type:"bridge:hello",id:0,cliIdentityKey:m.key,cliIdentitySource:m.source,cliLabel:t.cliLabel}))}catch{}s()}),r.on("error",c=>{let g=c.message?`: ${c.message}`:"";o(new Error(`could not connect to ws://localhost:${e}${g}`))})}),b=!1,n=!1;function d(s,o){if(n||process.env.SOOTSIM_QUIET_TARGET_NOTICE==="1"||s.startsWith("bridge:")||s==="focus"||s==="close")return;n=!0;let c=o??"primary",g=$(o?t.simIdSource:"none");process.stderr.write(` \u2192 ${c} (${g})
3
+ `)}return r.on("message",s=>{let o;try{o=JSON.parse(s.toString())}catch{return}if(o.id===0)return;let c=l.get(o.id);c&&(l.delete(o.id),o.i>0&&!b&&(b=!0,process.stderr.write(`
4
+ \u26A0 ${o.i} other CLI identity/identities are driving this sim
5
+ taps, scrolls, and keyboard input from multiple agents will collide on
6
+ the same screen state (this is not a bridge throughput limit).
7
+ use \`sootsim open --new\` for an isolated sim per agent.
8
+
9
+ `)),o.error?o.o?c.reject(new w(o.error,o.o)):c.reject(new Error(o.error)):c.resolve(o.result))}),r.on("close",(s,o)=>{let c=o?.toString()||"connection closed";for(let[g,u]of l)l.delete(g),u.reject(new Error(`sim disconnected: ${c} (code ${s})`))}),{async send(s,o){let c=o?.timeoutMs??a,g=async u=>{await p;let f=i++;return new Promise((A,S)=>{let B=setTimeout(()=>{l.delete(f),S(new Error(`command timed out after ${Math.round(c/1e3)}s`))},c);l.set(f,{resolve:h=>{clearTimeout(B),A(h)},reject:h=>{clearTimeout(B),S(h)}});let y={...s,id:f};y.simId===void 0&&u&&(y.simId=u),d(s.type??"",y.simId),r.send(JSON.stringify(y))})};try{return await g(t.simId)}catch(u){let f=u instanceof Error?u.message:String(u);throw t.simIdSource==="saved"&&t.simId&&s.simId===void 0&&f===`no sim connected with id ${t.simId}`?(C(),new Error(`saved sim ${t.simId} is gone; run \`sootsim list\` and \`sootsim use <sim>\`, or open a fresh sim`)):u}},async listSims(){let s=await this.send({type:"bridge:list-sims"});return Array.isArray(s)?s:[]},async openUrl(s,o={}){return this.send({type:"bridge:open",url:s,newWindow:o.newWindow===!0})},async focusSim(s){return this.send({type:"focus",simId:s})},async closeSim(s){return this.send({type:"close",simId:s})},async claim(s,o={}){return await this.send({type:"bridge:claim",simId:s,force:o.force===!0})},close(){try{r.readyState===I.OPEN&&r.send(JSON.stringify({type:"bridge:bye",id:0}))}catch{}r.close();let s=setTimeout(()=>{r.readyState!==I.CLOSED&&r.terminate()},250)}}}function V(e){return E(e.wsPort,{commandTimeoutMs:e.commandTimeoutMs,simId:e.simId,simIdSource:e.simIdSource})}function F(e,t){let i=e.filter(r=>r.readyState==="open"&&r.id!==t),a=i.find(r=>r.userFocused)??i.find(r=>r.userVisible===!0&&r.isPrimary)??i.find(r=>r.userVisible===!0)??i.find(r=>r.isPrimary);if(!a)return null;let l=[a.isPrimary?"primary":null,a.userVisible===!1?"hidden":a.userVisible===!0?"visible":null,a.userFocused?"focused":null].filter(Boolean);return`${a.id}${l.length?` [${l.join(", ")}]`:""}`}async function _(e){try{let t=await e.send({type:"evaluate",code:`(() => ({
10
+ hidden: document.hidden,
11
+ visibilityState: document.visibilityState,
12
+ hasFocus: typeof document.hasFocus === 'function' ? document.hasFocus() : null,
13
+ simId: window.__sootsimBridge?.id ?? window.SootSim?.state?.simId ?? null,
14
+ url: location.href
15
+ }))()`}),i=typeof t=="object"&&t!==null?t:{hidden:t===!0};if(i.hidden===!0===!0){let l=null;try{l=F(await e.listSims(),i.simId)}catch{}return process.stderr.write(`
16
+ \u26A0 target sim${i.simId?` ${i.simId}`:""} is hidden (document.hidden = true)
17
+ `+(i.visibilityState?` visibility: ${i.visibilityState}
18
+ `:"")+` animations and rAF callbacks are throttled \u2014 coordinates may be wrong
19
+ and launch/transition animations will not complete.
20
+ `+(l?` another open sim looks usable: ${l}; target it with --sim.
21
+ `:" run `sootsim list` to find the visible sim and target it with --sim.\n")+` page-level window.focus() cannot unhide a browser tab.
22
+
23
+ `),{hidden:!0,warned:!0,simId:i.simId}}return{hidden:!1,warned:!1,simId:i.simId}}catch{return{hidden:!1,warned:!1}}}async function j(e,t,i={}){let a={type:"evaluate",code:t};return i.acquireLock&&(a.acquireLock=!0),e.send(a)}async function D(e,t,...i){return e.send({type:"call",path:t,args:i})}async function q(e,t,...i){return e.send({type:"call",path:t,args:i,acquireLock:!0})}export{x as a,w as b,R as c,E as d,V as e,_ as f,j as g,D as h,q as i};
@@ -1,5 +1,5 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{d as ae,e as le,f as ce}from"./chunk-535UNERF.js";import{d as oe}from"./chunk-CQAQTU5K.js";import{a as re,b as T}from"./chunk-OBHJKTWA.js";import{a as ne}from"./chunk-P7IKKZTG.js";import{c as se,e as ie,g as B}from"./chunk-5ZYANOOI.js";import{createHash as Ee}from"crypto";import{readFileSync as D}from"fs";import{gzipSync as pe}from"zlib";function de(e){let t=(e||"").toLowerCase().split(";")[0].trim();return t?!(t.startsWith("image/")||t.startsWith("video/")||t.startsWith("audio/")||t==="font/woff2"||t==="application/font-woff2"||t==="application/zip"||t==="application/gzip"):!0}function V(e,t){let r=new AbortController,o=setTimeout(()=>r.abort(new Error(`${t} timed out after ${e/1e3}s`)),e);return{signal:r.signal,cancel:()=>clearTimeout(o)}}async function Se(e){let t=V(12e4,`PUT ${e.url}`),r;try{r=await fetch(e.url,{method:"PUT",headers:{"content-type":e.contentType},body:e.bytes,signal:t.signal})}finally{t.cancel()}if(!r.ok){let o=await r.text().catch(()=>"");throw new Error(`PUT ${e.url} failed ${r.status}: ${o.slice(0,200)}`)}}async function _e(e,t=8,r){let o=0,s=0,i=e.length;await Promise.all(Array.from({length:Math.min(t,i)},async()=>{for(;o<i;){let l=e[o++];await Se(l),s++,r?.(s,i)}}))}function $e(e,t,r,o){let s=[];s.push({url:e.bundle.putUrl,contentType:e.bundle.contentType,bytes:t});for(let i of e.files){let l=r.get(i.urlhash);l&&s.push({url:i.putUrl,contentType:i.contentType,bytes:l})}e.events&&o?.eventsBytes&&s.push({url:e.events.putUrl,contentType:e.events.contentType,bytes:o.eventsBytes}),e.flowVideo&&o?.videoBytes&&s.push({url:e.flowVideo.putUrl,contentType:e.flowVideo.contentType,bytes:o.videoBytes}),e.storage&&o?.storageBytes&&s.push({url:e.storage.putUrl,contentType:e.storage.contentType,bytes:o.storageBytes});for(let i of e.snapshots??[]){let l=o?.snapshotBytes?.get(i.id);l&&s.push({url:i.putUrl,contentType:i.contentType,bytes:l})}return s}function ke(e){return e.replace(/\/+$/,"")}var z=class extends Error{constructor(r,o,s,i=""){super(r);this.status=o;this.phase=s;this.responseText=i;this.name="PresignedUploadError"}};async function ue(e){let t=ke(e.originBase),r={"content-type":"application/json"};e.authHeader&&(r.authorization=e.authHeader),e.adminBypassToken&&(r["x-soot-admin-upload-bypass"]=e.adminBypassToken);let o=V(3e4,"init"),s;try{s=await fetch(`${t}/api/preview/upload/init`,{method:"POST",headers:r,body:JSON.stringify(e.initBody),signal:o.signal})}finally{o.cancel()}if(!s.ok){let p=await s.text().catch(()=>"");throw new z(`init failed: ${s.status} ${p.slice(0,200)}`,s.status,"init",p)}let i=await s.json(),l=$e(i,e.bundleBytes,e.filesByHash,e.extras);await _e(l,e.concurrency??8,e.onPutProgress);let h=V(3e4,"finalize"),d;try{d=await fetch(`${t}/api/preview/upload/finalize`,{method:"POST",headers:r,body:JSON.stringify({token:i.token}),signal:h.signal})}finally{h.cancel()}if(!d.ok){let p=await d.text().catch(()=>"");throw new z(`finalize failed: ${d.status} ${p.slice(0,200)}`,d.status,"finalize",p)}let S=await d.json();return{init:i,finalize:S}}function Le(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.message=="string"&&t.message?t.message:null}catch{return null}}var ye=process.env.SOOTSIM_UPLOAD_ORIGIN||"https://sootbean.com",me=process.env.SOOTSIM_PREVIEW_ORIGIN||"https://sootsim.com",j="http://localhost:3000";async function ze(e){if(e)return e;if(process.env.SOOTSIM_UPLOAD_ORIGIN)return process.env.SOOTSIM_UPLOAD_ORIGIN;try{let t=await fetch(`${j}/api/preview/upload/init`,{method:"OPTIONS"});if(t.ok||t.status===204||t.status===405)return j}catch{}return ye}function O(e){return e.replace(/\/$/,"")}function Ae(e){try{let r=new URL(e).hostname.replace(/^\[|\]$/g,"").toLowerCase();return r==="localhost"||r.endsWith(".localhost")||r==="0.0.0.0"||r==="::1"||/^127(?:\.\d{1,3}){3}$/.test(r)}catch{return!1}}function Fe(e){try{let t=new URL(e).hostname.toLowerCase();return t==="sootbean.com"||t.endsWith(".sootbean.com")}catch{return!1}}function Me(e,t){return t?O(t):process.env.SOOTSIM_PREVIEW_ORIGIN?O(process.env.SOOTSIM_PREVIEW_ORIGIN):Ae(e)?O(e):Fe(e)?O(me):O(e)}function He(){console.log(`
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{d as ae,e as le,f as ce}from"./chunk-5GY5KZ33.js";import{c as se,e as ie,g as B}from"./chunk-YII7ZDGB.js";import{d as oe}from"./chunk-UOADFPJR.js";import{a as re,b as T}from"./chunk-DPOLCAFU.js";import{a as ne}from"./chunk-5ITY4LBR.js";import{createHash as Ee}from"crypto";import{readFileSync as D}from"fs";import{gzipSync as pe}from"zlib";function de(e){let t=(e||"").toLowerCase().split(";")[0].trim();return t?!(t.startsWith("image/")||t.startsWith("video/")||t.startsWith("audio/")||t==="font/woff2"||t==="application/font-woff2"||t==="application/zip"||t==="application/gzip"):!0}function V(e,t){let r=new AbortController,o=setTimeout(()=>r.abort(new Error(`${t} timed out after ${e/1e3}s`)),e);return{signal:r.signal,cancel:()=>clearTimeout(o)}}async function Se(e){let t=V(12e4,`PUT ${e.url}`),r;try{r=await fetch(e.url,{method:"PUT",headers:{"content-type":e.contentType},body:e.bytes,signal:t.signal})}finally{t.cancel()}if(!r.ok){let o=await r.text().catch(()=>"");throw new Error(`PUT ${e.url} failed ${r.status}: ${o.slice(0,200)}`)}}async function _e(e,t=8,r){let o=0,s=0,i=e.length;await Promise.all(Array.from({length:Math.min(t,i)},async()=>{for(;o<i;){let l=e[o++];await Se(l),s++,r?.(s,i)}}))}function $e(e,t,r,o){let s=[];s.push({url:e.bundle.putUrl,contentType:e.bundle.contentType,bytes:t});for(let i of e.files){let l=r.get(i.urlhash);l&&s.push({url:i.putUrl,contentType:i.contentType,bytes:l})}e.events&&o?.eventsBytes&&s.push({url:e.events.putUrl,contentType:e.events.contentType,bytes:o.eventsBytes}),e.flowVideo&&o?.videoBytes&&s.push({url:e.flowVideo.putUrl,contentType:e.flowVideo.contentType,bytes:o.videoBytes}),e.storage&&o?.storageBytes&&s.push({url:e.storage.putUrl,contentType:e.storage.contentType,bytes:o.storageBytes});for(let i of e.snapshots??[]){let l=o?.snapshotBytes?.get(i.id);l&&s.push({url:i.putUrl,contentType:i.contentType,bytes:l})}return s}function ke(e){return e.replace(/\/+$/,"")}var z=class extends Error{constructor(r,o,s,i=""){super(r);this.status=o;this.phase=s;this.responseText=i;this.name="PresignedUploadError"}};async function ue(e){let t=ke(e.originBase),r={"content-type":"application/json"};e.authHeader&&(r.authorization=e.authHeader),e.adminBypassToken&&(r["x-soot-admin-upload-bypass"]=e.adminBypassToken);let o=V(3e4,"init"),s;try{s=await fetch(`${t}/api/preview/upload/init`,{method:"POST",headers:r,body:JSON.stringify(e.initBody),signal:o.signal})}finally{o.cancel()}if(!s.ok){let p=await s.text().catch(()=>"");throw new z(`init failed: ${s.status} ${p.slice(0,200)}`,s.status,"init",p)}let i=await s.json(),l=$e(i,e.bundleBytes,e.filesByHash,e.extras);await _e(l,e.concurrency??8,e.onPutProgress);let h=V(3e4,"finalize"),d;try{d=await fetch(`${t}/api/preview/upload/finalize`,{method:"POST",headers:r,body:JSON.stringify({token:i.token}),signal:h.signal})}finally{h.cancel()}if(!d.ok){let p=await d.text().catch(()=>"");throw new z(`finalize failed: ${d.status} ${p.slice(0,200)}`,d.status,"finalize",p)}let S=await d.json();return{init:i,finalize:S}}function Le(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.message=="string"&&t.message?t.message:null}catch{return null}}var ye=process.env.SOOTSIM_UPLOAD_ORIGIN||"https://sootbean.com",me=process.env.SOOTSIM_PREVIEW_ORIGIN||"https://sootsim.com",j="http://localhost:3000";async function ze(e){if(e)return e;if(process.env.SOOTSIM_UPLOAD_ORIGIN)return process.env.SOOTSIM_UPLOAD_ORIGIN;try{let t=await fetch(`${j}/api/preview/upload/init`,{method:"OPTIONS"});if(t.ok||t.status===204||t.status===405)return j}catch{}return ye}function O(e){return e.replace(/\/$/,"")}function Ae(e){try{let r=new URL(e).hostname.replace(/^\[|\]$/g,"").toLowerCase();return r==="localhost"||r.endsWith(".localhost")||r==="0.0.0.0"||r==="::1"||/^127(?:\.\d{1,3}){3}$/.test(r)}catch{return!1}}function Fe(e){try{let t=new URL(e).hostname.toLowerCase();return t==="sootbean.com"||t.endsWith(".sootbean.com")}catch{return!1}}function Me(e,t){return t?O(t):process.env.SOOTSIM_PREVIEW_ORIGIN?O(process.env.SOOTSIM_PREVIEW_ORIGIN):Ae(e)?O(e):Fe(e)?O(me):O(e)}function He(){console.log(`
3
3
  sootsim upload \u2014 publish the current recorded bundle as a /preview/<id> link
4
4
 
5
5
  usage:
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  import{execFileSync as h,spawn as g}from"child_process";import{existsSync as s,readdirSync as k}from"fs";import{dirname as m,join as l,resolve as a}from"path";import{fileURLToPath as v}from"url";var c;function p(){if(c!==void 0)return c;try{c=m(v(import.meta.resolve("sootsim-engine/package.json")))}catch{c=null}return c}var I="dev.sootsim.simulator";function x(){let n=p();if(!n)return null;let e=l(n,"dist-electron/main.cjs");if(!s(e))return null;let i=D(n);return i?{path:i,platform:process.platform,kind:"dev-electron",engineDir:n}:null}function b(){let n=p();return n?s(l(n,"src-electron/main.ts")):!1}function D(n){let e=n;for(let i=0;i<6;i++){let t=l(e,"node_modules/.bin/electron");if(s(t))return t;let r=m(e);if(r===e)break;e=r}return null}function C(){let n=p(),i=["/Applications/sootsim.app",a(process.env.HOME||"","Applications/sootsim.app"),...n?[a(n,"app/sootsim.app")]:[]].find(t=>s(t));if(i)return{path:i,platform:"darwin",kind:"mac-app"};try{let t=h("mdfind",[`kMDItemCFBundleIdentifier == "${I}"`],{encoding:"utf8",timeout:3e3}).trim();if(t)return{path:t.split(`
3
3
  `)[0],platform:"darwin",kind:"mac-app"}}catch{}return null}function f(n){if(!s(n))return null;let e=k(n).filter(i=>i.startsWith("sootsim")&&i.endsWith(".AppImage")).sort().reverse()[0];return e?l(n,e):null}function w(){let n=p(),i=[a(process.env.HOME||"","Applications/sootsim.AppImage"),a(process.env.HOME||"",".local/bin/sootsim.AppImage"),"/opt/sootsim/sootsim.AppImage","/opt/sootsim/sootsim",...n?[a(n,"app/sootsim.AppImage"),a(n,"release/linux-unpacked/sootsim")]:[]].find(r=>s(r));if(i)return{path:i,platform:"linux",kind:i.endsWith(".AppImage")?"linux-appimage":"linux-binary"};let t=n?f(a(n,"app"))||f(a(n,"release")):null;return t?{path:t,platform:"linux",kind:"linux-appimage"}:null}function A(){let n=x();if(n)return n;if(b()){let e=p(),i=l(e,"dist-electron/main.cjs");return s(i)?console.error(` no node_modules/.bin/electron found near ${e}. run \`bun install\`.`):console.error(` dist-electron/main.cjs missing in ${e}.
4
4
  run: bun run --cwd packages/sootsim-engine build:electron-main
@@ -0,0 +1,2 @@
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{a}from"./chunk-J6U3467L.js";import"./chunk-I63MGIRV.js";export{a as getCliVersion};
@@ -1,5 +1,5 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import"./chunk-KQYOS5SM.js";import{existsSync as x,readFileSync as j}from"fs";import{resolve as g}from"path";async function P(s){(s.includes("--help")||s.includes("-h"))&&(console.log(`
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import"./chunk-I63MGIRV.js";import{existsSync as x,readFileSync as j}from"fs";import{resolve as g}from"path";async function P(s){(s.includes("--help")||s.includes("-h"))&&(console.log(`
3
3
  sootsim compat \u2014 check package compatibility
4
4
 
5
5
  usage:
@@ -20,7 +20,7 @@ examples:
20
20
  sootsim compat react-native-reanimated
21
21
  sootsim compat --json
22
22
  sootsim compat --brief
23
- `),process.exit(0));let c=s.includes("--json"),e=s.includes("--brief"),l=s.indexOf("--app"),n=l!==-1&&s[l+1]?g(s[l+1]):process.cwd(),k=s.filter((o,a)=>!o.startsWith("-")&&(l===-1||a!==l+1))[0];if(c||e){let{scanDeps:o}=await import("./web-D6S5UXOO.js"),a=g(n,"package.json");x(a)||(console.error(" no package.json found in",n),process.exit(1));let u=JSON.parse(j(a,"utf8")),r=o(u);if(c){console.log(JSON.stringify(r,null,2));return}if(r.packages.length===0){console.log(" no RN ecosystem packages detected");return}let T=Math.round(r.overallScore*100),v=r.packages.filter(i=>i.status==="full").length,$=r.packages.filter(i=>i.status==="partial"||i.status==="auto-stub").length,w=r.packages.filter(i=>i.status==="unsupported").length,p=[];v&&p.push(`${v} fully supported`),$&&p.push(`${$} partial`),w&&p.push(`${w} unsupported`),console.log(` ${p.join(", ")} \u2014 ${T}% compatible`);return}let{POLYFILL_REGISTRY:d}=await import("./web-D6S5UXOO.js");if(k){W(k,d);return}let b=g(n,"package.json");x(b)||(console.error(" no package.json found in",n),process.exit(1));let m=JSON.parse(j(b,"utf8")),S={...m.dependencies,...m.devDependencies},t={full:[],partial:[],autoStub:[],unsupported:[],justWorks:[],unknown:[]};for(let o of Object.keys(S)){let a=d[o];if(a){let u=a.stubType==="native"?"full":a.stubType==="works"?"not-relevant":a.stubType;if(a.stubType!=="native"&&a.versions?.length){let r=Math.max(...a.versions.map(y=>y.coverage||0));u=r>=.8?"full":r>=.3?"partial":"auto-stub"}switch(u){case"full":t.full.push(o);break;case"partial":t.partial.push(o);break;case"auto-stub":t.autoStub.push(o);break;case"unsupported":t.unsupported.push(o);break;case"not-relevant":t.justWorks.push(o);break;default:f(o)&&t.unknown.push(o)}}else f(o)&&t.unknown.push(o)}console.log(`
23
+ `),process.exit(0));let c=s.includes("--json"),e=s.includes("--brief"),l=s.indexOf("--app"),n=l!==-1&&s[l+1]?g(s[l+1]):process.cwd(),k=s.filter((o,a)=>!o.startsWith("-")&&(l===-1||a!==l+1))[0];if(c||e){let{scanDeps:o}=await import("./web-UWZTDXS3.js"),a=g(n,"package.json");x(a)||(console.error(" no package.json found in",n),process.exit(1));let u=JSON.parse(j(a,"utf8")),r=o(u);if(c){console.log(JSON.stringify(r,null,2));return}if(r.packages.length===0){console.log(" no RN ecosystem packages detected");return}let T=Math.round(r.overallScore*100),v=r.packages.filter(i=>i.status==="full").length,$=r.packages.filter(i=>i.status==="partial"||i.status==="auto-stub").length,w=r.packages.filter(i=>i.status==="unsupported").length,p=[];v&&p.push(`${v} fully supported`),$&&p.push(`${$} partial`),w&&p.push(`${w} unsupported`),console.log(` ${p.join(", ")} \u2014 ${T}% compatible`);return}let{POLYFILL_REGISTRY:d}=await import("./web-UWZTDXS3.js");if(k){W(k,d);return}let b=g(n,"package.json");x(b)||(console.error(" no package.json found in",n),process.exit(1));let m=JSON.parse(j(b,"utf8")),S={...m.dependencies,...m.devDependencies},t={full:[],partial:[],autoStub:[],unsupported:[],justWorks:[],unknown:[]};for(let o of Object.keys(S)){let a=d[o];if(a){let u=a.stubType==="native"?"full":a.stubType==="works"?"not-relevant":a.stubType;if(a.stubType!=="native"&&a.versions?.length){let r=Math.max(...a.versions.map(y=>y.coverage||0));u=r>=.8?"full":r>=.3?"partial":"auto-stub"}switch(u){case"full":t.full.push(o);break;case"partial":t.partial.push(o);break;case"auto-stub":t.autoStub.push(o);break;case"unsupported":t.unsupported.push(o);break;case"not-relevant":t.justWorks.push(o);break;default:f(o)&&t.unknown.push(o)}}else f(o)&&t.unknown.push(o)}console.log(`
24
24
  sootsim compatibility report
25
25
  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
26
26
 
@@ -1,5 +1,5 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import"./chunk-KQYOS5SM.js";import{existsSync as i,writeFileSync as n,readFileSync as c}from"fs";import{resolve as t}from"path";async function a(s){let e=s[0];switch((!e||s.includes("--help")||s.includes("-h"))&&(console.log(`
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import"./chunk-I63MGIRV.js";import{existsSync as i,writeFileSync as n,readFileSync as c}from"fs";import{resolve as t}from"path";async function a(s){let e=s[0];switch((!e||s.includes("--help")||s.includes("-h"))&&(console.log(`
3
3
  sootsim config \u2014 manage sootsim configuration
4
4
 
5
5
  usage:
@@ -1,2 +1,2 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{d as a,e as b,f as c,g as d,h as e,i as f,j as g,k as h,l as i,m as j,n as k,o as l,p as m,q as n,r as o,s as p,t as q,u as r}from"./chunk-VFGAEMSI.js";import"./chunk-TSNBQ4ZV.js";import"./chunk-CSJS4MRN.js";import"./chunk-EDWDFOPL.js";import"./chunk-STHMWSVN.js";import"./chunk-5NW6W7YF.js";import"./chunk-VUYCS6QI.js";import"./chunk-Y7BXSTVX.js";import"./chunk-CQAQTU5K.js";import"./chunk-KGYC4SZA.js";import"./chunk-5ZYANOOI.js";import"./chunk-3TNIXR6J.js";import"./chunk-I3JMONYJ.js";import"./chunk-2IYMBWHL.js";import"./chunk-KQYOS5SM.js";export{d as buildOpenUrl,c as buildShellUrl,p as closeSimsBulk,q as planBulkCloseTargets,h as playwrightHostPidForSim,f as printConnectedSims,a as resolveBundleTarget,b as resolveDefaultShellBaseUrl,o as runClaimCommand,r as runCloseCommand,n as runFocusCommand,k as runListCommand,l as runOpenCommand,m as runUseCommand,i as signalDriverLaunchConnected,e as summarizeSimUrl,j as terminatePlaywrightHostsForSims,g as waitForSimMatch};
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{d as a,e as b,f as c,g as d,h as e,i as f,j as g,k as h,l as i,m as j,n as k,o as l,p as m,q as n,r as o,s as p,t as q,u as r}from"./chunk-QO3BBIOT.js";import"./chunk-JDKTIGQG.js";import"./chunk-CAJ6QHMM.js";import"./chunk-QOTYEI7J.js";import"./chunk-YII7ZDGB.js";import"./chunk-WV4XAMMB.js";import"./chunk-RKII4C6H.js";import"./chunk-ZJ7REGNA.js";import"./chunk-4TRU5DGK.js";import"./chunk-7GIE3OPK.js";import"./chunk-UOADFPJR.js";import"./chunk-ACDG2MSQ.js";import"./chunk-QCEJKIV5.js";import"./chunk-VLX4A5H7.js";import"./chunk-I63MGIRV.js";export{d as buildOpenUrl,c as buildShellUrl,p as closeSimsBulk,q as planBulkCloseTargets,h as playwrightHostPidForSim,f as printConnectedSims,a as resolveBundleTarget,b as resolveDefaultShellBaseUrl,o as runClaimCommand,r as runCloseCommand,n as runFocusCommand,k as runListCommand,l as runOpenCommand,m as runUseCommand,i as signalDriverLaunchConnected,e as summarizeSimUrl,j as terminatePlaywrightHostsForSims,g as waitForSimMatch};
@@ -1,2 +1,2 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{c as I,e as N,i as S}from"./chunk-5ZYANOOI.js";import"./chunk-3TNIXR6J.js";import"./chunk-I3JMONYJ.js";import"./chunk-2IYMBWHL.js";import"./chunk-KQYOS5SM.js";import{createWriteStream as k,mkdirSync as v,writeFileSync as C}from"fs";import{dirname as T,resolve as w}from"path";import{Readable as F}from"stream";import{pipeline as y}from"stream/promises";import{createGzip as x}from"zlib";async function U(o,m){let n=Number(b(o,"--duration")??"5");if(!Number.isFinite(n)||n<=0)return console.error(" --duration must be a positive number (seconds)"),1;let a=Number(b(o,"--sample-interval")??"10");if(!Number.isFinite(a)||a<=0)return console.error(" --sample-interval must be a positive number (milliseconds)"),1;let t=Number(b(o,"--max-buffer")??"100000");if(!Number.isFinite(t)||t<=0)return console.error(" --max-buffer must be a positive number"),1;let p=b(o,"--output")??b(o,"-o"),l=w(process.cwd(),p??"/tmp/sootsim.cpuprofile"),g=l.endsWith(".gz"),h=I(o,{port:m.port,stripValueFlags:["--duration","--output","-o","--sample-interval","--max-buffer"]}),c=N({...h,commandTimeoutMs:Math.max(3e4,(n+20)*1e3)});try{let u=await S(c,"SootSim.bridges.workerCpuProfileStart",{sampleInterval:a,maxBufferSize:t});if(!u?.started)return u?.error?.includes("cpu-profile-unsupported")?(console.error(" cpu-profile is currently unsupported."),console.error(" the JS Self-Profiler API cannot profile a dedicated worker, and"),console.error(" sootsim runs the guest app in the tenant worker. a CDP-based"),console.error(" profiler is required \u2014 tracked as the F28 follow-up.")):(console.error(" could not start tenant-worker profiler."),console.error(" is sootsim running? (try `sootsim list`)")),1;m.verbose&&console.error(` started: sampleInterval=${u.sampleInterval}ms buffer=${u.maxBufferSize}`),console.log(` recording for ${n}s\u2026`),await new Promise(r=>setTimeout(r,n*1e3));let s=await S(c,"SootSim.bridges.workerCpuProfileStop");if(!s||s.error||!s.trace)return console.error(` profile capture failed: ${s?.error??"no trace returned"}`),1;let P=B(s.trace),e=JSON.stringify(P);v(T(l),{recursive:!0}),g?await y(F.from([e]),x(),k(l)):C(l,e);let i=(Buffer.byteLength(e)/1024/1024).toFixed(2);return console.log(` samples: ${P.samples.length} (${i} MB uncompressed)`),console.log(` saved: ${l}`),console.log(" open in chrome devtools \u2192 Performance \u2192 Load profile to inspect."),0}catch(u){let s=u?.message??String(u);return console.error(` profile failed: ${s}`),/could not connect|ECONNREFUSED/i.test(s)&&console.error(" is sootsim running? (try `sootsim list`)"),1}finally{c.close()}}function B(o){let m=o.frames??[],n=o.resources??[],a=o.stacks??[],t=o.samples??[],p=1,l=[{id:p,callFrame:{functionName:"(root)",scriptId:"0",url:"",lineNumber:-1,columnNumber:-1},hitCount:0,children:[]}];for(let e=0;e<a.length;e++){let i=a[e],r=m[i.frameId]??{name:"(unknown)"},f=r.resource!==void 0?n[r.resource]??"":"";l.push({id:e+2,callFrame:{functionName:r.name||"(anonymous)",scriptId:r.resource!==void 0?String(r.resource):"0",url:f,lineNumber:typeof r.line=="number"?r.line-1:-1,columnNumber:typeof r.column=="number"?r.column-1:-1},hitCount:0,children:[]})}for(let e=0;e<a.length;e++){let i=a[e],r=e+2,f=i.parentId!==void 0?i.parentId+2:p,d=l[f-1];d&&!d.children.includes(r)&&d.children.push(r)}let g=[],h=[],c=t.length>0?t[0].timestamp:0,u=c;for(let e=0;e<t.length;e++){let i=t[e],r=i.stackId!==void 0?i.stackId+2:p;g.push(r);let f=l[r-1];f&&f.hitCount++;let d=e===0?0:i.timestamp-u;h.push(Math.max(0,Math.round(d*1e3))),u=i.timestamp}let s=Math.round(c*1e3),P=t.length>0?Math.round(t[t.length-1].timestamp*1e3):s;return{nodes:l,startTime:s,endTime:P,samples:g,timeDeltas:h}}function b(o,m){let n=o.indexOf(m);if(!(n<0||n===o.length-1))return o[n+1]}export{U as runCpuProfile};
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{c as I,e as N,i as S}from"./chunk-YII7ZDGB.js";import"./chunk-WV4XAMMB.js";import"./chunk-QCEJKIV5.js";import"./chunk-VLX4A5H7.js";import"./chunk-I63MGIRV.js";import{createWriteStream as k,mkdirSync as v,writeFileSync as C}from"fs";import{dirname as T,resolve as w}from"path";import{Readable as F}from"stream";import{pipeline as y}from"stream/promises";import{createGzip as x}from"zlib";async function U(o,m){let n=Number(b(o,"--duration")??"5");if(!Number.isFinite(n)||n<=0)return console.error(" --duration must be a positive number (seconds)"),1;let a=Number(b(o,"--sample-interval")??"10");if(!Number.isFinite(a)||a<=0)return console.error(" --sample-interval must be a positive number (milliseconds)"),1;let t=Number(b(o,"--max-buffer")??"100000");if(!Number.isFinite(t)||t<=0)return console.error(" --max-buffer must be a positive number"),1;let p=b(o,"--output")??b(o,"-o"),l=w(process.cwd(),p??"/tmp/sootsim.cpuprofile"),g=l.endsWith(".gz"),h=I(o,{port:m.port,stripValueFlags:["--duration","--output","-o","--sample-interval","--max-buffer"]}),c=N({...h,commandTimeoutMs:Math.max(3e4,(n+20)*1e3)});try{let u=await S(c,"SootSim.bridges.workerCpuProfileStart",{sampleInterval:a,maxBufferSize:t});if(!u?.started)return u?.error?.includes("cpu-profile-unsupported")?(console.error(" cpu-profile is currently unsupported."),console.error(" the JS Self-Profiler API cannot profile a dedicated worker, and"),console.error(" sootsim runs the guest app in the tenant worker. a CDP-based"),console.error(" profiler is required \u2014 tracked as the F28 follow-up.")):(console.error(" could not start tenant-worker profiler."),console.error(" is sootsim running? (try `sootsim list`)")),1;m.verbose&&console.error(` started: sampleInterval=${u.sampleInterval}ms buffer=${u.maxBufferSize}`),console.log(` recording for ${n}s\u2026`),await new Promise(r=>setTimeout(r,n*1e3));let s=await S(c,"SootSim.bridges.workerCpuProfileStop");if(!s||s.error||!s.trace)return console.error(` profile capture failed: ${s?.error??"no trace returned"}`),1;let P=B(s.trace),e=JSON.stringify(P);v(T(l),{recursive:!0}),g?await y(F.from([e]),x(),k(l)):C(l,e);let i=(Buffer.byteLength(e)/1024/1024).toFixed(2);return console.log(` samples: ${P.samples.length} (${i} MB uncompressed)`),console.log(` saved: ${l}`),console.log(" open in chrome devtools \u2192 Performance \u2192 Load profile to inspect."),0}catch(u){let s=u?.message??String(u);return console.error(` profile failed: ${s}`),/could not connect|ECONNREFUSED/i.test(s)&&console.error(" is sootsim running? (try `sootsim list`)"),1}finally{c.close()}}function B(o){let m=o.frames??[],n=o.resources??[],a=o.stacks??[],t=o.samples??[],p=1,l=[{id:p,callFrame:{functionName:"(root)",scriptId:"0",url:"",lineNumber:-1,columnNumber:-1},hitCount:0,children:[]}];for(let e=0;e<a.length;e++){let i=a[e],r=m[i.frameId]??{name:"(unknown)"},f=r.resource!==void 0?n[r.resource]??"":"";l.push({id:e+2,callFrame:{functionName:r.name||"(anonymous)",scriptId:r.resource!==void 0?String(r.resource):"0",url:f,lineNumber:typeof r.line=="number"?r.line-1:-1,columnNumber:typeof r.column=="number"?r.column-1:-1},hitCount:0,children:[]})}for(let e=0;e<a.length;e++){let i=a[e],r=e+2,f=i.parentId!==void 0?i.parentId+2:p,d=l[f-1];d&&!d.children.includes(r)&&d.children.push(r)}let g=[],h=[],c=t.length>0?t[0].timestamp:0,u=c;for(let e=0;e<t.length;e++){let i=t[e],r=i.stackId!==void 0?i.stackId+2:p;g.push(r);let f=l[r-1];f&&f.hitCount++;let d=e===0?0:i.timestamp-u;h.push(Math.max(0,Math.round(d*1e3))),u=i.timestamp}let s=Math.round(c*1e3),P=t.length>0?Math.round(t[t.length-1].timestamp*1e3):s;return{nodes:l,startTime:s,endTime:P,samples:g,timeDeltas:h}}function b(o,m){let n=o.indexOf(m);if(!(n<0||n===o.length-1))return o[n+1]}export{U as runCpuProfile};
@@ -1,5 +1,5 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{c as T}from"./chunk-XB4QIINM.js";import"./chunk-DKW7Q4F3.js";import"./chunk-JB467MUR.js";import"./chunk-KGYC4SZA.js";import"./chunk-JITAVV2G.js";import"./chunk-CMAANHYQ.js";import{a as N,b as O}from"./chunk-OBHJKTWA.js";import"./chunk-P7IKKZTG.js";import"./chunk-NLH7FNSG.js";import"./chunk-I3JMONYJ.js";import{g as I,o as C,p as w,q as B}from"./chunk-2IYMBWHL.js";import{a as W}from"./chunk-KQYOS5SM.js";import{execFileSync as et,spawnSync as s}from"child_process";import{existsSync as c,mkdirSync as v,readFileSync as rt,rmSync as S,writeFileSync as U}from"fs";import{homedir as $}from"os";import{dirname as M,resolve as m}from"path";import{execFileSync as Y}from"child_process";import{chmodSync as K,mkdirSync as E,rmSync as X,writeFileSync as L}from"fs";import{dirname as D}from"path";var Q="dev.sootsim.daemon",_="SootSim Daemon",R="0.1.36";function F(t,e,r){let o=w(),n=B(),a=D(D(n)),y=D(n),u=`${a}/Resources`;X(o,{recursive:!0,force:!0}),E(C(),{recursive:!0}),E(y,{recursive:!0}),E(u,{recursive:!0}),L(`${a}/Info.plist`,z()),L(`${a}/PkgInfo`,"APPL????"),L(n,J(t,e,r)),K(n,493);try{Y("codesign",["--force","--sign","-","--deep",o],{stdio:"pipe"})}catch(i){let d=i instanceof Error?i.message:String(i);console.warn(` warning: ad-hoc codesign of ${o} failed: ${d}
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{a as T,b as N}from"./chunk-DPOLCAFU.js";import"./chunk-5ITY4LBR.js";import{c as O}from"./chunk-JJPIAFVR.js";import"./chunk-XCFMLRSZ.js";import"./chunk-RICUSEFS.js";import"./chunk-ACDG2MSQ.js";import"./chunk-QCEJKIV5.js";import"./chunk-J6U3467L.js";import"./chunk-DA3PPE4Y.js";import"./chunk-FYK7GIM7.js";import{g as I,o as C,p as w,q as B}from"./chunk-VLX4A5H7.js";import{a as W}from"./chunk-I63MGIRV.js";import{execFileSync as et,spawnSync as s}from"child_process";import{existsSync as c,mkdirSync as v,readFileSync as rt,rmSync as S,writeFileSync as U}from"fs";import{homedir as $}from"os";import{dirname as M,resolve as m}from"path";import{execFileSync as Y}from"child_process";import{chmodSync as K,mkdirSync as E,rmSync as X,writeFileSync as L}from"fs";import{dirname as D}from"path";var Q="dev.sootsim.daemon",_="SootSim Daemon",R="0.1.36";function F(t,e,r){let o=w(),n=B(),a=D(D(n)),y=D(n),u=`${a}/Resources`;X(o,{recursive:!0,force:!0}),E(C(),{recursive:!0}),E(y,{recursive:!0}),E(u,{recursive:!0}),L(`${a}/Info.plist`,z()),L(`${a}/PkgInfo`,"APPL????"),L(n,J(t,e,r)),K(n,493);try{Y("codesign",["--force","--sign","-","--deep",o],{stdio:"pipe"})}catch(i){let d=i instanceof Error?i.message:String(i);console.warn(` warning: ad-hoc codesign of ${o} failed: ${d}
3
3
  the daemon will still run, but Login Items may show a generic name.`)}return{bundlePath:o,launcherPath:n}}function z(){return`<?xml version="1.0" encoding="UTF-8"?>
4
4
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
5
5
  <plist version="1.0">
@@ -28,7 +28,7 @@ import{c as T}from"./chunk-XB4QIINM.js";import"./chunk-DKW7Q4F3.js";import"./chu
28
28
  # stdout: ${r.stdout}
29
29
  # stderr: ${r.stderr}
30
30
  exec ${n}
31
- `}function Z(t){return`'${t.replace(/'/g,"'\\''")}'`}var G=60,g="dev.sootsim.daemon",P="dev.sootsim.server",p="sootsim-server",h=m($(),"Library/Logs/sootsim"),ot=m($(),".local/state/sootsim");async function Ct(t,e={}){let[r,...o]=t,n=e.port??7668;if(!r||r==="--help"||r==="-h"){V();return}new Set(["install","uninstall","restart","start","stop"]).has(r)&&N({event:`daemon_${r}`,properties:{platform:process.platform,subsource:"daemon"}});try{switch(r){case"install":return await ut({port:n,force:o.includes("--force")});case"uninstall":return await dt();case"status":return await pt();case"restart":return await mt();case"start":return await gt();case"stop":return await ft();default:console.error(` unknown daemon subcommand: ${r}`),V(),process.exit(1)}}finally{await O()}}function V(){T("daemon")}function nt(){let t=st();return{executable:process.execPath,prefixArgs:[t]}}function st(){try{let e=et("which",["sootsim"],{encoding:"utf8"}).trim();if(e&&c(e))return q(e)}catch{}let t=process.argv[1];if(t&&c(t))return q(t);throw new Error("could not locate the sootsim binary")}function q(t){try{return W("fs").realpathSync(t)}catch{return t}}function it(t,e){v(h,{recursive:!0});let r=m(h,"server.out.log"),o=m(h,"server.err.log"),{launcherPath:n}=F(t,e,{stdout:r,stderr:o}),a=` <string>${ct(n)}</string>`;return`<?xml version="1.0" encoding="UTF-8"?>
31
+ `}function Z(t){return`'${t.replace(/'/g,"'\\''")}'`}var G=60,g="dev.sootsim.daemon",P="dev.sootsim.server",p="sootsim-server",h=m($(),"Library/Logs/sootsim"),ot=m($(),".local/state/sootsim");async function Ct(t,e={}){let[r,...o]=t,n=e.port??7668;if(!r||r==="--help"||r==="-h"){V();return}new Set(["install","uninstall","restart","start","stop"]).has(r)&&T({event:`daemon_${r}`,properties:{platform:process.platform,subsource:"daemon"}});try{switch(r){case"install":return await ut({port:n,force:o.includes("--force")});case"uninstall":return await dt();case"status":return await pt();case"restart":return await mt();case"start":return await gt();case"stop":return await ft();default:console.error(` unknown daemon subcommand: ${r}`),V(),process.exit(1)}}finally{await N()}}function V(){O("daemon")}function nt(){let t=st();return{executable:process.execPath,prefixArgs:[t]}}function st(){try{let e=et("which",["sootsim"],{encoding:"utf8"}).trim();if(e&&c(e))return q(e)}catch{}let t=process.argv[1];if(t&&c(t))return q(t);throw new Error("could not locate the sootsim binary")}function q(t){try{return W("fs").realpathSync(t)}catch{return t}}function it(t,e){v(h,{recursive:!0});let r=m(h,"server.out.log"),o=m(h,"server.err.log"),{launcherPath:n}=F(t,e,{stdout:r,stderr:o}),a=` <string>${ct(n)}</string>`;return`<?xml version="1.0" encoding="UTF-8"?>
32
32
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
33
33
  <plist version="1.0">
34
34
  <dict>
@@ -1,5 +1,5 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{e as f,l as T}from"./chunk-CSJS4MRN.js";import{F as A,G as D,H as O,I as x,J as v}from"./chunk-EDWDFOPL.js";import{c as S,e as $,g as N}from"./chunk-5ZYANOOI.js";import"./chunk-3TNIXR6J.js";import"./chunk-I3JMONYJ.js";import"./chunk-2IYMBWHL.js";import"./chunk-KQYOS5SM.js";var H=["portals","sheets","layout","onlayout","animated","render","touch","yoga","all"],R="__sootsimShellAnimationTrace",q="__sootsimDebugAnimation";function L(){console.log(`
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{e as f,l as T}from"./chunk-CAJ6QHMM.js";import{F as A,G as D,H as O,I as x,J as v}from"./chunk-QOTYEI7J.js";import{c as S,e as $,g as N}from"./chunk-YII7ZDGB.js";import"./chunk-WV4XAMMB.js";import"./chunk-QCEJKIV5.js";import"./chunk-VLX4A5H7.js";import"./chunk-I63MGIRV.js";var H=["portals","sheets","layout","onlayout","animated","render","touch","yoga","all"],R="__sootsimShellAnimationTrace",q="__sootsimDebugAnimation";function L(){console.log(`
3
3
  sootsim debug \u2014 drive __sootsimDebug from the terminal
4
4
 
5
5
  usage:
@@ -167,7 +167,7 @@ examples:
167
167
  } : null,
168
168
  samples,
169
169
  }
170
- })()`}async function c(i,l){return N(i,l)}async function Y(i,l){let g=S(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","sample-color"]).has(k)){let{runInspect:e}=await import("./inspect-V2TXTDOG.js");await e(["debug",...i],{port:l.port,verbose:l.verbose});return}let t=$(g);try{switch(k){case"enable":{let e=B(r[0]);e.length===0&&(console.error(` usage: sootsim debug enable <channel[,channel,...]>
170
+ })()`}async function c(i,l){return N(i,l)}async function Y(i,l){let g=S(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","sample-color"]).has(k)){let{runInspect:e}=await import("./inspect-7WG5VC3M.js");await e(["debug",...i],{port:l.port,verbose:l.verbose});return}let t=$(g);try{switch(k){case"enable":{let e=B(r[0]);e.length===0&&(console.error(` usage: sootsim debug enable <channel[,channel,...]>
171
171
  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 A(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 D(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=`(() => {
172
172
  const d = window.__sootsimDebug.diff(${JSON.stringify(e)}, ${JSON.stringify(o)});
173
173
  if (!d) return null;
@@ -1,5 +1,5 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a as S}from"./chunk-6A7IWFXR.js";import"./chunk-JBYW57OA.js";import"./chunk-QUYC7CVV.js";import"./chunk-OCTDP37S.js";import"./chunk-JMILXXI4.js";import"./chunk-VFGAEMSI.js";import"./chunk-TSNBQ4ZV.js";import"./chunk-CSJS4MRN.js";import"./chunk-EDWDFOPL.js";import"./chunk-STHMWSVN.js";import"./chunk-5NW6W7YF.js";import"./chunk-VUYCS6QI.js";import"./chunk-NBBH2PVW.js";import"./chunk-535UNERF.js";import"./chunk-Y7BXSTVX.js";import"./chunk-CQAQTU5K.js";import"./chunk-DKW7Q4F3.js";import"./chunk-KGYC4SZA.js";import"./chunk-OBHJKTWA.js";import"./chunk-P7IKKZTG.js";import"./chunk-6LG7WJMD.js";import"./chunk-NLH7FNSG.js";import"./chunk-5ZYANOOI.js";import"./chunk-3TNIXR6J.js";import"./chunk-I3JMONYJ.js";import"./chunk-2IYMBWHL.js";import"./chunk-KQYOS5SM.js";import{spawn as D}from"child_process";import{existsSync as u,mkdirSync as _,writeFileSync as f,unlinkSync as I}from"fs";import{tmpdir as P}from"os";import{dirname as $,resolve as n,join as M}from"path";function E(){try{let e=import.meta.resolve("sootsim/detox");return $(e.startsWith("file://")?e.slice(7):e)}catch{return n(import.meta.dirname,"..","..","detox")}}var F=`
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{a as S}from"./chunk-NFOZL6H3.js";import"./chunk-IPRXAXSY.js";import"./chunk-2XLZKDMI.js";import"./chunk-UKQFKONV.js";import"./chunk-YMAPZJC5.js";import"./chunk-5GY5KZ33.js";import"./chunk-W6XDYKEI.js";import"./chunk-QO3BBIOT.js";import"./chunk-JDKTIGQG.js";import"./chunk-CAJ6QHMM.js";import"./chunk-QOTYEI7J.js";import"./chunk-YII7ZDGB.js";import"./chunk-WV4XAMMB.js";import"./chunk-RKII4C6H.js";import"./chunk-ZJ7REGNA.js";import"./chunk-4TRU5DGK.js";import"./chunk-7GIE3OPK.js";import"./chunk-UOADFPJR.js";import"./chunk-DPOLCAFU.js";import"./chunk-5ITY4LBR.js";import"./chunk-XCFMLRSZ.js";import"./chunk-ACDG2MSQ.js";import"./chunk-QCEJKIV5.js";import"./chunk-MMNQO2HZ.js";import"./chunk-FYK7GIM7.js";import"./chunk-VLX4A5H7.js";import"./chunk-I63MGIRV.js";import{spawn as D}from"child_process";import{existsSync as u,mkdirSync as _,writeFileSync as f,unlinkSync as I}from"fs";import{tmpdir as P}from"os";import{dirname as $,resolve as n,join as M}from"path";function E(){try{let e=import.meta.resolve("sootsim/detox");return $(e.startsWith("file://")?e.slice(7):e)}catch{return n(import.meta.dirname,"..","..","detox")}}var F=`
3
3
  sootsim detox \u2014 run detox-style tests against a sootsim shell
4
4
 
5
5
  usage:
@@ -1,5 +1,5 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import"./chunk-QUYC7CVV.js";import"./chunk-DKW7Q4F3.js";import"./chunk-6LG7WJMD.js";import{f as c,g as r,h as g}from"./chunk-NLH7FNSG.js";import{c as d,e as l,h as a}from"./chunk-5ZYANOOI.js";import"./chunk-3TNIXR6J.js";import"./chunk-I3JMONYJ.js";import"./chunk-2IYMBWHL.js";import"./chunk-KQYOS5SM.js";function h(){console.log(`
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import"./chunk-2XLZKDMI.js";import{c as d,e as l,h as a}from"./chunk-YII7ZDGB.js";import"./chunk-WV4XAMMB.js";import"./chunk-XCFMLRSZ.js";import"./chunk-QCEJKIV5.js";import"./chunk-MMNQO2HZ.js";import{f as c,g as r,h as g}from"./chunk-FYK7GIM7.js";import"./chunk-VLX4A5H7.js";import"./chunk-I63MGIRV.js";function h(){console.log(`
3
3
  sootsim device \u2014 inspect or change the live device preset for a sim
4
4
 
5
5
  usage:
@@ -1,5 +1,5 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{c as E,e as R,h as b}from"./chunk-5ZYANOOI.js";import{b as v}from"./chunk-3TNIXR6J.js";import"./chunk-I3JMONYJ.js";import"./chunk-2IYMBWHL.js";import"./chunk-KQYOS5SM.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(`
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{c as E,e as R,h as b}from"./chunk-YII7ZDGB.js";import{b as v}from"./chunk-WV4XAMMB.js";import"./chunk-QCEJKIV5.js";import"./chunk-VLX4A5H7.js";import"./chunk-I63MGIRV.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(`
3
3
  sootsim diagnose \u2014 compact "what just went wrong?" report
4
4
 
5
5
  usage:
@@ -0,0 +1,2 @@
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import"./chunk-RC77QMAW.js";import{a,b,c,d,e,f,g,h,i}from"./chunk-RKII4C6H.js";import"./chunk-ZJ7REGNA.js";import"./chunk-4TRU5DGK.js";import"./chunk-7GIE3OPK.js";import"./chunk-UOADFPJR.js";import"./chunk-VLX4A5H7.js";import"./chunk-I63MGIRV.js";export{e as ALL_DRIVERS,i as buildDriverListRows,a as chromiumDriver,b as electronDriver,f as getAllDrivers,g as getDriver,c as playwrightDriver,h as resolveDriver,d as systemDriver};
@@ -1,5 +1,5 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a as g}from"./chunk-3GCSX5H5.js";import"./chunk-NIRJVBXJ.js";import{a as v,f as h}from"./chunk-VFGAEMSI.js";import"./chunk-TSNBQ4ZV.js";import"./chunk-CSJS4MRN.js";import"./chunk-EDWDFOPL.js";import{b as f,g as u}from"./chunk-STHMWSVN.js";import{a as p}from"./chunk-5NW6W7YF.js";import{c as m}from"./chunk-VUYCS6QI.js";import"./chunk-Y7BXSTVX.js";import"./chunk-CQAQTU5K.js";import"./chunk-KGYC4SZA.js";import"./chunk-5ZYANOOI.js";import"./chunk-3TNIXR6J.js";import"./chunk-I3JMONYJ.js";import"./chunk-2IYMBWHL.js";import"./chunk-KQYOS5SM.js";function b(e){let r=e.indexOf("--port");if(r<0)return;let o=e[r+1],i=o?Number(o):Number.NaN;return(!Number.isInteger(i)||i<=0)&&(console.error(` invalid --port value: ${o||"(missing)"}`),process.exit(1)),i}async function O(e,r){let o=b(e)??r.port;return o?h(String(o)):void 0}async function $(e,r){(e.includes("--help")||e.includes("-h"))&&(console.log(`
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{a as g}from"./chunk-GZUD44W5.js";import"./chunk-RC77QMAW.js";import{a as v,f as h}from"./chunk-QO3BBIOT.js";import"./chunk-JDKTIGQG.js";import"./chunk-CAJ6QHMM.js";import"./chunk-QOTYEI7J.js";import"./chunk-YII7ZDGB.js";import"./chunk-WV4XAMMB.js";import{b as f,g as u}from"./chunk-RKII4C6H.js";import{a as p}from"./chunk-ZJ7REGNA.js";import"./chunk-4TRU5DGK.js";import{c as m}from"./chunk-7GIE3OPK.js";import"./chunk-UOADFPJR.js";import"./chunk-ACDG2MSQ.js";import"./chunk-QCEJKIV5.js";import"./chunk-VLX4A5H7.js";import"./chunk-I63MGIRV.js";function b(e){let r=e.indexOf("--port");if(r<0)return;let o=e[r+1],i=o?Number(o):Number.NaN;return(!Number.isInteger(i)||i<=0)&&(console.error(` invalid --port value: ${o||"(missing)"}`),process.exit(1)),i}async function O(e,r){let o=b(e)??r.port;return o?h(String(o)):void 0}async function $(e,r){(e.includes("--help")||e.includes("-h"))&&(console.log(`
3
3
  sootsim electron \u2014 launch the desktop companion
4
4
 
5
5
  usage:
@@ -15,4 +15,4 @@ examples:
15
15
  sootsim electron
16
16
  sootsim electron --port 5173
17
17
  sootsim electron --profile qa
18
- `),process.exit(0));let o=e.indexOf("--driver"),i=o>=0?e[o+1]:void 0,t=e.find((n,a)=>e[a-1]==="--profile"),d=e.includes("--ephemeral");t&&d&&(console.error(" sootsim electron: --profile cannot be combined with --ephemeral"),process.exit(1));let x=t?m(t).id:void 0,s=i||r.driver,l=f;if(s){let n=u(s);n||(console.error(` unknown driver "${s}" \u2014 run \`sootsim list --drivers\``),process.exit(1)),l=n}if(l.id==="electron"){let n=p();if(!n){if(v(),process.stdin.isTTY&&process.env.CI!=="1"&&process.env.SOOTSIM_NO_PROMPT!=="1"&&await g("run sootsim install-desktop now?",!0)){console.log();let{runInstallDesktop:I}=await import("./install-desktop-6ZRTRRCU.js");await I(["--yes"]),n=p()}n||process.exit(1)}console.log(` launching ${n.path}`)}let w=await O(e,r),c=await l.launch({url:w,device:r.device,profileId:x,ephemeralProfile:d});c.launched||(console.error(` ${c.message}`),process.exit(1)),console.log(` ${c.message}`)}export{O as resolveElectronLaunchUrl,$ as runElectron};
18
+ `),process.exit(0));let o=e.indexOf("--driver"),i=o>=0?e[o+1]:void 0,t=e.find((n,a)=>e[a-1]==="--profile"),d=e.includes("--ephemeral");t&&d&&(console.error(" sootsim electron: --profile cannot be combined with --ephemeral"),process.exit(1));let x=t?m(t).id:void 0,s=i||r.driver,l=f;if(s){let n=u(s);n||(console.error(` unknown driver "${s}" \u2014 run \`sootsim list --drivers\``),process.exit(1)),l=n}if(l.id==="electron"){let n=p();if(!n){if(v(),process.stdin.isTTY&&process.env.CI!=="1"&&process.env.SOOTSIM_NO_PROMPT!=="1"&&await g("run sootsim install-desktop now?",!0)){console.log();let{runInstallDesktop:I}=await import("./install-desktop-DTHVNNX7.js");await I(["--yes"]),n=p()}n||process.exit(1)}console.log(` launching ${n.path}`)}let w=await O(e,r),c=await l.launch({url:w,device:r.device,profileId:x,ephemeralProfile:d});c.launched||(console.error(` ${c.message}`),process.exit(1)),console.log(` ${c.message}`)}export{O as resolveElectronLaunchUrl,$ as runElectron};
@@ -0,0 +1,2 @@
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{a as c,b as d,c as e,d as f}from"./chunk-NFOZL6H3.js";import"./chunk-IPRXAXSY.js";import"./chunk-2XLZKDMI.js";import"./chunk-UKQFKONV.js";import"./chunk-YMAPZJC5.js";import"./chunk-5GY5KZ33.js";import{d as a,e as b}from"./chunk-W6XDYKEI.js";import"./chunk-QO3BBIOT.js";import"./chunk-JDKTIGQG.js";import"./chunk-CAJ6QHMM.js";import"./chunk-QOTYEI7J.js";import"./chunk-YII7ZDGB.js";import"./chunk-WV4XAMMB.js";import"./chunk-RKII4C6H.js";import"./chunk-ZJ7REGNA.js";import"./chunk-4TRU5DGK.js";import"./chunk-7GIE3OPK.js";import"./chunk-UOADFPJR.js";import"./chunk-DPOLCAFU.js";import"./chunk-5ITY4LBR.js";import"./chunk-XCFMLRSZ.js";import"./chunk-ACDG2MSQ.js";import"./chunk-QCEJKIV5.js";import"./chunk-MMNQO2HZ.js";import"./chunk-FYK7GIM7.js";import"./chunk-VLX4A5H7.js";import"./chunk-I63MGIRV.js";export{c as discoverSootsimUrl,e as hoistLeadingSimFlag,a as parseFlowFile,f as runFlow,d as runFlowPlayback,b as validateFlowFile};
@@ -0,0 +1,2 @@
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{a,b,c}from"./chunk-JJPIAFVR.js";import"./chunk-XCFMLRSZ.js";import"./chunk-RICUSEFS.js";import"./chunk-ACDG2MSQ.js";import"./chunk-QCEJKIV5.js";import"./chunk-J6U3467L.js";import"./chunk-DA3PPE4Y.js";import"./chunk-FYK7GIM7.js";import"./chunk-VLX4A5H7.js";import"./chunk-I63MGIRV.js";export{c as printCommandHelp,b as printGroupHelp,a as printHelp};
@@ -1,2 +1,2 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{b as n,c as r,d as l}from"./chunk-FO52BFW4.js";import"./chunk-3TNIXR6J.js";import"./chunk-KQYOS5SM.js";function a(t){let s=t[0]??"list";if(s==="reset"){t[1]==="global"?(r(),console.log(" cleared global hint state")):(n(),console.log(" cleared hint state for this CLI identity"));return}if(s==="list"){let e=l();if(!e.length){console.log(" no hints registered");return}let i=Math.max(...e.map(o=>o.id.length));console.log(" registered hints:");for(let o of e){let c=typeof o.frequency=="string"?o.frequency:`cooldown ${o.frequency.cooldownMs}ms`;console.log(` ${o.id.padEnd(i)} ${c}`)}console.log(""),console.log(" env overrides:"),console.log(" SOOTSIM_HINTS=off suppress all hints"),console.log(" SOOTSIM_HINTS=always show every hint every time");return}console.error(` unknown subcommand: ${s}`),console.error(" usage:"),console.error(" sootsim hints list show registered hints"),console.error(" sootsim hints reset [global] clear shown-state"),process.exit(1)}export{a as runHints};
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{b as n,c as r,d as l}from"./chunk-2QNNBZLX.js";import"./chunk-WV4XAMMB.js";import"./chunk-I63MGIRV.js";function a(t){let s=t[0]??"list";if(s==="reset"){t[1]==="global"?(r(),console.log(" cleared global hint state")):(n(),console.log(" cleared hint state for this CLI identity"));return}if(s==="list"){let e=l();if(!e.length){console.log(" no hints registered");return}let i=Math.max(...e.map(o=>o.id.length));console.log(" registered hints:");for(let o of e){let c=typeof o.frequency=="string"?o.frequency:`cooldown ${o.frequency.cooldownMs}ms`;console.log(` ${o.id.padEnd(i)} ${c}`)}console.log(""),console.log(" env overrides:"),console.log(" SOOTSIM_HINTS=off suppress all hints"),console.log(" SOOTSIM_HINTS=always show every hint every time");return}console.error(` unknown subcommand: ${s}`),console.error(" usage:"),console.error(" sootsim hints list show registered hints"),console.error(" sootsim hints reset [global] clear shown-state"),process.exit(1)}export{a as runHints};
@@ -1,2 +1,2 @@
1
- /*! sootsim v0.1.86 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{A,B,C,D,E,F,G,H,I,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-2IYMBWHL.js";import"./chunk-KQYOS5SM.js";export{b as ACTIVE_RUNTIME_FILE,d as CONFIG_FILE,e as DAEMON_HEARTBEAT_STALE_MS,c as DAEMON_LOCKFILE,a as SOOTSIM_HOME_ENV,D as activeRuntimeDir,j as activeRuntimeFile,r as cacheDir,H as claimDaemonLockfile,C as compareSemver,t as configFilePath,p as daemonAppBundlePath,o as daemonAppDir,q as daemonAppLauncherPath,s as daemonLockfilePath,k as electronDir,l as electronUserDataDir,m as electronVersionDir,y as ensureSootsimHome,F as isDaemonLockfileFresh,g as isSootsimDevCheckout,B as listInstalledRuntimes,n as profilesDir,z as readActiveRuntime,E as readDaemonLockfile,u as readSharedConfig,w as readTelemetryEnabled,I as removeDaemonLockfile,i as runtimeDir,h as runtimesDir,f as sootsimHomeDir,A as writeActiveRuntime,G as writeDaemonLockfile,v as writeSharedConfig,x as writeTelemetryEnabled};
1
+ /*! sootsim v0.1.88 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{A,B,C,D,E,F,G,H,I,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-VLX4A5H7.js";import"./chunk-I63MGIRV.js";export{b as ACTIVE_RUNTIME_FILE,d as CONFIG_FILE,e as DAEMON_HEARTBEAT_STALE_MS,c as DAEMON_LOCKFILE,a as SOOTSIM_HOME_ENV,D as activeRuntimeDir,j as activeRuntimeFile,r as cacheDir,H as claimDaemonLockfile,C as compareSemver,t as configFilePath,p as daemonAppBundlePath,o as daemonAppDir,q as daemonAppLauncherPath,s as daemonLockfilePath,k as electronDir,l as electronUserDataDir,m as electronVersionDir,y as ensureSootsimHome,F as isDaemonLockfileFresh,g as isSootsimDevCheckout,B as listInstalledRuntimes,n as profilesDir,z as readActiveRuntime,E as readDaemonLockfile,u as readSharedConfig,w as readTelemetryEnabled,I as removeDaemonLockfile,i as runtimeDir,h as runtimesDir,f as sootsimHomeDir,A as writeActiveRuntime,G as writeDaemonLockfile,v as writeSharedConfig,x as writeTelemetryEnabled};