sootsim 0.1.145 → 0.1.146

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 (153) hide show
  1. package/dist-cli/bin.js +3 -3
  2. package/dist-cli/chunks/{agent-YX5V2KV7.js → agent-PNNXV6F3.js} +2 -2
  3. package/dist-cli/chunks/{agent-wrapper-3X53DI4P.js → agent-wrapper-JTYAONCG.js} +2 -2
  4. package/dist-cli/chunks/{app-fonts-5I6J7HMM.js → app-fonts-YGTRUUJT.js} +2 -2
  5. package/dist-cli/chunks/{assert-BDSCYJ3N.js → assert-HDFDQLHK.js} +2 -2
  6. package/dist-cli/chunks/auto-bootstrap-S7SSJMD3.js +2 -0
  7. package/dist-cli/chunks/beta-E3MSUPWU.js +2 -0
  8. package/dist-cli/chunks/{camera-HXVXO2XW.js → camera-4B7OAHRD.js} +2 -2
  9. package/dist-cli/chunks/{chunk-26P6DJRO.js → chunk-2FYSNCRJ.js} +2 -2
  10. package/dist-cli/chunks/{chunk-DNM2AOHD.js → chunk-2PYDOYIS.js} +1 -1
  11. package/dist-cli/chunks/{chunk-NRBPTQVR.js → chunk-35QJJ4MM.js} +3 -3
  12. package/dist-cli/chunks/chunk-3RPHEE3K.js +2 -0
  13. package/dist-cli/chunks/{chunk-YWUBSH2K.js → chunk-4KNMAGC4.js} +1 -1
  14. package/dist-cli/chunks/{chunk-MNMNX4O7.js → chunk-A7JX3OQC.js} +1 -1
  15. package/dist-cli/chunks/{chunk-CUPKQONE.js → chunk-AOPFT3S4.js} +1 -1
  16. package/dist-cli/chunks/{chunk-AUMBVWWD.js → chunk-ATJRNMNA.js} +2 -2
  17. package/dist-cli/chunks/{chunk-Q3UIMXJY.js → chunk-BBIN2U26.js} +2 -2
  18. package/dist-cli/chunks/{chunk-2GAVMQGW.js → chunk-BE2ZDRIJ.js} +2 -2
  19. package/dist-cli/chunks/{chunk-7GBAY2BX.js → chunk-C44OZFHJ.js} +2 -2
  20. package/dist-cli/chunks/{chunk-AXNDFONG.js → chunk-DP5FSZHW.js} +1 -1
  21. package/dist-cli/chunks/chunk-DRCRPS2N.js +1 -0
  22. package/dist-cli/chunks/{chunk-2R6ALEI7.js → chunk-ERAE4LJT.js} +3 -3
  23. package/dist-cli/chunks/{chunk-36RF3WRB.js → chunk-FK2YXBKR.js} +1 -1
  24. package/dist-cli/chunks/{chunk-QZAJOB4N.js → chunk-G7JMTSF6.js} +1 -1
  25. package/dist-cli/chunks/{chunk-7ODTKW6U.js → chunk-GD473DHN.js} +2 -2
  26. package/dist-cli/chunks/{chunk-6MAW2X3J.js → chunk-H2EIYIRP.js} +1 -1
  27. package/dist-cli/chunks/{chunk-3AALQI5D.js → chunk-H6LFGGJW.js} +2 -2
  28. package/dist-cli/chunks/{chunk-F6UIBH3K.js → chunk-HWB7DPXH.js} +1 -1
  29. package/dist-cli/chunks/{chunk-3Q7M3ATN.js → chunk-HZHZY7N5.js} +2 -2
  30. package/dist-cli/chunks/{chunk-ANTCWWXN.js → chunk-IADMCPLZ.js} +1 -1
  31. package/dist-cli/chunks/{chunk-C6XQHJFR.js → chunk-IAO27BWC.js} +2 -2
  32. package/dist-cli/chunks/{chunk-KDNOWAFU.js → chunk-JFQXWAWN.js} +2 -2
  33. package/dist-cli/chunks/{chunk-RHHCV6M4.js → chunk-JZW2R5D7.js} +2 -2
  34. package/dist-cli/chunks/{chunk-5MF7XOPR.js → chunk-K6X7LUFG.js} +1 -1
  35. package/dist-cli/chunks/{chunk-YENFSYAG.js → chunk-MIIAYBFL.js} +1 -1
  36. package/dist-cli/chunks/{chunk-NX6V5VAV.js → chunk-MSQUL5BU.js} +3 -3
  37. package/dist-cli/chunks/{chunk-5HCF2FQK.js → chunk-MVLNHZMU.js} +2 -2
  38. package/dist-cli/chunks/chunk-OU42HTKN.js +1 -0
  39. package/dist-cli/chunks/{chunk-F6YOWJAA.js → chunk-PCW4TKI2.js} +2 -2
  40. package/dist-cli/chunks/{chunk-RV3WN4FQ.js → chunk-Q6BHESL2.js} +2 -2
  41. package/dist-cli/chunks/{chunk-R76YX6KD.js → chunk-R7CMXY5T.js} +2 -2
  42. package/dist-cli/chunks/{chunk-TRA4IJCY.js → chunk-RTD4RNZV.js} +2 -2
  43. package/dist-cli/chunks/{chunk-7FL2TKGB.js → chunk-SZNVNYEP.js} +2 -2
  44. package/dist-cli/chunks/{chunk-A27TUQQZ.js → chunk-TLFNO2L4.js} +1 -1
  45. package/dist-cli/chunks/{chunk-KSNQFEBZ.js → chunk-TZXKFPBJ.js} +2 -2
  46. package/dist-cli/chunks/{chunk-4QJCDB6B.js → chunk-UD4SYXDQ.js} +2 -2
  47. package/dist-cli/chunks/{chunk-HVRSV4QO.js → chunk-VKKWYLIZ.js} +1 -1
  48. package/dist-cli/chunks/{chunk-I5FEWPWO.js → chunk-VZSXOG4N.js} +1 -1
  49. package/dist-cli/chunks/{chunk-RGJAUL7P.js → chunk-WFXLVOUA.js} +2 -2
  50. package/dist-cli/chunks/chunk-XO4VQYFP.js +2 -0
  51. package/dist-cli/chunks/{chunk-QS37KABB.js → chunk-XRQDMB2J.js} +2 -2
  52. package/dist-cli/chunks/chunk-Y76W7GZV.js +1 -0
  53. package/dist-cli/chunks/{chunk-T35Q6ZGG.js → chunk-YBSNSFBX.js} +1 -1
  54. package/dist-cli/chunks/cli-version-AJWPSNS4.js +2 -0
  55. package/dist-cli/chunks/{compat-OH3WCY73.js → compat-F4WAO62Y.js} +3 -3
  56. package/dist-cli/chunks/{config-75MZT5JS.js → config-WAIORJNJ.js} +2 -2
  57. package/dist-cli/chunks/{control-KSGYRJQK.js → control-M54456XG.js} +2 -2
  58. package/dist-cli/chunks/{cpu-profile-2EHAVP5P.js → cpu-profile-NNMDXCWI.js} +2 -2
  59. package/dist-cli/chunks/{daemon-KRESTNSO.js → daemon-UXSN6QDY.js} +2 -2
  60. package/dist-cli/chunks/{debug-XJ2XIBGI.js → debug-JAQVYKQG.js} +3 -3
  61. package/dist-cli/chunks/{detox-D3P2BFHN.js → detox-QOL7PD62.js} +2 -2
  62. package/dist-cli/chunks/{device-TMFWZCML.js → device-WPAQY2ZH.js} +2 -2
  63. package/dist-cli/chunks/{diagnose-67SOCM6I.js → diagnose-FKN4ALSH.js} +2 -2
  64. package/dist-cli/chunks/drivers-FTOUKVJ5.js +2 -0
  65. package/dist-cli/chunks/{electron-FLPDCIDO.js → electron-YQKH55P6.js} +3 -3
  66. package/dist-cli/chunks/flow-EJXOH72E.js +2 -0
  67. package/dist-cli/chunks/help-ID6MSA6T.js +2 -0
  68. package/dist-cli/chunks/{hints-ODFXO5MG.js → hints-GIJN25JB.js} +2 -2
  69. package/dist-cli/chunks/{home-paths-NIEX6VIW.js → home-paths-KIR4SAL4.js} +2 -2
  70. package/dist-cli/chunks/{inspect-C5R2IXQP.js → inspect-YRP3UFG4.js} +3 -3
  71. package/dist-cli/chunks/install-S4YF4O3O.js +2 -0
  72. package/dist-cli/chunks/{install-desktop-TGI4DCY3.js → install-desktop-INHP4VUQ.js} +3 -3
  73. package/dist-cli/chunks/{keys-2QJCGBZU.js → keys-CBKA6IB7.js} +2 -2
  74. package/dist-cli/chunks/{launch-A2NXENLP.js → launch-JZ463USO.js} +3 -3
  75. package/dist-cli/chunks/{login-TQLNNRFL.js → login-VHP4DNC2.js} +4 -4
  76. package/dist-cli/chunks/{logout-N6R66AFU.js → logout-NRG4U6Z7.js} +2 -2
  77. package/dist-cli/chunks/{maestro-DMNUWMEX.js → maestro-KPNXHCFR.js} +2 -2
  78. package/dist-cli/chunks/optional-demo-registry-VXBG2NEH.js +2 -0
  79. package/dist-cli/chunks/{preview-O45WIZT7.js → preview-O44G7W2U.js} +2 -2
  80. package/dist-cli/chunks/{profile-HSL4JQ2B.js → profile-RMYP6I2J.js} +2 -2
  81. package/dist-cli/chunks/{react-STTXJK2P.js → react-CFUB2U76.js} +2 -2
  82. package/dist-cli/chunks/{record-6X7TU345.js → record-YSLIYV2X.js} +2 -2
  83. package/dist-cli/chunks/runtime-YVV2FMMD.js +2 -0
  84. package/dist-cli/chunks/{runtime-delivery-D76JBTRS.js → runtime-delivery-DDUSKKTU.js} +2 -2
  85. package/dist-cli/chunks/{screenshot-WLKERV6O.js → screenshot-MH7JQVO7.js} +2 -2
  86. package/dist-cli/chunks/{screenshot-mode-QGT6WGQ6.js → screenshot-mode-JRRQPP37.js} +2 -2
  87. package/dist-cli/chunks/screenshots-32GEAUAF.js +74 -0
  88. package/dist-cli/chunks/{server-NNJNTLTV.js → server-ROXPXSIK.js} +3 -3
  89. package/dist-cli/chunks/setup-repo-E2IJJBCE.js +2 -0
  90. package/dist-cli/chunks/{skills-FTYSXEVA.js → skills-T74U4JC7.js} +2 -2
  91. package/dist-cli/chunks/{slides-FTSJM4AC.js → slides-OM25OBW3.js} +2 -2
  92. package/dist-cli/chunks/{start-Q37DNJPY.js → start-NLHWSRC7.js} +4 -4
  93. package/dist-cli/chunks/store-EISWHA6H.js +2 -0
  94. package/dist-cli/chunks/telemetry-7AXVZMQT.js +2 -0
  95. package/dist-cli/chunks/{test-7WGTTJFK.js → test-RYMENNXC.js} +3 -3
  96. package/dist-cli/chunks/{three-mode-T6V3MWE7.js → three-mode-MK242N4J.js} +2 -2
  97. package/dist-cli/chunks/{timeline-T36NNMIW.js → timeline-ANKR37NA.js} +2 -2
  98. package/dist-cli/chunks/{upgrade-D5LA6F7T.js → upgrade-ZANSK5HX.js} +2 -2
  99. package/dist-cli/chunks/upload-DWWZQMVH.js +2 -0
  100. package/dist-cli/chunks/{version-NEMFK44K.js → version-DYXEOGY7.js} +2 -2
  101. package/dist-cli/chunks/{web-EBBS27LE.js → web-LUMZCTLY.js} +2 -2
  102. package/dist-cli/chunks/{what-happened-LWSM2L7E.js → what-happened-SIQGZLHO.js} +2 -2
  103. package/dist-cli/chunks/{whoami-AXLQJ7NW.js → whoami-YI5RAQBT.js} +2 -2
  104. package/dist-lib/agent-daemon-client.cjs +1 -1
  105. package/dist-lib/agent-events.cjs +1 -1
  106. package/dist-lib/agent-sessions.cjs +1 -1
  107. package/dist-lib/attached-projects.cjs +1 -1
  108. package/dist-lib/auth/shared-session.cjs +1 -1
  109. package/dist-lib/backend-origin.cjs +1 -1
  110. package/dist-lib/beta.cjs +1 -1
  111. package/dist-lib/beta.mjs +1 -1
  112. package/dist-lib/bridge-constants.cjs +1 -1
  113. package/dist-lib/cli-constants.cjs +1 -1
  114. package/dist-lib/config.cjs +1 -1
  115. package/dist-lib/detox/index.cjs +1 -1
  116. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  117. package/dist-lib/home-paths.cjs +1 -1
  118. package/dist-lib/host/bridge-host.cjs +1 -1
  119. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  120. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  121. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  122. package/dist-lib/host/websocket-proxy.cjs +1 -1
  123. package/dist-lib/index.cjs +1 -1
  124. package/dist-lib/metro.cjs +1 -1
  125. package/dist-lib/profiles.cjs +1 -1
  126. package/dist-lib/render-mode.cjs +1 -1
  127. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  128. package/dist-lib/sdk.cjs +1 -1
  129. package/dist-lib/sdk.mjs +1 -1
  130. package/dist-lib/skills.cjs +1 -1
  131. package/dist-lib/vite.cjs +1 -1
  132. package/package.json +1 -1
  133. package/src/screenshots/orchestrate.ts +7 -0
  134. package/src/screenshots/org-deck.ts +91 -0
  135. package/dist-cli/chunks/auto-bootstrap-JVI75WWN.js +0 -2
  136. package/dist-cli/chunks/beta-IXSKJTBA.js +0 -2
  137. package/dist-cli/chunks/chunk-HONMR5LW.js +0 -1
  138. package/dist-cli/chunks/chunk-OW2ZBOB3.js +0 -2
  139. package/dist-cli/chunks/chunk-QNJYE5OY.js +0 -2
  140. package/dist-cli/chunks/chunk-SMMTE4QY.js +0 -1
  141. package/dist-cli/chunks/chunk-WJA4MM4L.js +0 -1
  142. package/dist-cli/chunks/cli-version-C56OR6JV.js +0 -2
  143. package/dist-cli/chunks/drivers-OYNUTXKG.js +0 -2
  144. package/dist-cli/chunks/flow-Q2Z4UAPG.js +0 -2
  145. package/dist-cli/chunks/help-EVEPPKOR.js +0 -2
  146. package/dist-cli/chunks/install-H4QD5NHJ.js +0 -2
  147. package/dist-cli/chunks/optional-demo-registry-Q2WTD5VQ.js +0 -2
  148. package/dist-cli/chunks/runtime-K3KCLSIW.js +0 -2
  149. package/dist-cli/chunks/screenshots-H4CT4M6U.js +0 -70
  150. package/dist-cli/chunks/setup-repo-I4NU3XER.js +0 -2
  151. package/dist-cli/chunks/store-YJZETFWA.js +0 -2
  152. package/dist-cli/chunks/telemetry-73CWUPJ6.js +0 -2
  153. package/dist-cli/chunks/upload-DR6AU55F.js +0 -2
