sootsim 0.1.274 → 0.1.276

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 (143) hide show
  1. package/dist-cli/bin.js +4 -4
  2. package/dist-cli/chunks/{agent-SP2IDNK3.js → agent-RAELE5TZ.js} +2 -2
  3. package/dist-cli/chunks/{agent-wrapper-HENTSNUE.js → agent-wrapper-KRWIZKMW.js} +2 -2
  4. package/dist-cli/chunks/{app-fonts-WBECQ2EZ.js → app-fonts-VEY2BVN5.js} +2 -2
  5. package/dist-cli/chunks/{assert-WYWHND2A.js → assert-HD2EXPUZ.js} +2 -2
  6. package/dist-cli/chunks/{auth-E35CVJU7.js → auth-ZAVWJYZM.js} +2 -2
  7. package/dist-cli/chunks/beta-CG2ZGM5U.js +2 -0
  8. package/dist-cli/chunks/{camera-F2VZVVXR.js → camera-R7UHFQUT.js} +2 -2
  9. package/dist-cli/chunks/{chunk-7TXMXDJ2.js → chunk-2ETQKNV4.js} +1 -1
  10. package/dist-cli/chunks/{chunk-L2GEJDHZ.js → chunk-2GCDUSVS.js} +2 -2
  11. package/dist-cli/chunks/{chunk-WZMS7IWF.js → chunk-6LBOVFQU.js} +2 -2
  12. package/dist-cli/chunks/{chunk-OFFUC2RN.js → chunk-7Y7P6WMH.js} +2 -2
  13. package/dist-cli/chunks/{chunk-MBKNWJ7A.js → chunk-ABZUI7QS.js} +2 -2
  14. package/dist-cli/chunks/{chunk-TUQ2MLNE.js → chunk-CBKFJFPO.js} +1 -1
  15. package/dist-cli/chunks/{chunk-R3RWCHTI.js → chunk-E2DC3YKM.js} +1 -1
  16. package/dist-cli/chunks/{chunk-WY54NKD3.js → chunk-EORIWLQB.js} +2 -2
  17. package/dist-cli/chunks/chunk-EZECGPHY.js +105 -0
  18. package/dist-cli/chunks/{chunk-FIF4VGJQ.js → chunk-F25XSUJT.js} +2 -2
  19. package/dist-cli/chunks/{chunk-HXB72OSS.js → chunk-GD2UJ4TP.js} +3 -3
  20. package/dist-cli/chunks/{chunk-L6QRHE42.js → chunk-GEPFPSAX.js} +3 -3
  21. package/dist-cli/chunks/{chunk-6NURRM7A.js → chunk-HBTJOIZL.js} +2 -2
  22. package/dist-cli/chunks/{chunk-MRPAMQ5L.js → chunk-HJRCNPTN.js} +2 -2
  23. package/dist-cli/chunks/{chunk-QPSTRUBX.js → chunk-ICZP3M2L.js} +2 -2
  24. package/dist-cli/chunks/{chunk-LEM5AZSM.js → chunk-JDKOSL6H.js} +1 -1
  25. package/dist-cli/chunks/{chunk-7GSQVLU3.js → chunk-JIV7WORK.js} +2 -2
  26. package/dist-cli/chunks/{chunk-FIDZ4L7T.js → chunk-L5CFA4HR.js} +37 -37
  27. package/dist-cli/chunks/{chunk-JXEHP3A7.js → chunk-NER6TUN4.js} +1 -1
  28. package/dist-cli/chunks/chunk-OHERA54U.js +3 -0
  29. package/dist-cli/chunks/{chunk-OSWJRU2A.js → chunk-OLMN2GHX.js} +1 -1
  30. package/dist-cli/chunks/{chunk-CJ6GJTYB.js → chunk-OXNFCTZ6.js} +1 -1
  31. package/dist-cli/chunks/{chunk-DMQV5GMM.js → chunk-OZHD4X6Q.js} +2 -2
  32. package/dist-cli/chunks/{chunk-GRWG6LIS.js → chunk-P5BV3QAM.js} +2 -2
  33. package/dist-cli/chunks/{chunk-PMP3DTAI.js → chunk-PGJCWB2V.js} +1 -1
  34. package/dist-cli/chunks/{chunk-DNX4UAKZ.js → chunk-PQO27576.js} +1 -1
  35. package/dist-cli/chunks/{chunk-3Y24AVG3.js → chunk-QEQ67G3J.js} +2 -2
  36. package/dist-cli/chunks/{chunk-C2333EA4.js → chunk-QWGA52NX.js} +2 -2
  37. package/dist-cli/chunks/{chunk-VHJIZG4X.js → chunk-RIJHEW47.js} +2 -2
  38. package/dist-cli/chunks/{chunk-FPRVB576.js → chunk-RYQJHPDW.js} +1 -1
  39. package/dist-cli/chunks/{chunk-THEG5IYF.js → chunk-S4QRFVHK.js} +1 -1
  40. package/dist-cli/chunks/{chunk-UMC7L3M5.js → chunk-TDMIZDJH.js} +1 -1
  41. package/dist-cli/chunks/{chunk-IUAQ4QCN.js → chunk-TRCVKKJV.js} +2 -2
  42. package/dist-cli/chunks/{chunk-MVUUNF4D.js → chunk-UKIH77PO.js} +1 -1
  43. package/dist-cli/chunks/{chunk-CKRGQNNG.js → chunk-UO6WYITC.js} +2 -2
  44. package/dist-cli/chunks/{chunk-JEHRDCRK.js → chunk-VJEV42CS.js} +1 -1
  45. package/dist-cli/chunks/{chunk-QKGEDIT7.js → chunk-WXM7V4QG.js} +1 -1
  46. package/dist-cli/chunks/{chunk-LOQKCRYG.js → chunk-XJQHO2S3.js} +1 -1
  47. package/dist-cli/chunks/chunk-XWA3QJHM.js +1 -0
  48. package/dist-cli/chunks/{chunk-H2TR6GOZ.js → chunk-YDWU5JGQ.js} +1 -1
  49. package/dist-cli/chunks/{chunk-Z3UMX3ES.js → chunk-YKB4PERM.js} +3 -3
  50. package/dist-cli/chunks/{chunk-QZDFPHFP.js → chunk-YWLMNNUX.js} +1 -1
  51. package/dist-cli/chunks/{chunk-NJCPGGEI.js → chunk-ZGAQ4YP2.js} +2 -2
  52. package/dist-cli/chunks/{chunk-UMKOBO3D.js → chunk-ZLY4RFOK.js} +2 -2
  53. package/dist-cli/chunks/cli-version-ITHARKQX.js +2 -0
  54. package/dist-cli/chunks/{compat-6BWZSXO2.js → compat-PJZ2MKYA.js} +3 -3
  55. package/dist-cli/chunks/{config-ALQ3XICK.js → config-HBLTVMGG.js} +2 -2
  56. package/dist-cli/chunks/{control-LKKK6POM.js → control-VSBI7EV5.js} +2 -2
  57. package/dist-cli/chunks/daemon-XBG3JVMV.js +2 -0
  58. package/dist-cli/chunks/{debug-UW2CYUZV.js → debug-X6MTBOW6.js} +3 -3
  59. package/dist-cli/chunks/{desktop-OVDRE6S6.js → desktop-OD334RRJ.js} +3 -3
  60. package/dist-cli/chunks/{detox-ECZVK6PR.js → detox-VO4Y4TZT.js} +2 -2
  61. package/dist-cli/chunks/{device-NGOMSILD.js → device-POBZXX36.js} +2 -2
  62. package/dist-cli/chunks/{diagnose-GHK6MRNR.js → diagnose-RG4DNSJH.js} +2 -2
  63. package/dist-cli/chunks/drivers-CFKAYGVB.js +2 -0
  64. package/dist-cli/chunks/{film-VS2A3IX4.js → film-EEZ7JYCH.js} +3 -3
  65. package/dist-cli/chunks/flow-CBGYY2BU.js +2 -0
  66. package/dist-cli/chunks/help-IIN4OPJP.js +2 -0
  67. package/dist-cli/chunks/{hidden-runtime-alias-UQ5ZKE3I.js → hidden-runtime-alias-PSZERNEQ.js} +2 -2
  68. package/dist-cli/chunks/{home-paths-Z35ISOAG.js → home-paths-WYWJBN76.js} +2 -2
  69. package/dist-cli/chunks/inspect-A2K6PWQD.js +2 -0
  70. package/dist-cli/chunks/install-desktop-MUTTJ4Q3.js +2 -0
  71. package/dist-cli/chunks/{login-G2EXBMDC.js → login-4GZCGFO2.js} +4 -4
  72. package/dist-cli/chunks/{logout-S44PJUTK.js → logout-TBV4TM3J.js} +2 -2
  73. package/dist-cli/chunks/{maestro-RG4FSUYB.js → maestro-EV2ODFPS.js} +3 -3
  74. package/dist-cli/chunks/{maestro-generate-6GVTSEPX.js → maestro-generate-63NOYKMO.js} +3 -3
  75. package/dist-cli/chunks/{mode-7DATSPWV.js → mode-HJQKDZ7B.js} +2 -2
  76. package/dist-cli/chunks/optional-demo-registry-ABGMHWRG.js +2 -0
  77. package/dist-cli/chunks/{perf-BB3LPJZ3.js → perf-G4VVBRKR.js} +2 -2
  78. package/dist-cli/chunks/{record-7GVPZEJ2.js → record-WG2DQJ6R.js} +3 -3
  79. package/dist-cli/chunks/runtime-6QRYIWT5.js +2 -0
  80. package/dist-cli/chunks/{screenshot-command-QLKJO7M5.js → screenshot-command-UKF4PJZH.js} +3 -3
  81. package/dist-cli/chunks/{screenshots-capture-2ETYLZHU.js → screenshots-capture-KYRY5KBQ.js} +2 -2
  82. package/dist-cli/chunks/{serve-A2C5JGRI.js → serve-TOAVNB2L.js} +2 -2
  83. package/dist-cli/chunks/{setup-UKGMCHYN.js → setup-7EXPBGBK.js} +3 -3
  84. package/dist-cli/chunks/{skills-Y47YKPFD.js → skills-5NA6SOSL.js} +2 -2
  85. package/dist-cli/chunks/{storage-QMCQTD5O.js → storage-DA56E2TD.js} +2 -2
  86. package/dist-cli/chunks/store-OSBVI7NZ.js +2 -0
  87. package/dist-cli/chunks/telemetry-PHVNG3BD.js +2 -0
  88. package/dist-cli/chunks/{timeline-4MGE7I7C.js → timeline-TVLJIWWM.js} +2 -2
  89. package/dist-cli/chunks/{upgrade-GAJLZNIL.js → upgrade-2MFUXAXX.js} +2 -2
  90. package/dist-cli/chunks/upload-ENBO3NJF.js +2 -0
  91. package/dist-cli/chunks/{version-L7M7G6VK.js → version-FJ46CD5W.js} +2 -2
  92. package/dist-cli/chunks/{web-47UBIUQN.js → web-OZBUVPLL.js} +2 -2
  93. package/dist-cli/chunks/{what-happened-77MDGLU6.js → what-happened-X6UC5ESR.js} +2 -2
  94. package/dist-lib/agent-daemon-client.cjs +1 -1
  95. package/dist-lib/agent-events.cjs +1 -1
  96. package/dist-lib/agent-identity.cjs +1 -1
  97. package/dist-lib/agent-sessions.cjs +1 -1
  98. package/dist-lib/attached-projects.cjs +1 -1
  99. package/dist-lib/auth/shared-session.cjs +1 -1
  100. package/dist-lib/backend-origin.cjs +1 -1
  101. package/dist-lib/beta.cjs +1 -1
  102. package/dist-lib/beta.mjs +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/detox/index.cjs +1 -1
  107. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  108. package/dist-lib/home-paths.cjs +1 -1
  109. package/dist-lib/host/bridge-host.cjs +1 -1
  110. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  111. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  112. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  113. package/dist-lib/host/websocket-proxy.cjs +1 -1
  114. package/dist-lib/index.cjs +1 -1
  115. package/dist-lib/jump-to-source-babel.cjs +1 -1
  116. package/dist-lib/menu.cjs +1 -1
  117. package/dist-lib/menu.mjs +1 -1
  118. package/dist-lib/metro.cjs +1 -1
  119. package/dist-lib/profiles.cjs +1 -1
  120. package/dist-lib/render-mode.cjs +1 -1
  121. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  122. package/dist-lib/sdk.cjs +1 -1
  123. package/dist-lib/sdk.mjs +1 -1
  124. package/dist-lib/skills.cjs +1 -1
  125. package/dist-lib/vite.cjs +1 -1
  126. package/package.json +1 -1
  127. package/skills/sootsim-perf/SKILL.md +35 -0
  128. package/dist-cli/chunks/beta-VEDB5GJL.js +0 -2
  129. package/dist-cli/chunks/chunk-7YNWXKYB.js +0 -103
  130. package/dist-cli/chunks/chunk-HV6Q52AU.js +0 -3
  131. package/dist-cli/chunks/chunk-XUJD4ISB.js +0 -1
  132. package/dist-cli/chunks/cli-version-VVHXBGLH.js +0 -2
  133. package/dist-cli/chunks/daemon-SFPSHCZR.js +0 -2
  134. package/dist-cli/chunks/drivers-KFWTZIPO.js +0 -2
  135. package/dist-cli/chunks/flow-4PKUMGBJ.js +0 -2
  136. package/dist-cli/chunks/help-5WC5TRXH.js +0 -2
  137. package/dist-cli/chunks/inspect-V36VCI64.js +0 -2
  138. package/dist-cli/chunks/install-desktop-IMGSNS4F.js +0 -2
  139. package/dist-cli/chunks/optional-demo-registry-IWDV37HI.js +0 -2
  140. package/dist-cli/chunks/runtime-MDHCEARQ.js +0 -2
  141. package/dist-cli/chunks/store-IYLZAEQR.js +0 -2
  142. package/dist-cli/chunks/telemetry-GA3I3ZUS.js +0 -2
  143. package/dist-cli/chunks/upload-BP7QWZ5F.js +0 -2
