sootsim 0.1.172 → 0.1.174

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 (150) hide show
  1. package/README.md +25 -0
  2. package/dist-cli/bin.js +3 -3
  3. package/dist-cli/chunks/{agent-WQ7M46K4.js → agent-EHUPKIHD.js} +2 -2
  4. package/dist-cli/chunks/{agent-wrapper-PLQVHHZV.js → agent-wrapper-L5F5DCXN.js} +2 -2
  5. package/dist-cli/chunks/{app-fonts-COYEPFDN.js → app-fonts-K4FD7ITP.js} +2 -2
  6. package/dist-cli/chunks/{assert-BK3NDOF2.js → assert-IAGOGXRA.js} +2 -2
  7. package/dist-cli/chunks/beta-U7KMLBHU.js +2 -0
  8. package/dist-cli/chunks/{camera-RU533SOI.js → camera-YRT5HULX.js} +2 -2
  9. package/dist-cli/chunks/chunk-3FGEZ5ZM.js +1 -0
  10. package/dist-cli/chunks/{chunk-LGXEPAHS.js → chunk-3SU6H3TH.js} +1 -1
  11. package/dist-cli/chunks/{chunk-KHDX36G5.js → chunk-4UEZKS2B.js} +3 -3
  12. package/dist-cli/chunks/{chunk-TLX7JDQK.js → chunk-6BM25DJX.js} +2 -2
  13. package/dist-cli/chunks/{chunk-SYAAEME6.js → chunk-6OROZMOR.js} +1 -1
  14. package/dist-cli/chunks/{chunk-TM5K4CCK.js → chunk-7A4YXD3W.js} +1 -1
  15. package/dist-cli/chunks/{chunk-Q5L2HSIK.js → chunk-7E24LDJL.js} +1 -1
  16. package/dist-cli/chunks/{chunk-LENELFGE.js → chunk-7MVFXNE7.js} +3 -3
  17. package/dist-cli/chunks/{chunk-ZMY6B3ZC.js → chunk-7NRQVOIK.js} +2 -2
  18. package/dist-cli/chunks/{chunk-AYNXI62J.js → chunk-7QNSKZ5Y.js} +1 -1
  19. package/dist-cli/chunks/chunk-C77TGXJ6.js +1 -0
  20. package/dist-cli/chunks/{chunk-CMH3BW27.js → chunk-CBNM2JQX.js} +2 -2
  21. package/dist-cli/chunks/{chunk-4J3T7PQJ.js → chunk-DY55G3EZ.js} +2 -2
  22. package/dist-cli/chunks/{chunk-BMIRPWXB.js → chunk-FFKK3UYP.js} +1 -1
  23. package/dist-cli/chunks/{chunk-PTBDLOWI.js → chunk-GERUGIKH.js} +1 -1
  24. package/dist-cli/chunks/chunk-GPC5MNUW.js +2 -0
  25. package/dist-cli/chunks/{chunk-T47U5L2K.js → chunk-H4FFM26I.js} +1 -1
  26. package/dist-cli/chunks/{chunk-NPWSQT6H.js → chunk-HOQZJLG7.js} +2 -2
  27. package/dist-cli/chunks/{chunk-BIWY73P5.js → chunk-IIEAMA66.js} +2 -2
  28. package/dist-cli/chunks/{chunk-LHCRB57U.js → chunk-IX2RHMWB.js} +2 -2
  29. package/dist-cli/chunks/{chunk-EJ76TW66.js → chunk-J2O2AEFO.js} +1 -1
  30. package/dist-cli/chunks/{chunk-46UXO5SQ.js → chunk-JE2Q25A4.js} +1 -1
  31. package/dist-cli/chunks/{chunk-RD6VD4EB.js → chunk-KERGT5NG.js} +2 -2
  32. package/dist-cli/chunks/{chunk-YUOZCM27.js → chunk-KLPYSMAV.js} +1 -1
  33. package/dist-cli/chunks/{chunk-V2EE4PUL.js → chunk-M25NFKL5.js} +2 -2
  34. package/dist-cli/chunks/{chunk-6HZQNXH6.js → chunk-MMIENHCP.js} +2 -2
  35. package/dist-cli/chunks/{chunk-62W3D6EE.js → chunk-MZP77ZME.js} +1 -1
  36. package/dist-cli/chunks/{chunk-IEI42LDX.js → chunk-N5CGRRGJ.js} +1 -1
  37. package/dist-cli/chunks/{chunk-N7PCRU6E.js → chunk-NEIN26HI.js} +2 -2
  38. package/dist-cli/chunks/{chunk-RCN3YTNR.js → chunk-O2PWKVDV.js} +2 -2
  39. package/dist-cli/chunks/{chunk-6E2UB6LQ.js → chunk-OXREO6LV.js} +2 -2
  40. package/dist-cli/chunks/{chunk-4BIG3MC7.js → chunk-QWKK2QEY.js} +1 -1
  41. package/dist-cli/chunks/{chunk-DAIJBIM3.js → chunk-RPRFPJKT.js} +2 -2
  42. package/dist-cli/chunks/{chunk-42CB2PAE.js → chunk-SCM3ERN4.js} +1 -1
  43. package/dist-cli/chunks/{chunk-7Q6G6GQQ.js → chunk-SFHH65G2.js} +2 -2
  44. package/dist-cli/chunks/{chunk-RQWJY32F.js → chunk-STSULGMI.js} +2 -2
  45. package/dist-cli/chunks/{chunk-UJCUPX54.js → chunk-SWKBOGBZ.js} +2 -2
  46. package/dist-cli/chunks/{chunk-6GI3NZFP.js → chunk-TH3AEL45.js} +2 -2
  47. package/dist-cli/chunks/{chunk-NVBBJ3G2.js → chunk-TPE7XEGU.js} +2 -2
  48. package/dist-cli/chunks/{chunk-B23C5UYK.js → chunk-U7BX2XYL.js} +1 -1
  49. package/dist-cli/chunks/{chunk-4LAKUGO7.js → chunk-UARZTJ6K.js} +1 -1
  50. package/dist-cli/chunks/{chunk-53XIVSKW.js → chunk-W3SYJD3H.js} +2 -2
  51. package/dist-cli/chunks/{chunk-MRVSPAIH.js → chunk-X7OTWLOA.js} +2 -2
  52. package/dist-cli/chunks/{chunk-PM4SIKKG.js → chunk-YA46Q5HY.js} +2 -2
  53. package/dist-cli/chunks/{chunk-TJGRGSYC.js → chunk-YA4XRTIG.js} +1 -1
  54. package/dist-cli/chunks/cli-version-YJOJPTJN.js +2 -0
  55. package/dist-cli/chunks/{compat-5DGHR45U.js → compat-SJW4SLDF.js} +3 -3
  56. package/dist-cli/chunks/{control-FNKKISVL.js → control-HS3KMAUF.js} +2 -2
  57. package/dist-cli/chunks/{cpu-profile-JUAWGPGI.js → cpu-profile-E46RYKZY.js} +2 -2
  58. package/dist-cli/chunks/daemon-ZTEQIFR3.js +2 -0
  59. package/dist-cli/chunks/{debug-CW6DJ4JU.js → debug-TO5VRPFP.js} +3 -3
  60. package/dist-cli/chunks/{detox-CWAWL7PV.js → detox-IWT2ZC6E.js} +2 -2
  61. package/dist-cli/chunks/{device-RWDY3QWG.js → device-MM2473ZQ.js} +2 -2
  62. package/dist-cli/chunks/{diagnose-OHHX4L5I.js → diagnose-5COWPUYY.js} +2 -2
  63. package/dist-cli/chunks/drivers-VFOM6SJP.js +2 -0
  64. package/dist-cli/chunks/{electron-OLREFRMH.js → electron-HQGMUN3T.js} +3 -3
  65. package/dist-cli/chunks/flow-Z5DTMEGY.js +2 -0
  66. package/dist-cli/chunks/help-GYJH5S4Y.js +2 -0
  67. package/dist-cli/chunks/{hints-MIKS44U2.js → hints-G6LSQHOA.js} +2 -2
  68. package/dist-cli/chunks/{home-paths-GCXNBHYT.js → home-paths-WVKPC676.js} +2 -2
  69. package/dist-cli/chunks/{inspect-TIGJUGBG.js → inspect-LTFGONJD.js} +3 -3
  70. package/dist-cli/chunks/{install-desktop-MU56WK46.js → install-desktop-CWTQXAHN.js} +3 -3
  71. package/dist-cli/chunks/{keys-PFIFN6C7.js → keys-DCWFESUB.js} +2 -2
  72. package/dist-cli/chunks/{login-PVVH5YUA.js → login-WTZRKO4L.js} +4 -4
  73. package/dist-cli/chunks/{logout-GNKIGKTW.js → logout-3XCA6HOX.js} +2 -2
  74. package/dist-cli/chunks/{maestro-IGGZODE6.js → maestro-5VKHW67Y.js} +2 -2
  75. package/dist-cli/chunks/optional-demo-registry-VKTF3JLY.js +2 -0
  76. package/dist-cli/chunks/{preview-UF3NZLHQ.js → preview-ZBD2J4MR.js} +2 -2
  77. package/dist-cli/chunks/{profile-XR7KRATW.js → profile-3ENYOSN4.js} +2 -2
  78. package/dist-cli/chunks/{react-4VBBPTZN.js → react-DASWRMSI.js} +2 -2
  79. package/dist-cli/chunks/{record-35VQV7SI.js → record-EICRO6TY.js} +2 -2
  80. package/dist-cli/chunks/runtime-FLNHVIWT.js +2 -0
  81. package/dist-cli/chunks/{screenshot-GUXVAMU4.js → screenshot-HE6MAIMM.js} +2 -2
  82. package/dist-cli/chunks/{screenshot-mode-NM3S5FUB.js → screenshot-mode-OQDAMXSB.js} +2 -2
  83. package/dist-cli/chunks/{screenshots-XNVHV5OB.js → screenshots-5WZVXZ5W.js} +2 -2
  84. package/dist-cli/chunks/{screenshots-capture-AL7NR7CG.js → screenshots-capture-UZP6TEXX.js} +2 -2
  85. package/dist-cli/chunks/{serve-P4WR6SDD.js → serve-BAXU4D42.js} +2 -2
  86. package/dist-cli/chunks/{setup-VFE6WRVA.js → setup-DRMJTUMK.js} +2 -2
  87. package/dist-cli/chunks/skills-R6NXAFPT.js +48 -0
  88. package/dist-cli/chunks/{slides-TLMQ6CCP.js → slides-SGIOOUVU.js} +2 -2
  89. package/dist-cli/chunks/store-ZQ4F3GEO.js +2 -0
  90. package/dist-cli/chunks/telemetry-YTN2XUOV.js +2 -0
  91. package/dist-cli/chunks/{test-LDLES3IA.js → test-7HAXG4AU.js} +3 -3
  92. package/dist-cli/chunks/{three-mode-NULZ5VY2.js → three-mode-GBC3JNV6.js} +2 -2
  93. package/dist-cli/chunks/{timeline-4YNNQVMU.js → timeline-C3HHCWU7.js} +5 -5
  94. package/dist-cli/chunks/{upgrade-MGCZ4SP7.js → upgrade-AJ7FIJO2.js} +2 -2
  95. package/dist-cli/chunks/upload-JXH5MBZO.js +2 -0
  96. package/dist-cli/chunks/{version-BZC7W5V3.js → version-RYF5DY5P.js} +2 -2
  97. package/dist-cli/chunks/{web-GWHWLRGJ.js → web-VPQD3D5K.js} +2 -2
  98. package/dist-cli/chunks/{what-happened-5VQD3NPS.js → what-happened-QRPH35TD.js} +8 -7
  99. package/dist-cli/chunks/{whoami-SF4NA5VN.js → whoami-BPGQUMYX.js} +2 -2
  100. package/dist-lib/agent-daemon-client.cjs +1 -1
  101. package/dist-lib/agent-events.cjs +1 -1
  102. package/dist-lib/agent-sessions.cjs +1 -1
  103. package/dist-lib/attached-projects.cjs +1 -1
  104. package/dist-lib/auth/shared-session.cjs +1 -1
  105. package/dist-lib/backend-origin.cjs +1 -1
  106. package/dist-lib/beta.cjs +1 -1
  107. package/dist-lib/beta.mjs +1 -1
  108. package/dist-lib/bridge-constants.cjs +1 -1
  109. package/dist-lib/cli-constants.cjs +1 -1
  110. package/dist-lib/config.cjs +1 -1
  111. package/dist-lib/detox/index.cjs +1 -1
  112. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  113. package/dist-lib/home-paths.cjs +1 -1
  114. package/dist-lib/host/bridge-host.cjs +1 -1
  115. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  116. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  117. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  118. package/dist-lib/host/websocket-proxy.cjs +1 -1
  119. package/dist-lib/index.cjs +66 -1
  120. package/dist-lib/jump-to-source-babel.cjs +93 -0
  121. package/dist-lib/menu.cjs +1 -1
  122. package/dist-lib/menu.mjs +1 -1
  123. package/dist-lib/metro.cjs +1 -1
  124. package/dist-lib/profiles.cjs +1 -1
  125. package/dist-lib/render-mode.cjs +1 -1
  126. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  127. package/dist-lib/sdk.cjs +1 -1
  128. package/dist-lib/sdk.mjs +1 -1
  129. package/dist-lib/skills.cjs +1 -1
  130. package/dist-lib/vite.cjs +1 -1
  131. package/package.json +5 -1
  132. package/skills/soot.md +1 -1
  133. package/skills/sootsim-debug.md +23 -1
  134. package/src/index.ts +1 -0
  135. package/src/jump-to-source-babel.ts +135 -0
  136. package/dist-cli/chunks/beta-F3BMUABH.js +0 -2
  137. package/dist-cli/chunks/chunk-2NGGBDGA.js +0 -2
  138. package/dist-cli/chunks/chunk-72MDGPY7.js +0 -1
  139. package/dist-cli/chunks/chunk-JBGGTC5Z.js +0 -1
  140. package/dist-cli/chunks/cli-version-TNUDIF5R.js +0 -2
  141. package/dist-cli/chunks/daemon-IGYKJTV4.js +0 -2
  142. package/dist-cli/chunks/drivers-LM7U6WOI.js +0 -2
  143. package/dist-cli/chunks/flow-MEQ4WJ2A.js +0 -2
  144. package/dist-cli/chunks/help-CLCZJBU5.js +0 -2
  145. package/dist-cli/chunks/optional-demo-registry-2F65QTQK.js +0 -2
  146. package/dist-cli/chunks/runtime-LDYJVDWV.js +0 -2
  147. package/dist-cli/chunks/skills-ECYDZM76.js +0 -40
  148. package/dist-cli/chunks/store-JX7O3YO6.js +0 -2
  149. package/dist-cli/chunks/telemetry-SS4OVJ4R.js +0 -2
  150. package/dist-cli/chunks/upload-RKYUNV4M.js +0 -2
