sootsim 0.1.39 → 0.1.40

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 (138) hide show
  1. package/dist-cli/bin.js +16 -15
  2. package/dist-cli/chunks/{agent-HZP3LUGJ.js → agent-3F5PO4NL.js} +2 -2
  3. package/dist-cli/chunks/{agent-wrapper-CS6TV5UR.js → agent-wrapper-LVUUZRWL.js} +2 -2
  4. package/dist-cli/chunks/{assert-WVTX4CNR.js → assert-4WMVS3WU.js} +2 -2
  5. package/dist-cli/chunks/auto-bootstrap-Q4A3PTF5.js +2 -0
  6. package/dist-cli/chunks/beta-CLLKUB5X.js +2 -0
  7. package/dist-cli/chunks/{chunk-MIE6NMPJ.js → chunk-4IAKB3C4.js} +6 -6
  8. package/dist-cli/chunks/{chunk-ZBB7YS6C.js → chunk-4L45Q3YX.js} +2 -2
  9. package/dist-cli/chunks/{chunk-UWRBEBML.js → chunk-553OZX4H.js} +2 -2
  10. package/dist-cli/chunks/{chunk-CBPTHIJV.js → chunk-5GK4YX7O.js} +1 -1
  11. package/dist-cli/chunks/{runtime-YJPWA3XA.js → chunk-5IAIIX7B.js} +3 -3
  12. package/dist-cli/chunks/{chunk-223TXYOC.js → chunk-6X5NQJT7.js} +3 -3
  13. package/dist-cli/chunks/{chunk-JXKW62SL.js → chunk-6XI4VHIL.js} +2 -2
  14. package/dist-cli/chunks/{chunk-B2SCT4DL.js → chunk-BZED27B2.js} +2 -2
  15. package/dist-cli/chunks/{chunk-5L5SZXXG.js → chunk-CAJ247SC.js} +2 -2
  16. package/dist-cli/chunks/{chunk-YUKH7HF6.js → chunk-CCZHRBXJ.js} +1 -1
  17. package/dist-cli/chunks/{chunk-DSDLGFWH.js → chunk-D2ZMP7G4.js} +2 -2
  18. package/dist-cli/chunks/{chunk-WHQWINDB.js → chunk-D4Z7MWQY.js} +2 -2
  19. package/dist-cli/chunks/{chunk-WD54RD4K.js → chunk-DEBXVPIE.js} +1 -1
  20. package/dist-cli/chunks/{chunk-SLQ2GTYF.js → chunk-DHJIXXWG.js} +2 -2
  21. package/dist-cli/chunks/chunk-DPZDTJVQ.js +1 -0
  22. package/dist-cli/chunks/{chunk-NYZGZDHI.js → chunk-DSTHAISO.js} +1 -1
  23. package/dist-cli/chunks/{chunk-C6GUAXKO.js → chunk-EOWN4ZFJ.js} +1 -1
  24. package/dist-cli/chunks/chunk-FFR7EA4U.js +1 -0
  25. package/dist-cli/chunks/chunk-FNIL6BYS.js +108 -0
  26. package/dist-cli/chunks/chunk-I7KXFJDK.js +1 -0
  27. package/dist-cli/chunks/{chunk-OB3TB4AN.js → chunk-J6BPROH4.js} +1 -1
  28. package/dist-cli/chunks/{chunk-NJ4WXWKO.js → chunk-KGVH3YAG.js} +2 -2
  29. package/dist-cli/chunks/{chunk-RJQ73DLG.js → chunk-KVOMVYG6.js} +4 -4
  30. package/dist-cli/chunks/{chunk-FEMOLCB5.js → chunk-LCES5ZJI.js} +2 -2
  31. package/dist-cli/chunks/{chunk-NF65BNJR.js → chunk-LXR5EI74.js} +2 -2
  32. package/dist-cli/chunks/{chunk-YHYSOUIJ.js → chunk-MLCBIX7O.js} +2 -2
  33. package/dist-cli/chunks/{chunk-2ESCYOZW.js → chunk-OV5TY7M3.js} +2 -2
  34. package/dist-cli/chunks/chunk-PKB6IEGM.js +2 -0
  35. package/dist-cli/chunks/chunk-PNGBWMQH.js +17 -0
  36. package/dist-cli/chunks/{chunk-P6F636LU.js → chunk-QMBYRPRK.js} +1 -1
  37. package/dist-cli/chunks/{chunk-4YUHJ5FX.js → chunk-QUULF2II.js} +2 -2
  38. package/dist-cli/chunks/chunk-S4PJMUC7.js +2 -0
  39. package/dist-cli/chunks/{chunk-MGVTLDI3.js → chunk-TK2IPNHL.js} +2 -2
  40. package/dist-cli/chunks/chunk-U3JD6X75.js +4 -0
  41. package/dist-cli/chunks/{chunk-VLUFTHBB.js → chunk-W2XRHDQQ.js} +2 -2
  42. package/dist-cli/chunks/{chunk-XYTDYBXJ.js → chunk-WPS3TIOB.js} +1 -1
  43. package/dist-cli/chunks/{chunk-GUHXSXNO.js → chunk-WQXG4I5N.js} +2 -2
  44. package/dist-cli/chunks/{chunk-YGUQSPU6.js → chunk-WZE6T3GT.js} +1 -1
  45. package/dist-cli/chunks/chunk-XWXFUFB2.js +1 -0
  46. package/dist-cli/chunks/{chunk-7J4UIBA5.js → chunk-Y5CFIRLN.js} +2 -2
  47. package/dist-cli/chunks/{chunk-RLGCJT2D.js → chunk-Y66CDFAT.js} +1 -1
  48. package/dist-cli/chunks/chunk-YJMXGTP4.js +2 -0
  49. package/dist-cli/chunks/{chunk-ECDPQ6S7.js → chunk-YKEBL6GE.js} +1 -1
  50. package/dist-cli/chunks/{chunk-E5RYQUFB.js → chunk-Z3I2I4IO.js} +3 -3
  51. package/dist-cli/chunks/{compat-UMJ2IXUW.js → compat-NBFWHK5S.js} +2 -2
  52. package/dist-cli/chunks/{config-YMJK426V.js → config-JEDQ3NHA.js} +2 -2
  53. package/dist-cli/chunks/control-IMWZVYC3.js +2 -0
  54. package/dist-cli/chunks/{cpu-profile-67MCPAA2.js → cpu-profile-MQPUSRHG.js} +2 -2
  55. package/dist-cli/chunks/{daemon-LIVCJZR3.js → daemon-HOL7J3BI.js} +2 -2
  56. package/dist-cli/chunks/{debug-EV73WC7H.js → debug-LNVMIWD6.js} +20 -20
  57. package/dist-cli/chunks/demo-app-registry-4RFMJ4FM.js +2 -0
  58. package/dist-cli/chunks/{detox-NBT5BVX3.js → detox-EEZPH3DZ.js} +2 -2
  59. package/dist-cli/chunks/{device-MMROWQZ3.js → device-GVLYQI7X.js} +2 -2
  60. package/dist-cli/chunks/{diagnose-WXOKGBAJ.js → diagnose-JQ7DPTSL.js} +2 -2
  61. package/dist-cli/chunks/drivers-JUW6JBWH.js +2 -0
  62. package/dist-cli/chunks/{electron-F5DT7CFY.js → electron-UDV6K3IH.js} +3 -3
  63. package/dist-cli/chunks/flow-JOW23WNH.js +2 -0
  64. package/dist-cli/chunks/{hints-RODH4XE4.js → hints-46PJLATZ.js} +2 -2
  65. package/dist-cli/chunks/{home-paths-PCUMN33Z.js → home-paths-XD7AOYU7.js} +2 -2
  66. package/dist-cli/chunks/inspect-EDIKZ6O2.js +993 -0
  67. package/dist-cli/chunks/install-CCC3IF5S.js +2 -0
  68. package/dist-cli/chunks/{install-desktop-ASRNFHZU.js → install-desktop-CX6ATQTR.js} +3 -3
  69. package/dist-cli/chunks/{keys-DOOCGNTD.js → keys-CXQIYEVW.js} +2 -2
  70. package/dist-cli/chunks/{launch-DTVAQMZG.js → launch-DCFRKVD3.js} +3 -3
  71. package/dist-cli/chunks/{login-JA6VEDEP.js → login-HCIZL5GT.js} +4 -4
  72. package/dist-cli/chunks/{logout-H4WFWTPC.js → logout-7X2YHJY3.js} +2 -2
  73. package/dist-cli/chunks/{maestro-4TR7U6TS.js → maestro-TY622MIW.js} +2 -2
  74. package/dist-cli/chunks/{preview-GP7XXDW6.js → preview-DYI6ESOK.js} +2 -2
  75. package/dist-cli/chunks/{profile-3FESGAZD.js → profile-7SXJEJTG.js} +2 -2
  76. package/dist-cli/chunks/{react-SJD2DQQV.js → react-VGSDY766.js} +2 -2
  77. package/dist-cli/chunks/{record-PQUAMW5K.js → record-7JX2SMVP.js} +2 -2
  78. package/dist-cli/chunks/runtime-FTOQD7QK.js +2 -0
  79. package/dist-cli/chunks/runtime-delivery-PWLODFCY.js +2 -0
  80. package/dist-cli/chunks/{screenshot-45SAK7EW.js → screenshot-PTKY4UU4.js} +2 -2
  81. package/dist-cli/chunks/{screenshot-mode-TCY7FBGR.js → screenshot-mode-HSV7VY4G.js} +2 -2
  82. package/dist-cli/chunks/{screenshots-KZ364S2O.js → screenshots-VY7VAGSV.js} +2 -2
  83. package/dist-cli/chunks/server-EDB3EK4K.js +35 -0
  84. package/dist-cli/chunks/setup-repo-S2GFZR7F.js +2 -0
  85. package/dist-cli/chunks/{skills-SMXCCJCM.js → skills-KEPQLCMR.js} +2 -2
  86. package/dist-cli/chunks/start-5CJTBNRM.js +23 -0
  87. package/dist-cli/chunks/store-SCRULNVS.js +2 -0
  88. package/dist-cli/chunks/telemetry-RC3OT67I.js +2 -0
  89. package/dist-cli/chunks/{test-ZXTSA5GV.js → test-REKHGKFE.js} +3 -3
  90. package/dist-cli/chunks/{three-mode-4Q65J2ZA.js → three-mode-FZYHB4ZQ.js} +2 -2
  91. package/dist-cli/chunks/{timeline-ISEDS6XR.js → timeline-CWZAY52K.js} +2 -2
  92. package/dist-cli/chunks/upgrade-AIUJEF5F.js +4 -0
  93. package/dist-cli/chunks/upload-UDA5ITTE.js +2 -0
  94. package/dist-cli/chunks/what-happened-JSQQVQGE.js +15 -0
  95. package/dist-cli/chunks/{whoami-VKRQOG2U.js → whoami-5WUUPIRN.js} +2 -2
  96. package/dist-lib/agent-daemon-client.cjs +1 -1
  97. package/dist-lib/agent-events.cjs +1 -1
  98. package/dist-lib/agent-sessions.cjs +1 -1
  99. package/dist-lib/attached-projects.cjs +1 -1
  100. package/dist-lib/auth/shared-session.cjs +1 -1
  101. package/dist-lib/backend-origin.cjs +1 -1
  102. package/dist-lib/bridge-constants.cjs +1 -1
  103. package/dist-lib/cli-constants.cjs +1 -1
  104. package/dist-lib/config.cjs +1 -1
  105. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  106. package/dist-lib/home-paths.cjs +1 -1
  107. package/dist-lib/host/bridge-host.cjs +115 -82
  108. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  109. package/dist-lib/index.cjs +1 -1
  110. package/dist-lib/metro.cjs +1 -1
  111. package/dist-lib/profiles.cjs +1 -1
  112. package/dist-lib/render-mode.cjs +1 -1
  113. package/dist-lib/vite-base.cjs +140 -88
  114. package/dist-lib/vite.cjs +1 -1
  115. package/package.json +1 -1
  116. package/dist-cli/chunks/auto-bootstrap-3TUCG2BC.js +0 -2
  117. package/dist-cli/chunks/beta-3SCMB3IN.js +0 -2
  118. package/dist-cli/chunks/chunk-4LHQRDSN.js +0 -2
  119. package/dist-cli/chunks/chunk-4UI5OHEO.js +0 -1
  120. package/dist-cli/chunks/chunk-5RSSCKBF.js +0 -1
  121. package/dist-cli/chunks/chunk-6TSUQHSC.js +0 -4
  122. package/dist-cli/chunks/chunk-B3OEHV2C.js +0 -1
  123. package/dist-cli/chunks/chunk-HWRR23AJ.js +0 -17
  124. package/dist-cli/chunks/chunk-NFJDHJHK.js +0 -1
  125. package/dist-cli/chunks/chunk-W4QHQT64.js +0 -2
  126. package/dist-cli/chunks/control-DJR3DUAB.js +0 -2
  127. package/dist-cli/chunks/demo-app-registry-NZBZVJ52.js +0 -2
  128. package/dist-cli/chunks/drivers-NSPV5S6T.js +0 -2
  129. package/dist-cli/chunks/flow-T6DZQWHE.js +0 -2
  130. package/dist-cli/chunks/inspect-BIMFJFDR.js +0 -1101
  131. package/dist-cli/chunks/install-5YPVP466.js +0 -2
  132. package/dist-cli/chunks/server-S5CRYXXZ.js +0 -35
  133. package/dist-cli/chunks/setup-repo-TH3GXOP7.js +0 -2
  134. package/dist-cli/chunks/start-KLSAQM3C.js +0 -23
  135. package/dist-cli/chunks/store-E2N5NOUS.js +0 -2
  136. package/dist-cli/chunks/telemetry-RJXVYJSN.js +0 -2
  137. package/dist-cli/chunks/upload-KB7INQRC.js +0 -2
  138. package/dist-cli/chunks/what-happened-STY3AOCQ.js +0 -15
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.39 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.40 | (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.39 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.40 | (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.39 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.40 | (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.39 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.40 | (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.39 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.40 | (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.39 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.40 | (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.39 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.40 | (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.39 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.40 | (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.39 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.40 | (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.39 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.40 | (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;
@@ -972,8 +972,8 @@ async function discoverListeningProcesses(excludePorts = []) {
972
972
  var cwdByPid = /* @__PURE__ */ new Map();
973
973
  async function resolveProcessCwd(pid) {
974
974
  if (pid <= 0) return null;
975
- const cached = cwdByPid.get(pid);
976
- if (cached) return cached;
975
+ const cached2 = cwdByPid.get(pid);
976
+ if (cached2) return cached2;
977
977
  try {
978
978
  const { stdout } = await execP(`lsof -p ${pid} -a -d cwd -Fn 2>/dev/null`, {
979
979
  encoding: "utf8",
@@ -1181,12 +1181,12 @@ async function scanDevServers(opts = {}) {
1181
1181
  const results = [];
1182
1182
  const toProbe = [];
1183
1183
  for (const { port, pid } of processes) {
1184
- const cached = portCache.get(port);
1185
- if (cached && __shouldReuseScannerCacheEntry(cached, pid)) {
1186
- if (cached.result) results.push(cached.result);
1184
+ const cached2 = portCache.get(port);
1185
+ if (cached2 && __shouldReuseScannerCacheEntry(cached2, pid)) {
1186
+ if (cached2.result) results.push(cached2.result);
1187
1187
  continue;
1188
1188
  }
1189
- if (cached && cached.pid !== pid) {
1189
+ if (cached2 && cached2.pid !== pid) {
1190
1190
  knownNonPatched.delete(port);
1191
1191
  knownNonExpo.delete(port);
1192
1192
  knownOne.delete(port);
@@ -1226,8 +1226,33 @@ async function scanDevServers(opts = {}) {
1226
1226
  // src/bridge-constants.ts
1227
1227
  var DEFAULT_SOOTSIM_BRIDGE_PORT = 7668;
1228
1228
 
1229
+ // src/cli-version.ts
1230
+ var import_node_fs2 = require("node:fs");
1231
+ var import_node_url = require("node:url");
1232
+ var import_meta = {};
1233
+ var cached = null;
1234
+ function getCliVersion() {
1235
+ if (cached != null) return cached;
1236
+ const candidates = [
1237
+ () => (0, import_node_url.fileURLToPath)(import_meta.resolve("sootsim/package.json")),
1238
+ () => (0, import_node_url.fileURLToPath)(new URL("../package.json", __sootsim_import_meta_url))
1239
+ ];
1240
+ for (const resolve2 of candidates) {
1241
+ try {
1242
+ const version = JSON.parse((0, import_node_fs2.readFileSync)(resolve2(), "utf8")).version;
1243
+ if (typeof version === "string" && version) {
1244
+ cached = version;
1245
+ return cached;
1246
+ }
1247
+ } catch {
1248
+ }
1249
+ }
1250
+ cached = "0.0.0";
1251
+ return cached;
1252
+ }
1253
+
1229
1254
  // src/home-paths.ts
1230
- var import_node_fs2 = __toESM(require("node:fs"), 1);
1255
+ var import_node_fs3 = __toESM(require("node:fs"), 1);
1231
1256
  var import_node_os2 = require("node:os");
1232
1257
  var import_node_path2 = __toESM(require("node:path"), 1);
1233
1258
  var SOOTSIM_HOME_ENV = "SOOTSIM_HOME";
@@ -1269,7 +1294,7 @@ function configFilePath() {
1269
1294
  }
1270
1295
  function readSharedConfig() {
1271
1296
  try {
1272
- const raw = import_node_fs2.default.readFileSync(configFilePath(), "utf8");
1297
+ const raw = import_node_fs3.default.readFileSync(configFilePath(), "utf8");
1273
1298
  const parsed = JSON.parse(raw);
1274
1299
  return parsed && typeof parsed === "object" ? parsed : {};
1275
1300
  } catch {
@@ -1287,34 +1312,34 @@ function writeSharedConfig(patch) {
1287
1312
  };
1288
1313
  }
1289
1314
  const tmp = `${configFilePath()}.tmp`;
1290
- import_node_fs2.default.writeFileSync(tmp, `${JSON.stringify(next, null, 2)}
1315
+ import_node_fs3.default.writeFileSync(tmp, `${JSON.stringify(next, null, 2)}
1291
1316
  `, "utf8");
1292
- import_node_fs2.default.renameSync(tmp, configFilePath());
1317
+ import_node_fs3.default.renameSync(tmp, configFilePath());
1293
1318
  return next;
1294
1319
  }
1295
1320
  function ensureSootsimHome() {
1296
- import_node_fs2.default.mkdirSync(sootsimHomeDir(), { recursive: true });
1297
- import_node_fs2.default.mkdirSync(runtimesDir(), { recursive: true });
1298
- import_node_fs2.default.mkdirSync(electronDir(), { recursive: true });
1299
- import_node_fs2.default.mkdirSync(profilesDir(), { recursive: true });
1300
- import_node_fs2.default.mkdirSync(cacheDir(), { recursive: true });
1321
+ import_node_fs3.default.mkdirSync(sootsimHomeDir(), { recursive: true });
1322
+ import_node_fs3.default.mkdirSync(runtimesDir(), { recursive: true });
1323
+ import_node_fs3.default.mkdirSync(electronDir(), { recursive: true });
1324
+ import_node_fs3.default.mkdirSync(profilesDir(), { recursive: true });
1325
+ import_node_fs3.default.mkdirSync(cacheDir(), { recursive: true });
1301
1326
  }
1302
1327
  function readActiveRuntime() {
1303
1328
  try {
1304
- const value = import_node_fs2.default.readFileSync(activeRuntimeFile(), "utf8").trim();
1329
+ const value = import_node_fs3.default.readFileSync(activeRuntimeFile(), "utf8").trim();
1305
1330
  return value.length > 0 ? value : null;
1306
1331
  } catch {
1307
1332
  return null;
1308
1333
  }
1309
1334
  }
1310
1335
  function writeActiveRuntime(version) {
1311
- import_node_fs2.default.mkdirSync(runtimesDir(), { recursive: true });
1312
- import_node_fs2.default.writeFileSync(activeRuntimeFile(), `${version}
1336
+ import_node_fs3.default.mkdirSync(runtimesDir(), { recursive: true });
1337
+ import_node_fs3.default.writeFileSync(activeRuntimeFile(), `${version}
1313
1338
  `, "utf8");
1314
1339
  }
1315
1340
  function listInstalledRuntimes() {
1316
1341
  try {
1317
- return import_node_fs2.default.readdirSync(runtimesDir(), { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name).sort(compareSemver);
1342
+ return import_node_fs3.default.readdirSync(runtimesDir(), { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name).sort(compareSemver);
1318
1343
  } catch {
1319
1344
  return [];
1320
1345
  }
@@ -1345,7 +1370,7 @@ function activeRuntimeDir() {
1345
1370
  if (!version) return null;
1346
1371
  const dir = runtimeDir(version);
1347
1372
  try {
1348
- if (import_node_fs2.default.statSync(dir).isDirectory()) return dir;
1373
+ if (import_node_fs3.default.statSync(dir).isDirectory()) return dir;
1349
1374
  } catch {
1350
1375
  }
1351
1376
  return null;
@@ -1353,10 +1378,10 @@ function activeRuntimeDir() {
1353
1378
  var DAEMON_LOCKFILE_MAX_BYTES = 16 * 1024;
1354
1379
  function readDaemonLockfile() {
1355
1380
  try {
1356
- const fd = import_node_fs2.default.openSync(daemonLockfilePath(), "r");
1381
+ const fd = import_node_fs3.default.openSync(daemonLockfilePath(), "r");
1357
1382
  try {
1358
1383
  const buf = Buffer.alloc(DAEMON_LOCKFILE_MAX_BYTES);
1359
- const bytesRead = import_node_fs2.default.readSync(fd, buf, 0, DAEMON_LOCKFILE_MAX_BYTES, 0);
1384
+ const bytesRead = import_node_fs3.default.readSync(fd, buf, 0, DAEMON_LOCKFILE_MAX_BYTES, 0);
1360
1385
  const raw = buf.subarray(0, bytesRead).toString("utf8");
1361
1386
  const parsed = JSON.parse(raw);
1362
1387
  if (parsed && parsed.schema === 1 && typeof parsed.pid === "number" && typeof parsed.bridgePort === "number" && typeof parsed.runtimePort === "number" && typeof parsed.startedAt === "number" && typeof parsed.heartbeatAt === "number") {
@@ -1364,7 +1389,7 @@ function readDaemonLockfile() {
1364
1389
  }
1365
1390
  return null;
1366
1391
  } finally {
1367
- import_node_fs2.default.closeSync(fd);
1392
+ import_node_fs3.default.closeSync(fd);
1368
1393
  }
1369
1394
  } catch {
1370
1395
  return null;
@@ -1383,9 +1408,9 @@ function isDaemonLockfileFresh(lock, now = Date.now()) {
1383
1408
  function writeDaemonLockfile(data) {
1384
1409
  ensureSootsimHome();
1385
1410
  const tmp = `${daemonLockfilePath()}.tmp`;
1386
- import_node_fs2.default.writeFileSync(tmp, `${JSON.stringify(data, null, 2)}
1411
+ import_node_fs3.default.writeFileSync(tmp, `${JSON.stringify(data, null, 2)}
1387
1412
  `, "utf8");
1388
- import_node_fs2.default.renameSync(tmp, daemonLockfilePath());
1413
+ import_node_fs3.default.renameSync(tmp, daemonLockfilePath());
1389
1414
  }
1390
1415
  function claimDaemonLockfile(data) {
1391
1416
  ensureSootsimHome();
@@ -1398,7 +1423,7 @@ function claimDaemonLockfile(data) {
1398
1423
  }
1399
1424
  function removeDaemonLockfile() {
1400
1425
  try {
1401
- import_node_fs2.default.unlinkSync(daemonLockfilePath());
1426
+ import_node_fs3.default.unlinkSync(daemonLockfilePath());
1402
1427
  } catch {
1403
1428
  }
1404
1429
  }
@@ -1615,13 +1640,13 @@ function extractTarball(tarPath, destDir) {
1615
1640
  }
1616
1641
 
1617
1642
  // src/host/agent-host.ts
1618
- var import_node_fs5 = __toESM(require("node:fs"), 1);
1643
+ var import_node_fs6 = __toESM(require("node:fs"), 1);
1619
1644
  var import_node_path5 = __toESM(require("node:path"), 1);
1620
1645
 
1621
1646
  // src/agent-sessions.ts
1622
1647
  var import_node_child_process = require("node:child_process");
1623
1648
  var import_node_crypto2 = require("node:crypto");
1624
- var import_node_fs4 = __toESM(require("node:fs"), 1);
1649
+ var import_node_fs5 = __toESM(require("node:fs"), 1);
1625
1650
  var import_node_path4 = __toESM(require("node:path"), 1);
1626
1651
  var import_node_readline = __toESM(require("node:readline"), 1);
1627
1652
 
@@ -1666,7 +1691,7 @@ function encodeAgentPromptEnvelope(input) {
1666
1691
 
1667
1692
  // src/attached-projects.ts
1668
1693
  var import_node_crypto = require("node:crypto");
1669
- var import_node_fs3 = __toESM(require("node:fs"), 1);
1694
+ var import_node_fs4 = __toESM(require("node:fs"), 1);
1670
1695
  var import_node_path3 = __toESM(require("node:path"), 1);
1671
1696
  var overrideDir = null;
1672
1697
  function userDataDir() {
@@ -1693,7 +1718,7 @@ function loadStore() {
1693
1718
  const file = storeFile();
1694
1719
  let raw;
1695
1720
  try {
1696
- raw = import_node_fs3.default.readFileSync(file, "utf8");
1721
+ raw = import_node_fs4.default.readFileSync(file, "utf8");
1697
1722
  } catch (err) {
1698
1723
  if (err.code === "ENOENT") return cloneEmpty();
1699
1724
  throw err;
@@ -1710,7 +1735,7 @@ function loadStore() {
1710
1735
  } catch (err) {
1711
1736
  const quarantine = `${file}.corrupt-${Date.now()}`;
1712
1737
  try {
1713
- import_node_fs3.default.renameSync(file, quarantine);
1738
+ import_node_fs4.default.renameSync(file, quarantine);
1714
1739
  console.warn(
1715
1740
  `[sootsim] attached-projects.json was unparseable; quarantined to ${quarantine}. original error: ${err.message}`
1716
1741
  );
@@ -1721,16 +1746,16 @@ function loadStore() {
1721
1746
  }
1722
1747
  function writeStore(store) {
1723
1748
  const file = storeFile();
1724
- import_node_fs3.default.mkdirSync(import_node_path3.default.dirname(file), { recursive: true });
1749
+ import_node_fs4.default.mkdirSync(import_node_path3.default.dirname(file), { recursive: true });
1725
1750
  const tmp = `${file}.tmp-${process.pid}-${Date.now()}`;
1726
- const fd = import_node_fs3.default.openSync(tmp, "w", 384);
1751
+ const fd = import_node_fs4.default.openSync(tmp, "w", 384);
1727
1752
  try {
1728
- import_node_fs3.default.writeFileSync(fd, JSON.stringify(store, null, 2));
1729
- import_node_fs3.default.fsyncSync(fd);
1753
+ import_node_fs4.default.writeFileSync(fd, JSON.stringify(store, null, 2));
1754
+ import_node_fs4.default.fsyncSync(fd);
1730
1755
  } finally {
1731
- import_node_fs3.default.closeSync(fd);
1756
+ import_node_fs4.default.closeSync(fd);
1732
1757
  }
1733
- import_node_fs3.default.renameSync(tmp, file);
1758
+ import_node_fs4.default.renameSync(tmp, file);
1734
1759
  }
1735
1760
  function mutateStore(fn) {
1736
1761
  const store = loadStore();
@@ -1911,7 +1936,7 @@ async function seedFromDemoAppRegistry() {
1911
1936
  const apps = APPS2;
1912
1937
  mutateStore((store) => {
1913
1938
  for (const app of apps) {
1914
- if (!import_node_fs3.default.existsSync(app.dir)) continue;
1939
+ if (!import_node_fs4.default.existsSync(app.dir)) continue;
1915
1940
  const cwd = import_node_path3.default.resolve(app.dir);
1916
1941
  const id = projectIdForCwd(cwd);
1917
1942
  if (store.attachedProjects.some((p) => p.id === id)) continue;
@@ -1955,7 +1980,7 @@ function pidIsAlive(pid, sessionId) {
1955
1980
  return false;
1956
1981
  }
1957
1982
  if (sessionId) {
1958
- if (!import_node_fs4.default.existsSync(sessionDir(sessionId))) return false;
1983
+ if (!import_node_fs5.default.existsSync(sessionDir(sessionId))) return false;
1959
1984
  }
1960
1985
  return true;
1961
1986
  }
@@ -1971,7 +1996,7 @@ function resolveSootsimInvocation() {
1971
1996
  import_node_path4.default.join(resourcesPath, "bin", `sootsim-${process.platform}-${process.arch}`)
1972
1997
  ];
1973
1998
  for (const c of candidates) {
1974
- if (import_node_fs4.default.existsSync(c)) return { cmd: c, prefixArgs: [] };
1999
+ if (import_node_fs5.default.existsSync(c)) return { cmd: c, prefixArgs: [] };
1975
2000
  }
1976
2001
  }
1977
2002
  }
@@ -1995,14 +2020,14 @@ function tryWorkspaceSootsim() {
1995
2020
  if (!sootsimDir) return null;
1996
2021
  const binaryName = `sootsim-${process.platform}-${process.arch}`;
1997
2022
  const distBinary = import_node_path4.default.join(sootsimDir, "dist-bin", binaryName);
1998
- if (import_node_fs4.default.existsSync(distBinary)) return { cmd: distBinary, prefixArgs: [] };
2023
+ if (import_node_fs5.default.existsSync(distBinary)) return { cmd: distBinary, prefixArgs: [] };
1999
2024
  const distBin = import_node_path4.default.join(sootsimDir, "dist-cli", "bin.js");
2000
- if (import_node_fs4.default.existsSync(distBin)) {
2025
+ if (import_node_fs5.default.existsSync(distBin)) {
2001
2026
  try {
2002
2027
  const src = import_node_path4.default.join(sootsimDir, "cli", "commands", "agent-wrapper.ts");
2003
- if (import_node_fs4.default.existsSync(src)) {
2004
- const srcMtime = import_node_fs4.default.statSync(src).mtimeMs;
2005
- const buildMtime = import_node_fs4.default.statSync(distBin).mtimeMs;
2028
+ if (import_node_fs5.default.existsSync(src)) {
2029
+ const srcMtime = import_node_fs5.default.statSync(src).mtimeMs;
2030
+ const buildMtime = import_node_fs5.default.statSync(distBin).mtimeMs;
2006
2031
  if (buildMtime < srcMtime) {
2007
2032
  console.warn(
2008
2033
  `[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).`
@@ -2030,8 +2055,8 @@ function resolveSootsimPackageDir() {
2030
2055
  for (let i = 0; i < 8; i++) {
2031
2056
  const pkg = import_node_path4.default.join(cur, "package.json");
2032
2057
  try {
2033
- if (import_node_fs4.default.existsSync(pkg)) {
2034
- const parsed = JSON.parse(import_node_fs4.default.readFileSync(pkg, "utf8"));
2058
+ if (import_node_fs5.default.existsSync(pkg)) {
2059
+ const parsed = JSON.parse(import_node_fs5.default.readFileSync(pkg, "utf8"));
2035
2060
  if (parsed.name === "sootsim") return cur;
2036
2061
  }
2037
2062
  } catch {
@@ -2053,9 +2078,9 @@ function fileFromImportMeta() {
2053
2078
  }
2054
2079
  async function withStartLock(projectId, provider, fn) {
2055
2080
  const lockDir = import_node_path4.default.join(getUserDataDir(), "locks");
2056
- import_node_fs4.default.mkdirSync(lockDir, { recursive: true });
2081
+ import_node_fs5.default.mkdirSync(lockDir, { recursive: true });
2057
2082
  try {
2058
- import_node_fs4.default.chmodSync(lockDir, 448);
2083
+ import_node_fs5.default.chmodSync(lockDir, 448);
2059
2084
  } catch {
2060
2085
  }
2061
2086
  const lockPath = import_node_path4.default.join(lockDir, `start-${projectId}-${provider}.lock`);
@@ -2063,17 +2088,17 @@ async function withStartLock(projectId, provider, fn) {
2063
2088
  let fd = null;
2064
2089
  while (fd === null) {
2065
2090
  try {
2066
- fd = import_node_fs4.default.openSync(
2091
+ fd = import_node_fs5.default.openSync(
2067
2092
  lockPath,
2068
- import_node_fs4.constants.O_WRONLY | import_node_fs4.constants.O_CREAT | import_node_fs4.constants.O_EXCL,
2093
+ import_node_fs5.constants.O_WRONLY | import_node_fs5.constants.O_CREAT | import_node_fs5.constants.O_EXCL,
2069
2094
  384
2070
2095
  );
2071
2096
  } catch (err) {
2072
2097
  if (err.code !== "EEXIST") throw err;
2073
2098
  try {
2074
- const stale = Number(import_node_fs4.default.readFileSync(lockPath, "utf8").trim());
2099
+ const stale = Number(import_node_fs5.default.readFileSync(lockPath, "utf8").trim());
2075
2100
  if (stale && !isProcessAlive(stale)) {
2076
- import_node_fs4.default.unlinkSync(lockPath);
2101
+ import_node_fs5.default.unlinkSync(lockPath);
2077
2102
  continue;
2078
2103
  }
2079
2104
  } catch {
@@ -2087,15 +2112,15 @@ async function withStartLock(projectId, provider, fn) {
2087
2112
  }
2088
2113
  }
2089
2114
  try {
2090
- import_node_fs4.default.writeFileSync(fd, String(process.pid));
2115
+ import_node_fs5.default.writeFileSync(fd, String(process.pid));
2091
2116
  return await fn();
2092
2117
  } finally {
2093
2118
  try {
2094
- import_node_fs4.default.closeSync(fd);
2119
+ import_node_fs5.default.closeSync(fd);
2095
2120
  } catch {
2096
2121
  }
2097
2122
  try {
2098
- import_node_fs4.default.unlinkSync(lockPath);
2123
+ import_node_fs5.default.unlinkSync(lockPath);
2099
2124
  } catch {
2100
2125
  }
2101
2126
  }
@@ -2110,24 +2135,24 @@ function isProcessAlive(pid) {
2110
2135
  }
2111
2136
  function mkfifoSync(p) {
2112
2137
  const parent = import_node_path4.default.dirname(p);
2113
- import_node_fs4.default.mkdirSync(parent, { recursive: true });
2138
+ import_node_fs5.default.mkdirSync(parent, { recursive: true });
2114
2139
  try {
2115
- import_node_fs4.default.chmodSync(parent, 448);
2140
+ import_node_fs5.default.chmodSync(parent, 448);
2116
2141
  } catch {
2117
2142
  }
2118
- if (import_node_fs4.default.existsSync(p)) {
2143
+ if (import_node_fs5.default.existsSync(p)) {
2119
2144
  try {
2120
- const stat = import_node_fs4.default.statSync(p);
2145
+ const stat = import_node_fs5.default.statSync(p);
2121
2146
  if (stat.isFIFO()) {
2122
2147
  try {
2123
- import_node_fs4.default.chmodSync(p, 384);
2148
+ import_node_fs5.default.chmodSync(p, 384);
2124
2149
  } catch {
2125
2150
  }
2126
2151
  return;
2127
2152
  }
2128
- import_node_fs4.default.unlinkSync(p);
2153
+ import_node_fs5.default.unlinkSync(p);
2129
2154
  } catch {
2130
- import_node_fs4.default.unlinkSync(p);
2155
+ import_node_fs5.default.unlinkSync(p);
2131
2156
  }
2132
2157
  }
2133
2158
  const result = (0, import_node_child_process.spawnSync)("mkfifo", ["-m", "600", p]);
@@ -2175,9 +2200,9 @@ async function startSession(opts) {
2175
2200
  mkfifoSync(promptIn);
2176
2201
  mkfifoSync(eventsOut);
2177
2202
  const transcriptDir = import_node_path4.default.dirname(transcript);
2178
- import_node_fs4.default.mkdirSync(transcriptDir, { recursive: true });
2203
+ import_node_fs5.default.mkdirSync(transcriptDir, { recursive: true });
2179
2204
  try {
2180
- import_node_fs4.default.chmodSync(transcriptDir, 448);
2205
+ import_node_fs5.default.chmodSync(transcriptDir, 448);
2181
2206
  } catch {
2182
2207
  }
2183
2208
  const { cmd, prefixArgs } = resolveSootsimInvocation();
@@ -2228,7 +2253,7 @@ async function startSession(opts) {
2228
2253
  }
2229
2254
  }
2230
2255
  try {
2231
- import_node_fs4.default.rmSync(sessionDir(session.id), { recursive: true, force: true });
2256
+ import_node_fs5.default.rmSync(sessionDir(session.id), { recursive: true, force: true });
2232
2257
  } catch {
2233
2258
  }
2234
2259
  updateSessionStatus(session.id, { status: "ended" });
@@ -2256,18 +2281,18 @@ async function sendPrompt(sessionId, prompt) {
2256
2281
  );
2257
2282
  }
2258
2283
  const fifo = promptFifoPath(sessionId);
2259
- if (!import_node_fs4.default.existsSync(fifo)) {
2284
+ if (!import_node_fs5.default.existsSync(fifo)) {
2260
2285
  throw new AgentSessionError("NO_FIFO", `prompt FIFO missing: ${fifo}`);
2261
2286
  }
2262
- const fd = import_node_fs4.default.openSync(fifo, import_node_fs4.constants.O_WRONLY);
2287
+ const fd = import_node_fs5.default.openSync(fifo, import_node_fs5.constants.O_WRONLY);
2263
2288
  try {
2264
2289
  const wireText = encodeAgentPromptEnvelope(prompt);
2265
2290
  if (!wireText) {
2266
2291
  throw new AgentSessionError("EMPTY_PROMPT", "prompt text is empty");
2267
2292
  }
2268
- import_node_fs4.default.writeSync(fd, wireText + "\n");
2293
+ import_node_fs5.default.writeSync(fd, wireText + "\n");
2269
2294
  } finally {
2270
- import_node_fs4.default.closeSync(fd);
2295
+ import_node_fs5.default.closeSync(fd);
2271
2296
  }
2272
2297
  updateSessionStatus(sessionId, {
2273
2298
  lastPrompt: prompt.displayText ?? prompt.text,
@@ -2289,7 +2314,7 @@ async function endSession(sessionId) {
2289
2314
  const base = getUserDataDir();
2290
2315
  if (dir.startsWith(base)) {
2291
2316
  try {
2292
- import_node_fs4.default.rmSync(dir, { recursive: true, force: true });
2317
+ import_node_fs5.default.rmSync(dir, { recursive: true, force: true });
2293
2318
  } catch {
2294
2319
  }
2295
2320
  }
@@ -2297,11 +2322,11 @@ async function endSession(sessionId) {
2297
2322
  }
2298
2323
  function subscribeEvents(sessionId, onEvent) {
2299
2324
  const fifo = eventsFifoPath(sessionId);
2300
- if (!import_node_fs4.default.existsSync(fifo)) {
2325
+ if (!import_node_fs5.default.existsSync(fifo)) {
2301
2326
  throw new AgentSessionError("NO_FIFO", `events FIFO missing: ${fifo}`);
2302
2327
  }
2303
- const fd = import_node_fs4.default.openSync(fifo, import_node_fs4.constants.O_RDWR);
2304
- const stream = import_node_fs4.default.createReadStream("", { fd, autoClose: true });
2328
+ const fd = import_node_fs5.default.openSync(fifo, import_node_fs5.constants.O_RDWR);
2329
+ const stream = import_node_fs5.default.createReadStream("", { fd, autoClose: true });
2305
2330
  const rl = import_node_readline.default.createInterface({ input: stream, crlfDelay: Infinity });
2306
2331
  rl.on("line", (line) => {
2307
2332
  const event = parseAgentEventLine(line);
@@ -2322,7 +2347,7 @@ function subscribeEvents(sessionId, onEvent) {
2322
2347
  };
2323
2348
  }
2324
2349
  async function waitForFirstEvent(fifo, predicate, timeoutMs) {
2325
- const fd = import_node_fs4.default.openSync(fifo, import_node_fs4.constants.O_RDWR | import_node_fs4.constants.O_NONBLOCK);
2350
+ const fd = import_node_fs5.default.openSync(fifo, import_node_fs5.constants.O_RDWR | import_node_fs5.constants.O_NONBLOCK);
2326
2351
  const buf = Buffer.alloc(8192);
2327
2352
  let leftover = "";
2328
2353
  const deadline = Date.now() + timeoutMs;
@@ -2330,7 +2355,7 @@ async function waitForFirstEvent(fifo, predicate, timeoutMs) {
2330
2355
  while (Date.now() < deadline) {
2331
2356
  let n = 0;
2332
2357
  try {
2333
- n = import_node_fs4.default.readSync(fd, buf, 0, buf.length, null);
2358
+ n = import_node_fs5.default.readSync(fd, buf, 0, buf.length, null);
2334
2359
  } catch (err) {
2335
2360
  if (err.code !== "EAGAIN") throw err;
2336
2361
  n = 0;
@@ -2350,7 +2375,7 @@ async function waitForFirstEvent(fifo, predicate, timeoutMs) {
2350
2375
  }
2351
2376
  return null;
2352
2377
  } finally {
2353
- import_node_fs4.default.closeSync(fd);
2378
+ import_node_fs5.default.closeSync(fd);
2354
2379
  }
2355
2380
  }
2356
2381
 
@@ -2532,10 +2557,10 @@ var AgentHost = class {
2532
2557
  }
2533
2558
  getTranscript(sessionId) {
2534
2559
  const p = transcriptPath(sessionId);
2535
- if (!import_node_fs5.default.existsSync(p)) {
2560
+ if (!import_node_fs6.default.existsSync(p)) {
2536
2561
  return { error: "transcript not found", code: "NO_TRANSCRIPT" };
2537
2562
  }
2538
- return import_node_fs5.default.readFileSync(p, "utf8");
2563
+ return import_node_fs6.default.readFileSync(p, "utf8");
2539
2564
  }
2540
2565
  getPaths() {
2541
2566
  const dir = getUserDataDir();
@@ -3195,7 +3220,7 @@ function injectSharedConfigIntoHtml(data) {
3195
3220
  } catch {
3196
3221
  payload = "{}";
3197
3222
  }
3198
- const tag = `<script>window.__sootsimSharedConfig=${payload};</script>`;
3223
+ const tag = `<script>window.__sootsimSharedConfig=${payload};window.__sootsimCliVersion=${JSON.stringify(getCliVersion())};</script>`;
3199
3224
  const html = data.toString("utf8");
3200
3225
  if (html.includes("</head>")) return html.replace("</head>", tag + "</head>");
3201
3226
  if (html.includes("</body>")) return html.replace("</body>", tag + "</body>");
@@ -3460,6 +3485,12 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
3460
3485
  sim.url = registration.url;
3461
3486
  sim.title = registration.title;
3462
3487
  sim.userAgent = registration.userAgent;
3488
+ if (typeof registration.kind === "string" && registration.kind.trim()) {
3489
+ sim.kind = registration.kind.trim();
3490
+ }
3491
+ if (registration.meta && typeof registration.meta === "object") {
3492
+ sim.meta = registration.meta;
3493
+ }
3463
3494
  if (restored) {
3464
3495
  this.broadcastSimAssignments();
3465
3496
  this.broadcastSimClientStates();
@@ -4384,7 +4415,9 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
4384
4415
  lockedBy: lease ? lease.cliLabel || lease.cliIdentityKey : void 0,
4385
4416
  lockedByKind: lease ? lease.kind : void 0,
4386
4417
  lockExpiresAt: lease ? lease.expiresAt : void 0,
4387
- userFocused: sim.userFocused || void 0
4418
+ userFocused: sim.userFocused || void 0,
4419
+ kind: sim.kind,
4420
+ meta: sim.meta
4388
4421
  };
4389
4422
  }
4390
4423
  getActiveLease(sim) {
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.39 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.40 | (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.39 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.40 | (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.39 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.40 | (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.39 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.40 | (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.39 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.40 | (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;