@@ -1,5 +1,5 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{C as T,D as A,E as y,P as _,Q as b,R as S}from"./chunk-AXNDFONG.js";import{c as N,e as F}from"./chunk-Q3UIMXJY.js";import{b as k}from"./chunk-T35Q6ZGG.js";import"./chunk-36RF3WRB.js";import"./chunk-ANTCWWXN.js";import"./chunk-A27TUQQZ.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=N(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.146 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{C as T,D as A,E as y,P as _,Q as b,R as S}from"./chunk-DP5FSZHW.js";import{c as N,e as F}from"./chunk-BBIN2U26.js";import{b as k}from"./chunk-YBSNSFBX.js";import"./chunk-FK2YXBKR.js";import"./chunk-IADMCPLZ.js";import"./chunk-TLFNO2L4.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=N(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,2 +1,2 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{d as i}from"./chunk-3Q7M3ATN.js";import{d as n}from"./chunk-R76YX6KD.js";import"./chunk-ANTCWWXN.js";import"./chunk-A27TUQQZ.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.146 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{d as i}from"./chunk-HZHZY7N5.js";import{d as n}from"./chunk-R7CMXY5T.js";import"./chunk-IADMCPLZ.js";import"./chunk-TLFNO2L4.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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.146 | (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.145",
3
+ "version": "0.1.146",
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",
@@ -9,6 +9,7 @@ import {
9
9
  type ComposeSlideSource,
10
10
  } from './compose'
11
11
  import { createFramedScreenshotComposer } from './frame-compose'
12
+ import { applyOrgDeckToPlan, type OrgDeckFrame } from './org-deck'
12
13
  import { loadScreenshotsPlan, type NormalizedScreenshotsPlan } from './schema'
13
14
 
14
15
  export interface RunScreenshotsOverrides {
@@ -17,6 +18,9 @@ export interface RunScreenshotsOverrides {
17
18
  simId?: string | null
18
19
  captureOnly?: boolean
19
20
  composeOnly?: boolean
21
+ // copy/colors pulled from the team's org deck to overlay onto the plan's
22
+ // compose slides (sootsim screenshots --org … --repo …).
23
+ orgDeckFrames?: OrgDeckFrame[] | null
20
24
  }
21
25
 
22
26
  export interface CaptureResult {
@@ -186,6 +190,9 @@ export async function runScreenshotsPlan(
186
190
  overrides: RunScreenshotsOverrides = {},
187
191
  ): Promise<ScreenshotsRunResult> {
188
192
  const plan = loadScreenshotsPlan(planPath)
193
+ if (overrides.orgDeckFrames && overrides.orgDeckFrames.length > 0) {
194
+ applyOrgDeckToPlan(plan, overrides.orgDeckFrames)
195
+ }
189
196
  const effectiveDeviceModel = overrides.deviceModel ?? plan.deviceModel
190
197
  if (!overrides.composeOnly) {
191
198
  await runCaptureStage(plan, overrides)
@@ -0,0 +1,91 @@
1
+ // fetch the team's screenshot deck (the copy / colors founders set up in the
2
+ // org dashboard) and overlay it onto a screenshots plan, so the programmatic
3
+ // `sootsim screenshots --plan … --org … --repo …` flow renders the org's
4
+ // words + brand gradient instead of the local yaml's. the plan still owns
5
+ // which screen each slide captures and the device frame; the deck owns copy +
6
+ // colors. 3d scenes don't translate to the cli's 2d composer, so only copy and
7
+ // colors carry over (the 3d hero look stays the in-browser screenshot mode).
8
+
9
+ import { resolveBgColorValue } from 'sootsim-engine/screenshots/tokens'
10
+ import type { BackgroundSpec } from './registry'
11
+ import type { NormalizedScreenshotsPlan } from './schema'
12
+
13
+ export interface OrgDeckFetchOptions {
14
+ org: string
15
+ repo: string
16
+ origin: string
17
+ authHeader: string
18
+ }
19
+
20
+ export interface OrgDeckFrame {
21
+ title?: string
22
+ subtitle?: string
23
+ bgTop?: string
24
+ bgBottom?: string
25
+ titleColor?: string
26
+ }
27
+
28
+ function readString(value: unknown): string | undefined {
29
+ return typeof value === 'string' && value.length > 0 ? value : undefined
30
+ }
31
+
32
+ // GET the team deck and return its first deck's frames, or null when the team
33
+ // has no deck yet. throws on auth / network failure so the caller can surface a
34
+ // clear message rather than silently falling back to the local copy.
35
+ export async function fetchOrgDeckFrames(
36
+ opts: OrgDeckFetchOptions,
37
+ ): Promise<OrgDeckFrame[] | null> {
38
+ const base = opts.origin.replace(/\/$/, '')
39
+ const url = `${base}/api/sootsim/screenshot-decks?org=${encodeURIComponent(
40
+ opts.org,
41
+ )}&repo=${encodeURIComponent(opts.repo)}`
42
+ const res = await fetch(url, { headers: { Authorization: opts.authHeader } })
43
+ if (!res.ok) {
44
+ const detail = await res.text().catch(() => '')
45
+ throw new Error(
46
+ `org deck fetch failed (${res.status} ${res.statusText}) for ${opts.org}/${opts.repo}${
47
+ detail ? ` — ${detail.slice(0, 200)}` : ''
48
+ }`,
49
+ )
50
+ }
51
+ const body = (await res.json()) as { decks?: Array<{ config?: unknown }> }
52
+ const deck = body.decks?.[0]
53
+ if (!deck || !deck.config || typeof deck.config !== 'object') return null
54
+ const frames = (deck.config as { frames?: unknown }).frames
55
+ if (!Array.isArray(frames)) return null
56
+ return frames.map((entry) => {
57
+ const frame = (entry ?? {}) as Record<string, unknown>
58
+ return {
59
+ title: readString(frame.title),
60
+ subtitle: readString(frame.subtitle),
61
+ bgTop: readString(frame.bgTop),
62
+ bgBottom: readString(frame.bgBottom),
63
+ titleColor: readString(frame.titleColor),
64
+ }
65
+ })
66
+ }
67
+
68
+ // overlay deck frames onto the plan's compose slides, matched by order. a deck
69
+ // with fewer frames than the plan leaves the trailing slides on their yaml copy.
70
+ export function applyOrgDeckToPlan(
71
+ plan: NormalizedScreenshotsPlan,
72
+ frames: OrgDeckFrame[],
73
+ ): void {
74
+ plan.compose.slides.forEach((slide, index) => {
75
+ const frame = frames[index]
76
+ if (!frame) return
77
+ if (frame.title != null) slide.headline = frame.title
78
+ if (frame.subtitle != null) slide.subheadline = frame.subtitle
79
+ if (frame.bgTop && frame.bgBottom) {
80
+ const background: BackgroundSpec = {
81
+ type: 'gradient',
82
+ direction: 180,
83
+ stops: [
84
+ { offset: 0, color: resolveBgColorValue(frame.bgTop) },
85
+ { offset: 1, color: resolveBgColorValue(frame.bgBottom) },
86
+ ],
87
+ }
88
+ slide.background = background
89
+ }
90
+ })
91
+ }
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c,d}from"./chunk-NX6V5VAV.js";import"./chunk-Q3UIMXJY.js";import"./chunk-T35Q6ZGG.js";import"./chunk-36RF3WRB.js";import"./chunk-ANTCWWXN.js";import"./chunk-A27TUQQZ.js";export{c as ensureDaemonRunning,a as ensureRuntimeInstalled,d as ensureSootsimReady,b as resolveBootstrapPort};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c,d,e}from"./chunk-F6UIBH3K.js";import"./chunk-A27TUQQZ.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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- var t="http://localhost:5173/";export{t as a};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{g as w,i as u,j as m,k as l}from"./chunk-TRA4IJCY.js";var p="sootsim:settings",v=["errorReporting","colorScheme","a11yMode","a11yDepth","screenshotCanvas","screenshotBackground","screenshotText","screenshotPose","screenshotDynamicSize","agentProvider","onboardingComplete","betaConsentVersion","detailedTelemetry"];function S(){if(typeof window>"u")return null;let e=window.sootsimElectron;return e&&typeof e=="object"?e:null}function g(e){let t={};for(let n of v){if(!(n in e))continue;let r=e[n],o=u[n];o.validate&&!o.validate(r)||o.options&&!o.options.includes(r)||(t[n]=r)}return t}function h(e){let t={};for(let n of v)t[n]=e[n];return t}function _(){if(typeof localStorage>"u")return{};try{let e=localStorage.getItem(p);return e?g(JSON.parse(e)):{}}catch{return{}}}function V(e){if(!(typeof localStorage>"u"))try{localStorage.setItem(p,JSON.stringify(h(e)))}catch{}}function E(){let t=S()?.sharedConfig?.settings;return!t||typeof t!="object"?{}:g(t)}function K(e){let t=S();if(t?.writeSharedConfig)try{t.writeSharedConfig({settings:h(e)})}catch{}}function k(){if(typeof window>"u")return null;let e=window.__sootsimSharedConfig;return e&&typeof e=="object"?e:null}function j(){let e=k()?.settings;return!e||typeof e!="object"?{}:g(e)}function D(e){if(!k())return;let t={settings:h(e)};try{if(globalThis.__sootsimBridgeRequest?.writeSharedConfig?.(t))return}catch{}if(!(typeof fetch>"u"))try{fetch("/__sootsim/shared-config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),keepalive:!0}).catch(()=>{})}catch{}}function b(){let e=_(),t=j(),n=E();return{...e,...t,...n}}function R(e){V(e),K(e),D(e)}function C(e){if(typeof window>"u")return()=>{};let t=i=>{if(!(i.key!==p||i.newValue==null))try{e(g(JSON.parse(i.newValue)))}catch{}};window.addEventListener("storage",t);let n=S(),r;n?.onSharedConfigChanged&&(r=n.onSharedConfigChanged(i=>{let d=i?.settings;!d||typeof d!="object"||e(g(d))}));let c=globalThis.__sootsimBridgeRequest?.subscribeSharedConfig?.(i=>{let d=i?.settings;!d||typeof d!="object"||e(g(d))});return()=>{window.removeEventListener("storage",t),r?.(),c?.()}}var M=l(),P=b();for(let e of Object.keys(m()))delete P[e];var s={...M,...P},f=[],a=null;function y(){for(let e of f)e();R(s)}C(e=>{let t={...s},n=!1;for(let[r,o]of Object.entries(e)){let c=r;t[c]!==o&&(t[c]=o,n=!0)}if(n){s=t,a=null;for(let r of f)r()}});var L={get(e){return s[e]},set(e,t){let n=u[e];n.validate&&!n.validate(t)||n.options&&!n.options.includes(t)||s[e]!==t&&(s={...s,[e]:t},e==="deviceModel"&&(a=null),y())},getAll(){return s},apply(e){let t=!1,n={...s};for(let[r,o]of Object.entries(e)){if(o===void 0)continue;let c=r,i=u[c];i&&(i.validate&&!i.validate(o)||i.options&&!i.options.includes(o)||n[c]!==o&&(n[c]=o,t=!0))}t&&(s=n,a=null,y())},reset(){s=l(),a=null,y()},subscribe(e){return f.push(e),()=>{f=f.filter(t=>t!==e)}},getDeviceSpec(){return a||(a=w(s.deviceModel)),a},getA11yMode(){return s.a11yMode},setA11yMode(e){this.set("a11yMode",e)},getInspectMode(){return s.inspectMode},setInspectMode(e){this.set("inspectMode",e)}};export{L as a};
@@ -1 +0,0 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
@@ -1 +0,0 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a}from"./chunk-YWUBSH2K.js";import"./chunk-A27TUQQZ.js";export{a as getCliVersion};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import"./chunk-HONMR5LW.js";import{a,b,c,d,e,f,g,h,i}from"./chunk-7GBAY2BX.js";import"./chunk-6MAW2X3J.js";import"./chunk-4QJCDB6B.js";import"./chunk-SMMTE4QY.js";import"./chunk-MNMNX4O7.js";import"./chunk-T35Q6ZGG.js";import"./chunk-ANTCWWXN.js";import"./chunk-A27TUQQZ.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.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a as c,b as d,c as e,d as f}from"./chunk-2R6ALEI7.js";import"./chunk-2GAVMQGW.js";import"./chunk-WJA4MM4L.js";import"./chunk-F6YOWJAA.js";import"./chunk-RHHCV6M4.js";import"./chunk-3Q7M3ATN.js";import{c as a,d as b}from"./chunk-3AALQI5D.js";import"./chunk-C6XQHJFR.js";import"./chunk-QS37KABB.js";import"./chunk-5HCF2FQK.js";import"./chunk-AXNDFONG.js";import"./chunk-YENFSYAG.js";import"./chunk-Q3UIMXJY.js";import"./chunk-QZAJOB4N.js";import"./chunk-7GBAY2BX.js";import"./chunk-6MAW2X3J.js";import"./chunk-4QJCDB6B.js";import"./chunk-SMMTE4QY.js";import"./chunk-MNMNX4O7.js";import"./chunk-T35Q6ZGG.js";import"./chunk-RV3WN4FQ.js";import"./chunk-R76YX6KD.js";import"./chunk-RGJAUL7P.js";import"./chunk-OW2ZBOB3.js";import"./chunk-36RF3WRB.js";import"./chunk-QNJYE5OY.js";import"./chunk-TRA4IJCY.js";import"./chunk-ANTCWWXN.js";import"./chunk-A27TUQQZ.js";export{c as discoverSootsimUrl,e as hoistLeadingSimFlag,a as parseFlowFile,f as runFlow,d as runFlowPlayback,b as validateFlowFile};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c}from"./chunk-KSNQFEBZ.js";import"./chunk-RGJAUL7P.js";import"./chunk-CUPKQONE.js";import"./chunk-OW2ZBOB3.js";import"./chunk-36RF3WRB.js";import"./chunk-YWUBSH2K.js";import"./chunk-F6UIBH3K.js";import"./chunk-TRA4IJCY.js";import"./chunk-ANTCWWXN.js";import"./chunk-A27TUQQZ.js";export{c as printCommandHelp,b as printGroupHelp,a as printHelp};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a as o}from"./chunk-AUMBVWWD.js";import"./chunk-DNM2AOHD.js";import"./chunk-NX6V5VAV.js";import"./chunk-Q3UIMXJY.js";import"./chunk-T35Q6ZGG.js";import"./chunk-RV3WN4FQ.js";import"./chunk-R76YX6KD.js";import"./chunk-36RF3WRB.js";import"./chunk-ANTCWWXN.js";import"./chunk-A27TUQQZ.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,2 +0,0 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b}from"./chunk-QZAJOB4N.js";import"./chunk-A27TUQQZ.js";export{a as loadOptionalDemoApps,b as optionalDemoAppsSync};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b}from"./chunk-NRBPTQVR.js";import"./chunk-Q3UIMXJY.js";import"./chunk-T35Q6ZGG.js";import"./chunk-36RF3WRB.js";import"./chunk-7ODTKW6U.js";import"./chunk-ANTCWWXN.js";import"./chunk-A27TUQQZ.js";export{b as formatReleaseEntry,a as runRuntime};
@@ -1,70 +0,0 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{b as Y}from"./chunk-2R6ALEI7.js";import{b as j}from"./chunk-2GAVMQGW.js";import"./chunk-WJA4MM4L.js";import"./chunk-F6YOWJAA.js";import"./chunk-RHHCV6M4.js";import"./chunk-3Q7M3ATN.js";import{b as O}from"./chunk-3AALQI5D.js";import"./chunk-C6XQHJFR.js";import"./chunk-QS37KABB.js";import"./chunk-5HCF2FQK.js";import"./chunk-AXNDFONG.js";import"./chunk-YENFSYAG.js";import"./chunk-Q3UIMXJY.js";import"./chunk-QZAJOB4N.js";import"./chunk-7GBAY2BX.js";import"./chunk-6MAW2X3J.js";import"./chunk-4QJCDB6B.js";import"./chunk-SMMTE4QY.js";import"./chunk-MNMNX4O7.js";import"./chunk-T35Q6ZGG.js";import"./chunk-RV3WN4FQ.js";import"./chunk-R76YX6KD.js";import"./chunk-RGJAUL7P.js";import"./chunk-OW2ZBOB3.js";import"./chunk-36RF3WRB.js";import"./chunk-QNJYE5OY.js";import{a as w,b as D,c as k,d as z,e as x,f as T}from"./chunk-TRA4IJCY.js";import"./chunk-ANTCWWXN.js";import"./chunk-A27TUQQZ.js";import{mkdirSync as B,readFileSync as pe,writeFileSync as G}from"fs";import{tmpdir as je}from"os";import C from"path";import{mkdirSync as I,readFileSync as Q,writeFileSync as H}from"fs";import F from"path";function _(e){return e.replace(/\\/g,"/").replace(/\.png$/i,"").trim().split("/").filter(Boolean).join("--").replace(/[^A-Za-z0-9-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")||"slide"}function v(e){return e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function ee(e){let t=e.trim();return/^#[0-9a-f]{3}$/i.test(t)?`#${t[1]}${t[1]}${t[2]}${t[2]}${t[3]}${t[3]}`:t}function M(e,t){let o=ee(e),i=Math.max(0,Math.min(1,t)),n=o.match(/^#([0-9a-f]{6})$/i);if(n){let s=n[1],r=Number.parseInt(s.slice(0,2),16),a=Number.parseInt(s.slice(2,4),16),u=Number.parseInt(s.slice(4,6),16);return`rgba(${r}, ${a}, ${u}, ${i})`}return o.startsWith("rgb(")?o.replace(/^rgb\((.+)\)$/i,`rgba($1, ${i})`):o}function te(e){if(e.type==="solid")return e.color||"#000000";let t=e.direction??180,o=e.stops?.map(i=>`${i.color} ${i.offset}%`).join(", ")||"#000000 0%, #111111 100%";return`linear-gradient(${t}deg, ${o})`}function re(e){let t=e.glow;return t?`radial-gradient(circle at 50% 24%, ${M(t,.46)} 0%, ${M(t,.2)} 24%, rgba(0,0,0,0) 62%)`:"none"}function A(e){switch(e){case"tilted-left":return"perspective(2400px) rotateY(10deg) rotateZ(-2deg)";case"tilted-right":return"perspective(2400px) rotateY(-10deg) rotateZ(2deg)";case"cut-bottom":return"translateY(10%) scale(1.08)";case"cut-top":return"translateY(-16%) scale(1.08)";case"straight":default:return"none"}}function L(...e){let t=e.map(o=>o.trim()).filter(o=>o.length>0&&o!=="none");return t.length>0?t.join(" "):"none"}function E(e){let t=M(e.color,e.opacity),o=M(e.color,e.opacity*.52);return`drop-shadow(0 34px ${e.spread}px ${o}) drop-shadow(0 0 ${e.blur}px ${t})`}function R(e,t){return!t.glow||e.color&&e.color!==w.color?e:{...e,color:t.glow}}function oe(e,t){if(e==="editorial-left"){let n=Math.round(t.height*.056),s=Math.round(t.height*.022);return{copyStyle:["position:absolute",`top:${Math.round(t.height*.12)}px`,`left:${Math.round(t.width*.085)}px`,`width:${Math.round(t.width*.42)}px`,"text-align:left","z-index:3"].join(";"),titleStyle:`font-size:${n}px;line-height:0.92;`,subStyle:`font-size:${s}px;line-height:1.36;max-width:${Math.round(t.width*.36)}px;`,eyebrowStyle:"align-items:flex-start;",deviceStyle:(r,a,u)=>{let p=Math.round(t.width*.68*(a.scale??r.scale)),l=Math.round(t.height*(.03+r.offsetY+(a.offsetY??0))),c=a.pose||r.pose||"tilted-right",m=R(r.shadow,u);return["position:absolute",`top:${Math.round(t.height*.18)+l}px`,`left:${Math.round(t.width*.56)}px`,`width:${p}px`,"transform-origin:center center",`transform:${A(c)}`,`filter:${E(m)}`,"z-index:2"].join(";")}}}if(e==="minimal-bottom"){let n=Math.round(t.height*.041),s=Math.round(t.height*.019);return{copyStyle:["position:absolute",`left:${Math.round(t.width*.12)}px`,`right:${Math.round(t.width*.12)}px`,`bottom:${Math.round(t.height*.085)}px`,"text-align:center","z-index:3"].join(";"),titleStyle:`font-size:${n}px;line-height:0.96;`,subStyle:`font-size:${s}px;line-height:1.34;max-width:${Math.round(t.width*.56)}px;margin:0 auto;`,eyebrowStyle:"align-items:center;",deviceStyle:(r,a,u)=>{let p=Math.round(t.width*.84*(a.scale??r.scale)),l=Math.round(t.height*(r.offsetY+(a.offsetY??0))),c=a.pose||r.pose,m=R(r.shadow,u);return["position:absolute",`top:${Math.round(t.height*.075)+l}px`,"left:50%",`width:${p}px`,"transform-origin:center center",`transform:${L("translateX(-50%)",A(c))}`,`filter:${E(m)}`,"z-index:2"].join(";")}}}let o=Math.round(t.height*.04),i=Math.round(t.height*.019);return{copyStyle:["position:absolute",`top:${Math.round(t.height*.084)}px`,"left:50%",`width:${Math.round(t.width*.88)}px`,"transform:translateX(-50%)","text-align:center","z-index:3"].join(";"),titleStyle:`font-size:${o}px;line-height:0.92;`,subStyle:`font-size:${i}px;line-height:1.34;max-width:${Math.round(t.width*.6)}px;margin:0 auto;`,eyebrowStyle:"align-items:center;",deviceStyle:(n,s,r)=>{let a=t.name==="ipad-13"?.54:.64,u=Math.round(t.width*a*(s.scale??n.scale)),p=Math.round(t.height*(n.offsetY+(s.offsetY??0))),l=s.pose||n.pose,c=R(n.shadow,r);return["position:absolute",`top:${Math.round(t.height*(t.name==="ipad-13"?.25:.28))+p}px`,"left:50%",`width:${u}px`,"transform-origin:center top",`transform:${L("translateX(-50%)",A(l))}`,`filter:${E(c)}`,"z-index:2"].join(";")}}}function ne({canvas:e,compose:t,slide:o,imageDataUrl:i}){let n=o.background??t.background,s=oe(t.text.preset,e),r=t.text.preset!=="none"&&!!(o.eyebrow||o.headline||o.subheadline),a=s.deviceStyle(t.frame,o,n),u=o.headline?`<div style="font-weight:780;white-space:pre-line;text-wrap:balance;${s.titleStyle}">${v(o.headline)}</div>`:"",p=o.subheadline?`<div style="margin-top:${Math.round(e.height*.018)}px;color:${t.text.subColor};white-space:pre-line;text-wrap:balance;${s.subStyle}">${v(o.subheadline)}</div>`:"",l=o.eyebrow?`<div style="display:flex;${s.eyebrowStyle}margin-bottom:${Math.round(e.height*.016)}px;"><div style="font-size:${Math.round(e.height*.014)}px;font-weight:700;letter-spacing:0.18em;text-transform:uppercase;color:${t.text.eyebrowColor};">${v(o.eyebrow)}</div></div>`:"";return`<!doctype html>
3
- <html>
4
- <head>
5
- <meta charset="utf-8" />
6
- <style>
7
- html, body {
8
- margin: 0;
9
- width: ${e.width}px;
10
- height: ${e.height}px;
11
- overflow: hidden;
12
- background: transparent;
13
- }
14
- body {
15
- font-family: "SF Pro Display", "Helvetica Neue", system-ui, sans-serif;
16
- }
17
- #canvas {
18
- position: relative;
19
- width: ${e.width}px;
20
- height: ${e.height}px;
21
- overflow: hidden;
22
- background: ${te(n)};
23
- color: ${t.text.color};
24
- isolation: isolate;
25
- }
26
- #glow {
27
- position: absolute;
28
- inset: 0;
29
- background: ${re(n)};
30
- pointer-events: none;
31
- }
32
- #copy {
33
- ${s.copyStyle};
34
- }
35
- #device {
36
- ${a};
37
- }
38
- #device img {
39
- display: block;
40
- width: 100%;
41
- height: auto;
42
- }
43
- </style>
44
- </head>
45
- <body>
46
- <div id="canvas">
47
- <div id="glow"></div>
48
- ${r?`<div id="copy">${l}${u}${p}</div>`:""}
49
- <div id="device"><img src="${i}" alt="" /></div>
50
- </div>
51
- </body>
52
- </html>`}async function U(e,t,o){let i=[],n=o??await(async()=>{let{chromium:r}=await import("playwright");return r.launch({headless:!0})})();try{let r=await n.newContext({viewport:{width:1280,height:720}});try{for(let a of t){let p=`data:image/png;base64,${Q(a.imagePath).toString("base64")}`;for(let l of e.canvases){let c=await r.newPage();try{await c.setViewportSize({width:l.width,height:l.height}),await c.setContent(ne({canvas:l,compose:e,slide:a.slide,imageDataUrl:p}),{waitUntil:"load"}),await c.waitForTimeout(20);let m=F.join(e.outDir,l.name,e.locale);I(m,{recursive:!0});let f=F.join(m,`${a.slide.assetKey}.png`),P=await c.screenshot({type:"png",clip:{x:0,y:0,width:l.width,height:l.height}});H(f,P),i.push({slideId:a.slide.id,canvas:l.name,locale:e.locale,outputPath:f,sourcePath:a.imagePath})}finally{await c.close()}}}}finally{await r.close()}}finally{!o&&typeof n.close=="function"&&await n.close()}I(e.outDir,{recursive:!0});let s=F.join(e.outDir,"manifest.json");return H(s,JSON.stringify({generatedAt:new Date().toISOString(),locale:e.locale,outputs:i},null,2)),{manifestPath:s,outputs:i.map(r=>r.outputPath),entries:i}}import{readFileSync as se}from"fs";import y from"path";function d(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function $(e,t){if(!d(e))throw new Error(`${t} must be an object`);return e}function h(e,t=""){return typeof e=="string"?e:t}function g(e){return typeof e=="string"&&e.trim().length>0?e.trim():null}function K(e,t){return typeof e=="boolean"?e:t}function S(e,t){return typeof e=="number"&&Number.isFinite(e)?e:t}function q(e,t){return typeof e!="string"||e.trim().length===0?t:Object.prototype.hasOwnProperty.call(T,e)?e:null}function W(e,t){if(typeof e=="string"){let n=x(e);if(!n)throw new Error(`unknown background preset: ${e}`);return n}if(!d(e))return z(t);let o=e.type==="solid"||e.type==="gradient"?e.type:t.type;if(o==="solid")return{type:o,color:h(e.color,t.color??"#000000"),glow:g(e.glow)??t.glow};let i=Array.isArray(e.stops)?e.stops.map(n=>{if(!d(n))return null;let s=S(n.offset,Number.NaN),r=g(n.color);return!Number.isFinite(s)||!r?null:{offset:s,color:r}}).filter(n=>!!n):t.stops?.map(n=>({...n}))??[];return{type:o,direction:S(e.direction,t.direction??180),glow:g(e.glow)??t.glow,stops:i.length>0?i:t.stops?.map(n=>({...n}))??[]}}function ie(e){let o=(Array.isArray(e)?e:["iphone-6-9"]).map(i=>{if(typeof i!="string")throw new Error("compose.canvases entries must be strings");let n=k(i);if(!n)throw new Error(`unknown canvas preset: ${i}`);return n});if(o.length===0)throw new Error("compose.canvases must include at least one preset");return o}function ae(e){switch(e){case"editorial-left":case"minimal-bottom":case"none":case"bold-top":return e;default:return"bold-top"}}function ce(e){switch(e){case"plan":case"flow":case"auto":return e;default:return"auto"}}function X(e){switch(e){case"straight":case"tilted-left":case"tilted-right":case"cut-bottom":case"cut-top":return e;default:return}}function b(e,t){return y.isAbsolute(t)?t:y.resolve(e,t)}function le(e,t){if(!Array.isArray(e)||e.length===0)throw new Error("compose.slides must be a non-empty array");return e.map((o,i)=>{let n=$(o,`compose.slides[${i}]`),s=g(n.screenshot);if(!s)throw new Error(`compose.slides[${i}].screenshot is required`);let r=g(n.id),a=_(r||s);return{id:r||a,assetKey:a,screenshot:s,headline:h(n.headline),subheadline:h(n.subheadline),eyebrow:h(n.eyebrow),pose:X(n.pose),scale:typeof n.scale=="number"&&Number.isFinite(n.scale)?n.scale:void 0,offsetY:typeof n.offsetY=="number"&&Number.isFinite(n.offsetY)?n.offsetY:void 0,background:n.theme||n.background?W(n.theme??n.background,t):void 0}})}function V(e){let t=y.resolve(e),o=y.dirname(t),i=O.parse(se(t,"utf8")),n=$(i,"screenshots plan"),s=$(n.capture??{},"capture"),r=$(n.compose??{},"compose"),a=typeof n.app=="number"?String(n.app):g(n.app),u=q(n.device,null),p=b(o,h(s.out,y.join(".sootsim","screenshots","capture"))),l=g(s.from),c=g(s.flow);if(!l&&!c)throw new Error("capture.flow or capture.from is required");let m=s.mode==="raw"||s.mode==="framed"||s.mode==="raw+framed"?s.mode:"raw+framed",f=ce(s.pathMode),P=W(r.background??"cyan",x("cyan")),J={show:K(r.frame&&d(r.frame)?r.frame.show:void 0,!0),style:q(r.frame&&d(r.frame)?r.frame.style:null,null)||u||D,pose:X(r.frame&&d(r.frame)?r.frame.pose:void 0)||"straight",scale:S(r.frame&&d(r.frame)?r.frame.scale:void 0,1),offsetY:S(r.frame&&d(r.frame)?r.frame.offsetY:void 0,0),shadow:{color:h(r.frame&&d(r.frame)&&d(r.frame.shadow)?r.frame.shadow.color:void 0,w.color),blur:S(r.frame&&d(r.frame)&&d(r.frame.shadow)?r.frame.shadow.blur:void 0,w.blur),spread:S(r.frame&&d(r.frame)&&d(r.frame.shadow)?r.frame.shadow.spread:void 0,w.spread),opacity:S(r.frame&&d(r.frame)&&d(r.frame.shadow)?r.frame.shadow.opacity:void 0,w.opacity)}};return{planPath:t,planDir:o,appTarget:a,deviceModel:u,capture:{flowPath:c?b(o,c):null,fromDir:l?b(o,l):null,outDir:p,rawDir:l?b(o,l):y.join(p,"raw"),framedDir:y.join(p,"framed"),mode:m,pathMode:f,simId:g(s.sim),openInNewSim:K(s.new,!1)},compose:{outDir:b(o,h(r.out,y.join(".sootsim","screenshots","exports"))),locale:h(r.locale,"en"),canvases:ie(r.canvases),frame:J,background:P,text:{preset:ae(r.text&&d(r.text)?r.text.preset:void 0),color:h(r.text&&d(r.text)?r.text.color:void 0,"#ffffff"),subColor:h(r.text&&d(r.text)?r.text.subColor:void 0,"rgba(232,240,247,0.86)"),eyebrowColor:h(r.text&&d(r.text)?r.text.eyebrowColor:void 0,"rgba(229,242,255,0.72)")},slides:le(r.slides,P)}}}function ue(e){return e.capture.pathMode==="plan"||e.capture.pathMode==="flow"?e.capture.pathMode:e.capture.fromDir?"flow":"plan"}function de(e,t){if(!e.capture.flowPath)throw new Error("capture flow path is required to build flow args");let o=[e.capture.flowPath],i=ue(e);o.push("--screenshots",e.capture.rawDir),i==="flow"&&o.push("--screenshot-paths","flow");let n=t.appTarget??e.appTarget,s=t.deviceModel??e.deviceModel,r=t.simId??e.capture.simId;return n&&o.push("--url",n),s&&o.push("--device",s),r&&o.push("--sim",r),e.capture.openInNewSim&&o.push("--new"),o}function N(e,t){return C.isAbsolute(t)?t:C.join(e.capture.rawDir,t)}function me(e){return C.join(e.capture.outDir,"manifest.json")}async function he(e,t){if(!e.capture.flowPath)return;B(e.capture.rawDir,{recursive:!0});let o=de(e,t),i=await Y(o);if(i!==0)throw new Error(`flow capture failed with exit code ${i}`)}async function fe(e,t){let o=new Map;B(e.capture.framedDir,{recursive:!0});let i=t??await(async()=>{let{chromium:n}=await import("playwright");return n.launch({headless:!0})})();try{let n=await j(i);try{for(let s of e.compose.slides){let r=N(e,s.screenshot),a=pe(r),u=await n.compose(a,e.compose.frame.style),p=C.join(e.capture.framedDir,`${s.assetKey}.png`);G(p,u),o.set(s.id,p)}}finally{await n.close()}}finally{!t&&typeof i.close=="function"&&await i.close()}return o}function ge(e,t,o){let i=[],n=[];B(e.capture.outDir,{recursive:!0});let s=me(e),r=e.compose.slides.map(a=>{let u=N(e,a.screenshot),p=t.get(a.id)??null;return i.push(u),p&&n.push(p),{id:a.id,screenshot:a.screenshot,rawPath:u,framedPath:p}});return G(s,JSON.stringify({generatedAt:new Date().toISOString(),deviceModel:o,mode:e.capture.mode,rawDir:e.capture.rawDir,framedDir:e.capture.framedDir,slides:r},null,2)),{manifestPath:s,rawDir:e.capture.rawDir,framedDir:e.capture.framedDir,rawFiles:i,framedFiles:n}}function we(e,t){return e.compose.slides.map(o=>({slide:o,imagePath:e.compose.frame.show===!0?t.get(o.id)??N(e,o.screenshot):N(e,o.screenshot)}))}async function Z(e,t={}){let o=V(e),i=t.deviceModel??o.deviceModel;t.composeOnly||await he(o,t);let n=o.capture.mode!=="raw"||!t.captureOnly&&o.compose.frame.show===!0,r=n||!t.captureOnly?await(async()=>{let{chromium:a}=await import("playwright");return a.launch({headless:!0})})():null;try{let a=n?await fe(o,r??void 0):new Map,u=ge(o,a,i);if(t.captureOnly)return{plan:o,capture:u,compose:null};let p=we(o,a),l=await U(o.compose,p,r??void 0);return{plan:o,capture:u,compose:l}}finally{r&&typeof r.close=="function"&&await r.close()}}async function qe(e,t={}){if(e.includes("--help")||e.includes("-h"))return console.log(`
53
- sootsim screenshots \u2014 capture and compose app-store screenshot sets
54
-
55
- usage:
56
- sootsim screenshots --plan <plan.yaml> [options]
57
-
58
- options:
59
- --plan <path> screenshot plan yaml
60
- --sim <id> reuse a live sim for capture
61
- --app <target> override plan app target (port, url, or shell url)
62
- --device <model> override plan capture device for this run
63
- --capture-only stop after raw/framed intermediates
64
- --compose-only skip flow capture, reuse existing raw screenshots
65
-
66
- examples:
67
- sootsim screenshots --plan app-store.yaml
68
- sootsim screenshots --plan app-store.yaml --sim a9
69
- sootsim screenshots --plan app-store.yaml --device iphone-14
70
- `),0;let o=c=>e.find((m,f)=>e[f-1]===c),i=new Set(["--plan","--sim","--app","--device"]),n=e.filter((c,m)=>{if(c.startsWith("-"))return!1;let f=e[m-1];return!f||!i.has(f)}),s=o("--plan")||n[0];if(!s)return console.error(" error: screenshots plan path is required (`--plan <path>`)."),1;let r=o("--sim")?.trim()||null,a=o("--app")?.trim()||null,u=o("--device")?.trim()||null,p=e.includes("--capture-only"),l=e.includes("--compose-only");try{let c=await Z(s,{simId:r,appTarget:a,deviceModel:u,captureOnly:p,composeOnly:l});return console.log(` capture manifest: ${c.capture.manifestPath}`),c.compose?(console.log(` compose manifest: ${c.compose.manifestPath}`),console.log(` exports: ${c.compose.outputs.length}`)):console.log(" compose skipped"),0}catch(c){return console.error(` screenshots failed: ${c.message}`),1}}export{qe as runScreenshots};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a}from"./chunk-AUMBVWWD.js";import"./chunk-DNM2AOHD.js";import"./chunk-NX6V5VAV.js";import"./chunk-Q3UIMXJY.js";import"./chunk-T35Q6ZGG.js";import"./chunk-RV3WN4FQ.js";import"./chunk-R76YX6KD.js";import"./chunk-36RF3WRB.js";import"./chunk-ANTCWWXN.js";import"./chunk-A27TUQQZ.js";export{a as runSetupRepo};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a}from"./chunk-QNJYE5OY.js";import"./chunk-TRA4IJCY.js";import"./chunk-A27TUQQZ.js";export{a as settingsStore};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b}from"./chunk-RV3WN4FQ.js";import"./chunk-R76YX6KD.js";import"./chunk-ANTCWWXN.js";import"./chunk-A27TUQQZ.js";export{b as flushCliTelemetry,a as trackCliEvent};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.145 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c}from"./chunk-RHHCV6M4.js";import"./chunk-3Q7M3ATN.js";import"./chunk-YENFSYAG.js";import"./chunk-Q3UIMXJY.js";import"./chunk-SMMTE4QY.js";import"./chunk-MNMNX4O7.js";import"./chunk-T35Q6ZGG.js";import"./chunk-RV3WN4FQ.js";import"./chunk-R76YX6KD.js";import"./chunk-36RF3WRB.js";import"./chunk-ANTCWWXN.js";import"./chunk-A27TUQQZ.js";export{a as resolveDefaultUploadOrigin,b as resolvePublicPreviewOrigin,c as runUpload};