@@ -1,5 +1,5 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{C as N,D as F,F as y,Q as T,R as b,S}from"./chunk-FPRVB576.js";import{g as A,i as _}from"./chunk-CKRGQNNG.js";import"./chunk-UMC7L3M5.js";import{c as k}from"./chunk-7TXMXDJ2.js";import"./chunk-QKGEDIT7.js";import"./chunk-PMP3DTAI.js";function O(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--since"&&e+1<n.length){t.push(e,e+1);let s=n[e+1].trim(),l=/^(\d+(?:\.\d+)?)(ms|s|m)?$/.exec(s);if(l){let r=Number(l[1]),u=l[2]??"ms",v=u==="s"?r*1e3:u==="m"?r*6e4:r;return{since:Date.now()-v,consumed:t}}let i=Number(s);if(Number.isFinite(i)&&i>1e12)return{since:i,consumed:t}}return{consumed:t}}function B(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--kinds"&&e+1<n.length)return t.push(e,e+1),{kinds:n[e+1].split(",").map(s=>s.trim()).filter(Boolean),consumed:t};return{consumed:t}}function D(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--limit"&&e+1<n.length){t.push(e,e+1);let s=Number(n[e+1]);if(Number.isFinite(s)&&s>0)return{limit:s,consumed:t}}return{consumed:t}}function x(n){let t=[],e={label:"initial state",events:[],startedAt:n[0]?.t??null};t.push(e);for(let s of n)if(e.events.push(s),s.kind==="screen"||s.kind==="route"){let l=s.data,i=l?.phase;if(!i||i==="enter"||i==="appear"||i==="active"){let r=l?.name||l?.activeName||l?.path||l?.pathname||s.kind;t.length===1&&e.events.length===1?e.label=`${s.kind}: ${r}`:(e={label:`${s.kind}: ${r}`,events:[],startedAt:s.t},t.push(e))}}return t}async function J(n,t){let e=A(n,{port:t.port,stripBooleanFlags:["--summary","--all","--json","--no-advance","--help","-h","--flow","--noisy"],stripValueFlags:["--since","--kinds","--limit"]});(n.includes("--help")||n.includes("-h"))&&(console.log(`
1
+ /*! sootsim v0.1.276 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{C as N,D as F,F as y,Q as T,R as b,S}from"./chunk-RYQJHPDW.js";import{g as A,i as _}from"./chunk-UO6WYITC.js";import"./chunk-TDMIZDJH.js";import{c as k}from"./chunk-2ETQKNV4.js";import"./chunk-WXM7V4QG.js";import"./chunk-PGJCWB2V.js";function O(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--since"&&e+1<n.length){t.push(e,e+1);let s=n[e+1].trim(),l=/^(\d+(?:\.\d+)?)(ms|s|m)?$/.exec(s);if(l){let r=Number(l[1]),u=l[2]??"ms",v=u==="s"?r*1e3:u==="m"?r*6e4:r;return{since:Date.now()-v,consumed:t}}let i=Number(s);if(Number.isFinite(i)&&i>1e12)return{since:i,consumed:t}}return{consumed:t}}function B(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--kinds"&&e+1<n.length)return t.push(e,e+1),{kinds:n[e+1].split(",").map(s=>s.trim()).filter(Boolean),consumed:t};return{consumed:t}}function D(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--limit"&&e+1<n.length){t.push(e,e+1);let s=Number(n[e+1]);if(Number.isFinite(s)&&s>0)return{limit:s,consumed:t}}return{consumed:t}}function x(n){let t=[],e={label:"initial state",events:[],startedAt:n[0]?.t??null};t.push(e);for(let s of n)if(e.events.push(s),s.kind==="screen"||s.kind==="route"){let l=s.data,i=l?.phase;if(!i||i==="enter"||i==="appear"||i==="active"){let r=l?.name||l?.activeName||l?.path||l?.pathname||s.kind;t.length===1&&e.events.length===1?e.label=`${s.kind}: ${r}`:(e={label:`${s.kind}: ${r}`,events:[],startedAt:s.t},t.push(e))}}return t}async function J(n,t){let e=A(n,{port:t.port,stripBooleanFlags:["--summary","--all","--json","--no-advance","--help","-h","--flow","--noisy"],stripValueFlags:["--since","--kinds","--limit"]});(n.includes("--help")||n.includes("-h"))&&(console.log(`
3
3
  sootsim what-happened \u2014 show recent events from the semantic timeline
4
4
 
5
5
  usage:
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/beta.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/beta.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/beta.ts
4
4
  var IS_BETA = true;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/host/fetch-proxy-overrides.ts
4
4
  var FETCH_PROXY_BROWSER_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/menu.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/menu.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/menu.ts
4
4
  var SOOTSIM_ENGINE_EVENT_NAME = "sootsim:engine-event";
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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/sdk.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/sdk.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // cli/commands/inspect/core.ts
4
4
  function resolveMaxMsFlag(args, fallbackMs) {
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.276 | (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.274",
3
+ "version": "0.1.276",
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",
@@ -78,6 +78,41 @@ frame progression. Collect worker paint, flush, delivery, and tier counters in
78
78
  a separate run with screen capture off. The two runs answer different questions
79
79
  without making the simulator measure its own recording overhead.
80
80
 
81
+ Open the sim with `?debug=framestamp` to make that video machine-readable.
82
+ Every surface paint then draws its `Date.now()` low 20 bits as a 23-cell
83
+ barcode — `home` and `app:*` at 45% of the surface height, `shell-overlay` on
84
+ its own row at 55% so overlay paints (keyboard, native UI) are attributable
85
+ separately — and the decoder reports, per presented frame, which paint it
86
+ shows and how late that paint presented:
87
+
88
+ ```sh
89
+ # sim opened with ?debug=framestamp
90
+ bun ~/screen/src/cli.ts run --window-id <id> --duration <seconds> \
91
+ --out <artifact.mov> -- <operating-system input command>
92
+ bun scripts/debug/decode-framestamp.ts <artifact.mov>
93
+ ```
94
+
95
+ This is the only way to separate a frame the compositor never produced from one
96
+ it produced and the browser never presented.
97
+
98
+ **Screen capture is not presentation-neutral, so the decoded timing expires.**
99
+ Starting a ScreenCaptureKit window capture flips the 120hz `OffscreenCanvas`
100
+ out of latest-wins presentation into sequential presentation, which falls behind
101
+ roughly 0.5ms for every 1ms of capture. A capture started mid-activity begins
102
+ near zero latency and climbs from there. A recording is therefore truthful about
103
+ content and trajectory for its whole length, and truthful about timing for
104
+ roughly its first 500ms; latency growth past that is the capture, not the
105
+ engine. Live uncaptured presentation stays latest-wins and current. Never report
106
+ a late-recording latency as an engine number, and never compare two recordings
107
+ of different lengths.
108
+
109
+ Worker counters and presentation are different claims, and a green counter never
110
+ licenses a smoothness claim. A capture can report a perfect 120hz worker cadence
111
+ for motion the user never sees move: the overscroll release shipped exactly that
112
+ way, with the compositor stepping on schedule while the presented frames showed
113
+ a clamped fling instead of the bounce spring. Counters prove a tier engaged;
114
+ only a framestamp decode of an out-of-process recording proves what presented.
115
+
81
116
  When an external transform control is smooth but the simulator is not, inspect
82
117
  every animation on the presented element. A separate Web Animation object does
83
118
  not isolate paint work: animating `box-shadow`, `filter`, or another paint-only
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c,d}from"./chunk-JXEHP3A7.js";import"./chunk-PMP3DTAI.js";export{d as BETA_ASK_HEADLINE,b as BETA_LABEL,c as BETA_TAGLINE,a as IS_BETA};
@@ -1,103 +0,0 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{g as E,i as O,l as K,m as v}from"./chunk-CKRGQNNG.js";import{createHash as Y}from"node:crypto";import{mkdirSync as L,readFileSync as W,readdirSync as Q,unlinkSync as X,writeFileSync as D}from"node:fs";import{dirname as q,extname as Z,resolve as R}from"node:path";function H(t){let e=t[0]?.toLowerCase()??"toggle";return e!=="on"&&e!=="off"&&e!=="toggle"&&(console.error(` unknown argument: "${e}" (expected on | off | toggle)`),process.exit(1)),e}async function U(t,e,o){let n=E(t,{port:e.port}),r=H(n.positional),u=O({...n,commandTimeoutMs:5e3});try{let s=!!(await K(u,"SootSim.bridges.settings.get"))?.[o.modeKey],p=r==="on"?!0:r==="off"?!1:!s;if(s===p)return console.log(` ${o.displayName}: already ${p?"on":"off"}`),{current:s,target:p,changed:!1};if(!await u.send({type:"evaluate",acquireLock:!0,code:`(async () => {
3
- const modeKey = ${JSON.stringify(o.modeKey)}
4
- const target = ${JSON.stringify(p)}
5
- window.dispatchEvent(new CustomEvent('sootsim:shell-command', {
6
- detail: { type: 'fire-action', id: ${JSON.stringify(o.actionId)} },
7
- }))
8
- const deadline = Date.now() + 1200
9
- while (Date.now() < deadline) {
10
- if (Boolean(window.SootSim?.bridges?.settings?.get?.()?.[modeKey]) === target) {
11
- return true
12
- }
13
- await new Promise((resolve) => setTimeout(resolve, 40))
14
- }
15
- return false
16
- })()`}))throw new Error(`${o.displayName} did not change to ${p?"on":"off"}; the live shell may not support this mode`);return console.log(` ${o.displayName}: ${s?"on":"off"} -> ${p?"on":"off"}`),{current:s,target:p,changed:!0}}finally{u.close()}}var z=12e3,ee=6e5,te=new Set(["load","seek","play","pause","render","measure"]);async function ye(t,e){(t.includes("--help")||t.includes("-h"))&&(console.log(`
17
- sootsim mode three \u2014 toggle the 3d device stage
18
-
19
- usage:
20
- sootsim mode three [on|off|toggle]
21
- sootsim mode three configure [options]
22
- sootsim mode three load <timeline.json>
23
- sootsim mode three seek <time-ms>
24
- sootsim mode three play|pause
25
- sootsim mode three render <timeline.json> --output <dir> [options]
26
- sootsim mode three measure <timeline.json> [options]
27
-
28
- arguments:
29
- on enable 3d mode
30
- off disable 3d mode
31
- toggle flip the current state (default)
32
-
33
- configure options:
34
- --background <id> set the 3d background
35
- --gradient <stops> custom gradient bg: comma-separated css hex stops,
36
- e.g. "#0a0e1a,#16243f,#05080f" (overrides --background;
37
- evenly spaced, or use "color@offset" for explicit %)
38
- --gradient-angle <deg> custom gradient angle (default 180 = top\u2192bottom)
39
- --colorway <id> set the phone colorway
40
- --script <id> apply a camera preset pose
41
- --progress <0..1> script progress to sample (default: 1)
42
- --animate run the script instead of sampling one frame
43
- --slow run the script slowly when --animate is set
44
- --environment on|off enable or disable environment objects
45
- --env-shape <id> orb | pill | diamond | pane
46
- --env-spread <id> tight | medium | wide
47
- --env-size <id> small | medium | large
48
- --env-color <id> peach | gold | mint | sky | violet
49
- --env-glow on|off enable or disable environment glow
50
- --env-plastic on|off enable or disable environment plastic material
51
- --setting <id> none | room | white-backdrop
52
- --focus on|off enable or disable Focus depth of field
53
- --focus-amount <id> subtle | medium | strong | dramatic
54
- --focus-range <id> tight | balanced | wide
55
- --reset-pose return to the default hero pose before other changes
56
-
57
- render options:
58
- --output <dir> write frame-%05d.png + timeline-render.json
59
- --fps <number> frames per second (default: 30)
60
- --width <px> exact output width (default: 1920)
61
- --height <px> exact output height (default: 1080)
62
- --from <ms> first timeline time (default: 0)
63
- --to <ms> exclusive end time (default: timeline duration)
64
- --overwrite replace this command's existing frames in the dir
65
-
66
- measure options (projected bounds only \u2014 no pixels rendered):
67
- --fps <number> sample rate (default: 30)
68
- --width <px> output width the bounds project into (default: 1920)
69
- --height <px> output height the bounds project into (default: 1080)
70
- --from <ms> first timeline time (default: 0)
71
- --to <ms> exclusive end time (default: timeline duration)
72
- --count <n> sample n frames from --from at the --fps spacing
73
- --at <ms[,ms...]> sample exact timeline times (overrides from/to/count)
74
- --output <file.json> write the measurement JSON here instead of stdout
75
-
76
- examples:
77
- sootsim mode three
78
- sootsim mode three on
79
- sootsim mode three configure --script hero-arc --background gradient-tide
80
- sootsim mode three configure --environment on --env-shape pane --setting room
81
- sootsim mode three render ./cinematic.json --output ./frames --fps 30
82
- sootsim mode three measure ./cinematic.json --width 450 --height 900 --at 0,1200
83
- sootsim mode three off
84
- `),process.exit(0));let o=ie(t);if(o){await le(o,t,e);return}if(oe(t)){await ne(t,e);return}(await U(t,e,{modeKey:"threeMode",displayName:"three-mode",actionId:"toggle-three-mode"})).target&&await re(t,e)}function oe(t){return t[0]==="configure"||t.some(e=>["--background","--gradient","--gradient-angle","--colorway","--script","--progress","--animate","--slow","--environment","--env-shape","--env-spread","--env-size","--env-color","--env-glow","--env-plastic","--setting","--focus","--focus-amount","--focus-range","--reset-pose"].includes(e))}async function ne(t,e){let o=E(t,{port:e.port,stripBooleanFlags:["--animate","--slow","--reset-pose"],stripValueFlags:["--background","--gradient","--gradient-angle","--colorway","--script","--progress","--environment","--env-shape","--env-spread","--env-size","--env-color","--env-glow","--env-plastic","--setting","--focus","--focus-amount","--focus-range"]}),n=me(t),r=O({...o,commandTimeoutMs:z+1e3});try{await J(r);let u=await v(r,"SootSim.bridges.threeMode.configure",n);console.log(` three-mode: configured (${ue(u)})`)}finally{r.close()}}async function re(t,e){let o=E(t,{port:e.port}),n=O({...o,commandTimeoutMs:z+1e3});try{await J(n)}finally{n.close()}}async function J(t){let e=await t.send({type:"evaluate",code:`(async () => {
85
- const deadline = Date.now() + ${z}
86
- while (Date.now() < deadline) {
87
- const settings = window.SootSim?.bridges?.settings?.get?.()
88
- if (settings && settings.threeMode !== true) {
89
- return { ready: false, disabled: true }
90
- }
91
- const bridge = window.SootSim?.bridges?.threeMode
92
- const state = typeof bridge?.getState === 'function' ? bridge.getState() : null
93
- if (state?.ready === true) return state
94
- await new Promise((resolve) => setTimeout(resolve, 50))
95
- }
96
- const bridge = window.SootSim?.bridges?.threeMode
97
- const state = typeof bridge?.getState === 'function' ? bridge.getState() : null
98
- return state || { ready: false }
99
- })()`});if(e?.ready===!0)return e;throw e?.disabled?new Error("3d mode is off; run `sootsim mode three on` before configure"):new Error("3d mode runtime did not become ready")}function ie(t){for(let e=0;e<t.length;e+=1){let o=t[e];if(o==="--sim"||o==="--port"||o==="-p"){e+=1;continue}if(!o.startsWith("-"))return te.has(o)?o:null}return null}function A(t,e){let o=t.indexOf(e);return o>=0?t[o+1]:void 0}function y(t,e,o,n=0){let r=A(t,e);if(r===void 0)return o;let u=Number.parseFloat(r);if(!Number.isFinite(u)||u<n)throw new Error(`${e} expects a number greater than or equal to ${n}`);return u}function G(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function se(t,e){let o=Z(t).toLowerCase();return e==="recording"?o===".mp4"||o===".m4v"?"video/mp4":"video/webm":o===".jpg"||o===".jpeg"?"image/jpeg":o===".webp"?"image/webp":"image/png"}function V(t,e){if(Array.isArray(t))return t.map(n=>V(n,e));if(!G(t))return t;let o={};for(let[n,r]of Object.entries(t))o[n]=V(r,e);if((o.type==="recording"||o.type==="screenshot")&&typeof o.src=="string"&&!/^(?:blob:|data:|https?:)/i.test(o.src)){let n=R(e,o.src),r=W(n);o.src=`data:${se(n,o.type)};base64,${r.toString("base64")}`}return o}function ae(t){let e=R(t),o=JSON.parse(W(e,"utf8"));return{absolutePath:e,timeline:V(o,q(e))}}async function de(t){await v(t,"SootSim.bridges.settings.set","threeMode",!0),await J(t)}async function le(t,e,o){let n=E(e,{port:o.port,commandTimeoutMs:ee,stripBooleanFlags:["--overwrite"],stripValueFlags:["--output","--fps","--width","--height","--from","--to","--count","--at"]}),r=O(n);try{if(await de(r),t==="seek"){let i=n.positional[1],d=i===void 0?Number.NaN:Number.parseFloat(i);if(!Number.isFinite(d))throw new Error("three-mode seek expects time in ms");let l=await v(r,"SootSim.bridges.threeMode.seek",d);console.log(` three-mode: ${Math.round(l.timeMs)}ms / ${Math.round(l.durationMs)}ms (${l.shotId??"no shot"})`);return}if(t==="play"||t==="pause"){let i=await v(r,`SootSim.bridges.threeMode.${t}`),d=G(i.timeline)?i.timeline:{};console.log(` three-mode: ${t} (${Math.round(Number(d.timeMs??0))}ms)`);return}let u=n.positional[1];if(!u)throw new Error(`three-mode ${t} expects a timeline JSON path`);let g=ae(u),s=await v(r,"SootSim.bridges.threeMode.loadTimeline",g.timeline);if(t==="load"){console.log(` three-mode: loaded ${g.absolutePath} (${Math.round(s.durationMs)}ms)`);return}if(t==="measure"){let i=y(e,"--fps",30,.001),d=Math.round(y(e,"--width",1920,1)),l=Math.round(y(e,"--height",1080,1)),_=A(e,"--at"),x;if(_!==void 0){let f=_.split(",").map(w=>{let S=Number.parseFloat(w);if(!Number.isFinite(S)||S<0)throw new Error(`--at expects comma-separated times in ms, got "${w}"`);return Math.min(S,s.durationMs)}),M=[];for(let w of f){let S=await v(r,"SootSim.bridges.threeMode.measure",{fps:i,width:d,height:l,from:w,count:1});M.push({...S.frames[0],index:M.length})}x={fps:i,from:f[0],to:f[f.length-1],width:d,height:l,frames:M}}else{let f=y(e,"--from",0,0),M=A(e,"--count"),w={fps:i,width:d,height:l,from:f};if(M===void 0){let S=y(e,"--to",s.durationMs,0);if(S<=f||S>s.durationMs)throw new Error(`--to must be greater than --from and at most ${s.durationMs}`);w.to=S}else w.count=Math.round(y(e,"--count",1,1));x=await v(r,"SootSim.bridges.threeMode.measure",w)}let b=`${JSON.stringify(x,null,2)}
100
- `,I=A(e,"--output");if(I){let f=R(I);L(q(f),{recursive:!0}),D(f,b),process.stderr.write(` three-mode: measured ${x.frames.length} frames \u2192 ${f}
101
- `)}else process.stdout.write(b);return}let p=A(e,"--output");if(!p)throw new Error("three-mode render requires --output <dir>");let h=R(p),T=y(e,"--fps",30,.001),k=Math.round(y(e,"--width",1920,1)),j=Math.round(y(e,"--height",1080,1)),F=y(e,"--from",0,0),$=y(e,"--to",s.durationMs,0);if($<=F||$>s.durationMs)throw new Error(`--to must be greater than --from and at most ${s.durationMs}`);let a=1e3/T,m=Math.ceil(($-F)/a);L(h,{recursive:!0});let c=Q(h).filter(i=>/^frame-\d{5}\.png$/.test(i)||i==="timeline-render.json");if(c.length>0&&!e.includes("--overwrite"))throw new Error(`${h} already has timeline frames; pass --overwrite to replace them`);for(let i of c)X(R(h,i));let B=[],N=4;for(let i=0;i<m;i+=N){let d=Math.min(N,m-i),l=F+i*a,_=Math.min($,l+d*a),x=await v(r,"SootSim.bridges.threeMode.renderFrames",{fps:T,from:l,to:_,width:k,height:j,count:d});if(x.frames.length!==d)throw new Error(`3d renderer returned ${x.frames.length} frames for a ${d}-frame batch`);for(let b of x.frames){let I=i+b.index,f=`frame-${String(I).padStart(5,"0")}.png`,M=b.dataUrl.indexOf(",");if(M<0||!b.dataUrl.slice(0,M).includes("image/png;base64"))throw new Error(`3d renderer returned a non-PNG frame at ${b.timeMs}ms`);let w=Buffer.from(b.dataUrl.slice(M+1),"base64");D(R(h,f),w),B.push({file:f,timeMs:b.timeMs,sha256:Y("sha256").update(w).digest("hex"),alpha:b.alpha,phoneCollision:b.phoneCollision})}process.stderr.write(`\r three-mode: rendered ${Math.min(i+d,m)}/${m}`)}process.stderr.write(`
102
- `);let C={version:2,timeline:g.absolutePath,fps:T,from:F,to:$,width:k,height:j,frameCount:m,transparent:B.every(i=>i.alpha.transparentPixels>0),frames:B};D(R(h,"timeline-render.json"),`${JSON.stringify(C,null,2)}
103
- `),console.log(` three-mode: wrote ${m} deterministic RGBA frames to ${h}`)}finally{r.close()}}function me(t){let e=a=>t.find((m,c)=>t[c-1]===a),o={},n=e("--colorway");n&&(o.colorway=n);let r=e("--background");r&&(o.background=r);let u=e("--gradient");if(u){let a=u.split(",").map(N=>N.trim()).filter(Boolean),m=a.map((N,C)=>{let[i,d]=N.split("@"),l=d!==void 0?Number.parseFloat(d):a.length>1?C/(a.length-1):0;return l>1&&(l=l/100),Number.isFinite(l)||(l=a.length>1?C/(a.length-1):0),{color:i.trim(),offset:l}}),c=e("--gradient-angle"),B=c===void 0?void 0:Number.parseFloat(c);if(c!==void 0&&!Number.isFinite(B))throw new Error(`--gradient-angle expects a number, got "${c}"`);o.customGradient={stops:m,...B!==void 0?{angleDeg:B}:{}}}let g=e("--setting");if(g){if(g!=="none"&&g!=="room"&&g!=="white-backdrop")throw new Error(`--setting expects none, room, or white-backdrop, got "${g}"`);o.setting=g}let s={},p=P(e("--focus"),"--focus");p!==void 0&&(s.enabled=p);for(let[a,m]of[["--focus-amount","amount"],["--focus-range","range"]]){let c=e(a);c&&(s[m]=c)}Object.keys(s).length>0&&(o.focus=s),t.includes("--reset-pose")&&(o.resetPose=!0);let h=P(e("--environment"),"--environment"),T={},k={};for(let[a,m]of[["--env-shape","shape"],["--env-spread","spread"],["--env-size","size"],["--env-color","color"]]){let c=e(a);c&&(T[m]=c)}let j=P(e("--env-glow"),"--env-glow");j!==void 0&&(k.glow=j);let F=P(e("--env-plastic"),"--env-plastic");F!==void 0&&(k.plastic=F),(h!==void 0||Object.keys(T).length>0||Object.keys(k).length>0)&&(o.environment=h===!1?!1:{pins:T,effects:k});let $=e("--script");if($){let a=e("--progress"),m=a===void 0?1:Number.parseFloat(a);if(!Number.isFinite(m))throw new Error(`--progress expects a number from 0 to 1, got "${a}"`);o.script={id:$,progress:m,animate:t.includes("--animate"),slow:t.includes("--slow")}}return o}function P(t,e){if(t===void 0)return;let o=t.toLowerCase();if(["on","true","yes","1"].includes(o))return!0;if(["off","false","no","0"].includes(o))return!1;throw new Error(`${e} expects on or off, got "${t}"`)}function ue(t){return[`ready=${!!t.ready}`,`background=${String(t.background??"unknown")}`,`colorway=${String(t.colorway??"unknown")}`,`environment=${t.environmentActive?"on":"off"}`,`setting=${String(t.setting??"none")}`,`focus=${t.focus&&typeof t.focus=="object"&&t.focus.enabled?"on":"off"}`].join(", ")}export{U as a,ye as b,J as c,me as d};
@@ -1,3 +0,0 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{c as f}from"./chunk-7TXMXDJ2.js";import{existsSync as g,mkdirSync as h,readFileSync as S,writeFileSync as b,rmSync as x}from"fs";import{tmpdir as y}from"os";import{dirname as v,join as m}from"path";var p=new Map;function s(e,t){p.set(e,t)}var i=1;function a(){return m(y(),`sootsim-cli-hints-${f()}.json`)}function d(){return m(y(),"sootsim-cli-hints-global.json")}function u(e){if(!g(e))return{version:i,shown:{}};try{let t=JSON.parse(S(e,"utf8"));return t?.version!==i||!t?.shown?{version:i,shown:{}}:t}catch{return{version:i,shown:{}}}}function l(e,t){try{h(v(e),{recursive:!0}),b(e,JSON.stringify(t)+`
3
- `)}catch{}}function H(){let e=(process.env.SOOTSIM_HINTS||"").toLowerCase();return e==="off"||e==="0"||e==="false"?"off":e==="always"||e==="verbose"?"always":"normal"}function F(e,t){let o=H();if(o==="off")return!1;if(o==="always"||t==="always")return!0;let n=Date.now();if(t==="once-per-identity"){let r=u(a());return r.shown[e]?!1:(r.shown[e]=n,l(a(),r),!0)}if(t==="once-ever"){let r=u(d());return r.shown[e]?!1:(r.shown[e]=n,l(d(),r),!0)}if(typeof t=="object"&&"cooldownMs"in t){let r=u(a()),c=r.shown[e]??0;return n-c<t.cooldownMs?!1:(r.shown[e]=n,l(a(),r),!0)}return!0}function $(e,...t){let o=p.get(e);if(!o)return process.env.SOOTSIM_HINTS_DEBUG&&console.error(` [hints] no hint registered for id "${e}"`),!1;if(!F(e,o.frequency))return!1;let n=o.render(...t);if(n==null)return!1;let r=Array.isArray(n)?n:[n],c=o.stream==="error"?console.error:console.log;for(let w of r)c(` hint: ${w}`);return!0}s("app-still-loading",{frequency:{cooldownMs:6e4},render:e=>`app may still be loading (${e} nodes). run \`sootsim wait ready\` first.`});s("wait-selector-for-missing-testid",{frequency:"once-per-identity",render:e=>`sootsim wait selector ${e}`,stream:"error"});s("prefer-cli-over-eval",{frequency:"once-per-identity",render:e=>e.length?["try the CLI shortcut instead:",...e.map(t=>` ${t}`)]:null,stream:"error"});s("describe-use-filters",{frequency:"once-per-identity",render:()=>["describe output is long. narrow it with:"," sootsim describe --only '*Bottom Sheet*'"," sootsim describe --testid-like 'swap-*'"," sootsim describe --subtree <testID>"]});s("describe-filter-context",{frequency:"once-per-identity",render:()=>["filtered describe is search output, not current-route proof.","run `sootsim describe` without filters after navigation; clipped nodes are marked `(clipped:...)`."]});s("subtree-root-not-found",{frequency:"always",render:e=>`no node with testID/id "${e}" \u2014 try \`sootsim find --testid ${e}\` to discover available ids.`,stream:"error"});s("clean-uninstall",{frequency:"once-ever",render:()=>["to uninstall sootsim completely, run `sootsim daemon uninstall`.","it removes the launchd / systemd agent and the ~/.sootsim cache (~80MB)."]});export{$ as a};
@@ -1 +0,0 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a}from"./chunk-LOQKCRYG.js";import"./chunk-PMP3DTAI.js";export{a as getCliVersion};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c,d,e}from"./chunk-MRPAMQ5L.js";import"./chunk-GRWG6LIS.js";import"./chunk-WY54NKD3.js";import"./chunk-7GSQVLU3.js";import"./chunk-MBKNWJ7A.js";import"./chunk-HV6Q52AU.js";import"./chunk-3Y24AVG3.js";import"./chunk-UMC7L3M5.js";import"./chunk-7TXMXDJ2.js";import"./chunk-VHJIZG4X.js";import"./chunk-QKGEDIT7.js";import"./chunk-LOQKCRYG.js";import"./chunk-JXEHP3A7.js";import"./chunk-TUQ2MLNE.js";import"./chunk-PMP3DTAI.js";export{c as daemonInstall,b as getDaemonServiceStatus,a as runDaemon,d as teardownDaemonService,e as teardownSootsimHome};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import"./chunk-XUJD4ISB.js";import{f as a,g as b,h as c,i as d,j as e,k as f,l as g,m as h,n as i}from"./chunk-DMQV5GMM.js";import"./chunk-MVUUNF4D.js";import"./chunk-LEM5AZSM.js";import"./chunk-7TXMXDJ2.js";import"./chunk-QKGEDIT7.js";import"./chunk-PMP3DTAI.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.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{c,d,e,f,g,h}from"./chunk-Z3UMX3ES.js";import"./chunk-IUAQ4QCN.js";import"./chunk-DNX4UAKZ.js";import{c as a,d as b}from"./chunk-FIDZ4L7T.js";import"./chunk-L2GEJDHZ.js";import"./chunk-C2333EA4.js";import"./chunk-QPSTRUBX.js";import"./chunk-UMKOBO3D.js";import"./chunk-WZMS7IWF.js";import"./chunk-CJ6GJTYB.js";import"./chunk-DMQV5GMM.js";import"./chunk-MVUUNF4D.js";import"./chunk-THEG5IYF.js";import"./chunk-OSWJRU2A.js";import"./chunk-LEM5AZSM.js";import"./chunk-R3RWCHTI.js";import"./chunk-NJCPGGEI.js";import"./chunk-FPRVB576.js";import"./chunk-CKRGQNNG.js";import"./chunk-JEHRDCRK.js";import"./chunk-GRWG6LIS.js";import"./chunk-WY54NKD3.js";import"./chunk-HV6Q52AU.js";import"./chunk-3Y24AVG3.js";import"./chunk-UMC7L3M5.js";import"./chunk-7TXMXDJ2.js";import"./chunk-VHJIZG4X.js";import"./chunk-QKGEDIT7.js";import"./chunk-6NURRM7A.js";import"./chunk-TUQ2MLNE.js";import"./chunk-PMP3DTAI.js";export{e as discoverSootsimUrl,c as getLastFlowPreviewUploadResult,d as getLastFlowTraceSteps,g as hoistLeadingSimFlag,a as parseFlowFile,f as runFlowPlayback,h as runMaestroAuthoring,b as validateFlowFile};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c}from"./chunk-7GSQVLU3.js";import"./chunk-MBKNWJ7A.js";import"./chunk-HV6Q52AU.js";import"./chunk-3Y24AVG3.js";import"./chunk-UMC7L3M5.js";import"./chunk-7TXMXDJ2.js";import"./chunk-VHJIZG4X.js";import"./chunk-QKGEDIT7.js";import"./chunk-LOQKCRYG.js";import"./chunk-JXEHP3A7.js";import"./chunk-TUQ2MLNE.js";import"./chunk-PMP3DTAI.js";export{c as printCommandHelp,b as printGroupHelp,a as printHelp};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{j as a,k as b}from"./chunk-FIDZ4L7T.js";import"./chunk-L2GEJDHZ.js";import"./chunk-UMKOBO3D.js";import"./chunk-WZMS7IWF.js";import"./chunk-CJ6GJTYB.js";import"./chunk-DMQV5GMM.js";import"./chunk-MVUUNF4D.js";import"./chunk-THEG5IYF.js";import"./chunk-OSWJRU2A.js";import"./chunk-LEM5AZSM.js";import"./chunk-R3RWCHTI.js";import"./chunk-NJCPGGEI.js";import"./chunk-FPRVB576.js";import"./chunk-CKRGQNNG.js";import"./chunk-JEHRDCRK.js";import"./chunk-HV6Q52AU.js";import"./chunk-3Y24AVG3.js";import"./chunk-UMC7L3M5.js";import"./chunk-7TXMXDJ2.js";import"./chunk-VHJIZG4X.js";import"./chunk-QKGEDIT7.js";import"./chunk-6NURRM7A.js";import"./chunk-TUQ2MLNE.js";import"./chunk-PMP3DTAI.js";export{a as printShellPerfReport,b as runInspect};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a}from"./chunk-HXB72OSS.js";import"./chunk-MVUUNF4D.js";import"./chunk-H2TR6GOZ.js";import"./chunk-PMP3DTAI.js";export{a as runInstallDesktop};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c}from"./chunk-R3RWCHTI.js";import"./chunk-PMP3DTAI.js";export{c as __withOptionalDemoAppsForTests,a as loadOptionalDemoApps,b as optionalDemoAppsSync};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a}from"./chunk-L6QRHE42.js";import"./chunk-FIF4VGJQ.js";import"./chunk-CKRGQNNG.js";import"./chunk-UMC7L3M5.js";import"./chunk-7TXMXDJ2.js";import"./chunk-QKGEDIT7.js";import"./chunk-PMP3DTAI.js";export{a as runRuntime};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a}from"./chunk-6NURRM7A.js";import"./chunk-TUQ2MLNE.js";import"./chunk-PMP3DTAI.js";export{a as settingsStore};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b}from"./chunk-GRWG6LIS.js";import"./chunk-WY54NKD3.js";import"./chunk-QKGEDIT7.js";import"./chunk-PMP3DTAI.js";export{b as flushCliTelemetry,a as trackCliEvent};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.274 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{e as a,f as b,g as c}from"./chunk-C2333EA4.js";import"./chunk-QPSTRUBX.js";import"./chunk-THEG5IYF.js";import"./chunk-OSWJRU2A.js";import"./chunk-LEM5AZSM.js";import"./chunk-CKRGQNNG.js";import"./chunk-GRWG6LIS.js";import"./chunk-WY54NKD3.js";import"./chunk-UMC7L3M5.js";import"./chunk-7TXMXDJ2.js";import"./chunk-QKGEDIT7.js";import"./chunk-PMP3DTAI.js";export{a as resolveDefaultUploadOrigin,b as resolvePublicPreviewOrigin,c as runUpload};