sootsim 0.1.236 → 0.1.238

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 (145) hide show
  1. package/dist-cli/bin.js +4 -4
  2. package/dist-cli/chunks/{agent-CU7Q5K22.js → agent-VQVLJBBZ.js} +2 -2
  3. package/dist-cli/chunks/{agent-wrapper-FCUDUV52.js → agent-wrapper-ABFE7KJQ.js} +2 -2
  4. package/dist-cli/chunks/{app-fonts-SPA6U6OA.js → app-fonts-ODI2DJ7C.js} +2 -2
  5. package/dist-cli/chunks/{assert-MZVVW7DV.js → assert-ZXNN3U2C.js} +2 -2
  6. package/dist-cli/chunks/{auth-FV3CIFG6.js → auth-LMHWH6T3.js} +2 -2
  7. package/dist-cli/chunks/beta-TN34R6YC.js +2 -0
  8. package/dist-cli/chunks/{camera-ALWQVYHU.js → camera-VWTIE3VW.js} +2 -2
  9. package/dist-cli/chunks/{chunk-BDL6UO36.js → chunk-2FFZXFDY.js} +1 -1
  10. package/dist-cli/chunks/{chunk-VKJ4BFFU.js → chunk-2PFG3UHP.js} +2 -2
  11. package/dist-cli/chunks/{chunk-GB3IT6AN.js → chunk-3KVQ35TN.js} +1 -1
  12. package/dist-cli/chunks/{chunk-QPZYFSTW.js → chunk-4DN5YMPS.js} +1 -1
  13. package/dist-cli/chunks/{chunk-RBDWTH6O.js → chunk-4DPHH2DS.js} +2 -2
  14. package/dist-cli/chunks/{chunk-IQ2IFKZ4.js → chunk-54XALXOI.js} +2 -2
  15. package/dist-cli/chunks/{chunk-UGRYC3HL.js → chunk-5MFTB3S4.js} +1 -1
  16. package/dist-cli/chunks/{chunk-5E24H5Z5.js → chunk-5MQZW32V.js} +2 -2
  17. package/dist-cli/chunks/{chunk-NX4NOT7Z.js → chunk-6KMMJDSE.js} +1 -1
  18. package/dist-cli/chunks/{chunk-G3EZ5KVE.js → chunk-6PYVHZVH.js} +1 -1
  19. package/dist-cli/chunks/{chunk-PUH4S4CC.js → chunk-6UMCNLKY.js} +2 -2
  20. package/dist-cli/chunks/{chunk-RGDT3EBF.js → chunk-7OQU5M3J.js} +2 -2
  21. package/dist-cli/chunks/{chunk-TB7CIKZ3.js → chunk-A46S76WN.js} +2 -2
  22. package/dist-cli/chunks/{chunk-7NCUVJSZ.js → chunk-CDAMSEOW.js} +34 -34
  23. package/dist-cli/chunks/{chunk-V5LQP2JL.js → chunk-CGQTOBHQ.js} +141 -115
  24. package/dist-cli/chunks/{chunk-APQFVJDK.js → chunk-CU7M5IBW.js} +1 -1
  25. package/dist-cli/chunks/{chunk-BGW73A3C.js → chunk-CXV3CSSF.js} +2 -2
  26. package/dist-cli/chunks/{chunk-SXENH4HF.js → chunk-D5LYVGSE.js} +3 -3
  27. package/dist-cli/chunks/{chunk-KWNVZ2LX.js → chunk-DMSG7ESJ.js} +1 -1
  28. package/dist-cli/chunks/{chunk-BA4Q3KRH.js → chunk-ECCUSCHO.js} +2 -2
  29. package/dist-cli/chunks/{chunk-3PLNSSEF.js → chunk-EGRRMDLA.js} +1 -1
  30. package/dist-cli/chunks/{chunk-I664RIMB.js → chunk-GI4YPHU6.js} +2 -2
  31. package/dist-cli/chunks/{chunk-Q2X3WO5X.js → chunk-HC6JXVIP.js} +2 -2
  32. package/dist-cli/chunks/{chunk-T7KUJUST.js → chunk-HTTHCQQS.js} +3 -3
  33. package/dist-cli/chunks/{chunk-4Z3JQFES.js → chunk-IHEPAACR.js} +1 -1
  34. package/dist-cli/chunks/{chunk-7KGIZCO3.js → chunk-KGAN3JXK.js} +2 -2
  35. package/dist-cli/chunks/{chunk-DKGKL6KP.js → chunk-LYSW5PTM.js} +2 -2
  36. package/dist-cli/chunks/{chunk-DUCTVOTV.js → chunk-MD5GBDM4.js} +1 -1
  37. package/dist-cli/chunks/{chunk-PEFAS7Q4.js → chunk-MT2HMCDI.js} +2 -2
  38. package/dist-cli/chunks/{chunk-ORSIJ76W.js → chunk-NCJGR7VZ.js} +1 -1
  39. package/dist-cli/chunks/{chunk-VQKTMX3M.js → chunk-OHLPCYOM.js} +1 -1
  40. package/dist-cli/chunks/chunk-QAKSIRZO.js +1 -0
  41. package/dist-cli/chunks/{chunk-54UQB2TW.js → chunk-QGCNRLCM.js} +2 -2
  42. package/dist-cli/chunks/{chunk-SACUEZZP.js → chunk-QGFPGXNJ.js} +1 -1
  43. package/dist-cli/chunks/{chunk-W7H4OAY4.js → chunk-RTMLR7KA.js} +2 -2
  44. package/dist-cli/chunks/{chunk-HBQ7CCHG.js → chunk-SCLKEUCN.js} +1 -1
  45. package/dist-cli/chunks/chunk-UV4NF53M.js +1 -0
  46. package/dist-cli/chunks/{chunk-EURBYQXU.js → chunk-UYFE2VRP.js} +2 -2
  47. package/dist-cli/chunks/{chunk-6ALJUG36.js → chunk-VTY35NKD.js} +4 -4
  48. package/dist-cli/chunks/{chunk-VRXFBWBW.js → chunk-XOKMWX3P.js} +2 -2
  49. package/dist-cli/chunks/chunk-XUOCSWW4.js +118 -0
  50. package/dist-cli/chunks/{chunk-PGLRJ4GA.js → chunk-XWGGIFDB.js} +35 -12
  51. package/dist-cli/chunks/{chunk-FK57ISRW.js → chunk-YK4NG4BL.js} +1 -1
  52. package/dist-cli/chunks/{chunk-G3MVPZBK.js → chunk-YNSDDYLM.js} +2 -2
  53. package/dist-cli/chunks/cli-version-JMIF5EGD.js +2 -0
  54. package/dist-cli/chunks/{compat-JCUMIY6N.js → compat-JZPFXICF.js} +3 -3
  55. package/dist-cli/chunks/{config-3RHULBQA.js → config-UL7HLQDC.js} +2 -2
  56. package/dist-cli/chunks/{control-NZJHUGDA.js → control-QKU5C5S2.js} +2 -2
  57. package/dist-cli/chunks/daemon-IREYS2N7.js +2 -0
  58. package/dist-cli/chunks/{debug-FXTGTIA4.js → debug-H5DH3AQF.js} +3 -3
  59. package/dist-cli/chunks/{desktop-4Z3DFJZ3.js → desktop-6KNJHXC3.js} +3 -3
  60. package/dist-cli/chunks/{detox-ZHVRCYVV.js → detox-GGHGQ4ZT.js} +2 -2
  61. package/dist-cli/chunks/{device-B7RJOTO2.js → device-BRDNCJVC.js} +2 -2
  62. package/dist-cli/chunks/{diagnose-TWMUMITQ.js → diagnose-YYUH2HKW.js} +2 -2
  63. package/dist-cli/chunks/drivers-IHDBZZUB.js +2 -0
  64. package/dist-cli/chunks/{film-DGR6ALQ2.js → film-ZCOJKWH3.js} +3 -3
  65. package/dist-cli/chunks/flow-TXWXTHAY.js +2 -0
  66. package/dist-cli/chunks/help-TAORLP73.js +2 -0
  67. package/dist-cli/chunks/{hidden-runtime-alias-XM5Z6GME.js → hidden-runtime-alias-FKPQZHNW.js} +2 -2
  68. package/dist-cli/chunks/{home-paths-BVXLMDUT.js → home-paths-XVONOHWM.js} +2 -2
  69. package/dist-cli/chunks/inspect-ALJUDST3.js +2 -0
  70. package/dist-cli/chunks/install-desktop-W5JGGPCV.js +2 -0
  71. package/dist-cli/chunks/{login-CTAICT4D.js → login-4DXNKRVF.js} +4 -4
  72. package/dist-cli/chunks/{logout-X4T57OXG.js → logout-ARENLQQ5.js} +2 -2
  73. package/dist-cli/chunks/{maestro-ZQYSFWKY.js → maestro-G7VNKI32.js} +3 -3
  74. package/dist-cli/chunks/{maestro-generate-Y25ETFOO.js → maestro-generate-U3YRKKPN.js} +3 -3
  75. package/dist-cli/chunks/{mode-KBQ2HTV2.js → mode-FNLKDZKM.js} +2 -2
  76. package/dist-cli/chunks/optional-demo-registry-Y5KQWQ6V.js +2 -0
  77. package/dist-cli/chunks/{perf-MRGDCXKC.js → perf-C3O4QGRB.js} +11 -8
  78. package/dist-cli/chunks/{record-6JMMR3DI.js → record-YEOZEOTK.js} +3 -3
  79. package/dist-cli/chunks/runtime-VCWHZCYU.js +2 -0
  80. package/dist-cli/chunks/{screenshot-command-SEHNB5PW.js → screenshot-command-CCVMBNZ7.js} +3 -3
  81. package/dist-cli/chunks/{screenshots-capture-GAZMPQ2T.js → screenshots-capture-GIVPWSQG.js} +2 -2
  82. package/dist-cli/chunks/{serve-HQAJCUJP.js → serve-KYU7THWX.js} +2 -2
  83. package/dist-cli/chunks/{setup-A3PIKOJA.js → setup-OQ7EMGIY.js} +3 -3
  84. package/dist-cli/chunks/{skills-4522XNAV.js → skills-Z25AHTRM.js} +2 -2
  85. package/dist-cli/chunks/{storage-VC4FO3X4.js → storage-EDYGSOMU.js} +2 -2
  86. package/dist-cli/chunks/store-BP3EICTQ.js +2 -0
  87. package/dist-cli/chunks/telemetry-K2S6RLSW.js +2 -0
  88. package/dist-cli/chunks/{timeline-AU6ZXEJY.js → timeline-FTAZATIZ.js} +2 -2
  89. package/dist-cli/chunks/{upgrade-M5V7P7HI.js → upgrade-JBRL4AHX.js} +2 -2
  90. package/dist-cli/chunks/upload-JVFQZS5Z.js +2 -0
  91. package/dist-cli/chunks/{version-BIWUB3OU.js → version-H6PRWWUE.js} +2 -2
  92. package/dist-cli/chunks/{web-Y2HUWQL6.js → web-D45A6FKK.js} +2 -2
  93. package/dist-cli/chunks/{what-happened-TTM4T2XG.js → what-happened-A7IDSBXP.js} +2 -2
  94. package/dist-lib/agent-daemon-client.cjs +2 -2
  95. package/dist-lib/agent-events.cjs +1 -1
  96. package/dist-lib/agent-identity.cjs +1 -1
  97. package/dist-lib/agent-sessions.cjs +2 -2
  98. package/dist-lib/attached-projects.cjs +1 -1
  99. package/dist-lib/auth/shared-session.cjs +1 -1
  100. package/dist-lib/backend-origin.cjs +1 -1
  101. package/dist-lib/beta.cjs +1 -1
  102. package/dist-lib/beta.mjs +1 -1
  103. package/dist-lib/bridge-constants.cjs +1 -1
  104. package/dist-lib/cli-constants.cjs +1 -1
  105. package/dist-lib/config.cjs +1 -1
  106. package/dist-lib/detox/index.cjs +1 -1
  107. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  108. package/dist-lib/home-paths.cjs +1 -1
  109. package/dist-lib/host/bridge-host.cjs +2 -2
  110. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  111. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  112. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  113. package/dist-lib/host/websocket-proxy.cjs +1 -1
  114. package/dist-lib/index.cjs +1 -1
  115. package/dist-lib/jump-to-source-babel.cjs +1 -1
  116. package/dist-lib/menu.cjs +1 -1
  117. package/dist-lib/menu.mjs +1 -1
  118. package/dist-lib/metro.cjs +1 -1
  119. package/dist-lib/profiles.cjs +1 -1
  120. package/dist-lib/render-mode.cjs +1 -1
  121. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  122. package/dist-lib/sdk.cjs +32 -4
  123. package/dist-lib/sdk.mjs +32 -4
  124. package/dist-lib/skills.cjs +28 -4
  125. package/dist-lib/vite.cjs +1 -1
  126. package/package.json +1 -1
  127. package/skills/contrast/SKILL.md +1 -1
  128. package/src/agent-sessions.ts +4 -5
  129. package/src/vite-plugin.ts +3 -6
  130. package/dist-cli/chunks/beta-7X7N2CB2.js +0 -2
  131. package/dist-cli/chunks/chunk-6NWVRY7I.js +0 -1
  132. package/dist-cli/chunks/chunk-LBXFCH5I.js +0 -118
  133. package/dist-cli/chunks/chunk-ZYEIV7ZN.js +0 -1
  134. package/dist-cli/chunks/cli-version-457KT7IL.js +0 -2
  135. package/dist-cli/chunks/daemon-4WYYSXCN.js +0 -2
  136. package/dist-cli/chunks/drivers-AK6KP6X4.js +0 -2
  137. package/dist-cli/chunks/flow-RYMDNC4V.js +0 -2
  138. package/dist-cli/chunks/help-JVO6L7HS.js +0 -2
  139. package/dist-cli/chunks/inspect-TBOCLFLQ.js +0 -2
  140. package/dist-cli/chunks/install-desktop-N6IVQZBG.js +0 -2
  141. package/dist-cli/chunks/optional-demo-registry-G6FLEREA.js +0 -2
  142. package/dist-cli/chunks/runtime-3EJHJAAM.js +0 -2
  143. package/dist-cli/chunks/store-Y6DYP7EA.js +0 -2
  144. package/dist-cli/chunks/telemetry-3M5Y7GDR.js +0 -2
  145. package/dist-cli/chunks/upload-F47SYC4Y.js +0 -2
