sootsim 0.1.42 → 0.1.44

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 (135) hide show
  1. package/dist-cli/bin.js +3 -3
  2. package/dist-cli/chunks/{agent-4BBZUWD2.js → agent-NVU7E7EV.js} +2 -2
  3. package/dist-cli/chunks/{agent-wrapper-TA5GG3MV.js → agent-wrapper-CLEYNPJK.js} +2 -2
  4. package/dist-cli/chunks/{assert-7GHUOGLI.js → assert-F7B6TVEQ.js} +2 -2
  5. package/dist-cli/chunks/auto-bootstrap-BIH3TKGB.js +2 -0
  6. package/dist-cli/chunks/beta-DD7XOVXJ.js +2 -0
  7. package/dist-cli/chunks/{chunk-6R3CVNXC.js → chunk-2Q5YKX76.js} +1 -1
  8. package/dist-cli/chunks/chunk-2TU7QJGH.js +1 -0
  9. package/dist-cli/chunks/{chunk-UY6HKNEV.js → chunk-4ZA3J2BV.js} +1 -1
  10. package/dist-cli/chunks/{chunk-DXQKMDX2.js → chunk-54V7OVL6.js} +2 -2
  11. package/dist-cli/chunks/chunk-5A7UO4OE.js +1 -0
  12. package/dist-cli/chunks/{chunk-Y4ENWAOJ.js → chunk-6QY5P2H6.js} +2 -2
  13. package/dist-cli/chunks/{chunk-WW4G4D4A.js → chunk-6TO2XBUK.js} +2 -2
  14. package/dist-cli/chunks/{chunk-6MYXKMLG.js → chunk-7PUVSCSF.js} +1 -1
  15. package/dist-cli/chunks/{chunk-DNSKIJSB.js → chunk-B4B6RECG.js} +2 -2
  16. package/dist-cli/chunks/{chunk-SGBD3EAX.js → chunk-BU7OXA7Y.js} +3 -3
  17. package/dist-cli/chunks/{chunk-EDXBJUHH.js → chunk-E3DHOL7O.js} +3 -3
  18. package/dist-cli/chunks/{chunk-WSISSPE3.js → chunk-EAMMI2FH.js} +2 -2
  19. package/dist-cli/chunks/{chunk-DUVJOJTP.js → chunk-ECIHLBNE.js} +1 -1
  20. package/dist-cli/chunks/{chunk-BVCZIJ2X.js → chunk-F76MMAMV.js} +2 -2
  21. package/dist-cli/chunks/{chunk-QWGMNIWG.js → chunk-FBCGPPDA.js} +2 -2
  22. package/dist-cli/chunks/{chunk-5PZPKGUJ.js → chunk-GLLMLIXC.js} +2 -2
  23. package/dist-cli/chunks/{chunk-76WF7UIG.js → chunk-HIQJTM66.js} +2 -2
  24. package/dist-cli/chunks/{chunk-2GKZS2ZZ.js → chunk-IIFZNK4R.js} +2 -2
  25. package/dist-cli/chunks/{chunk-Q26NNL4G.js → chunk-IMTTDIJJ.js} +1 -1
  26. package/dist-cli/chunks/{chunk-5EBERDK7.js → chunk-JK3BWGI5.js} +1 -1
  27. package/dist-cli/chunks/{chunk-I4LBW6ED.js → chunk-K4BRBIGO.js} +2 -2
  28. package/dist-cli/chunks/chunk-KVJEI5YO.js +1 -0
  29. package/dist-cli/chunks/{chunk-BZFKV7CT.js → chunk-KWU3WMFD.js} +4 -4
  30. package/dist-cli/chunks/{chunk-3PN6HIAM.js → chunk-L7V75VQK.js} +1 -1
  31. package/dist-cli/chunks/{chunk-543BSGQG.js → chunk-LCDWXJ6X.js} +1 -1
  32. package/dist-cli/chunks/{chunk-ITQGNQE3.js → chunk-LCUVF6MI.js} +2 -2
  33. package/dist-cli/chunks/{chunk-MQOJIYEY.js → chunk-MS5QBIOB.js} +3 -3
  34. package/dist-cli/chunks/{chunk-KQN7OUQ6.js → chunk-NMFN4EIE.js} +2 -2
  35. package/dist-cli/chunks/{chunk-D5TKAFJ3.js → chunk-OBIALIWI.js} +1 -1
  36. package/dist-cli/chunks/chunk-POPZHYTD.js +117 -0
  37. package/dist-cli/chunks/{chunk-LXZK2TIS.js → chunk-QB4INK6X.js} +2 -2
  38. package/dist-cli/chunks/{chunk-L53QRCQZ.js → chunk-RN5LEOFJ.js} +1 -1
  39. package/dist-cli/chunks/{chunk-CZZDYQBA.js → chunk-T5UKNA5K.js} +1 -1
  40. package/dist-cli/chunks/{chunk-QLGR4M5H.js → chunk-TXCWW2IX.js} +2 -2
  41. package/dist-cli/chunks/{chunk-J6HT2ZJW.js → chunk-VFUO52ZQ.js} +1 -1
  42. package/dist-cli/chunks/{chunk-BBRAYGDX.js → chunk-VP52RZT7.js} +2 -2
  43. package/dist-cli/chunks/{chunk-FDB3P2GV.js → chunk-VQKQSSUD.js} +1 -1
  44. package/dist-cli/chunks/{chunk-LAOTVMTO.js → chunk-WLH4MLBC.js} +2 -2
  45. package/dist-cli/chunks/{chunk-A2R42ONP.js → chunk-YROS5I43.js} +2 -2
  46. package/dist-cli/chunks/{chunk-NLYIKZIF.js → chunk-YWBUHBLD.js} +2 -2
  47. package/dist-cli/chunks/chunk-ZLOUP7JS.js +1 -0
  48. package/dist-cli/chunks/{chunk-5TRJK5SO.js → chunk-ZNMOLPG5.js} +1 -1
  49. package/dist-cli/chunks/chunk-ZP4PF72U.js +2 -0
  50. package/dist-cli/chunks/{chunk-4574AJAK.js → chunk-ZZOYYBLO.js} +2 -2
  51. package/dist-cli/chunks/{compat-GWIATWPP.js → compat-5XJPHPPL.js} +3 -3
  52. package/dist-cli/chunks/{config-OXHJXY6N.js → config-SHZ662ER.js} +2 -2
  53. package/dist-cli/chunks/control-ONCNZDD5.js +2 -0
  54. package/dist-cli/chunks/{cpu-profile-MBYPGUJH.js → cpu-profile-KFM3R5MY.js} +2 -2
  55. package/dist-cli/chunks/{daemon-3N3QWMFU.js → daemon-QRHS6CAR.js} +2 -2
  56. package/dist-cli/chunks/{debug-POCRM56I.js → debug-CRQNVODN.js} +3 -3
  57. package/dist-cli/chunks/demo-app-registry-GCDJ3DX7.js +2 -0
  58. package/dist-cli/chunks/{detox-4NXKQ2CS.js → detox-PEPICVRX.js} +2 -2
  59. package/dist-cli/chunks/{device-DURJHKK5.js → device-4GRKBTIY.js} +2 -2
  60. package/dist-cli/chunks/{diagnose-IMXDGRVA.js → diagnose-FRGJNGVH.js} +2 -2
  61. package/dist-cli/chunks/drivers-LRMIFMFF.js +2 -0
  62. package/dist-cli/chunks/{electron-NGWA52N6.js → electron-KAAQYVLY.js} +3 -3
  63. package/dist-cli/chunks/flow-P6N565XT.js +2 -0
  64. package/dist-cli/chunks/{hints-5UNZ7BR2.js → hints-JDTUIEQI.js} +2 -2
  65. package/dist-cli/chunks/{home-paths-TENEFM4L.js → home-paths-MCK43U6W.js} +2 -2
  66. package/dist-cli/chunks/{inspect-IWMH6MUT.js → inspect-2ORQQN7T.js} +3 -3
  67. package/dist-cli/chunks/install-KVZFRP22.js +2 -0
  68. package/dist-cli/chunks/{install-desktop-ABAWCLFJ.js → install-desktop-YEGVQFNS.js} +3 -3
  69. package/dist-cli/chunks/{keys-NET26VLH.js → keys-2QRSFPVS.js} +2 -2
  70. package/dist-cli/chunks/{launch-TKIA4RC4.js → launch-L25GI237.js} +3 -3
  71. package/dist-cli/chunks/{login-AWT3GU5M.js → login-FHC2PLFD.js} +4 -4
  72. package/dist-cli/chunks/{logout-R2RUNXHO.js → logout-FJQU7HI2.js} +2 -2
  73. package/dist-cli/chunks/{maestro-552237HC.js → maestro-Z6YMB7VM.js} +2 -2
  74. package/dist-cli/chunks/{preview-GKIGPZUO.js → preview-7ZCBU2IE.js} +2 -2
  75. package/dist-cli/chunks/{profile-U64JPCPD.js → profile-JTJF6PY6.js} +2 -2
  76. package/dist-cli/chunks/{react-FWSV5JH2.js → react-XP2AJQ4T.js} +2 -2
  77. package/dist-cli/chunks/record-56JAGJUN.js +17 -0
  78. package/dist-cli/chunks/runtime-T2X2XY72.js +2 -0
  79. package/dist-cli/chunks/{runtime-delivery-22PV7UED.js → runtime-delivery-O655KIUB.js} +2 -2
  80. package/dist-cli/chunks/{screenshot-4P3TL7CN.js → screenshot-CPCNSTFP.js} +2 -2
  81. package/dist-cli/chunks/{screenshot-mode-GX3Q3IZ6.js → screenshot-mode-MGWQGOM7.js} +2 -2
  82. package/dist-cli/chunks/{screenshots-5HSLPDWZ.js → screenshots-ZD7HJ4GA.js} +2 -2
  83. package/dist-cli/chunks/{server-Q3ZD4BEF.js → server-V55GYTFF.js} +2 -2
  84. package/dist-cli/chunks/setup-repo-SGAHUDYC.js +2 -0
  85. package/dist-cli/chunks/{skills-M2CWX5ZC.js → skills-PGTMJCNI.js} +2 -2
  86. package/dist-cli/chunks/{start-24EAF2KS.js → start-OB5MRSE4.js} +4 -4
  87. package/dist-cli/chunks/store-SUEZBGQY.js +2 -0
  88. package/dist-cli/chunks/telemetry-COZXGX5D.js +2 -0
  89. package/dist-cli/chunks/{test-AJBULIVR.js → test-OXVUTEEX.js} +3 -3
  90. package/dist-cli/chunks/{three-mode-JBZSQQIQ.js → three-mode-P6JQUJEA.js} +2 -2
  91. package/dist-cli/chunks/{timeline-VVGWQSVU.js → timeline-TVXCZIHI.js} +2 -2
  92. package/dist-cli/chunks/{upgrade-IOGHQT7J.js → upgrade-PDM3N57Q.js} +2 -2
  93. package/dist-cli/chunks/upload-U55QDSSX.js +2 -0
  94. package/dist-cli/chunks/{web-XIMVN6KZ.js → web-F5K7GAGR.js} +2 -2
  95. package/dist-cli/chunks/{what-happened-STVD3KZ2.js → what-happened-QE3IR6K4.js} +2 -2
  96. package/dist-cli/chunks/{whoami-L62IGS4U.js → whoami-NPO62CNB.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/bridge-constants.cjs +1 -1
  104. package/dist-lib/cli-constants.cjs +1 -1
  105. package/dist-lib/config.cjs +1 -1
  106. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  107. package/dist-lib/home-paths.cjs +1 -1
  108. package/dist-lib/host/bridge-host.cjs +1 -1
  109. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  110. package/dist-lib/index.cjs +1 -1
  111. package/dist-lib/metro.cjs +1 -1
  112. package/dist-lib/profiles.cjs +1 -1
  113. package/dist-lib/render-mode.cjs +1 -1
  114. package/dist-lib/vite-base.cjs +1 -1
  115. package/dist-lib/vite.cjs +1 -1
  116. package/package.json +1 -1
  117. package/dist-cli/chunks/auto-bootstrap-7BJDOYUU.js +0 -2
  118. package/dist-cli/chunks/beta-2LIEPFEJ.js +0 -2
  119. package/dist-cli/chunks/chunk-2XCCV7J3.js +0 -2
  120. package/dist-cli/chunks/chunk-64AKKWVB.js +0 -1
  121. package/dist-cli/chunks/chunk-EZGUKWD5.js +0 -1
  122. package/dist-cli/chunks/chunk-IFY75LQ3.js +0 -1
  123. package/dist-cli/chunks/chunk-LJLRHMLK.js +0 -1
  124. package/dist-cli/chunks/chunk-R3KU3IBN.js +0 -117
  125. package/dist-cli/chunks/control-HJ2RPHYO.js +0 -2
  126. package/dist-cli/chunks/demo-app-registry-XABEINTD.js +0 -2
  127. package/dist-cli/chunks/drivers-VXSNI7K2.js +0 -2
  128. package/dist-cli/chunks/flow-TCG5XPDK.js +0 -2
  129. package/dist-cli/chunks/install-IKBAY4PQ.js +0 -2
  130. package/dist-cli/chunks/record-FLWDPJIP.js +0 -7
  131. package/dist-cli/chunks/runtime-AGNC2TK6.js +0 -2
  132. package/dist-cli/chunks/setup-repo-NQVN5PK7.js +0 -2
  133. package/dist-cli/chunks/store-GI3SJOKH.js +0 -2
  134. package/dist-cli/chunks/telemetry-73Z4FAUH.js +0 -2
  135. package/dist-cli/chunks/upload-Z4PPGOX6.js +0 -2
@@ -1,7 +0,0 @@
1
- /*! sootsim v0.1.42 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a as P}from"./chunk-A2R42ONP.js";import"./chunk-BBRAYGDX.js";import{d as J}from"./chunk-2GKZS2ZZ.js";import"./chunk-LJLRHMLK.js";import{d as D}from"./chunk-DUVJOJTP.js";import{c as h,e as $}from"./chunk-76WF7UIG.js";import{b as L}from"./chunk-D5TKAFJ3.js";import"./chunk-4574AJAK.js";import"./chunk-ITQGNQE3.js";import"./chunk-EZGUKWD5.js";import"./chunk-6MYXKMLG.js";import"./chunk-UY6HKNEV.js";import{existsSync as ie,mkdirSync as k,readdirSync as se,readFileSync as ae,rmSync as N,writeFileSync as M}from"fs";import{tmpdir as de}from"os";import{dirname as T,extname as ce,join as V,resolve as O}from"path";var j=6e4,le=new Set(["--sim","--port","-p","--mode","--duration","--fps","--format","--output","-o","--frames","--max-width","--origin"]),ue=new Set(["start","stop","cancel","status"]);function me(e){for(let t=0;t<e.length;t++){let o=e[t];if(o.startsWith("-")){le.has(o)&&t++;continue}return ue.has(o)?{name:o,index:t}:null}return null}async function Me(e,t){let o=me(e);if(o){let a=[...e.slice(0,o.index),...e.slice(o.index+1)];if(o.name==="start"){await be(a,t);return}if(o.name==="stop"){await $e(a,t);return}if(o.name==="cancel"){await Se(a,t);return}ye();return}let n=h(e,{port:t.port,stripBooleanFlags:["--no-shell","--shell-only","--open"],stripValueFlags:["--mode","--duration","--fps","--format","--output","--frames","--max-width","--origin"]}),r=H(d(e,"--mode")),c=e.includes("--shell-only")?"shell":e.includes("--no-shell")?"tenant":void 0,i=d(e,"--format");i&&!["webm","mp4","gif","png"].includes(i)&&(console.error(` invalid --format "${i}" \u2014 expected webm | mp4 | gif | png`),process.exit(1));let u=d(e,"--output"),s=Number(d(e,"--duration")??"10");(!Number.isFinite(s)||s<=0)&&(console.error(` invalid --duration "${d(e,"--duration")}" \u2014 expected a positive number of seconds`),process.exit(1));let l=Number(d(e,"--fps")??"30"),p=d(e,"--frames"),R=e.includes("--open"),z=d(e,"--max-width")?Number(d(e,"--max-width")):void 0,y=Math.max(100,Math.round(s*1e3)),te=d(e,"--origin");if(r==="live"||r==="combined"){u&&console.log(` note: --output is ignored for --mode ${r} \u2014 the recording uploads to /preview/<id>`),await P("record",{originOverride:te});let a=$({...n,commandTimeoutMs:6e4});try{await Q(a),await X(a),await Y(a,r)||(console.error(` start failed: recording store refused to start (${r})`),process.exit(1)),console.log(` recording ${r} for ${s}s`),await new Promise(S=>setTimeout(S,y)),await Z(a);let _=await ee(a);oe(_,R)}finally{a.close()}return}let F=p?Number(p):null,v=ge(i,u,F),g=$({...n,commandTimeoutMs:6e4});try{if(await G(g),v==="png"){let b=F??10,f=O(process.cwd(),u??`./sootsim-frames-${B()}`);k(f,{recursive:!0});for(let m of se(f))/^frame-\d+\.png$/.test(m)&&N(V(f,m),{force:!0});console.log(` sampling ${b} frames over ${s}s \u2192 ${f}`);let w=await g.send({type:"evaluate",code:`window.__sootsimRecorder.startFrameCapture({ count: ${b}, durationMs: ${y} })`});(!w.ok||!w.requestId)&&(console.error(` frame capture start failed: ${w.error??"unknown error"}`),process.exit(1)),await new Promise(m=>setTimeout(m,y));let re=Date.now()+Math.max(5e3,y),I=null;for(;;){let m=await g.send({type:"evaluate",code:`window.__sootsimRecorder.getFrameCaptureResult(${w.requestId})`});if(m||(console.error(" frame capture result missing"),process.exit(1)),m.done){m.ok||(console.error(` frame capture failed: ${m.error??"unknown error"}`),process.exit(1)),I=m.frames??[];break}Date.now()>=re&&(console.error(" frame capture timed out"),process.exit(1)),await new Promise(E=>setTimeout(E,100))}I.forEach((m,E)=>{let ne=`${f}/frame-${String(E+1).padStart(3,"0")}.png`;M(ne,Buffer.from(m.data,"base64"))}),console.log(` saved ${I.length} frames`);return}if(v==="gif"){let b=F??Math.max(10,Math.round(s*l/3)),f=O(process.cwd(),u??`./sootsim-${B()}.gif`);k(T(f),{recursive:!0}),console.log(` encoding gif: ${b} frames over ${s}s \u2192 ${f}`);let w=await g.send({type:"evaluate",code:`window.__sootsimRecorder.captureGif({ frames: ${b}, durationMs: ${y}${z?`, maxWidth: ${z}`:""} })`});w||(console.error(" gif capture returned no frames"),process.exit(1)),M(f,Buffer.from(w.data,"base64")),console.log(` saved: ${f} (${C(w.size)})`);return}let a=O(process.cwd(),u??`./sootsim-${B()}.${v}`);k(T(a),{recursive:!0});let A={format:v,fps:l};c&&(A.layers=c);let _=await g.send({type:"evaluate",code:`window.__sootsimRecorder.start(${JSON.stringify(A)})`});_.ok||(console.error(` start failed: ${_.error??"unknown error"}`),process.exit(1)),console.log(` recording ${v} for ${s}s \u2192 ${a}`),await new Promise(b=>setTimeout(b,y));let S=await g.send({type:"evaluate",code:"window.__sootsimRecorder.stop()"});S.ok||(console.error(` stop failed: ${S.error??"unknown error"}`),process.exit(1)),S.size||(console.error(" recorder returned an empty blob \u2014 nothing written"),process.exit(1)),await K(g,a),console.log(` saved: ${a} (${C(S.size)})`)}finally{g.close()}}var fe=6e3;async function q(e,t){try{return await e.send({type:"evaluate",code:t},{timeoutMs:fe})}catch(o){let n=o instanceof Error?o.message:String(o);throw/^command timed out after \d+s$/.test(n)&&(console.error(" sim did not respond \u2014 it is connected to the bridge but has not\n loaded an app (or its page is unresponsive). run `sootsim list`\n and target a sim with a loaded app via --sim <id>."),process.exit(1)),o}}async function G(e){await q(e,'typeof window.__sootsimRecorder !== "undefined"')||(console.error(" window.__sootsimRecorder missing \u2014 is sootsim engine running in this sim?"),process.exit(1))}async function K(e,t){let o=[],n=0;for(;;){let r=await e.send({type:"evaluate",code:`window.__sootsimRecorder.getBlobBase64({ offset: ${n}, chunk: 2097152 })`});if(!r)throw new Error("no blob available on recorder");if(o.push(Buffer.from(r.data,"base64")),n=r.offset,r.done)break}M(t,Buffer.concat(o))}function d(e,t){let o=e.indexOf(t);if(!(o<0||o===e.length-1))return e[o+1]}function pe(e){if(!e)return;let t=ce(e).toLowerCase().replace(/^\./,"");if(t==="webm"||t==="mp4"||t==="gif")return t;if(t==="png")return"png"}function ge(e,t,o){return e||(o!=null?"png":pe(t)??"webm")}function B(){return new Date().toISOString().replace(/[:T]/g,"-").replace(/\..+/,"")}function C(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/(1024*1024)).toFixed(2)}MB`}function H(e){if(!e)return"video";if(e==="video"||e==="live"||e==="combined")return e;console.error(` invalid --mode "${e}" \u2014 expected video | live | combined`),process.exit(1)}function W(){return V(de(),`sootsim-recording-${L()}.json`)}function U(){let e=W();if(!ie(e))return null;try{return{mode:"video",...JSON.parse(ae(e,"utf8"))}}catch{return N(e,{force:!0}),null}}function we(e){M(W(),JSON.stringify(e,null,2))}function x(){N(W(),{force:!0})}async function be(e,t){let o=U();o&&(console.error(` recording already in progress (started ${o.startedAt}, sim ${o.simId??"?"}). run \`sootsim record stop\` first, or \`sootsim record cancel\` to discard.`),process.exit(1));let n=h(e,{port:t.port,stripBooleanFlags:["--no-shell","--shell-only"],stripValueFlags:["--mode","--fps","--format","--max-width","--origin"]}),r=H(d(e,"--mode")),c=e.includes("--shell-only")?"shell":e.includes("--no-shell")?"tenant":void 0,i=d(e,"--format"),u=i==="mp4"?"mp4":"webm";i&&u!==i&&(console.error(` record start only supports webm or mp4 (got: ${i}). for gif/png use atomic mode: sootsim record --format ${i} --duration <s>`),process.exit(1));let s=Number(d(e,"--fps")??"30"),l=$({...n,commandTimeoutMs:15e3});try{if(r==="live"||r==="combined")await P("record",{originOverride:d(e,"--origin")}),await Q(l),await X(l),await Y(l,r)||(console.error(` start failed: recording store refused to start (${r})`),process.exit(1));else{await G(l);let p={format:u,fps:s};c&&(p.layers=c);let R=await l.send({type:"evaluate",code:`window.__sootsimRecorder.start(${JSON.stringify(p)})`});R.ok||(console.error(` start failed: ${R.error??"unknown error"}`),process.exit(1))}we({simId:n.simId??null,mode:r,format:u,fps:s,layers:c,startedAt:new Date().toISOString()}),console.log(r==="video"?` recording ${u} @ ${s}fps${c?` (${c})`:""} \u2014 run \`sootsim record stop --output <path>\` when done`:` recording ${r} \u2014 run \`sootsim record stop\` when done (add --open to launch the preview URL)`)}finally{l.close()}}function ye(){let e=U();if(!e){console.log(" no recording in progress");return}e.mode==="video"?console.log(` recording ${e.mode} (${e.format} @ ${e.fps}fps) on sim ${e.simId??"?"} since ${e.startedAt}`):console.log(` recording ${e.mode} on sim ${e.simId??"?"} since ${e.startedAt}`)}async function Se(e,t){let o=U();if(!o){console.log(" no recording in progress");return}let n=h(e,{port:t.port}),r=n.simId??o.simId??void 0,c=$({...n,simId:r,commandTimeoutMs:15e3});try{o.mode==="live"||o.mode==="combined"?await c.send({type:"evaluate",code:"void window.SootSim?.bridges?.cancelRecording?.()"}):await c.send({type:"evaluate",code:"window.__sootsimRecorder.stop()"})}catch{}finally{x(),c.close()}console.log(" recording cancelled")}async function $e(e,t){let o=U();o||(console.error(" no recording in progress. start one with `sootsim record start`."),process.exit(1));let n=h(e,{port:t.port,stripBooleanFlags:["--open"],stripValueFlags:["--output"]}),r=n.simId??o.simId??void 0,c=e.includes("--open"),i=$({...n,simId:r,commandTimeoutMs:6e4});try{if(o.mode==="live"||o.mode==="combined"){await Z(i);let p=await ee(i);x(),oe(p,c);return}let u=d(e,"--output"),s=O(process.cwd(),u??`./sootsim-${B()}.${o.format}`);k(T(s),{recursive:!0});let l=await i.send({type:"evaluate",code:"window.__sootsimRecorder.stop()"});l.ok||(console.error(` stop failed: ${l.error??"unknown error"}`),x(),process.exit(1)),l.size||(console.error(" recorder returned an empty blob \u2014 nothing written"),x(),process.exit(1)),await K(i,s),x(),console.log(` saved: ${s} (${C(l.size)})`)}finally{i.close()}}async function Q(e){await q(e,'typeof window.SootSim?.bridges?.startRecording === "function" && typeof window.SootSim?.bridges?.stopRecording === "function"')||(console.error(" SootSim.bridges.startRecording missing \u2014 is sootsim engine running in this sim?"),process.exit(1))}async function X(e){let t=J();if(!t)return;let o=t.kind==="api-key"?t.secret:t.token;await e.send({type:"evaluate",code:`(() => {
3
- const set = window.SootSim && window.SootSim.bridges && window.SootSim.bridges.setSession
4
- if (typeof set !== 'function') return false
5
- set({ token: ${JSON.stringify(o)}, user: null })
6
- return true
7
- })()`})||(console.error(" SootSim.bridges.setSession missing \u2014 this sim is running an engine\n build without CLI-injected preview auth. reload the sim or open a\n fresh one (`sootsim open --new`); if it persists, update sootsim."),process.exit(1))}async function Y(e,t){return await e.send({type:"evaluate",code:`window.SootSim.bridges.startRecording(${JSON.stringify(t)})`})===!0}async function Z(e){await e.send({type:"evaluate",code:"void window.SootSim.bridges.stopRecording()"})}async function ee(e){let t=Date.now()+j;for(;Date.now()<t;){let o=await e.send({type:"evaluate",code:"(() => { const s = window.SootSim?.bridges?.getRecordingState?.(); return s ? { state: s.state, lastUpload: s.lastUpload, uploadError: s.uploadError } : null })()"});if(o&&o.state==="idle"){if(o.uploadError)return{uploadError:o.uploadError};if(o.lastUpload?.previewUrl)return{previewUrl:o.lastUpload.previewUrl}}await new Promise(n=>setTimeout(n,300))}return{uploadError:`upload did not settle within ${j/1e3}s`}}function oe(e,t){e.uploadError&&(console.error(` upload failed: ${e.uploadError}`),process.exit(1)),e.previewUrl||(console.error(" upload returned no preview URL"),process.exit(1)),console.log(` preview: ${e.previewUrl}`),t&&D(e.previewUrl)}export{pe as extToFormat,ge as resolveFormat,Me as runRecord,d as valueOf};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.42 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a}from"./chunk-SGBD3EAX.js";import"./chunk-76WF7UIG.js";import"./chunk-D5TKAFJ3.js";import"./chunk-QWGMNIWG.js";import"./chunk-EZGUKWD5.js";import"./chunk-6MYXKMLG.js";import"./chunk-UY6HKNEV.js";export{a as runRuntime};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.42 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a}from"./chunk-NLYIKZIF.js";import"./chunk-543BSGQG.js";import"./chunk-EDXBJUHH.js";import"./chunk-76WF7UIG.js";import"./chunk-D5TKAFJ3.js";import"./chunk-4574AJAK.js";import"./chunk-ITQGNQE3.js";import"./chunk-EZGUKWD5.js";import"./chunk-6MYXKMLG.js";import"./chunk-UY6HKNEV.js";export{a as runSetupRepo};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.42 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a}from"./chunk-WW4G4D4A.js";import"./chunk-L53QRCQZ.js";import"./chunk-UY6HKNEV.js";export{a as settingsStore};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.42 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b}from"./chunk-4574AJAK.js";import"./chunk-ITQGNQE3.js";import"./chunk-6MYXKMLG.js";import"./chunk-UY6HKNEV.js";export{b as flushCliTelemetry,a as trackCliEvent};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.42 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c}from"./chunk-BBRAYGDX.js";import"./chunk-2GKZS2ZZ.js";import"./chunk-LJLRHMLK.js";import"./chunk-DUVJOJTP.js";import"./chunk-76WF7UIG.js";import"./chunk-D5TKAFJ3.js";import"./chunk-4574AJAK.js";import"./chunk-ITQGNQE3.js";import"./chunk-EZGUKWD5.js";import"./chunk-6MYXKMLG.js";import"./chunk-UY6HKNEV.js";export{a as resolveDefaultUploadOrigin,b as resolvePublicPreviewOrigin,c as runUpload};