@@ -1,5 +1,5 @@
1
- /*! sootsim v0.1.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{C as N,D as F,E as y,P as T,Q as b,R as S}from"./chunk-PTBDLOWI.js";import{c as A,e as _}from"./chunk-RCN3YTNR.js";import"./chunk-4BIG3MC7.js";import{b as k}from"./chunk-LGXEPAHS.js";import"./chunk-SYAAEME6.js";import"./chunk-B23C5UYK.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.174 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{C as N,D as F,E as y,P as T,Q as b,R as S}from"./chunk-GERUGIKH.js";import{c as A,e as _}from"./chunk-O2PWKVDV.js";import"./chunk-QWKK2QEY.js";import{b as k}from"./chunk-3SU6H3TH.js";import"./chunk-6OROZMOR.js";import"./chunk-U7BX2XYL.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:
@@ -13,10 +13,11 @@ usage:
13
13
  sootsim what-happened --json
14
14
  sootsim what-happened --no-advance # don't advance cursor after read
15
15
 
16
- note: by default react-commit, layout, and scroll events are hidden as
17
- noise \u2014 pass --noisy or include them in --kinds to see them.
18
- `),process.exit(0));let s=n.includes("--summary"),l=n.includes("--flow"),i=n.includes("--all"),r=n.includes("--json"),u=n.includes("--no-advance"),v=n.includes("--noisy"),{since:a}=O(n),{kinds:d}=B(n),{limit:C}=D(n),g=k(),$={limit:C??200,...d&&d.length?{kinds:d}:{},...a!==void 0?{since:a}:i?{}:{sinceCursor:g}},h=_(e);try{if(s){let c=await N(h,$);if(r)console.log(JSON.stringify(c));else{let m=i?"all time":a!==void 0?`last ${((Date.now()-a)/1e3).toFixed(1)}s`:"since last call";console.log(` ${m}: ${T(c)}`)}!u&&!i&&c.lastAt&&await y(h,g,c.lastAt);return}let o=await F(h,$),E=Array.isArray(d)&&d.some(c=>b.has(c)),I=!v&&!E,f=0;if(I){let c=o.events.filter(m=>b.has(m.kind)?(f+=1,!1):!0);o.events=c}if(r)console.log(JSON.stringify(l?x(o.events):o,null,2));else{if(o.events.length===0)f>0?console.log(` no non-noise events (${f} react-commit/layout/scroll hidden)`):console.log(i?" no events recorded":a!==void 0?" no events in window":" no new events since last call");else if(l){let c=o.events[0]?.t??null,m=x(o.events),w=i?`\u2500\u2500\u2500 ${o.events.length} event(s) total \u2014 flow view \u2500\u2500\u2500`:a!==void 0?`\u2500\u2500\u2500 ${o.events.length} event(s) in last ${((Date.now()-a)/1e3).toFixed(1)}s \u2014 flow view \u2500\u2500\u2500`:`\u2500\u2500\u2500 ${o.events.length} event(s) since last call \u2014 flow view \u2500\u2500\u2500`;console.log(` ${w}`);for(let p of m){console.log(`
19
- \u2500\u2500 ${p.label} (${p.events.length} event${p.events.length===1?"":"s"}) \u2500\u2500`);for(let M of p.events)console.log(S(M,c))}}else{let c=o.events[0]?.t??null,m=i?`\u2500\u2500\u2500 ${o.events.length} event(s) total \u2500\u2500\u2500`:a!==void 0?`\u2500\u2500\u2500 ${o.events.length} event(s) in last ${((Date.now()-a)/1e3).toFixed(1)}s \u2500\u2500\u2500`:`\u2500\u2500\u2500 ${o.events.length} event(s) since last call \u2500\u2500\u2500`;console.log(` ${m}`);for(let w of o.events)console.log(S(w,c))}f>0&&o.events.length>0&&process.stderr.write(`
20
- ${f} high-frequency event(s) hidden (react-commit/layout/scroll)
16
+ note: react-commit, layout, and scroll are opt-in/noisy events. enable them
17
+ with "sootsim timeline start <kind>", then pass --noisy or include them in
18
+ --kinds to see them.
19
+ `),process.exit(0));let s=n.includes("--summary"),l=n.includes("--flow"),i=n.includes("--all"),r=n.includes("--json"),u=n.includes("--no-advance"),v=n.includes("--noisy"),{since:a}=O(n),{kinds:d}=B(n),{limit:C}=D(n),g=k(),$={limit:C??200,...d&&d.length?{kinds:d}:{},...a!==void 0?{since:a}:i?{}:{sinceCursor:g}},h=_(e);try{if(s){let c=await N(h,$);if(r)console.log(JSON.stringify(c));else{let m=i?"all time":a!==void 0?`last ${((Date.now()-a)/1e3).toFixed(1)}s`:"since last call";console.log(` ${m}: ${T(c)}`)}!u&&!i&&c.lastAt&&await y(h,g,c.lastAt);return}let o=await F(h,$),E=Array.isArray(d)&&d.some(c=>b.has(c)),I=!v&&!E,p=0;if(I){let c=o.events.filter(m=>b.has(m.kind)?(p+=1,!1):!0);o.events=c}if(r)console.log(JSON.stringify(l?x(o.events):o,null,2));else{if(o.events.length===0)p>0?console.log(` no non-noise events (${p} react-commit/layout/scroll hidden)`):console.log(i?" no events recorded":a!==void 0?" no events in window":" no new events since last call");else if(l){let c=o.events[0]?.t??null,m=x(o.events),w=i?`\u2500\u2500\u2500 ${o.events.length} event(s) total \u2014 flow view \u2500\u2500\u2500`:a!==void 0?`\u2500\u2500\u2500 ${o.events.length} event(s) in last ${((Date.now()-a)/1e3).toFixed(1)}s \u2014 flow view \u2500\u2500\u2500`:`\u2500\u2500\u2500 ${o.events.length} event(s) since last call \u2014 flow view \u2500\u2500\u2500`;console.log(` ${w}`);for(let f of m){console.log(`
20
+ \u2500\u2500 ${f.label} (${f.events.length} event${f.events.length===1?"":"s"}) \u2500\u2500`);for(let M of f.events)console.log(S(M,c))}}else{let c=o.events[0]?.t??null,m=i?`\u2500\u2500\u2500 ${o.events.length} event(s) total \u2500\u2500\u2500`:a!==void 0?`\u2500\u2500\u2500 ${o.events.length} event(s) in last ${((Date.now()-a)/1e3).toFixed(1)}s \u2500\u2500\u2500`:`\u2500\u2500\u2500 ${o.events.length} event(s) since last call \u2500\u2500\u2500`;console.log(` ${m}`);for(let w of o.events)console.log(S(w,c))}p>0&&o.events.length>0&&process.stderr.write(`
21
+ ${p} high-frequency event(s) hidden (react-commit/layout/scroll)
21
22
  rerun with --noisy or --kinds react-commit,layout,scroll to include them
22
23
  `)}!u&&!i&&o.watermark>0&&await y(h,g,o.watermark)}finally{h.close()}}export{J as runWhatHappened};
@@ -1,2 +1,2 @@
1
- /*! sootsim v0.1.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{d as i}from"./chunk-UJCUPX54.js";import{d as n}from"./chunk-7Q6G6GQQ.js";import"./chunk-SYAAEME6.js";import"./chunk-B23C5UYK.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.174 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{d as i}from"./chunk-SWKBOGBZ.js";import{d as n}from"./chunk-SFHH65G2.js";import"./chunk-6OROZMOR.js";import"./chunk-U7BX2XYL.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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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;
@@ -34,6 +34,7 @@ var src_exports = {};
34
34
  __export(src_exports, {
35
35
  DEFAULT_SOOTSIM_BRIDGE_PORT: () => DEFAULT_SOOTSIM_BRIDGE_PORT,
36
36
  DEFAULT_SOOTSIM_SHELL_URL: () => DEFAULT_SOOTSIM_SHELL_URL,
37
+ jumpToSourceBabelPlugin: () => sootsimJumpToSourceBabelPlugin,
37
38
  metroPlugin: () => metro_plugin_default,
38
39
  sootsimPlugin: () => sootsimPlugin
39
40
  });
@@ -345,6 +346,69 @@ function withSootsim(config, options = {}) {
345
346
  }
346
347
  var metro_plugin_default = withSootsim;
347
348
 
349
+ // src/jump-to-source-babel.ts
350
+ function normalizeSourcePath(path5) {
351
+ const queryStart = path5.indexOf("?");
352
+ const clean = queryStart >= 0 ? path5.slice(0, queryStart) : path5;
353
+ return clean.replace(/\\/g, "/");
354
+ }
355
+ function matchesPath(path5, matcher) {
356
+ return typeof matcher === "string" ? path5.includes(matcher) : matcher.test(path5);
357
+ }
358
+ function shouldStampFile(filename, options) {
359
+ const normalized = normalizeSourcePath(filename);
360
+ if (normalized.includes("/node_modules/")) return false;
361
+ if (normalized.includes("/dist/") || normalized.includes("/build/")) return false;
362
+ if (options.exclude?.some((matcher) => matchesPath(normalized, matcher))) return false;
363
+ if (options.include?.length) {
364
+ return options.include.some((matcher) => matchesPath(normalized, matcher));
365
+ }
366
+ return true;
367
+ }
368
+ function getJSXName(node) {
369
+ if (!node) return null;
370
+ if (node.type === "JSXIdentifier" && node.name) return node.name;
371
+ if (node.type === "JSXMemberExpression") {
372
+ const object = getJSXName(node.object);
373
+ const property = getJSXName(node.property);
374
+ return object && property ? `${object}.${property}` : null;
375
+ }
376
+ return null;
377
+ }
378
+ function hasAttribute(node, attrName) {
379
+ return node.attributes?.some((attr) => {
380
+ if (attr.type !== "JSXAttribute") return false;
381
+ return attr.name?.type === "JSXIdentifier" && attr.name.name === attrName;
382
+ }) ?? false;
383
+ }
384
+ function sootsimJumpToSourceBabelPlugin(api, options = {}) {
385
+ const attrName = options.attrName || "srcloc";
386
+ return {
387
+ name: "sootsim-jump-to-source",
388
+ visitor: {
389
+ JSXOpeningElement(path5, state) {
390
+ if (options.enabled === false) return;
391
+ const filename = state.file?.opts?.filename;
392
+ if (!filename || !shouldStampFile(filename, options)) return;
393
+ const node = path5.node;
394
+ const tagName = getJSXName(node.name);
395
+ if (!tagName || tagName === "Fragment" || tagName.endsWith(".Fragment")) return;
396
+ if (hasAttribute(node, attrName)) return;
397
+ const loc = node.loc?.start;
398
+ if (!loc) return;
399
+ const source = `${normalizeSourcePath(filename)}:${loc.line}:${loc.column + 1}`;
400
+ node.attributes ??= [];
401
+ node.attributes.push(
402
+ api.types.jsxAttribute(
403
+ api.types.jsxIdentifier(attrName),
404
+ api.types.stringLiteral(source)
405
+ )
406
+ );
407
+ }
408
+ }
409
+ };
410
+ }
411
+
348
412
  // src/bridge-constants.ts
349
413
  var DEFAULT_SOOTSIM_BRIDGE_PORT = 7668;
350
414
 
@@ -354,6 +418,7 @@ var DEFAULT_SOOTSIM_SHELL_URL = "http://localhost:5173/";
354
418
  0 && (module.exports = {
355
419
  DEFAULT_SOOTSIM_BRIDGE_PORT,
356
420
  DEFAULT_SOOTSIM_SHELL_URL,
421
+ jumpToSourceBabelPlugin,
357
422
  metroPlugin,
358
423
  sootsimPlugin
359
424
  });
@@ -0,0 +1,93 @@
1
+ /*! sootsim v0.1.174 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
+ "use strict";
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
+
22
+ // src/jump-to-source-babel.ts
23
+ var jump_to_source_babel_exports = {};
24
+ __export(jump_to_source_babel_exports, {
25
+ default: () => sootsimJumpToSourceBabelPlugin,
26
+ sootsimJumpToSourceBabelPlugin: () => sootsimJumpToSourceBabelPlugin
27
+ });
28
+ module.exports = __toCommonJS(jump_to_source_babel_exports);
29
+ function normalizeSourcePath(path) {
30
+ const queryStart = path.indexOf("?");
31
+ const clean = queryStart >= 0 ? path.slice(0, queryStart) : path;
32
+ return clean.replace(/\\/g, "/");
33
+ }
34
+ function matchesPath(path, matcher) {
35
+ return typeof matcher === "string" ? path.includes(matcher) : matcher.test(path);
36
+ }
37
+ function shouldStampFile(filename, options) {
38
+ const normalized = normalizeSourcePath(filename);
39
+ if (normalized.includes("/node_modules/")) return false;
40
+ if (normalized.includes("/dist/") || normalized.includes("/build/")) return false;
41
+ if (options.exclude?.some((matcher) => matchesPath(normalized, matcher))) return false;
42
+ if (options.include?.length) {
43
+ return options.include.some((matcher) => matchesPath(normalized, matcher));
44
+ }
45
+ return true;
46
+ }
47
+ function getJSXName(node) {
48
+ if (!node) return null;
49
+ if (node.type === "JSXIdentifier" && node.name) return node.name;
50
+ if (node.type === "JSXMemberExpression") {
51
+ const object = getJSXName(node.object);
52
+ const property = getJSXName(node.property);
53
+ return object && property ? `${object}.${property}` : null;
54
+ }
55
+ return null;
56
+ }
57
+ function hasAttribute(node, attrName) {
58
+ return node.attributes?.some((attr) => {
59
+ if (attr.type !== "JSXAttribute") return false;
60
+ return attr.name?.type === "JSXIdentifier" && attr.name.name === attrName;
61
+ }) ?? false;
62
+ }
63
+ function sootsimJumpToSourceBabelPlugin(api, options = {}) {
64
+ const attrName = options.attrName || "srcloc";
65
+ return {
66
+ name: "sootsim-jump-to-source",
67
+ visitor: {
68
+ JSXOpeningElement(path, state) {
69
+ if (options.enabled === false) return;
70
+ const filename = state.file?.opts?.filename;
71
+ if (!filename || !shouldStampFile(filename, options)) return;
72
+ const node = path.node;
73
+ const tagName = getJSXName(node.name);
74
+ if (!tagName || tagName === "Fragment" || tagName.endsWith(".Fragment")) return;
75
+ if (hasAttribute(node, attrName)) return;
76
+ const loc = node.loc?.start;
77
+ if (!loc) return;
78
+ const source = `${normalizeSourcePath(filename)}:${loc.line}:${loc.column + 1}`;
79
+ node.attributes ??= [];
80
+ node.attributes.push(
81
+ api.types.jsxAttribute(
82
+ api.types.jsxIdentifier(attrName),
83
+ api.types.stringLiteral(source)
84
+ )
85
+ );
86
+ }
87
+ }
88
+ };
89
+ }
90
+ // Annotate the CommonJS export names for ESM import in node:
91
+ 0 && (module.exports = {
92
+ sootsimJumpToSourceBabelPlugin
93
+ });
package/dist-lib/menu.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.174 | (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.172",
3
+ "version": "0.1.174",
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",
@@ -29,6 +29,10 @@
29
29
  "source": "./src/metro-plugin.ts",
30
30
  "default": "./dist-lib/metro.cjs"
31
31
  },
32
+ "./jump-to-source-babel": {
33
+ "source": "./src/jump-to-source-babel.ts",
34
+ "default": "./dist-lib/jump-to-source-babel.cjs"
35
+ },
32
36
  "./menu": {
33
37
  "source": "./src/menu.ts",
34
38
  "bun": "./src/menu.ts",
package/skills/soot.md CHANGED
@@ -99,7 +99,7 @@ skills for working with the SootSim native preview engine:
99
99
 
100
100
  | skill | description |
101
101
  | --- | --- |
102
- | `/sootsim-debug` | Debug rendering, performance, and accessibility issues in your React Native app under sootsim |
102
+ | `/sootsim-debug` | Debug rendering, animation, gesture, performance, and accessibility issues in a React Native app running under sootsim. Reach for this whenever an animation looks wrong (janky, stutters, snaps, only updates once, or doesn't move at all), a swipe/transition/gesture misbehaves or feels broken, scrolling drops frames or feels slow, the UI renders the wrong tree/props, or a screen reader can't reach something — and drive the sootsim CLI debug tooling first, not screenshots or ad-hoc logging. |
103
103
  | `/sootsim-setup` | Get sootsim connected to your React Native app — from `npm install sootsim` to a driveable sim |
104
104
  | `/sootsim-test` | Run automated tests against your React Native app under sootsim — native YAML flows, Maestro drop-in, or Detox drop-in |
105
105
  | `/sootsim-visual` | Pixel-level rendering comparison between sootsim and native iOS — fonts, gradients, shadows, image fidelity |
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: sootsim-debug
3
- description: Debug rendering, performance, and accessibility issues in your React Native app under sootsim
3
+ description: Debug rendering, animation, gesture, performance, and accessibility issues in a React Native app running under sootsim. Reach for this whenever an animation looks wrong (janky, stutters, snaps, only updates once, or doesn't move at all), a swipe/transition/gesture misbehaves or feels broken, scrolling drops frames or feels slow, the UI renders the wrong tree/props, or a screen reader can't reach something — and drive the sootsim CLI debug tooling first, not screenshots or ad-hoc logging.
4
4
  ---
5
5
 
6
6
  # sootsim debug
@@ -15,6 +15,28 @@ load `/sootsim-visual` instead.
15
15
  > needs a connected, pinned sim. if `sootsim describe` errors, load
16
16
  > `/sootsim-setup` first.
17
17
 
18
+ ## principle — drive the CLI, don't probe by hand
19
+
20
+ for any rendering, animation, gesture, or interaction bug, reach for the
21
+ sootsim CLI debug tooling **first** — `describe` and `find` to read the
22
+ tree, `debug snapshot` + `debug diff` to capture before/after, `debug
23
+ recent` on a channel and `debug perf` for frame-by-frame stats, and the
24
+ timeline for "what just happened". **do not** debug these by eye with
25
+ screenshots, sprinkle `console.log` through the render path, or spin up a
26
+ one-off browser-automation script. the canvas has no DOM to inspect, and a
27
+ CLI capture is reproducible, diffable, and shareable in a way a screenshot
28
+ never is.
29
+
30
+ if the existing CLI tools don't capture the issue cleanly — the animation
31
+ is too fast to read, the signal you need isn't on any channel, the
32
+ interaction spans a boundary the timeline doesn't section — the right move
33
+ is to **improve the debug tooling**, not to paper over it with throwaway
34
+ probes. add a durable, channel-gated, start/stop instrument that's off by
35
+ default (so baseline performance is untouched) and emits exactly the signal
36
+ you're chasing. a good capture command is one-shot reproducible, every
37
+ agent after you benefits from it, and the same capture can become a
38
+ regression test. a pile of ad-hoc logs helps no one and gets deleted.
39
+
18
40
  ## route in
19
41
 
20
42
  - "my app renders wrong / wrong props / wrong tree" → [debugging](#branch--debugging)
package/src/index.ts CHANGED
@@ -5,5 +5,6 @@
5
5
 
6
6
  export { sootsimPlugin } from './vite-plugin-one'
7
7
  export { default as metroPlugin } from './metro-plugin'
8
+ export { default as jumpToSourceBabelPlugin } from './jump-to-source-babel'
8
9
  export { DEFAULT_SOOTSIM_BRIDGE_PORT } from './bridge-constants'
9
10
  export { DEFAULT_SOOTSIM_SHELL_URL } from './cli-constants'