@@ -1,5 +1,5 @@
1
- /*! sootsim v0.1.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{C as N,D as F,F as y,Q as T,R as b,S}from"./chunk-PGLRJ4GA.js";import{g as A,i as _}from"./chunk-BGW73A3C.js";import"./chunk-G3EZ5KVE.js";import{c as k}from"./chunk-ORSIJ76W.js";import"./chunk-KWNVZ2LX.js";import"./chunk-FK57ISRW.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.238 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
+ import{C as N,D as F,F as y,Q as T,R as b,S}from"./chunk-XWGGIFDB.js";import{g as A,i as _}from"./chunk-CXV3CSSF.js";import"./chunk-6PYVHZVH.js";import{c as k}from"./chunk-NCJGR7VZ.js";import"./chunk-DMSG7ESJ.js";import"./chunk-YK4NG4BL.js";function O(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--since"&&e+1<n.length){t.push(e,e+1);let s=n[e+1].trim(),l=/^(\d+(?:\.\d+)?)(ms|s|m)?$/.exec(s);if(l){let r=Number(l[1]),u=l[2]??"ms",v=u==="s"?r*1e3:u==="m"?r*6e4:r;return{since:Date.now()-v,consumed:t}}let i=Number(s);if(Number.isFinite(i)&&i>1e12)return{since:i,consumed:t}}return{consumed:t}}function B(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--kinds"&&e+1<n.length)return t.push(e,e+1),{kinds:n[e+1].split(",").map(s=>s.trim()).filter(Boolean),consumed:t};return{consumed:t}}function D(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--limit"&&e+1<n.length){t.push(e,e+1);let s=Number(n[e+1]);if(Number.isFinite(s)&&s>0)return{limit:s,consumed:t}}return{consumed:t}}function x(n){let t=[],e={label:"initial state",events:[],startedAt:n[0]?.t??null};t.push(e);for(let s of n)if(e.events.push(s),s.kind==="screen"||s.kind==="route"){let l=s.data,i=l?.phase;if(!i||i==="enter"||i==="appear"||i==="active"){let r=l?.name||l?.activeName||l?.path||l?.pathname||s.kind;t.length===1&&e.events.length===1?e.label=`${s.kind}: ${r}`:(e={label:`${s.kind}: ${r}`,events:[],startedAt:s.t},t.push(e))}}return t}async function J(n,t){let e=A(n,{port:t.port,stripBooleanFlags:["--summary","--all","--json","--no-advance","--help","-h","--flow","--noisy"],stripValueFlags:["--since","--kinds","--limit"]});(n.includes("--help")||n.includes("-h"))&&(console.log(`
3
3
  sootsim what-happened \u2014 show recent events from the semantic timeline
4
4
 
5
5
  usage:
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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;
@@ -123,7 +123,7 @@ function tryWorkspaceSootsim() {
123
123
  const buildMtime = import_node_fs2.default.statSync(distBin).mtimeMs;
124
124
  if (buildMtime < srcMtime) {
125
125
  console.warn(
126
- `[sootsim] dist-cli/bin.js is older than agent-wrapper.ts \u2014 rebuild with \`bun run --cwd packages/sootsim build:cli\` (watch:cli:binary builds dist-bin/ instead).`
126
+ `[sootsim] dist-cli/bin.js is older than agent-wrapper.ts \u2014 rebuild with \`bun run --cwd packages/sootsim build:cli\`.`
127
127
  );
128
128
  }
129
129
  }
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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;
@@ -330,7 +330,7 @@ function tryWorkspaceSootsim() {
330
330
  const buildMtime = import_node_fs2.default.statSync(distBin).mtimeMs;
331
331
  if (buildMtime < srcMtime) {
332
332
  console.warn(
333
- `[sootsim] dist-cli/bin.js is older than agent-wrapper.ts \u2014 rebuild with \`bun run --cwd packages/sootsim build:cli\` (watch:cli:binary builds dist-bin/ instead).`
333
+ `[sootsim] dist-cli/bin.js is older than agent-wrapper.ts \u2014 rebuild with \`bun run --cwd packages/sootsim build:cli\`.`
334
334
  );
335
335
  }
336
336
  }
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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;
@@ -1452,7 +1452,7 @@ function tryWorkspaceSootsim() {
1452
1452
  const buildMtime = import_node_fs4.default.statSync(distBin).mtimeMs;
1453
1453
  if (buildMtime < srcMtime) {
1454
1454
  console.warn(
1455
- `[sootsim] dist-cli/bin.js is older than agent-wrapper.ts \u2014 rebuild with \`bun run --cwd packages/sootsim build:cli\` (watch:cli:binary builds dist-bin/ instead).`
1455
+ `[sootsim] dist-cli/bin.js is older than agent-wrapper.ts \u2014 rebuild with \`bun run --cwd packages/sootsim build:cli\`.`
1456
1456
  );
1457
1457
  }
1458
1458
  }
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/menu.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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;
@@ -238,12 +238,20 @@ async function inspectDescribe(bridge, dumpOpts) {
238
238
  }
239
239
  function layoutGetNativeEval(opts = {}) {
240
240
  const includeStyle = opts.styling === true;
241
+ const filter = opts.filter?.trim().toLowerCase() ?? "";
241
242
  return `(async () => {
242
243
  const t = window.__sootsimTest
243
244
  if (!t || typeof t.listInspectable !== 'function') return []
244
245
  const list = await t.listInspectable({})
245
246
  if (!Array.isArray(list)) return []
246
247
  const includeStyle = ${JSON.stringify(includeStyle)}
248
+ // narrows by ELEMENT, not by style field: fewer rows, full detail on each.
249
+ const filter = ${JSON.stringify(filter)}
250
+ const matchesFilter = (n, text) => {
251
+ if (!filter) return true
252
+ const fields = [text, n.testID || n.testId, n.accessibilityRole || n.role, n.type]
253
+ return fields.some((f) => typeof f === 'string' && f.toLowerCase().includes(filter))
254
+ }
247
255
 
248
256
  const num = (v) => (typeof v === 'number' && Number.isFinite(v) ? v : 0)
249
257
  const round = (v) => Math.round(num(v))
@@ -300,6 +308,17 @@ function layoutGetNativeEval(opts = {}) {
300
308
  }
301
309
  return max > 0 ? Math.round(max) : undefined
302
310
  }
311
+ // only meaningful alongside a real border width, so it is resolved by the
312
+ // caller below rather than on its own.
313
+ const borderColorOf = (style) => {
314
+ if (!style) return undefined
315
+ const keys = ['borderColor','borderTopColor','borderBottomColor','borderLeftColor','borderRightColor']
316
+ for (const k of keys) {
317
+ const c = colorStr(style[k])
318
+ if (c) return c
319
+ }
320
+ return undefined
321
+ }
303
322
 
304
323
  const isVisible = (n) => {
305
324
  const layout = n && n.layout
@@ -313,7 +332,10 @@ function layoutGetNativeEval(opts = {}) {
313
332
  return abs.x + layout.width > 0 && abs.y + layout.height > 0 && abs.x < screenW && abs.y < screenH
314
333
  }
315
334
 
316
- return list.filter(isVisible).map((n) => {
335
+ return list.filter(isVisible).filter((n) => {
336
+ const t = typeof n.text === 'string' && n.text.trim() ? n.text.trim() : undefined
337
+ return matchesFilter(n, t)
338
+ }).map((n) => {
317
339
  const layout = n.layout || { x: 0, y: 0, width: 0, height: 0 }
318
340
  const abs = n.absolute || n.absolutePosition || { x: layout.x, y: layout.y }
319
341
  const text = typeof n.text === 'string' && n.text.trim() ? n.text.trim() : undefined
@@ -332,6 +354,7 @@ function layoutGetNativeEval(opts = {}) {
332
354
  // fall back across both so radius/fontSize survive either shape.
333
355
  const style = Object.assign({}, n.style || {}, n.computedStyle || {})
334
356
  const pad = (n.boxModel && n.boxModel.padding) || {}
357
+ const borderWidth = borderWOf(style)
335
358
  return {
336
359
  ...base,
337
360
  borderRadius: radiusOf(style),
@@ -343,7 +366,8 @@ function layoutGetNativeEval(opts = {}) {
343
366
  fontWeight: weightOf(style),
344
367
  textDecoration: decoOf(style),
345
368
  overflow: overflowOf(style),
346
- borderWidth: borderWOf(style),
369
+ borderWidth,
370
+ borderColor: borderWidth ? borderColorOf(style) : undefined,
347
371
  }
348
372
  })
349
373
  })()`;
@@ -375,7 +399,11 @@ function formatLayoutElements(elements, opts) {
375
399
  if (el.opacity != null) parts.push(`opacity:${el.opacity}`);
376
400
  if (el.textDecoration) parts.push(`deco:${el.textDecoration}`);
377
401
  if (el.overflow) parts.push(`overflow:${el.overflow}`);
378
- if (el.borderWidth) parts.push(`border:${el.borderWidth}`);
402
+ if (el.borderWidth) {
403
+ parts.push(
404
+ el.borderColor ? `border:${el.borderWidth}/${el.borderColor}` : `border:${el.borderWidth}`
405
+ );
406
+ }
379
407
  }
380
408
  if (el.text) {
381
409
  const text = el.text.length > 40 ? `${el.text.slice(0, 39)}\u2026` : el.text;
package/dist-lib/sdk.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // cli/commands/inspect/core.ts
4
4
  function resolveMaxMsFlag(args, fallbackMs) {
@@ -148,12 +148,20 @@ async function inspectDescribe(bridge, dumpOpts) {
148
148
  }
149
149
  function layoutGetNativeEval(opts = {}) {
150
150
  const includeStyle = opts.styling === true;
151
+ const filter = opts.filter?.trim().toLowerCase() ?? "";
151
152
  return `(async () => {
152
153
  const t = window.__sootsimTest
153
154
  if (!t || typeof t.listInspectable !== 'function') return []
154
155
  const list = await t.listInspectable({})
155
156
  if (!Array.isArray(list)) return []
156
157
  const includeStyle = ${JSON.stringify(includeStyle)}
158
+ // narrows by ELEMENT, not by style field: fewer rows, full detail on each.
159
+ const filter = ${JSON.stringify(filter)}
160
+ const matchesFilter = (n, text) => {
161
+ if (!filter) return true
162
+ const fields = [text, n.testID || n.testId, n.accessibilityRole || n.role, n.type]
163
+ return fields.some((f) => typeof f === 'string' && f.toLowerCase().includes(filter))
164
+ }
157
165
 
158
166
  const num = (v) => (typeof v === 'number' && Number.isFinite(v) ? v : 0)
159
167
  const round = (v) => Math.round(num(v))
@@ -210,6 +218,17 @@ function layoutGetNativeEval(opts = {}) {
210
218
  }
211
219
  return max > 0 ? Math.round(max) : undefined
212
220
  }
221
+ // only meaningful alongside a real border width, so it is resolved by the
222
+ // caller below rather than on its own.
223
+ const borderColorOf = (style) => {
224
+ if (!style) return undefined
225
+ const keys = ['borderColor','borderTopColor','borderBottomColor','borderLeftColor','borderRightColor']
226
+ for (const k of keys) {
227
+ const c = colorStr(style[k])
228
+ if (c) return c
229
+ }
230
+ return undefined
231
+ }
213
232
 
214
233
  const isVisible = (n) => {
215
234
  const layout = n && n.layout
@@ -223,7 +242,10 @@ function layoutGetNativeEval(opts = {}) {
223
242
  return abs.x + layout.width > 0 && abs.y + layout.height > 0 && abs.x < screenW && abs.y < screenH
224
243
  }
225
244
 
226
- return list.filter(isVisible).map((n) => {
245
+ return list.filter(isVisible).filter((n) => {
246
+ const t = typeof n.text === 'string' && n.text.trim() ? n.text.trim() : undefined
247
+ return matchesFilter(n, t)
248
+ }).map((n) => {
227
249
  const layout = n.layout || { x: 0, y: 0, width: 0, height: 0 }
228
250
  const abs = n.absolute || n.absolutePosition || { x: layout.x, y: layout.y }
229
251
  const text = typeof n.text === 'string' && n.text.trim() ? n.text.trim() : undefined
@@ -242,6 +264,7 @@ function layoutGetNativeEval(opts = {}) {
242
264
  // fall back across both so radius/fontSize survive either shape.
243
265
  const style = Object.assign({}, n.style || {}, n.computedStyle || {})
244
266
  const pad = (n.boxModel && n.boxModel.padding) || {}
267
+ const borderWidth = borderWOf(style)
245
268
  return {
246
269
  ...base,
247
270
  borderRadius: radiusOf(style),
@@ -253,7 +276,8 @@ function layoutGetNativeEval(opts = {}) {
253
276
  fontWeight: weightOf(style),
254
277
  textDecoration: decoOf(style),
255
278
  overflow: overflowOf(style),
256
- borderWidth: borderWOf(style),
279
+ borderWidth,
280
+ borderColor: borderWidth ? borderColorOf(style) : undefined,
257
281
  }
258
282
  })
259
283
  })()`;
@@ -285,7 +309,11 @@ function formatLayoutElements(elements, opts) {
285
309
  if (el.opacity != null) parts.push(`opacity:${el.opacity}`);
286
310
  if (el.textDecoration) parts.push(`deco:${el.textDecoration}`);
287
311
  if (el.overflow) parts.push(`overflow:${el.overflow}`);
288
- if (el.borderWidth) parts.push(`border:${el.borderWidth}`);
312
+ if (el.borderWidth) {
313
+ parts.push(
314
+ el.borderColor ? `border:${el.borderWidth}/${el.borderColor}` : `border:${el.borderWidth}`
315
+ );
316
+ }
289
317
  }
290
318
  if (el.text) {
291
319
  const text = el.text.length > 40 ? `${el.text.slice(0, 39)}\u2026` : el.text;
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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;
@@ -11885,7 +11885,7 @@ function tryWorkspaceSootsim() {
11885
11885
  const buildMtime = import_node_fs4.default.statSync(distBin).mtimeMs;
11886
11886
  if (buildMtime < srcMtime) {
11887
11887
  console.warn(
11888
- `[sootsim] dist-cli/bin.js is older than agent-wrapper.ts \u2014 rebuild with \`bun run --cwd packages/sootsim build:cli\` (watch:cli:binary builds dist-bin/ instead).`
11888
+ `[sootsim] dist-cli/bin.js is older than agent-wrapper.ts \u2014 rebuild with \`bun run --cwd packages/sootsim build:cli\`.`
11889
11889
  );
11890
11890
  }
11891
11891
  }
@@ -16374,12 +16374,20 @@ var init_app_state_reset = __esm({
16374
16374
  // cli/commands/inspect/core.ts
16375
16375
  function layoutGetNativeEval(opts = {}) {
16376
16376
  const includeStyle = opts.styling === true;
16377
+ const filter = opts.filter?.trim().toLowerCase() ?? "";
16377
16378
  return `(async () => {
16378
16379
  const t = window.__sootsimTest
16379
16380
  if (!t || typeof t.listInspectable !== 'function') return []
16380
16381
  const list = await t.listInspectable({})
16381
16382
  if (!Array.isArray(list)) return []
16382
16383
  const includeStyle = ${JSON.stringify(includeStyle)}
16384
+ // narrows by ELEMENT, not by style field: fewer rows, full detail on each.
16385
+ const filter = ${JSON.stringify(filter)}
16386
+ const matchesFilter = (n, text) => {
16387
+ if (!filter) return true
16388
+ const fields = [text, n.testID || n.testId, n.accessibilityRole || n.role, n.type]
16389
+ return fields.some((f) => typeof f === 'string' && f.toLowerCase().includes(filter))
16390
+ }
16383
16391
 
16384
16392
  const num = (v) => (typeof v === 'number' && Number.isFinite(v) ? v : 0)
16385
16393
  const round = (v) => Math.round(num(v))
@@ -16436,6 +16444,17 @@ function layoutGetNativeEval(opts = {}) {
16436
16444
  }
16437
16445
  return max > 0 ? Math.round(max) : undefined
16438
16446
  }
16447
+ // only meaningful alongside a real border width, so it is resolved by the
16448
+ // caller below rather than on its own.
16449
+ const borderColorOf = (style) => {
16450
+ if (!style) return undefined
16451
+ const keys = ['borderColor','borderTopColor','borderBottomColor','borderLeftColor','borderRightColor']
16452
+ for (const k of keys) {
16453
+ const c = colorStr(style[k])
16454
+ if (c) return c
16455
+ }
16456
+ return undefined
16457
+ }
16439
16458
 
16440
16459
  const isVisible = (n) => {
16441
16460
  const layout = n && n.layout
@@ -16449,7 +16468,10 @@ function layoutGetNativeEval(opts = {}) {
16449
16468
  return abs.x + layout.width > 0 && abs.y + layout.height > 0 && abs.x < screenW && abs.y < screenH
16450
16469
  }
16451
16470
 
16452
- return list.filter(isVisible).map((n) => {
16471
+ return list.filter(isVisible).filter((n) => {
16472
+ const t = typeof n.text === 'string' && n.text.trim() ? n.text.trim() : undefined
16473
+ return matchesFilter(n, t)
16474
+ }).map((n) => {
16453
16475
  const layout = n.layout || { x: 0, y: 0, width: 0, height: 0 }
16454
16476
  const abs = n.absolute || n.absolutePosition || { x: layout.x, y: layout.y }
16455
16477
  const text = typeof n.text === 'string' && n.text.trim() ? n.text.trim() : undefined
@@ -16468,6 +16490,7 @@ function layoutGetNativeEval(opts = {}) {
16468
16490
  // fall back across both so radius/fontSize survive either shape.
16469
16491
  const style = Object.assign({}, n.style || {}, n.computedStyle || {})
16470
16492
  const pad = (n.boxModel && n.boxModel.padding) || {}
16493
+ const borderWidth = borderWOf(style)
16471
16494
  return {
16472
16495
  ...base,
16473
16496
  borderRadius: radiusOf(style),
@@ -16479,7 +16502,8 @@ function layoutGetNativeEval(opts = {}) {
16479
16502
  fontWeight: weightOf(style),
16480
16503
  textDecoration: decoOf(style),
16481
16504
  overflow: overflowOf(style),
16482
- borderWidth: borderWOf(style),
16505
+ borderWidth,
16506
+ borderColor: borderWidth ? borderColorOf(style) : undefined,
16483
16507
  }
16484
16508
  })
16485
16509
  })()`;
package/dist-lib/vite.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.238 | (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.236",
3
+ "version": "0.1.238",
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",
@@ -24,7 +24,7 @@ automation, inspecting the render tree, and managing sims.
24
24
  | `sootsim record` | capture the live sim as webm/mp4/gif, or sample N png frames (--frames) |
25
25
  | `sootsim film` | record a flow on the flat canvas, replay it on the 3d device stage under a camera cinematic, save a clip |
26
26
  | `sootsim storage` | manage guest app storage and launch profiles |
27
- | `sootsim perf` | CPU, React render, and shell frame profiling |
27
+ | `sootsim perf` | CPU, React render, shell frame, and scroll-layer profiling |
28
28
  | `sootsim describe` | curated human-readable UI summary (default inspection tool) |
29
29
  | `sootsim find` | locate nodes by text / testID / role / type / predicate |
30
30
  | `sootsim assert` | run any read verb and convert its output into an exit code |
@@ -97,9 +97,9 @@ export function resolveSootsimInvocation(): { cmd: string; prefixArgs: string[]
97
97
  // workspace build artifacts — tried for every non-CLI-entry node context
98
98
  // (electron dev, vite-plugin-hosted daemon, random script) before falling
99
99
  // back to argv. prefers the compiled bun binary because `bun dev` runs
100
- // `watch:cli:binary` and that stays fresh; dist-cli/bin.js is the node
101
- // fallback but only `watch:cli` (not in the default dev graph) refreshes
102
- // it, so we warn when it's older than agent-wrapper.ts.
100
+ // `watch:cli:binary`; the same dev graph runs `watch:cli` to keep the node
101
+ // fallback and browser-facing dist-lib exports fresh. still warn when a
102
+ // caller starts outside that graph with stale artifacts.
103
103
  const workspace = tryWorkspaceSootsim()
104
104
  if (workspace) return workspace
105
105
 
@@ -140,8 +140,7 @@ function tryWorkspaceSootsim(): { cmd: string; prefixArgs: string[] } | null {
140
140
  if (buildMtime < srcMtime) {
141
141
  console.warn(
142
142
  `[sootsim] dist-cli/bin.js is older than agent-wrapper.ts — ` +
143
- `rebuild with \`bun run --cwd packages/sootsim build:cli\` ` +
144
- `(watch:cli:binary builds dist-bin/ instead).`,
143
+ `rebuild with \`bun run --cwd packages/sootsim build:cli\`.`,
145
144
  )
146
145
  }
147
146
  }
@@ -474,12 +474,9 @@ export function reanimatedNativeSeamRedirect(): Plugin {
474
474
  /\.(native|web|ios|android)$/,
475
475
  '',
476
476
  )
477
- // upstream's `fabricUtils.{ts,js}` `getShadowNodeWrapperFromRef` requires
478
- // `ref.__internalInstanceHandle` (Fabric's react-shadow-tree handle) and
479
- // throws otherwise. on sootsim refs come through as raw SootSimNodes
480
- // without that handle. redirect to a sootsim-aware version that
481
- // lazy-attaches the handle before reading it. see
482
- // `react-native-reanimated-fabric-utils.ts`.
477
+ // keep fabricUtils on the SootSim Fabric public-instance contract. the
478
+ // redirected module reads the constructor-attached handle for native
479
+ // refs and uses ReactFabric's renderer lookup for composite refs.
483
480
  if (basename === 'fabricUtils' && importer !== reanimatedFabricUtilsRedirectPath) {
484
481
  return reanimatedFabricUtilsRedirectPath
485
482
  }
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c,d}from"./chunk-HBQ7CCHG.js";import"./chunk-FK57ISRW.js";export{d as BETA_ASK_HEADLINE,b as BETA_LABEL,c as BETA_TAGLINE,a as IS_BETA};
@@ -1 +0,0 @@
1
- /*! sootsim v0.1.236 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */