sootsim 0.1.43 → 0.1.45

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-SNOLNP4V.js → agent-NSVMKP3P.js} +2 -2
  3. package/dist-cli/chunks/{agent-wrapper-TY6IPXYH.js → agent-wrapper-HREUS3JR.js} +2 -2
  4. package/dist-cli/chunks/{assert-QISZB6TE.js → assert-N7KX2APG.js} +2 -2
  5. package/dist-cli/chunks/auto-bootstrap-YCOWYMVV.js +2 -0
  6. package/dist-cli/chunks/beta-UF2ITPYH.js +2 -0
  7. package/dist-cli/chunks/{chunk-MHETWJAQ.js → chunk-25K4SXL3.js} +2 -2
  8. package/dist-cli/chunks/{chunk-EW7G6TZV.js → chunk-2V4ALWOZ.js} +2 -2
  9. package/dist-cli/chunks/{chunk-26LJCQNQ.js → chunk-2WW7WJHA.js} +1 -1
  10. package/dist-cli/chunks/{chunk-BAHIX7JY.js → chunk-3K4GAAOE.js} +2 -2
  11. package/dist-cli/chunks/{chunk-YSSNIJC6.js → chunk-4RG3RPXB.js} +1 -1
  12. package/dist-cli/chunks/{chunk-6GYM3Z7K.js → chunk-5IJS7CFG.js} +1 -1
  13. package/dist-cli/chunks/{chunk-LR5DET6G.js → chunk-65Q34YMN.js} +2 -2
  14. package/dist-cli/chunks/chunk-72GGPCB2.js +2 -0
  15. package/dist-cli/chunks/chunk-7VSW2XVU.js +1 -0
  16. package/dist-cli/chunks/chunk-A5EZYWAO.js +1 -0
  17. package/dist-cli/chunks/{chunk-LTUGPDW5.js → chunk-AFBOAQAV.js} +1 -1
  18. package/dist-cli/chunks/{chunk-JA2UNVA3.js → chunk-BARR77SV.js} +1 -1
  19. package/dist-cli/chunks/{chunk-4YM33L7G.js → chunk-BVLKRIBN.js} +1 -1
  20. package/dist-cli/chunks/{chunk-4NPUTEDF.js → chunk-CBMFBTB3.js} +2 -2
  21. package/dist-cli/chunks/{chunk-CPYDJJTX.js → chunk-CFY2ELQ4.js} +3 -3
  22. package/dist-cli/chunks/{chunk-IBKI7UPZ.js → chunk-CPCM75G3.js} +2 -2
  23. package/dist-cli/chunks/{chunk-X3ZHRSH4.js → chunk-CVMSXDFO.js} +1 -1
  24. package/dist-cli/chunks/{chunk-XXJAHIR4.js → chunk-ECI22OZU.js} +2 -2
  25. package/dist-cli/chunks/{chunk-FQHGM7T3.js → chunk-EHJMKPJP.js} +2 -2
  26. package/dist-cli/chunks/{chunk-IFJMJS4Y.js → chunk-FBKOSZKD.js} +2 -2
  27. package/dist-cli/chunks/{chunk-QD23HPD4.js → chunk-FGLQTXGF.js} +2 -2
  28. package/dist-cli/chunks/{chunk-NTZRFKEN.js → chunk-FNXGAYHN.js} +1 -1
  29. package/dist-cli/chunks/{chunk-V527VARZ.js → chunk-HNOQEJK3.js} +2 -2
  30. package/dist-cli/chunks/{chunk-HFRDF5SI.js → chunk-HZ5W4PIP.js} +2 -2
  31. package/dist-cli/chunks/{chunk-OK3YCEYK.js → chunk-JKG66FDZ.js} +1 -1
  32. package/dist-cli/chunks/{chunk-7OKSILLD.js → chunk-KJLLZQJO.js} +2 -2
  33. package/dist-cli/chunks/chunk-LRE73CBG.js +1 -0
  34. package/dist-cli/chunks/{chunk-XWVTLGO2.js → chunk-MDT2KSFY.js} +2 -2
  35. package/dist-cli/chunks/{chunk-MFLW2R4J.js → chunk-N4KSVDAU.js} +2 -2
  36. package/dist-cli/chunks/{chunk-UBJJEZO4.js → chunk-OSFZQ7NV.js} +3 -3
  37. package/dist-cli/chunks/chunk-PLTKWJ7M.js +1 -0
  38. package/dist-cli/chunks/{chunk-PXUQ5FQN.js → chunk-PNEIZ2DY.js} +1 -1
  39. package/dist-cli/chunks/{chunk-4D2BRAPP.js → chunk-PPY2OTIR.js} +1 -1
  40. package/dist-cli/chunks/{chunk-RHH6P5Z7.js → chunk-QAL3T64I.js} +2 -2
  41. package/dist-cli/chunks/{chunk-W7N6B2MX.js → chunk-QJMUNN2V.js} +1 -1
  42. package/dist-cli/chunks/{chunk-QOOTU75R.js → chunk-R2VBXQYS.js} +2 -2
  43. package/dist-cli/chunks/{chunk-MK6M3NP4.js → chunk-T3PYVAO7.js} +1 -1
  44. package/dist-cli/chunks/{chunk-5A4JEYK2.js → chunk-TIE6ENCX.js} +3 -3
  45. package/dist-cli/chunks/{chunk-CHAVUZ6X.js → chunk-VLWCOUVW.js} +2 -2
  46. package/dist-cli/chunks/{chunk-JJGG2ICF.js → chunk-WI72PADL.js} +2 -2
  47. package/dist-cli/chunks/{chunk-3VULRGJO.js → chunk-WUZSBXWF.js} +2 -2
  48. package/dist-cli/chunks/{chunk-OTTV2PFN.js → chunk-YU2F5Y7A.js} +2 -2
  49. package/dist-cli/chunks/{chunk-A2NHH4S4.js → chunk-ZR2EL6AG.js} +1 -1
  50. package/dist-cli/chunks/{chunk-GYQ75E5Z.js → chunk-ZSDPMO6R.js} +1 -1
  51. package/dist-cli/chunks/{compat-3XWL4ATU.js → compat-WZHG6K4B.js} +3 -3
  52. package/dist-cli/chunks/{config-HMLAEAGT.js → config-E4ENAYVL.js} +2 -2
  53. package/dist-cli/chunks/control-USODFZCF.js +2 -0
  54. package/dist-cli/chunks/cpu-profile-5VX6YXR5.js +2 -0
  55. package/dist-cli/chunks/{daemon-QYMI2BWG.js → daemon-L4IR5GKS.js} +2 -2
  56. package/dist-cli/chunks/{debug-TOBBTGKD.js → debug-RPLWF66R.js} +3 -3
  57. package/dist-cli/chunks/demo-app-registry-3SDEOEC4.js +2 -0
  58. package/dist-cli/chunks/{detox-GSTT2HKN.js → detox-F4I7XDUZ.js} +2 -2
  59. package/dist-cli/chunks/{device-MZZLHS7H.js → device-DAHI737I.js} +2 -2
  60. package/dist-cli/chunks/{diagnose-TWYOGKQL.js → diagnose-YR7GNYPN.js} +2 -2
  61. package/dist-cli/chunks/drivers-FYOQW4OZ.js +2 -0
  62. package/dist-cli/chunks/{electron-JFXGQSEJ.js → electron-GC7AQHGS.js} +3 -3
  63. package/dist-cli/chunks/flow-65752NAO.js +2 -0
  64. package/dist-cli/chunks/{hints-AUB2PZR7.js → hints-FPPTZ5A4.js} +2 -2
  65. package/dist-cli/chunks/{home-paths-H7UWBZTI.js → home-paths-6KKZMFRE.js} +2 -2
  66. package/dist-cli/chunks/{inspect-CRW5T6XB.js → inspect-RDGBV7FC.js} +3 -3
  67. package/dist-cli/chunks/install-PA5K5XJ6.js +2 -0
  68. package/dist-cli/chunks/{install-desktop-ZMNP3JUU.js → install-desktop-NVXLOF4C.js} +3 -3
  69. package/dist-cli/chunks/{keys-EXQ4HPRI.js → keys-WUPEDL27.js} +2 -2
  70. package/dist-cli/chunks/{launch-BJCVATQA.js → launch-KIVZVX45.js} +3 -3
  71. package/dist-cli/chunks/{login-DCGHEA5P.js → login-6VWSRHCZ.js} +4 -4
  72. package/dist-cli/chunks/{logout-OXKHJTNH.js → logout-JASQH22U.js} +2 -2
  73. package/dist-cli/chunks/{maestro-7AWJXCCS.js → maestro-UINOO5ZB.js} +2 -2
  74. package/dist-cli/chunks/{preview-RSYAEZKJ.js → preview-7QA7XGF4.js} +2 -2
  75. package/dist-cli/chunks/{profile-Z4KSPIT2.js → profile-L43GQNI7.js} +2 -2
  76. package/dist-cli/chunks/{react-ED3FJ4IM.js → react-4WDCAK7S.js} +2 -2
  77. package/dist-cli/chunks/record-VJGGKQBY.js +17 -0
  78. package/dist-cli/chunks/runtime-JM4WL6FX.js +2 -0
  79. package/dist-cli/chunks/{runtime-delivery-YWGRJ62P.js → runtime-delivery-XQBDABU4.js} +2 -2
  80. package/dist-cli/chunks/{screenshot-LJ3IRZSJ.js → screenshot-N67LQOUY.js} +2 -2
  81. package/dist-cli/chunks/{screenshot-mode-BIMMQHLF.js → screenshot-mode-EWTPX4XH.js} +2 -2
  82. package/dist-cli/chunks/{screenshots-ABB7QEYX.js → screenshots-WY27EWBW.js} +2 -2
  83. package/dist-cli/chunks/{server-FCZUE6AB.js → server-57MUO65L.js} +2 -2
  84. package/dist-cli/chunks/setup-repo-6PKR67R6.js +2 -0
  85. package/dist-cli/chunks/{skills-NU3ZVGQW.js → skills-TDFRPGQ2.js} +2 -2
  86. package/dist-cli/chunks/{start-FUBNFTAN.js → start-TNY3DBAJ.js} +4 -4
  87. package/dist-cli/chunks/store-LMNSJWN7.js +2 -0
  88. package/dist-cli/chunks/telemetry-7TOFRDK5.js +2 -0
  89. package/dist-cli/chunks/{test-NHEBEWQA.js → test-N4RCDGFL.js} +3 -3
  90. package/dist-cli/chunks/{three-mode-PWUWCXOA.js → three-mode-YWFPU7KR.js} +2 -2
  91. package/dist-cli/chunks/{timeline-OODTUKKH.js → timeline-OAZXNDFK.js} +2 -2
  92. package/dist-cli/chunks/{upgrade-2GN4KRQ6.js → upgrade-QUS553XV.js} +2 -2
  93. package/dist-cli/chunks/upload-OT5RQ4QV.js +2 -0
  94. package/dist-cli/chunks/{web-DPMKOIAX.js → web-UR3EWC7V.js} +2 -2
  95. package/dist-cli/chunks/{what-happened-6UXAA7YR.js → what-happened-6UNRX4BP.js} +2 -2
  96. package/dist-cli/chunks/{whoami-2IEZXYNZ.js → whoami-I5VW66LS.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-QHKU7RLG.js +0 -2
  118. package/dist-cli/chunks/beta-WKOGR7HH.js +0 -2
  119. package/dist-cli/chunks/chunk-HKZEU76U.js +0 -1
  120. package/dist-cli/chunks/chunk-KFTTDAPI.js +0 -2
  121. package/dist-cli/chunks/chunk-L6EBBORR.js +0 -1
  122. package/dist-cli/chunks/chunk-SIH4PE3C.js +0 -1
  123. package/dist-cli/chunks/chunk-WWTI3E3U.js +0 -1
  124. package/dist-cli/chunks/control-G35A52LM.js +0 -2
  125. package/dist-cli/chunks/cpu-profile-OORGMNDG.js +0 -2
  126. package/dist-cli/chunks/demo-app-registry-COFN4PSB.js +0 -2
  127. package/dist-cli/chunks/drivers-HPWMBGHU.js +0 -2
  128. package/dist-cli/chunks/flow-TZQRP7FD.js +0 -2
  129. package/dist-cli/chunks/install-MFIJGPJ6.js +0 -2
  130. package/dist-cli/chunks/record-UDDH36YF.js +0 -15
  131. package/dist-cli/chunks/runtime-EIEXL23W.js +0 -2
  132. package/dist-cli/chunks/setup-repo-6CIEQXRN.js +0 -2
  133. package/dist-cli/chunks/store-VHZ4TFK4.js +0 -2
  134. package/dist-cli/chunks/telemetry-6ZYCDCLG.js +0 -2
  135. package/dist-cli/chunks/upload-AIOY3AZW.js +0 -2
@@ -1,5 +1,5 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{E as F,r as S,s as k,t as g}from"./chunk-NTZRFKEN.js";import{c as b,e as y}from"./chunk-MFLW2R4J.js";import{b as w}from"./chunk-A2NHH4S4.js";import"./chunk-L6EBBORR.js";import"./chunk-PXUQ5FQN.js";import"./chunk-26LJCQNQ.js";function M(t){let e=[];for(let n=0;n<t.length;n++)if(t[n]==="--since"&&n+1<t.length){e.push(n,n+1);let s=t[n+1].trim(),a=/^(\d+(?:\.\d+)?)(ms|s|m)?$/.exec(s);if(a){let l=Number(a[1]),u=a[2]??"ms",r=u==="s"?l*1e3:u==="m"?l*6e4:l;return{since:Date.now()-r,consumed:e}}let o=Number(s);if(Number.isFinite(o)&&o>1e12)return{since:o,consumed:e}}return{consumed:e}}function E(t){let e=[];for(let n=0;n<t.length;n++)if(t[n]==="--kinds"&&n+1<t.length)return e.push(n,n+1),{kinds:t[n+1].split(",").map(s=>s.trim()).filter(Boolean),consumed:e};return{consumed:e}}function C(t){let e=[];for(let n=0;n<t.length;n++)if(t[n]==="--limit"&&n+1<t.length){e.push(n,n+1);let s=Number(t[n+1]);if(Number.isFinite(s)&&s>0)return{limit:s,consumed:e}}return{consumed:e}}function _(t,e){if(e===null)return new Date(t).toLocaleTimeString();let n=(t-e)/1e3;return`${n>=0?"+":""}${n.toFixed(2)}s`}function j(t,e){switch(t){case"app-launch":return e.phase==="launch"?`launch ${e.appName??e.toAppId??""}`:`dismiss ${e.appName??e.fromAppId??""} \u2192 ${e.toAppId??""}`;case"toast":return`"${e.text??""}"${e.durationMs?` (${e.durationMs}ms)`:""}`;case"keyboard":return`${e.phase??"?"}${e.heightPx?` h=${e.heightPx}`:""}${e.mode?` ${e.mode}`:""}`;case"screen":return`${e.phase??"?"} ${e.name??e.activeName??""}`;case"route":return`${e.phase??"?"} ${e.path??e.pathname??""}`;case"alert":case"actionsheet":case"picker":return`${e.phase??"?"} ${e.title??e.message??""}`;case"notification":return`${e.title??""}${e.body?` \u2014 ${e.body}`:""}`;case"fetch":return`${e.method??"GET"} ${e.url??""}${e.status?` -> ${e.status}`:""}`;case"console":return`${e.level??"log"}: ${(e.message??"").toString().slice(0,120)}`;case"shell":return`${e.event??e.type??e.phase??""}`;case"scroll":return`${e.phase??"?"} ${e.target??""}`;case"gesture":return`${e.phase??"?"} ${e.type??""}`;case"text-input":return`${e.phase??"?"}${e.value!==void 0?` "${String(e.value).slice(0,40)}"`:""}`;case"react-commit":{let n=e.slowest;return`${e.fiberCount??"?"} fibers ${e.durationMs??"?"}ms${n?.displayName?` \xB7 ${n.displayName} ${n.durationMs??"?"}ms`:""}`}case"reanimated":case"animation":return`${e.kind??""} ${e.target??""}${e.durationMs?` ${e.durationMs}ms`:""}`}}function N(t,e){let n=_(t.t,e).padStart(8),s=t.context.padEnd(6),a=`[${t.kind}]`.padEnd(15),o="",l=t.data;return l&&typeof l=="object"&&(o=j(t.kind,l)),` ${n} ${s} ${a} ${o}`}function T(t){let e=[],n={label:"initial state",events:[],startedAt:t[0]?.t??null};e.push(n);for(let s of t)if(n.events.push(s),s.kind==="screen"||s.kind==="route"){let a=s.data,o=a?.phase;if(!o||o==="enter"||o==="appear"||o==="active"){let l=a?.name||a?.activeName||a?.path||a?.pathname||s.kind;e.length===1&&n.events.length===1?n.label=`${s.kind}: ${l}`:(n={label:`${s.kind}: ${l}`,events:[],startedAt:s.t},e.push(n))}}return e}async function O(t,e){let n=b(t,{port:e.port,stripBooleanFlags:["--summary","--all","--json","--no-advance","--help","-h","--flow"],stripValueFlags:["--since","--kinds","--limit"]});(t.includes("--help")||t.includes("-h"))&&(console.log(`
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{E as F,r as S,s as k,t as g}from"./chunk-FNXGAYHN.js";import{c as b,e as y}from"./chunk-N4KSVDAU.js";import{b as w}from"./chunk-ZR2EL6AG.js";import"./chunk-LRE73CBG.js";import"./chunk-PNEIZ2DY.js";import"./chunk-2WW7WJHA.js";function M(t){let e=[];for(let n=0;n<t.length;n++)if(t[n]==="--since"&&n+1<t.length){e.push(n,n+1);let s=t[n+1].trim(),a=/^(\d+(?:\.\d+)?)(ms|s|m)?$/.exec(s);if(a){let l=Number(a[1]),u=a[2]??"ms",r=u==="s"?l*1e3:u==="m"?l*6e4:l;return{since:Date.now()-r,consumed:e}}let o=Number(s);if(Number.isFinite(o)&&o>1e12)return{since:o,consumed:e}}return{consumed:e}}function E(t){let e=[];for(let n=0;n<t.length;n++)if(t[n]==="--kinds"&&n+1<t.length)return e.push(n,n+1),{kinds:t[n+1].split(",").map(s=>s.trim()).filter(Boolean),consumed:e};return{consumed:e}}function C(t){let e=[];for(let n=0;n<t.length;n++)if(t[n]==="--limit"&&n+1<t.length){e.push(n,n+1);let s=Number(t[n+1]);if(Number.isFinite(s)&&s>0)return{limit:s,consumed:e}}return{consumed:e}}function _(t,e){if(e===null)return new Date(t).toLocaleTimeString();let n=(t-e)/1e3;return`${n>=0?"+":""}${n.toFixed(2)}s`}function j(t,e){switch(t){case"app-launch":return e.phase==="launch"?`launch ${e.appName??e.toAppId??""}`:`dismiss ${e.appName??e.fromAppId??""} \u2192 ${e.toAppId??""}`;case"toast":return`"${e.text??""}"${e.durationMs?` (${e.durationMs}ms)`:""}`;case"keyboard":return`${e.phase??"?"}${e.heightPx?` h=${e.heightPx}`:""}${e.mode?` ${e.mode}`:""}`;case"screen":return`${e.phase??"?"} ${e.name??e.activeName??""}`;case"route":return`${e.phase??"?"} ${e.path??e.pathname??""}`;case"alert":case"actionsheet":case"picker":return`${e.phase??"?"} ${e.title??e.message??""}`;case"notification":return`${e.title??""}${e.body?` \u2014 ${e.body}`:""}`;case"fetch":return`${e.method??"GET"} ${e.url??""}${e.status?` -> ${e.status}`:""}`;case"console":return`${e.level??"log"}: ${(e.message??"").toString().slice(0,120)}`;case"shell":return`${e.event??e.type??e.phase??""}`;case"scroll":return`${e.phase??"?"} ${e.target??""}`;case"gesture":return`${e.phase??"?"} ${e.type??""}`;case"text-input":return`${e.phase??"?"}${e.value!==void 0?` "${String(e.value).slice(0,40)}"`:""}`;case"react-commit":{let n=e.slowest;return`${e.fiberCount??"?"} fibers ${e.durationMs??"?"}ms${n?.displayName?` \xB7 ${n.displayName} ${n.durationMs??"?"}ms`:""}`}case"reanimated":case"animation":return`${e.kind??""} ${e.target??""}${e.durationMs?` ${e.durationMs}ms`:""}`}}function N(t,e){let n=_(t.t,e).padStart(8),s=t.context.padEnd(6),a=`[${t.kind}]`.padEnd(15),o="",l=t.data;return l&&typeof l=="object"&&(o=j(t.kind,l)),` ${n} ${s} ${a} ${o}`}function T(t){let e=[],n={label:"initial state",events:[],startedAt:t[0]?.t??null};e.push(n);for(let s of t)if(n.events.push(s),s.kind==="screen"||s.kind==="route"){let a=s.data,o=a?.phase;if(!o||o==="enter"||o==="appear"||o==="active"){let l=a?.name||a?.activeName||a?.path||a?.pathname||s.kind;e.length===1&&n.events.length===1?n.label=`${s.kind}: ${l}`:(n={label:`${s.kind}: ${l}`,events:[],startedAt:s.t},e.push(n))}}return e}async function O(t,e){let n=b(t,{port:e.port,stripBooleanFlags:["--summary","--all","--json","--no-advance","--help","-h","--flow"],stripValueFlags:["--since","--kinds","--limit"]});(t.includes("--help")||t.includes("-h"))&&(console.log(`
3
3
  sootsim what-happened \u2014 show recent events from the semantic timeline
4
4
 
5
5
  usage:
@@ -1,2 +1,2 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{d as i}from"./chunk-4NPUTEDF.js";import{d as n}from"./chunk-QOOTU75R.js";import"./chunk-PXUQ5FQN.js";import"./chunk-26LJCQNQ.js";async function u(){let o=i();if(o||(console.log(" not signed in"),console.log(" set SOOTSIM_API_KEY=sk_sootsim_\u2026 or run `sootsim login`"),process.exit(1)),o.kind==="api-key"){let r=`${o.secret.slice(0,14)}\u2026`,t=o.source==="env"?"SOOTSIM_API_KEY env var":"saved key (~/.config/sootsim/credentials.json)";console.log(` api key ${r}`),console.log(` source: ${t}`);return}if(o.kind==="github"){console.log(` github token (${o.source})`),console.log(` repo: ${o.repoId}`);return}let e=await n(),s=e?.user;console.log(` ${s?.email||s?.name||s?.id||"signed in"}`),console.log(` origin: ${e?.origin??o.origin}`),e?.updatedAt&&console.log(` updated: ${e.updatedAt}`)}export{u as runWhoami};
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{d as i}from"./chunk-CBMFBTB3.js";import{d as n}from"./chunk-R2VBXQYS.js";import"./chunk-PNEIZ2DY.js";import"./chunk-2WW7WJHA.js";async function u(){let o=i();if(o||(console.log(" not signed in"),console.log(" set SOOTSIM_API_KEY=sk_sootsim_\u2026 or run `sootsim login`"),process.exit(1)),o.kind==="api-key"){let r=`${o.secret.slice(0,14)}\u2026`,t=o.source==="env"?"SOOTSIM_API_KEY env var":"saved key (~/.config/sootsim/credentials.json)";console.log(` api key ${r}`),console.log(` source: ${t}`);return}if(o.kind==="github"){console.log(` github token (${o.source})`),console.log(` repo: ${o.repoId}`);return}let e=await n(),s=e?.user;console.log(` ${s?.email||s?.name||s?.id||"signed in"}`),console.log(` origin: ${e?.origin??o.origin}`),e?.updatedAt&&console.log(` updated: ${e.updatedAt}`)}export{u as runWhoami};
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
package/dist-lib/vite.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.45 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sootsim",
3
- "version": "0.1.43",
3
+ "version": "0.1.45",
4
4
  "description": "sootsim CLI + vite/metro plugins + skills registry. bridge client for driving the proprietary sootsim-engine over WebSocket.",
5
5
  "author": "Tamagui LLC",
6
6
  "license": "MIT",
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c,d}from"./chunk-5A4JEYK2.js";import"./chunk-MFLW2R4J.js";import"./chunk-A2NHH4S4.js";import"./chunk-L6EBBORR.js";import"./chunk-PXUQ5FQN.js";import"./chunk-26LJCQNQ.js";export{c as ensureDaemonRunning,a as ensureRuntimeInstalled,d as ensureSootsimReady,b as resolveBootstrapPort};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c,d,e}from"./chunk-MK6M3NP4.js";import"./chunk-26LJCQNQ.js";export{e as BETA_ASK_HEADLINE,c as BETA_LABEL,d as BETA_TAGLINE,b as BETA_VERSION_TARGET,a as IS_BETA};
@@ -1 +0,0 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- var t="http://localhost:5173/";export{t as a};
@@ -1 +0,0 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
@@ -1 +0,0 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
@@ -1 +0,0 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.43 | (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}from"./chunk-XWVTLGO2.js";import"./chunk-YSSNIJC6.js";import"./chunk-X3ZHRSH4.js";import"./chunk-HFRDF5SI.js";import"./chunk-JA2UNVA3.js";import"./chunk-OTTV2PFN.js";import"./chunk-WWTI3E3U.js";import"./chunk-LTUGPDW5.js";import"./chunk-KFTTDAPI.js";import"./chunk-MFLW2R4J.js";import"./chunk-A2NHH4S4.js";import"./chunk-L6EBBORR.js";import"./chunk-PXUQ5FQN.js";import"./chunk-26LJCQNQ.js";export{d as buildOpenUrl,c as buildShellUrl,f as printConnectedSims,a as resolveBundleTarget,b as resolveDefaultShellBaseUrl,l as runClaimCommand,m as runCloseCommand,k as runFocusCommand,h as runListCommand,i as runOpenCommand,j as runUseCommand,e as summarizeSimUrl,g as waitForSimMatch};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{c as I,e as N,i as S}from"./chunk-MFLW2R4J.js";import"./chunk-A2NHH4S4.js";import"./chunk-L6EBBORR.js";import"./chunk-PXUQ5FQN.js";import"./chunk-26LJCQNQ.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 t=Number(b(o,"--duration")??"5");if(!Number.isFinite(t)||t<=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 s=Number(b(o,"--max-buffer")??"100000");if(!Number.isFinite(s)||s<=0)return console.error(" --max-buffer must be a positive number"),1;let p=b(o,"--output")??b(o,"-o"),u=w(process.cwd(),p??"/tmp/sootsim.cpuprofile"),g=u.endsWith(".gz"),h=I(o,{port:m.port,stripValueFlags:["--duration","--output","-o","--sample-interval","--max-buffer"]}),c=N({...h,commandTimeoutMs:Math.max(3e4,(t+20)*1e3)});try{let l=await S(c,"SootSim.bridges.workerCpuProfileStart",{sampleInterval:a,maxBufferSize:s});if(!l?.started)return console.error(" could not start tenant-worker profiler."),console.error(" is sootsim running? (try `bun sootsim list`)"),1;m.verbose&&console.error(` started: sampleInterval=${l.sampleInterval}ms buffer=${l.maxBufferSize}`),console.log(` recording for ${t}s\u2026`),await new Promise(r=>setTimeout(r,t*1e3));let n=await S(c,"SootSim.bridges.workerCpuProfileStop");if(!n||n.error||!n.trace)return n?.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(` profile capture failed: ${n?.error??"no trace returned"}`),1;let P=B(n.trace),e=JSON.stringify(P);v(T(u),{recursive:!0}),g?await y(F.from([e]),x(),k(u)):C(u,e);let i=(Buffer.byteLength(e)/1024/1024).toFixed(2);return console.log(` samples: ${P.samples.length} (${i} MB uncompressed)`),console.log(` saved: ${u}`),console.log(" open in chrome devtools \u2192 Performance \u2192 Load profile to inspect."),0}catch(l){let n=l?.message??String(l);return console.error(` profile failed: ${n}`),/could not connect|ECONNREFUSED/i.test(n)&&console.error(" is sootsim running? (try `bun sootsim list`)"),1}finally{c.close()}}function B(o){let m=o.frames??[],t=o.resources??[],a=o.stacks??[],s=o.samples??[],p=1,u=[{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?t[r.resource]??"":"";u.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=u[f-1];d&&!d.children.includes(r)&&d.children.push(r)}let g=[],h=[],c=s.length>0?s[0].timestamp:0,l=c;for(let e=0;e<s.length;e++){let i=s[e],r=i.stackId!==void 0?i.stackId+2:p;g.push(r);let f=u[r-1];f&&f.hitCount++;let d=e===0?0:i.timestamp-l;h.push(Math.max(0,Math.round(d*1e3))),l=i.timestamp}let n=Math.round(c*1e3),P=s.length>0?Math.round(s[s.length-1].timestamp*1e3):n;return{nodes:u,startTime:n,endTime:P,samples:g,timeDeltas:h}}function b(o,m){let t=o.indexOf(m);if(!(t<0||t===o.length-1))return o[t+1]}export{U as runCpuProfile};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a}from"./chunk-BAHIX7JY.js";import"./chunk-26LJCQNQ.js";export{a as APPS};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import"./chunk-HKZEU76U.js";import{a,b,c,d,e,f,g,h,i}from"./chunk-HFRDF5SI.js";import"./chunk-JA2UNVA3.js";import"./chunk-OTTV2PFN.js";import"./chunk-WWTI3E3U.js";import"./chunk-LTUGPDW5.js";import"./chunk-PXUQ5FQN.js";import"./chunk-26LJCQNQ.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,2 +0,0 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c,d}from"./chunk-UBJJEZO4.js";import"./chunk-XXJAHIR4.js";import"./chunk-EW7G6TZV.js";import"./chunk-SIH4PE3C.js";import"./chunk-IFJMJS4Y.js";import"./chunk-QD23HPD4.js";import"./chunk-XWVTLGO2.js";import"./chunk-YSSNIJC6.js";import"./chunk-X3ZHRSH4.js";import"./chunk-HFRDF5SI.js";import"./chunk-JA2UNVA3.js";import"./chunk-OTTV2PFN.js";import"./chunk-BAHIX7JY.js";import"./chunk-JJGG2ICF.js";import"./chunk-4NPUTEDF.js";import"./chunk-WWTI3E3U.js";import"./chunk-LTUGPDW5.js";import"./chunk-RHH6P5Z7.js";import"./chunk-KFTTDAPI.js";import"./chunk-3VULRGJO.js";import"./chunk-OK3YCEYK.js";import"./chunk-MFLW2R4J.js";import"./chunk-A2NHH4S4.js";import"./chunk-IBKI7UPZ.js";import"./chunk-QOOTU75R.js";import"./chunk-L6EBBORR.js";import"./chunk-PXUQ5FQN.js";import"./chunk-26LJCQNQ.js";export{b as discoverSootsimUrl,a as parseFlowFile,d as runFlow,c as runFlowPlayback};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a as o}from"./chunk-MHETWJAQ.js";import"./chunk-4D2BRAPP.js";import"./chunk-5A4JEYK2.js";import"./chunk-MFLW2R4J.js";import"./chunk-A2NHH4S4.js";import"./chunk-IBKI7UPZ.js";import"./chunk-QOOTU75R.js";import"./chunk-L6EBBORR.js";import"./chunk-PXUQ5FQN.js";import"./chunk-26LJCQNQ.js";async function t(n){console.error(" note: `sootsim install` is now `sootsim setup-repo`. forwarding\u2026\n"),await o(n)}export{t as runInstall};
@@ -1,15 +0,0 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a as C}from"./chunk-IFJMJS4Y.js";import"./chunk-JJGG2ICF.js";import{d as L}from"./chunk-4NPUTEDF.js";import"./chunk-WWTI3E3U.js";import{d as D}from"./chunk-LTUGPDW5.js";import{c as v,e as b}from"./chunk-MFLW2R4J.js";import{b as J}from"./chunk-A2NHH4S4.js";import"./chunk-IBKI7UPZ.js";import"./chunk-QOOTU75R.js";import"./chunk-L6EBBORR.js";import"./chunk-PXUQ5FQN.js";import"./chunk-26LJCQNQ.js";import{existsSync as ae,mkdirSync as k,readdirSync as de,readFileSync as ce,rmSync as T,writeFileSync as M}from"fs";import{tmpdir as le}from"os";import{dirname as N,extname as V,join as q,resolve as O}from"path";var j=6e4,ue=new Set(["--sim","--port","-p","--mode","--duration","--fps","--format","--output","-o","--frames","--max-width","--origin"]),me=new Set(["start","stop","cancel","status"]);function fe(e){for(let r=0;r<e.length;r++){let o=e[r];if(o.startsWith("-")){ue.has(o)&&r++;continue}return me.has(o)?{name:o,index:r}:null}return null}async function Ue(e,r){let o=fe(e);if(o){let c=[...e.slice(0,o.index),...e.slice(o.index+1)];if(o.name==="start"){await ye(c,r);return}if(o.name==="stop"){await he(c,r);return}if(o.name==="cancel"){await Se(c,r);return}await ve(c,r);return}let i=v(e,{port:r.port,stripBooleanFlags:["--no-shell","--shell-only","--open"],stripValueFlags:["--mode","--duration","--fps","--format","--output","--frames","--max-width","--origin"]}),t=Q(l(e,"--mode")),n=e.includes("--shell-only")?"shell":e.includes("--no-shell")?"tenant":void 0,a=l(e,"--format");a&&!["webm","mp4","gif","png"].includes(a)&&(console.error(` invalid --format "${a}" \u2014 expected webm | mp4 | gif | png`),process.exit(1));let d=l(e,"--output"),s=Number(l(e,"--duration")??"10");(!Number.isFinite(s)||s<=0)&&(console.error(` invalid --duration "${l(e,"--duration")}" \u2014 expected a positive number of seconds`),process.exit(1));let u=Number(l(e,"--fps")??"30"),p=l(e,"--frames"),x=e.includes("--open"),z=l(e,"--max-width")?Number(l(e,"--max-width")):void 0,S=Math.max(100,Math.round(s*1e3)),ne=l(e,"--origin");if(t==="live"||t==="combined"){d&&console.log(` note: --output is ignored for --mode ${t} \u2014 the recording uploads to /preview/<id>`),await C("record",{originOverride:ne});let c=b({...i,commandTimeoutMs:6e4});try{await Y(c),await Z(c),await ee(c,t)||(console.error(` start failed: recording store refused to start (${t})`),process.exit(1)),console.log(` recording ${t} for ${s}s`),await new Promise(h=>setTimeout(h,S)),await oe(c);let _=await re(c);te(_,x,t)}finally{c.close()}return}let F=p?Number(p):null,$=we(a,d,F),g=b({...i,commandTimeoutMs:6e4});try{if(await K(g),$==="png"){let y=F??10,f=O(process.cwd(),d??`./sootsim-frames-${B()}`);d&&V(d)&&console.log(` note: --frames writes multiple pngs, so --output "${d}" is a directory \u2014 frame-NNN.png files land inside it`),k(f,{recursive:!0});for(let m of de(f))/^frame-\d+\.png$/.test(m)&&T(q(f,m),{force:!0});console.log(` sampling ${y} frames over ${s}s \u2192 ${f}`);let w=await g.send({type:"evaluate",code:`window.__sootsimRecorder.startFrameCapture({ count: ${y}, durationMs: ${S}${n?`, layers: ${JSON.stringify(n)}`:""} })`});(!w.ok||!w.requestId)&&(console.error(` frame capture start failed: ${w.error??"unknown error"}`),process.exit(1)),await new Promise(m=>setTimeout(m,S));let ie=Date.now()+Math.max(5e3,S),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()>=ie&&(console.error(" frame capture timed out"),process.exit(1)),await new Promise(E=>setTimeout(E,100))}I.forEach((m,E)=>{let se=`${f}/frame-${String(E+1).padStart(3,"0")}.png`;M(se,Buffer.from(m.data,"base64"))}),console.log(` saved ${I.length} frames`);return}if($==="gif"){let y=F??Math.max(10,Math.round(s*u/3)),f=O(process.cwd(),d??`./sootsim-${B()}.gif`);k(N(f),{recursive:!0}),console.log(` encoding gif: ${y} frames over ${s}s \u2192 ${f}`);let w=await g.send({type:"evaluate",code:`window.__sootsimRecorder.captureGif({ frames: ${y}, durationMs: ${S}${z?`, maxWidth: ${z}`:""}${n?`, layers: ${JSON.stringify(n)}`:""} })`});w||(console.error(" gif capture returned no frames"),process.exit(1)),M(f,Buffer.from(w.data,"base64")),console.log(` saved: ${f} (${P(w.size)})`);return}let c=O(process.cwd(),d??`./sootsim-${B()}.${$}`);k(N(c),{recursive:!0});let A={format:$,fps:u};n&&(A.layers=n);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 ${$} for ${s}s \u2192 ${c}`),await new Promise(y=>setTimeout(y,S));let h=await g.send({type:"evaluate",code:"window.__sootsimRecorder.stop()"});h.ok||(console.error(` stop failed: ${h.error??"unknown error"}`),process.exit(1)),h.size||(console.error(" recorder returned an empty blob \u2014 nothing written"),process.exit(1)),await H(g,c),console.log(` saved: ${c} (${P(h.size)})`)}finally{g.close()}}var pe=6e3;async function G(e,r){try{return await e.send({type:"evaluate",code:r},{timeoutMs:pe})}catch(o){let i=o instanceof Error?o.message:String(o);throw/^command timed out after \d+s$/.test(i)&&(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 K(e){await G(e,'typeof window.__sootsimRecorder !== "undefined"')||(console.error(" window.__sootsimRecorder missing \u2014 is sootsim engine running in this sim?"),process.exit(1))}async function H(e,r){let o=[],i=0;for(;;){let t=await e.send({type:"evaluate",code:`window.__sootsimRecorder.getBlobBase64({ offset: ${i}, chunk: 2097152 })`});if(!t)throw new Error("no blob available on recorder");if(o.push(Buffer.from(t.data,"base64")),i=t.offset,t.done)break}M(r,Buffer.concat(o))}function l(e,r){let o=e.indexOf(r);if(!(o<0||o===e.length-1))return e[o+1]}function ge(e){if(!e)return;let r=V(e).toLowerCase().replace(/^\./,"");if(r==="webm"||r==="mp4"||r==="gif")return r;if(r==="png")return"png"}function we(e,r,o){return e||(o!=null?"png":ge(r)??"webm")}function B(){return new Date().toISOString().replace(/[:T]/g,"-").replace(/\..+/,"")}function P(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/(1024*1024)).toFixed(2)}MB`}function Q(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 q(le(),`sootsim-recording-${J()}.json`)}function U(){let e=W();if(!ae(e))return null;try{return{mode:"video",...JSON.parse(ce(e,"utf8"))}}catch{return T(e,{force:!0}),null}}function be(e){M(W(),JSON.stringify(e,null,2))}function R(){T(W(),{force:!0})}async function ye(e,r){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 i=v(e,{port:r.port,stripBooleanFlags:["--no-shell","--shell-only"],stripValueFlags:["--mode","--fps","--format","--max-width","--origin"]}),t=Q(l(e,"--mode")),n=e.includes("--shell-only")?"shell":e.includes("--no-shell")?"tenant":void 0,a=l(e,"--format"),d=a==="mp4"?"mp4":"webm";a&&d!==a&&(console.error(` record start only supports webm or mp4 (got: ${a}). for gif/png use atomic mode: sootsim record --format ${a} --duration <s>`),process.exit(1));let s=Number(l(e,"--fps")??"30"),u=b({...i,commandTimeoutMs:15e3});try{if(t==="live"||t==="combined")await C("record",{originOverride:l(e,"--origin")}),await Y(u),await Z(u),await ee(u,t)||(console.error(` start failed: recording store refused to start (${t})`),process.exit(1));else{await K(u);let p={format:d,fps:s};n&&(p.layers=n);let x=await u.send({type:"evaluate",code:`window.__sootsimRecorder.start(${JSON.stringify(p)})`});x.ok||(console.error(` start failed: ${x.error??"unknown error"}`),process.exit(1))}be({simId:i.simId??null,mode:t,format:d,fps:s,layers:n,startedAt:new Date().toISOString()}),console.log(t==="video"?` recording ${d} @ ${s}fps${n?` (${n})`:""} \u2014 run \`sootsim record stop --output <path>\` when done`:` recording ${t} \u2014 run \`sootsim record stop\` when done (add --open to launch the preview URL)`)}finally{u.close()}}async function X(e){try{let r=await e.send({type:"evaluate",code:`(() => {
3
- const store = window.SootSim?.bridges?.getRecordingState?.();
4
- const headless = window.__sootsimRecorder?.state?.();
5
- return { store: store ? store.state : undefined, headless };
6
- })()`});return r?r.store==="recording"||r.headless==="recording"?"recording":r.store==="processing"?"processing":r.store==="idle"||r.headless==="idle"?"idle":null:null}catch{return null}}async function ve(e,r){let o=U();if(o){o.mode==="video"?console.log(` recording ${o.mode} (${o.format} @ ${o.fps}fps) on sim ${o.simId??"?"} since ${o.startedAt}`):console.log(` recording ${o.mode} on sim ${o.simId??"?"} since ${o.startedAt}`);return}let i=v(e,{port:r.port}),t=b({...i,commandTimeoutMs:8e3});try{let n=await X(t);console.log(n==="recording"||n==="processing"?` a recording is in progress (engine state: ${n}), but not via
7
- \`record start\` \u2014 likely an atomic \`record --duration\` run or the
8
- in-browser record button. it will finish and upload on its own.
9
- \`record stop\` / \`record cancel\` only manage \`record start\` sessions.`:" no recording in progress")}finally{t.close()}}async function Se(e,r){let o=U();if(!o){let a=v(e,{port:r.port}),d=b({...a,commandTimeoutMs:8e3});try{let s=await X(d);console.log(s==="recording"||s==="processing"?" a recording is in progress, but not via `record start` \u2014 it was\n started by an atomic `record --duration` run or the in-browser\n record button, which own their own lifecycle. it cannot be\n cancelled from here; it will finish on its own.":" no recording in progress")}finally{d.close()}return}let i=v(e,{port:r.port}),t=i.simId??o.simId??void 0,n=b({...i,simId:t,commandTimeoutMs:15e3});try{o.mode==="live"||o.mode==="combined"?await n.send({type:"evaluate",code:"void window.SootSim?.bridges?.cancelRecording?.()"}):await n.send({type:"evaluate",code:"window.__sootsimRecorder.stop()"})}catch{}finally{R(),n.close()}console.log(" recording cancelled")}async function he(e,r){let o=U();o||(console.error(" no recording in progress. start one with `sootsim record start`."),process.exit(1));let i=v(e,{port:r.port,stripBooleanFlags:["--open"],stripValueFlags:["--output"]}),t=i.simId??o.simId??void 0,n=e.includes("--open"),a=b({...i,simId:t,commandTimeoutMs:6e4});try{if(o.mode==="live"||o.mode==="combined"){await oe(a);let p=await re(a);R(),te(p,n,o.mode);return}let d=l(e,"--output"),s=O(process.cwd(),d??`./sootsim-${B()}.${o.format}`);k(N(s),{recursive:!0});let u=await a.send({type:"evaluate",code:"window.__sootsimRecorder.stop()"});u.ok||(console.error(` stop failed: ${u.error??"unknown error"}`),R(),process.exit(1)),u.size||(console.error(" recorder returned an empty blob \u2014 nothing written"),R(),process.exit(1)),await H(a,s),R(),console.log(` saved: ${s} (${P(u.size)})`)}finally{a.close()}}async function Y(e){await G(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 Z(e){let r=L();if(!r)return;let o=r.kind==="api-key"?r.secret:r.token;await e.send({type:"evaluate",code:`(() => {
10
- const set = window.SootSim && window.SootSim.bridges && window.SootSim.bridges.setSession
11
- if (typeof set !== 'function') return false
12
- set({ token: ${JSON.stringify(o)}, user: null })
13
- return true
14
- })()`})||(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 ee(e,r){return await e.send({type:"evaluate",code:`window.SootSim.bridges.startRecording(${JSON.stringify(r)})`})===!0}async function oe(e){await e.send({type:"evaluate",code:"void window.SootSim.bridges.stopRecording()"})}async function re(e){let r=Date.now()+j;for(;Date.now()<r;){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,eventCount:o.lastUpload.eventCount}}await new Promise(i=>setTimeout(i,300))}return{uploadError:`upload did not settle within ${j/1e3}s`}}function te(e,r,o){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}`),o==="live"&&e.eventCount===0&&console.log(` note: this live recording captured no events \u2014 the preview has nothing
15
- to replay and will boot a fresh interactive session instead.`),r&&D(e.previewUrl)}export{ge as extToFormat,we as resolveFormat,Ue as runRecord,l as valueOf};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a}from"./chunk-CPYDJJTX.js";import"./chunk-MFLW2R4J.js";import"./chunk-A2NHH4S4.js";import"./chunk-V527VARZ.js";import"./chunk-L6EBBORR.js";import"./chunk-PXUQ5FQN.js";import"./chunk-26LJCQNQ.js";export{a as runRuntime};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a}from"./chunk-MHETWJAQ.js";import"./chunk-4D2BRAPP.js";import"./chunk-5A4JEYK2.js";import"./chunk-MFLW2R4J.js";import"./chunk-A2NHH4S4.js";import"./chunk-IBKI7UPZ.js";import"./chunk-QOOTU75R.js";import"./chunk-L6EBBORR.js";import"./chunk-PXUQ5FQN.js";import"./chunk-26LJCQNQ.js";export{a as runSetupRepo};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a}from"./chunk-3VULRGJO.js";import"./chunk-OK3YCEYK.js";import"./chunk-26LJCQNQ.js";export{a as settingsStore};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b}from"./chunk-IBKI7UPZ.js";import"./chunk-QOOTU75R.js";import"./chunk-PXUQ5FQN.js";import"./chunk-26LJCQNQ.js";export{b as flushCliTelemetry,a as trackCliEvent};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.43 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c}from"./chunk-JJGG2ICF.js";import"./chunk-4NPUTEDF.js";import"./chunk-WWTI3E3U.js";import"./chunk-LTUGPDW5.js";import"./chunk-MFLW2R4J.js";import"./chunk-A2NHH4S4.js";import"./chunk-IBKI7UPZ.js";import"./chunk-QOOTU75R.js";import"./chunk-L6EBBORR.js";import"./chunk-PXUQ5FQN.js";import"./chunk-26LJCQNQ.js";export{a as resolveDefaultUploadOrigin,b as resolvePublicPreviewOrigin,c as runUpload};