sootsim 0.1.179 → 0.1.180

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 (146) hide show
  1. package/dist-cli/bin.js +3 -3
  2. package/dist-cli/chunks/{agent-IVX2OKG5.js → agent-TWCD6VWU.js} +2 -2
  3. package/dist-cli/chunks/{agent-wrapper-ZNK7CWJG.js → agent-wrapper-Z47AOSU4.js} +2 -2
  4. package/dist-cli/chunks/{app-fonts-26YQ2LXF.js → app-fonts-NJDS2WKC.js} +2 -2
  5. package/dist-cli/chunks/{assert-NJFGETXK.js → assert-E4M3BGYV.js} +2 -2
  6. package/dist-cli/chunks/beta-6DYJAYMR.js +2 -0
  7. package/dist-cli/chunks/{camera-QK33IHK2.js → camera-AGZ365WS.js} +2 -2
  8. package/dist-cli/chunks/{chunk-ZNBHWKKF.js → chunk-3R532UY6.js} +2 -2
  9. package/dist-cli/chunks/{chunk-HJPQAS3T.js → chunk-5S5TI2OL.js} +3 -3
  10. package/dist-cli/chunks/{chunk-JAKFPOU4.js → chunk-5UNOKZOH.js} +1 -1
  11. package/dist-cli/chunks/{chunk-VCU44BK4.js → chunk-5Z3IK75L.js} +2 -2
  12. package/dist-cli/chunks/chunk-655RAZI6.js +1 -0
  13. package/dist-cli/chunks/{chunk-VOOUQQET.js → chunk-6FPNI2NJ.js} +2 -2
  14. package/dist-cli/chunks/{chunk-FVLADGKB.js → chunk-6LLHL4Z4.js} +2 -2
  15. package/dist-cli/chunks/{chunk-SZT3HRKL.js → chunk-6W55QHRB.js} +1 -1
  16. package/dist-cli/chunks/chunk-6YPP7ICO.js +5 -0
  17. package/dist-cli/chunks/{chunk-CZJ74QZM.js → chunk-7EYSKUGC.js} +2 -2
  18. package/dist-cli/chunks/{chunk-R4YLBNCO.js → chunk-7FVSMP3H.js} +1 -1
  19. package/dist-cli/chunks/{chunk-7PDA36Q7.js → chunk-7HOX5AAM.js} +2 -2
  20. package/dist-cli/chunks/{chunk-3EEQRIEH.js → chunk-A3DQXEQJ.js} +2 -2
  21. package/dist-cli/chunks/{chunk-WIFE3R5F.js → chunk-AKVADO4S.js} +1 -1
  22. package/dist-cli/chunks/chunk-BTV37XIX.js +1 -0
  23. package/dist-cli/chunks/{chunk-CKSZVH4M.js → chunk-C3H3HNZU.js} +1 -1
  24. package/dist-cli/chunks/{chunk-B4QYQJYE.js → chunk-DFOQT3FH.js} +1 -1
  25. package/dist-cli/chunks/{chunk-J7K5DKTW.js → chunk-DPYI7WHO.js} +1 -1
  26. package/dist-cli/chunks/{chunk-XL4TROEL.js → chunk-DPZ5NOVM.js} +1 -1
  27. package/dist-cli/chunks/{chunk-GDBCGIDS.js → chunk-EC6TIZVO.js} +3 -3
  28. package/dist-cli/chunks/{chunk-PGDHMJ2V.js → chunk-EJP4NI3Q.js} +1 -1
  29. package/dist-cli/chunks/{chunk-XMZU4AX3.js → chunk-FGRK5LV4.js} +2 -2
  30. package/dist-cli/chunks/{chunk-6RK5PLS5.js → chunk-FQ6FCKBQ.js} +1 -1
  31. package/dist-cli/chunks/{chunk-HHBOFGWG.js → chunk-GKC4WAAU.js} +1 -1
  32. package/dist-cli/chunks/{chunk-SRV4YD3I.js → chunk-J7ECVBNV.js} +2 -2
  33. package/dist-cli/chunks/chunk-KOVONBG5.js +2 -0
  34. package/dist-cli/chunks/{chunk-RL3JUMAC.js → chunk-LTLDMMVO.js} +1 -1
  35. package/dist-cli/chunks/{chunk-SOYTNR2Q.js → chunk-NNEKSG7J.js} +2 -2
  36. package/dist-cli/chunks/{chunk-UM5XHBTT.js → chunk-O3P4GCIC.js} +2 -2
  37. package/dist-cli/chunks/{chunk-HOS3HFAX.js → chunk-PJ46BMD3.js} +2 -2
  38. package/dist-cli/chunks/{chunk-C2LRNUYZ.js → chunk-QXRIMG3C.js} +2 -2
  39. package/dist-cli/chunks/{chunk-6L3RBC37.js → chunk-RVH34DLB.js} +2 -2
  40. package/dist-cli/chunks/{chunk-JOTROIZO.js → chunk-SC3LMYOI.js} +1 -1
  41. package/dist-cli/chunks/{chunk-7LNH4A5G.js → chunk-SSTY3FZ7.js} +1 -1
  42. package/dist-cli/chunks/{chunk-UT76PROO.js → chunk-T56KIOK2.js} +2 -2
  43. package/dist-cli/chunks/{chunk-QSB4XZH5.js → chunk-TPTEYOPH.js} +2 -2
  44. package/dist-cli/chunks/{chunk-LTM24CWP.js → chunk-W2JS7ZCS.js} +2 -2
  45. package/dist-cli/chunks/{chunk-6NCYDHS5.js → chunk-WJMSITGC.js} +1 -1
  46. package/dist-cli/chunks/{chunk-S3QWJ76W.js → chunk-WNBED3UT.js} +2 -2
  47. package/dist-cli/chunks/{chunk-7N73VST2.js → chunk-X2S7O732.js} +2 -2
  48. package/dist-cli/chunks/{chunk-SN7SSPO3.js → chunk-Y7PV4536.js} +2 -2
  49. package/dist-cli/chunks/{chunk-ORU4M7HC.js → chunk-YTE645KB.js} +1 -1
  50. package/dist-cli/chunks/{chunk-CWBQ4VR3.js → chunk-ZBS233ZK.js} +2 -2
  51. package/dist-cli/chunks/{chunk-IR2KKNHX.js → chunk-ZFKPEBUY.js} +1 -1
  52. package/dist-cli/chunks/{chunk-VLTTKNAU.js → chunk-ZU3YA54Y.js} +1 -1
  53. package/dist-cli/chunks/cli-version-3PTODKAG.js +2 -0
  54. package/dist-cli/chunks/{compat-CQA2G4YG.js → compat-I4K6EHFH.js} +3 -3
  55. package/dist-cli/chunks/{control-M43MOUBZ.js → control-FSW56XA7.js} +2 -2
  56. package/dist-cli/chunks/{cpu-profile-DSDDZ4S4.js → cpu-profile-TS44ELSM.js} +2 -2
  57. package/dist-cli/chunks/daemon-XD4ETUFL.js +2 -0
  58. package/dist-cli/chunks/{debug-N3EXWDAM.js → debug-WJBAZTDZ.js} +3 -3
  59. package/dist-cli/chunks/{detox-3EB23Z3A.js → detox-NTJCZT7Y.js} +2 -2
  60. package/dist-cli/chunks/{device-JRVGPK4Q.js → device-VZMWYTH6.js} +2 -2
  61. package/dist-cli/chunks/{diagnose-SVSB7IOM.js → diagnose-VJFAE25R.js} +2 -2
  62. package/dist-cli/chunks/drivers-AXQDZXVN.js +2 -0
  63. package/dist-cli/chunks/{electron-4VQZSCQN.js → electron-BUS5EZZB.js} +3 -3
  64. package/dist-cli/chunks/flow-O3SCW6BQ.js +2 -0
  65. package/dist-cli/chunks/help-X32RDYQI.js +2 -0
  66. package/dist-cli/chunks/{hints-6O4UX2OF.js → hints-WVYOKMAB.js} +2 -2
  67. package/dist-cli/chunks/{home-paths-WISVEMCR.js → home-paths-5G3GDTLX.js} +2 -2
  68. package/dist-cli/chunks/{inspect-R4CVXNFC.js → inspect-YZPQT6PV.js} +3 -3
  69. package/dist-cli/chunks/{install-desktop-KP5J5MF5.js → install-desktop-KPIFQ5BJ.js} +3 -3
  70. package/dist-cli/chunks/{keys-WE4GTMF3.js → keys-XMLWEKT7.js} +2 -2
  71. package/dist-cli/chunks/{login-TAA3T2YS.js → login-4KYXIZE3.js} +4 -4
  72. package/dist-cli/chunks/{logout-BV7HYRQJ.js → logout-GWXYQJKY.js} +2 -2
  73. package/dist-cli/chunks/{maestro-A6YFL7RW.js → maestro-73XTB4TQ.js} +2 -2
  74. package/dist-cli/chunks/optional-demo-registry-VJQAN5S5.js +2 -0
  75. package/dist-cli/chunks/{preview-KHM6EDYR.js → preview-UO77YODM.js} +2 -2
  76. package/dist-cli/chunks/{profile-LBXEFSPL.js → profile-ZGTZRSKI.js} +2 -2
  77. package/dist-cli/chunks/{react-UXZ4MTPG.js → react-77P2ZPKP.js} +2 -2
  78. package/dist-cli/chunks/{record-O26WY3BX.js → record-TYTQTISM.js} +2 -2
  79. package/dist-cli/chunks/runtime-YG4DSIZR.js +2 -0
  80. package/dist-cli/chunks/{screenshot-BCCNWCT2.js → screenshot-YQAQIKID.js} +2 -2
  81. package/dist-cli/chunks/{screenshot-mode-DJI7KC7J.js → screenshot-mode-2YK7P2A5.js} +2 -2
  82. package/dist-cli/chunks/{screenshots-DUZZGRH4.js → screenshots-RFAXUO6J.js} +2 -2
  83. package/dist-cli/chunks/{screenshots-capture-CYVKHWJJ.js → screenshots-capture-5V4VLZ46.js} +2 -2
  84. package/dist-cli/chunks/{serve-35BEN2TU.js → serve-YKQNVYB3.js} +2 -2
  85. package/dist-cli/chunks/{setup-MEBAPMJT.js → setup-4VBJPQEG.js} +2 -2
  86. package/dist-cli/chunks/{skills-EOMZWEIP.js → skills-35JKCOHO.js} +2 -2
  87. package/dist-cli/chunks/{slides-RWVSNNUD.js → slides-TE5ZRF32.js} +2 -2
  88. package/dist-cli/chunks/store-HKZGF2VP.js +2 -0
  89. package/dist-cli/chunks/telemetry-MZO7LCBJ.js +2 -0
  90. package/dist-cli/chunks/{test-KDYWRZJ4.js → test-ZQCKRCMQ.js} +3 -3
  91. package/dist-cli/chunks/{three-mode-2VUNR3QF.js → three-mode-MXI6TY4F.js} +2 -2
  92. package/dist-cli/chunks/{timeline-AZ7DXX6R.js → timeline-J4XMTY73.js} +2 -2
  93. package/dist-cli/chunks/{upgrade-F3FAGHHI.js → upgrade-4YYUPYWA.js} +2 -2
  94. package/dist-cli/chunks/upload-BULXFLG3.js +2 -0
  95. package/dist-cli/chunks/{version-74YI73TC.js → version-SNWXESVB.js} +2 -2
  96. package/dist-cli/chunks/{web-OOEXAXRK.js → web-V5EIIUBC.js} +2 -2
  97. package/dist-cli/chunks/{what-happened-X3RPYIMI.js → what-happened-DTF62KF5.js} +2 -2
  98. package/dist-cli/chunks/{whoami-MGM7DDPS.js → whoami-LXD6FRWT.js} +2 -2
  99. package/dist-lib/agent-daemon-client.cjs +1 -1
  100. package/dist-lib/agent-events.cjs +1 -1
  101. package/dist-lib/agent-sessions.cjs +1 -1
  102. package/dist-lib/attached-projects.cjs +1 -1
  103. package/dist-lib/auth/shared-session.cjs +1 -1
  104. package/dist-lib/backend-origin.cjs +1 -1
  105. package/dist-lib/beta.cjs +1 -1
  106. package/dist-lib/beta.mjs +1 -1
  107. package/dist-lib/bridge-constants.cjs +1 -1
  108. package/dist-lib/cli-constants.cjs +1 -1
  109. package/dist-lib/config.cjs +1 -1
  110. package/dist-lib/detox/index.cjs +1 -1
  111. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  112. package/dist-lib/home-paths.cjs +1 -1
  113. package/dist-lib/host/bridge-host.cjs +81 -25
  114. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  115. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  116. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  117. package/dist-lib/host/websocket-proxy.cjs +1 -1
  118. package/dist-lib/index.cjs +1 -1
  119. package/dist-lib/jump-to-source-babel.cjs +1 -1
  120. package/dist-lib/menu.cjs +1 -1
  121. package/dist-lib/menu.mjs +1 -1
  122. package/dist-lib/metro.cjs +1 -1
  123. package/dist-lib/profiles.cjs +1 -1
  124. package/dist-lib/render-mode.cjs +1 -1
  125. package/dist-lib/scripts/dev-server-scanner.cjs +83 -25
  126. package/dist-lib/sdk.cjs +1 -1
  127. package/dist-lib/sdk.mjs +1 -1
  128. package/dist-lib/skills.cjs +82 -26
  129. package/dist-lib/vite.cjs +1 -1
  130. package/package.json +1 -1
  131. package/scripts/dev-server-scanner.ts +120 -24
  132. package/dist-cli/chunks/beta-ZWCMF2ZB.js +0 -2
  133. package/dist-cli/chunks/chunk-6MDXUC6O.js +0 -1
  134. package/dist-cli/chunks/chunk-CE2THOSL.js +0 -1
  135. package/dist-cli/chunks/chunk-T5CZ7MZK.js +0 -5
  136. package/dist-cli/chunks/chunk-TPQ4OK4D.js +0 -2
  137. package/dist-cli/chunks/cli-version-SRGEH7HC.js +0 -2
  138. package/dist-cli/chunks/daemon-H3LVJNYI.js +0 -2
  139. package/dist-cli/chunks/drivers-AUU7FNGZ.js +0 -2
  140. package/dist-cli/chunks/flow-NLZNYC5P.js +0 -2
  141. package/dist-cli/chunks/help-F6PU7KE4.js +0 -2
  142. package/dist-cli/chunks/optional-demo-registry-I2OXGTLM.js +0 -2
  143. package/dist-cli/chunks/runtime-RRJHC2RA.js +0 -2
  144. package/dist-cli/chunks/store-FCLI4TX7.js +0 -2
  145. package/dist-cli/chunks/telemetry-YQWQMXZJ.js +0 -2
  146. package/dist-cli/chunks/upload-U5XEPNPJ.js +0 -2
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.179 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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;
@@ -10284,6 +10284,46 @@ function applyManifest(result, manifestRes, buildIconProxyUrl) {
10284
10284
  }
10285
10285
  return result;
10286
10286
  }
10287
+ function enrichWithManifest(result, buildIconProxyUrl) {
10288
+ if (result.projectName) return result;
10289
+ const cached4 = enrichmentCache.get(result.port);
10290
+ if (cached4) {
10291
+ if (cached4.projectName) result.projectName = cached4.projectName;
10292
+ if (cached4.iconUrl && !result.iconUrl) {
10293
+ result.iconUrl = cached4.iconUrl;
10294
+ result.iconPath = cached4.iconPath;
10295
+ }
10296
+ if (cached4.bundleId && !result.bundleId) result.bundleId = cached4.bundleId;
10297
+ return result;
10298
+ }
10299
+ if (!enrichmentInFlight.has(result.port)) {
10300
+ enrichmentInFlight.add(result.port);
10301
+ const port = result.port;
10302
+ void fetchManifestEnrichment(port, buildIconProxyUrl).finally(
10303
+ () => enrichmentInFlight.delete(port)
10304
+ );
10305
+ }
10306
+ return result;
10307
+ }
10308
+ async function fetchManifestEnrichment(port, buildIconProxyUrl) {
10309
+ const manifestRes = await httpGet(port, "/", "GET", ENRICH_TIMEOUT_MS, {
10310
+ "expo-platform": "ios"
10311
+ });
10312
+ if (!manifestRes || manifestRes.statusCode !== 200) return;
10313
+ const parsed = applyManifest(
10314
+ { port, framework: "one", bundleUrl: "", lastSeen: 0 },
10315
+ manifestRes,
10316
+ buildIconProxyUrl
10317
+ );
10318
+ if (!parsed.projectName && !parsed.iconUrl) return;
10319
+ enrichmentCache.set(port, {
10320
+ projectName: parsed.projectName,
10321
+ iconUrl: parsed.iconUrl,
10322
+ iconPath: parsed.iconPath,
10323
+ bundleId: parsed.bundleId
10324
+ });
10325
+ portCache.delete(port);
10326
+ }
10287
10327
  async function probePort(port, buildIconProxyUrl) {
10288
10328
  if (!await tcpPing(port)) return null;
10289
10329
  const onePath = `/node_modules/one/metro-entry.bundle?platform=ios&dev=true`;
@@ -10321,24 +10361,30 @@ async function probePort(port, buildIconProxyUrl) {
10321
10361
  }
10322
10362
  if (statusRes && statusRes.body.includes("packager-status:running")) {
10323
10363
  knownNonPatched.add(port);
10324
- return applyManifest(
10325
- makeResult(port, expoRes && expoRes.statusCode === 200 ? "expo" : "metro"),
10326
- manifestRes,
10364
+ return enrichWithManifest(
10365
+ applyManifest(
10366
+ makeResult(port, expoRes && expoRes.statusCode === 200 ? "expo" : "metro"),
10367
+ manifestRes,
10368
+ buildIconProxyUrl
10369
+ ),
10327
10370
  buildIconProxyUrl
10328
10371
  );
10329
10372
  }
10330
10373
  if (sootsimRes && sootsimRes.statusCode === 200 && sootsimRes.body.includes("sootsim-patched")) {
10331
10374
  knownNonPatched.delete(port);
10332
- return applyManifest(
10333
- {
10334
- port,
10335
- framework: "one",
10336
- bundleUrl: withRuntimeConfig(port, `http://localhost:${port}/__soot/bundle.js`),
10337
- hmrUrl: `ws://localhost:${port}/hot`,
10338
- lastSeen: Date.now(),
10339
- patched: true
10340
- },
10341
- manifestRes,
10375
+ return enrichWithManifest(
10376
+ applyManifest(
10377
+ {
10378
+ port,
10379
+ framework: "one",
10380
+ bundleUrl: withRuntimeConfig(port, `http://localhost:${port}/__soot/bundle.js`),
10381
+ hmrUrl: `ws://localhost:${port}/hot`,
10382
+ lastSeen: Date.now(),
10383
+ patched: true
10384
+ },
10385
+ manifestRes,
10386
+ buildIconProxyUrl
10387
+ ),
10342
10388
  buildIconProxyUrl
10343
10389
  );
10344
10390
  }
@@ -10350,18 +10396,21 @@ async function probePort(port, buildIconProxyUrl) {
10350
10396
  if (oneRes && oneRes.statusCode > 0 && oneRes.statusCode < 400 && /application\/javascript/i.test(oneRes.contentType || "")) {
10351
10397
  knownNonPatched.add(port);
10352
10398
  knownOne.add(port);
10353
- return applyManifest(
10354
- {
10355
- port,
10356
- framework: "one",
10357
- bundleUrl: withRuntimeConfig(
10399
+ return enrichWithManifest(
10400
+ applyManifest(
10401
+ {
10358
10402
  port,
10359
- `http://localhost:${port}${onePath}&minify=false`
10360
- ),
10361
- hmrUrl: `ws://localhost:${port}/hot`,
10362
- lastSeen: Date.now()
10363
- },
10364
- manifestRes,
10403
+ framework: "one",
10404
+ bundleUrl: withRuntimeConfig(
10405
+ port,
10406
+ `http://localhost:${port}${onePath}&minify=false`
10407
+ ),
10408
+ hmrUrl: `ws://localhost:${port}/hot`,
10409
+ lastSeen: Date.now()
10410
+ },
10411
+ manifestRes,
10412
+ buildIconProxyUrl
10413
+ ),
10365
10414
  buildIconProxyUrl
10366
10415
  );
10367
10416
  }
@@ -10406,6 +10455,9 @@ async function scanDevServers(opts = {}) {
10406
10455
  for (const p of [...knownOne]) {
10407
10456
  if (!currentPorts.has(p)) knownOne.delete(p);
10408
10457
  }
10458
+ for (const p of [...enrichmentCache.keys()]) {
10459
+ if (!currentPorts.has(p)) enrichmentCache.delete(p);
10460
+ }
10409
10461
  const results = [];
10410
10462
  const toProbe = [];
10411
10463
  for (const { port, pid } of processes) {
@@ -10418,6 +10470,7 @@ async function scanDevServers(opts = {}) {
10418
10470
  knownNonPatched.delete(port);
10419
10471
  knownNonExpo.delete(port);
10420
10472
  knownOne.delete(port);
10473
+ enrichmentCache.delete(port);
10421
10474
  }
10422
10475
  toProbe.push({ port, pid });
10423
10476
  }
@@ -10450,7 +10503,7 @@ async function scanDevServers(opts = {}) {
10450
10503
  }
10451
10504
  return results.filter((r) => !isSootSelfServer(r));
10452
10505
  }
10453
- var import_child_process, import_http, import_net, import_util, execP, TIMEOUT_MS, MANIFEST_TIMEOUT_MS, TCP_GATE_MS, FALLBACK_PORTS, cwdByPid, knownNonPatched, knownNonExpo, knownOne, portCache, NEGATIVE_CACHE_TTL_MS, WEAK_RESULT_CACHE_TTL_MS;
10506
+ var import_child_process, import_http, import_net, import_util, execP, TIMEOUT_MS, MANIFEST_TIMEOUT_MS, TCP_GATE_MS, FALLBACK_PORTS, cwdByPid, ENRICH_TIMEOUT_MS, enrichmentCache, enrichmentInFlight, knownNonPatched, knownNonExpo, knownOne, portCache, NEGATIVE_CACHE_TTL_MS, WEAK_RESULT_CACHE_TTL_MS;
10454
10507
  var init_dev_server_scanner = __esm({
10455
10508
  "scripts/dev-server-scanner.ts"() {
10456
10509
  "use strict";
@@ -10478,6 +10531,9 @@ var init_dev_server_scanner = __esm({
10478
10531
  19e3
10479
10532
  ].map((port) => ({ port, pid: 0 }));
10480
10533
  cwdByPid = /* @__PURE__ */ new Map();
10534
+ ENRICH_TIMEOUT_MS = 2e4;
10535
+ enrichmentCache = /* @__PURE__ */ new Map();
10536
+ enrichmentInFlight = /* @__PURE__ */ new Set();
10481
10537
  knownNonPatched = /* @__PURE__ */ new Set();
10482
10538
  knownNonExpo = /* @__PURE__ */ new Set();
10483
10539
  knownOne = /* @__PURE__ */ new Set();
package/dist-lib/vite.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.179 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.180 | (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.179",
3
+ "version": "0.1.180",
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",
@@ -344,6 +344,86 @@ export function __applyManifestForTests(
344
344
  return applyManifest(result, { statusCode: 200, body: manifestBody })
345
345
  }
346
346
 
347
+ // ── name/icon enrichment ────────────────────────────────────────────────────
348
+ // a server's display name + icon come ONLY from its expo manifest (GET / with
349
+ // expo-platform), which is far slower than the cheap signature probes: One apps
350
+ // serialize app.config per request, and some (expo-updates / asset resolution)
351
+ // block several seconds. the fast probe race times the manifest out at
352
+ // MANIFEST_TIMEOUT_MS, so a slow-manifest server is identified via /status or
353
+ // the One HEAD with no projectName and shows as ":<port>" in the dock — never
354
+ // re-probed, because that nameless result caches as a strong (expo/one) entry.
355
+ // bumping the race timeout isn't an option: it would stall every probe (and a
356
+ // non-bundler node process) for seconds. instead capture name/icon out-of-band:
357
+ // when a server is identified without them, fetch the manifest ONCE with a
358
+ // generous timeout, cache the fields per port, and drop the strong port-cache
359
+ // entry so the next scan re-probes and publishes the enriched server. discovery
360
+ // stays fast; name/icon fill in a scan or two after the app first appears.
361
+ const ENRICH_TIMEOUT_MS = 20_000
362
+ interface ManifestEnrichment {
363
+ projectName?: string
364
+ iconUrl?: string
365
+ iconPath?: string
366
+ bundleId?: string
367
+ }
368
+ const enrichmentCache = new Map<number, ManifestEnrichment>()
369
+ const enrichmentInFlight = new Set<number>()
370
+
371
+ // apply already-captured name/icon, or kick off a single background manifest
372
+ // fetch to capture them. a no-op once the in-race manifest already named the
373
+ // server, so it's safe to wrap every identified return.
374
+ function enrichWithManifest(
375
+ result: DiscoveredServer,
376
+ buildIconProxyUrl?: (externalUrl: string) => string,
377
+ ): DiscoveredServer {
378
+ if (result.projectName) return result
379
+
380
+ const cached = enrichmentCache.get(result.port)
381
+ if (cached) {
382
+ if (cached.projectName) result.projectName = cached.projectName
383
+ if (cached.iconUrl && !result.iconUrl) {
384
+ result.iconUrl = cached.iconUrl
385
+ result.iconPath = cached.iconPath
386
+ }
387
+ if (cached.bundleId && !result.bundleId) result.bundleId = cached.bundleId
388
+ return result
389
+ }
390
+
391
+ if (!enrichmentInFlight.has(result.port)) {
392
+ enrichmentInFlight.add(result.port)
393
+ const port = result.port
394
+ void fetchManifestEnrichment(port, buildIconProxyUrl).finally(() =>
395
+ enrichmentInFlight.delete(port),
396
+ )
397
+ }
398
+ return result
399
+ }
400
+
401
+ async function fetchManifestEnrichment(
402
+ port: number,
403
+ buildIconProxyUrl?: (externalUrl: string) => string,
404
+ ): Promise<void> {
405
+ const manifestRes = await httpGet(port, '/', 'GET', ENRICH_TIMEOUT_MS, {
406
+ 'expo-platform': 'ios',
407
+ })
408
+ if (!manifestRes || manifestRes.statusCode !== 200) return
409
+ // reuse applyManifest's exact field extraction against a throwaway result.
410
+ const parsed = applyManifest(
411
+ { port, framework: 'one', bundleUrl: '', lastSeen: 0 },
412
+ manifestRes,
413
+ buildIconProxyUrl,
414
+ )
415
+ if (!parsed.projectName && !parsed.iconUrl) return
416
+ enrichmentCache.set(port, {
417
+ projectName: parsed.projectName,
418
+ iconUrl: parsed.iconUrl,
419
+ iconPath: parsed.iconPath,
420
+ bundleId: parsed.bundleId,
421
+ })
422
+ // the nameless result cached as a strong entry and won't re-probe on its own;
423
+ // drop it so the next scan re-runs probePort and publishes the enriched name.
424
+ portCache.delete(port)
425
+ }
426
+
347
427
  // ports confirmed to be running a non-sootsim dev server — safe to skip the
348
428
  // /__soot/ probe on subsequent scans. cleared when the port disappears from the
349
429
  // listening set (process restarted, could now be a different server).
@@ -463,9 +543,12 @@ export async function probePort(
463
543
  // never fire the HEAD against them.
464
544
  if (statusRes && statusRes.body.includes('packager-status:running')) {
465
545
  knownNonPatched.add(port)
466
- return applyManifest(
467
- makeResult(port, expoRes && expoRes.statusCode === 200 ? 'expo' : 'metro'),
468
- manifestRes,
546
+ return enrichWithManifest(
547
+ applyManifest(
548
+ makeResult(port, expoRes && expoRes.statusCode === 200 ? 'expo' : 'metro'),
549
+ manifestRes,
550
+ buildIconProxyUrl,
551
+ ),
469
552
  buildIconProxyUrl,
470
553
  )
471
554
  }
@@ -478,16 +561,19 @@ export async function probePort(
478
561
  sootsimRes.body.includes('sootsim-patched')
479
562
  ) {
480
563
  knownNonPatched.delete(port)
481
- return applyManifest(
482
- {
483
- port,
484
- framework: 'one',
485
- bundleUrl: withRuntimeConfig(port, `http://localhost:${port}/__soot/bundle.js`),
486
- hmrUrl: `ws://localhost:${port}/hot`,
487
- lastSeen: Date.now(),
488
- patched: true,
489
- },
490
- manifestRes,
564
+ return enrichWithManifest(
565
+ applyManifest(
566
+ {
567
+ port,
568
+ framework: 'one',
569
+ bundleUrl: withRuntimeConfig(port, `http://localhost:${port}/__soot/bundle.js`),
570
+ hmrUrl: `ws://localhost:${port}/hot`,
571
+ lastSeen: Date.now(),
572
+ patched: true,
573
+ },
574
+ manifestRes,
575
+ buildIconProxyUrl,
576
+ ),
491
577
  buildIconProxyUrl,
492
578
  )
493
579
  }
@@ -528,18 +614,21 @@ export async function probePort(
528
614
  ) {
529
615
  knownNonPatched.add(port)
530
616
  knownOne.add(port)
531
- return applyManifest(
532
- {
533
- port,
534
- framework: 'one',
535
- bundleUrl: withRuntimeConfig(
617
+ return enrichWithManifest(
618
+ applyManifest(
619
+ {
536
620
  port,
537
- `http://localhost:${port}${onePath}&minify=false`,
538
- ),
539
- hmrUrl: `ws://localhost:${port}/hot`,
540
- lastSeen: Date.now(),
541
- },
542
- manifestRes,
621
+ framework: 'one',
622
+ bundleUrl: withRuntimeConfig(
623
+ port,
624
+ `http://localhost:${port}${onePath}&minify=false`,
625
+ ),
626
+ hmrUrl: `ws://localhost:${port}/hot`,
627
+ lastSeen: Date.now(),
628
+ },
629
+ manifestRes,
630
+ buildIconProxyUrl,
631
+ ),
543
632
  buildIconProxyUrl,
544
633
  )
545
634
  }
@@ -618,6 +707,8 @@ export function __resetScannerCache() {
618
707
  knownNonPatched.clear()
619
708
  knownNonExpo.clear()
620
709
  knownOne.clear()
710
+ enrichmentCache.clear()
711
+ enrichmentInFlight.clear()
621
712
  }
622
713
 
623
714
  export async function scanDevServers(
@@ -641,6 +732,9 @@ export async function scanDevServers(
641
732
  for (const p of [...knownOne]) {
642
733
  if (!currentPorts.has(p)) knownOne.delete(p)
643
734
  }
735
+ for (const p of [...enrichmentCache.keys()]) {
736
+ if (!currentPorts.has(p)) enrichmentCache.delete(p)
737
+ }
644
738
 
645
739
  const results: DiscoveredServer[] = []
646
740
  const toProbe: ListeningProcess[] = []
@@ -661,6 +755,8 @@ export async function scanDevServers(
661
755
  knownNonPatched.delete(port)
662
756
  knownNonExpo.delete(port)
663
757
  knownOne.delete(port)
758
+ // a restarted process may be a different app — drop its captured name/icon.
759
+ enrichmentCache.delete(port)
664
760
  }
665
761
  toProbe.push({ port, pid })
666
762
  }
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.179 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c,d}from"./chunk-XL4TROEL.js";import"./chunk-JOTROIZO.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.179 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
@@ -1 +0,0 @@
1
- /*! sootsim v0.1.179 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
@@ -1,5 +0,0 @@
1
- /*! sootsim v0.1.179 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a as C,b as x}from"./chunk-IR2KKNHX.js";var k="sootsimConfig";function m(e){return!!e&&Object.keys(e).length>0}function E(e){return e?m(e.modules)||m(e.turboModules)||m(e.nativeModules)||m(e.env)||m(e.network?.remap)||m(e.settings)||m(e.initialState):!1}function M(e,o){let t=new URL(e);return E(o)?t.searchParams.set(k,JSON.stringify(o)):t.searchParams.delete(k),t.toString()}var te="/index.bundle?platform=ios&dev=true&hot=true&minify=false";function _(e){return/^https?:\/\//i.test(e)}function D(e){return e.endsWith(".bundle")}function A(e){process.env.SOOTSIM_PREVIEW_PROD_BUNDLE&&(e.searchParams.set("dev","false"),e.searchParams.set("minify","true"),e.searchParams.has("hot")&&e.searchParams.set("hot","false"))}function U(e){try{let o=_(e),t=new URL(e,"http://soot.local");return t.pathname=t.pathname.replace(/\.\.bundle$/,".bundle"),D(t.pathname)?(t.searchParams.delete("transform.bytecode"),t.searchParams.get("lazy")==="true"&&t.searchParams.set("lazy","false"),A(t),o?t.toString():`${t.pathname}${t.search}${t.hash}`):e}catch{return e}}function re(e,o){try{let t=_(e),r=new URL(e,"http://soot.local");return D(r.pathname)?(r.searchParams.set("hot",o?"true":"false"),t?r.toString():`${r.pathname}${r.search}${r.hash}`):e}catch{return e}}import{exec as N}from"child_process";import $ from"http";import L from"net";import{promisify as O}from"util";var v=O(N);C();var I=250,B=1500,H=120;function F(e,o=H){return new Promise(t=>{let r=new L.Socket,s=!1,i=a=>{s||(s=!0,r.destroy(),t(a))};r.setTimeout(o),r.once("connect",()=>i(!0)),r.once("timeout",()=>i(!1)),r.once("error",()=>i(!1)),r.connect(e,"localhost")})}function h(e,o,t="GET",r=I,s={}){return new Promise(i=>{let a=$.request({hostname:"localhost",port:e,path:o,method:t,timeout:r,headers:s},n=>{let u="";n.on("data",l=>u+=l.toString());let c=(()=>{let l=n.headers["content-type"];if(typeof l=="string")return l;if(Array.isArray(l))return l[0]})();n.on("end",()=>i({statusCode:n.statusCode||0,body:u,contentType:c}))});a.on("error",()=>i(null)),a.setTimeout(r,()=>{a.destroy(),i(null)}),a.end()})}var W=[8081,8082,8083,8084,8085,8086,3e3,3001,19e3].map(e=>({port:e,pid:0}));function P(e,o){return!(e<=0||e>=2e4||o.has(e)||e>=5170&&e<=5200)}async function G(e=[]){let o=new Set(e);try{let{stdout:t}=await v("lsof -iTCP -sTCP:LISTEN -P -n 2>/dev/null | grep -E '^(node|bun)'",{encoding:"utf8",timeout:2e3});if(t.trim()){let r=new Map;for(let s of t.trim().split(`
3
- `)){let i=s.trim().split(/\s+/);if(i.length<9)continue;let a=Number(i[1]),u=i[8].match(/:(\d+)$/);if(!u)continue;let c=Number(u[1]);P(c,o)&&(r.has(c)||r.set(c,a))}if(r.size>0)return[...r.entries()].map(([s,i])=>({port:s,pid:i}))}}catch{}try{let{stdout:t}=await v(`ss -tlnp 2>/dev/null | grep -E '"(node|bun)"'`,{encoding:"utf8",timeout:2e3});if(t.trim()){let r=new Map;for(let s of t.trim().split(`
4
- `)){let i=s.match(/:(\d+)\s/),a=s.match(/pid=(\d+)/);if(!i)continue;let n=Number(i[1]),u=a?Number(a[1]):0;P(n,o)&&(r.has(n)||r.set(n,u))}if(r.size>0)return[...r.entries()].map(([s,i])=>({port:s,pid:i}))}}catch{}return W.filter(t=>P(t.port,o))}var y=new Map;async function j(e){if(e<=0)return null;let o=y.get(e);if(o)return o;try{let{stdout:t}=await v(`lsof -p ${e} -a -d cwd -Fn 2>/dev/null`,{encoding:"utf8",timeout:1500});for(let r of t.split(`
5
- `))if(r.startsWith("n")&&r.length>1){let s=r.slice(1).trim();if(s)return y.set(e,s),s}}catch{}return null}function z(e,o){return{port:e,framework:o,bundleUrl:g(e,`http://localhost:${e}/index.bundle?platform=ios&dev=true&hot=true&minify=false`),hmrUrl:`ws://localhost:${e}/hot`,lastSeen:Date.now()}}function g(e,o){let t=x().find(s=>s.preferredPort===e),r=t?.runtimeConfig?M(o,t.runtimeConfig):o;return U(r)}function J(e){return e.includes("/node_modules/one/metro-entry.bundle")}function K(e){try{let o=JSON.parse(e);return o&&typeof o=="object"?o:null}catch{return null}}function w(e,o,t){if(!o)return e;try{let r=JSON.parse(o.body),s=r?.extra?.expoClient||r?.extra||{};s.name&&(e.projectName=s.name),s.ios?.bundleIdentifier&&(e.bundleId=s.ios.bundleIdentifier),e.framework==="metro"&&s.sdkVersion&&(e.framework="expo");let i=r?.launchAsset?.url;i&&!e.patched&&!J(e.bundleUrl)&&(e.bundleUrl=g(e.port,i));let a=s.iconUrl||s.ios?.iconUrl||s.icon||s.ios?.icon;if(a)if(e.iconPath=a,t)if(a.startsWith("http"))e.iconUrl=t(a);else{let n=a.replace(/^\.\//,"");e.iconUrl=t(`http://localhost:${e.port}/assets/${n}`)}else e.iconUrl=a.startsWith("http")?a:`http://localhost:${e.port}/assets/${a.replace(/^\.\//,"")}`}catch{}return e}var d=new Set,p=new Set,S=new Set;async function V(e,o){if(!await F(e))return null;let t="/node_modules/one/metro-entry.bundle?platform=ios&dev=true",[r,s,i,a]=await Promise.all([d.has(e)?Promise.resolve(null):h(e,"/__soot/"),h(e,"/status"),S.has(e)?Promise.resolve(null):h(e,"/","GET",B,{"expo-platform":"ios"}),p.has(e)?Promise.resolve(null):h(e,"/_expo/status")]);a&&a.statusCode===200?p.delete(e):p.has(e)||p.add(e);let n=i?K(i.body):null,u=typeof n?.launchAsset?.url=="string"?n.launchAsset.url:null,c=n?.extra?.expoClient||n?.extra||{};if(n&&(u||typeof c.name=="string")){d.add(e);let R=u||`http://localhost:${e}/index.bundle?platform=ios&dev=true&hot=true&minify=false`,T=R.includes("/one/metro-entry.bundle")?"one":"expo";return w({port:e,framework:T,bundleUrl:g(e,R),hmrUrl:`ws://localhost:${e}/hot`,lastSeen:Date.now()},i,o)}if(s&&s.body.includes("packager-status:running"))return d.add(e),w(z(e,a&&a.statusCode===200?"expo":"metro"),i,o);if(r&&r.statusCode===200&&r.body.includes("sootsim-patched"))return d.delete(e),w({port:e,framework:"one",bundleUrl:g(e,`http://localhost:${e}/__soot/bundle.js`),hmrUrl:`ws://localhost:${e}/hot`,lastSeen:Date.now(),patched:!0},i,o);if(s&&s.statusCode===200||a&&a.statusCode===200||i&&i.statusCode===200&&n!=null)return null;let f=await h(e,t,"HEAD");return f&&f.statusCode>0&&f.statusCode<400&&/application\/javascript/i.test(f.contentType||"")?(d.add(e),S.add(e),w({port:e,framework:"one",bundleUrl:g(e,`http://localhost:${e}${t}&minify=false`),hmrUrl:`ws://localhost:${e}/hot`,lastSeen:Date.now()},i,o)):(d.add(e),null)}function q(e){return!!e.bundleId?.trim().toLowerCase()?.startsWith("dev.sootsim.")}var b=new Map,Q=3e4,Y=1500;function X(e){return!e||e.framework==="metro"||e.framework==="unknown"}function Z(e){return e?g(e.port,e.bundleUrl)===e.bundleUrl:!0}function ee(e,o,t=Date.now()){if(o===0||e.pid!==o||!Z(e.result))return!1;let r=t-e.cachedAt;return!(e.result===null&&r>=Q||X(e.result)&&r>=Y)}async function fe(e={}){let o=await G(e.excludePorts),t=new Set(o.map(n=>n.port));for(let n of[...b.keys()])t.has(n)||b.delete(n);for(let n of[...d])t.has(n)||d.delete(n);for(let n of[...p])t.has(n)||p.delete(n);for(let n of[...S])t.has(n)||S.delete(n);let r=[],s=[];for(let{port:n,pid:u}of o){let c=b.get(n);if(c&&ee(c,u)){c.result&&r.push(c.result);continue}c&&c.pid!==u&&(d.delete(n),p.delete(n),S.delete(n)),s.push({port:n,pid:u})}s.length>0&&(await Promise.all(s.map(u=>V(u.port,e.buildIconProxyUrl)))).forEach((u,c)=>{let{port:l,pid:f}=s[c];f!==0&&b.set(l,{pid:f,result:u,cachedAt:Date.now()}),u&&r.push(u)});let i=new Map;for(let{port:n,pid:u}of o)u>0&&i.set(n,u);await Promise.all(r.map(async n=>{let u=i.get(n.port);if(!u)return;n.pid=u;let c=await j(u);c&&(n.cwd=c)}));let a=new Set(i.values());for(let n of[...y.keys()])a.has(n)||y.delete(n);return r.filter(n=>!q(n))}export{M as a,te as b,U as c,re as d,V as e,fe as f};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.179 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- var t="http://localhost:5173/";export{t as a};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.179 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a}from"./chunk-J7K5DKTW.js";import"./chunk-JOTROIZO.js";export{a as getCliVersion};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.179 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c,d,e}from"./chunk-UT76PROO.js";import"./chunk-CWBQ4VR3.js";import"./chunk-SOYTNR2Q.js";import"./chunk-C2LRNUYZ.js";import"./chunk-VCU44BK4.js";import"./chunk-ORU4M7HC.js";import"./chunk-XMZU4AX3.js";import"./chunk-SN7SSPO3.js";import"./chunk-TPQ4OK4D.js";import"./chunk-7LNH4A5G.js";import"./chunk-JAKFPOU4.js";import"./chunk-6RK5PLS5.js";import"./chunk-J7K5DKTW.js";import"./chunk-XL4TROEL.js";import"./chunk-RL3JUMAC.js";import"./chunk-JOTROIZO.js";export{c as daemonInstall,b as getDaemonServiceStatus,a as runDaemon,d as teardownDaemonService,e as teardownSootsimHome};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.179 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import"./chunk-6MDXUC6O.js";import{a,b,c,d,e,f,g,h,i}from"./chunk-VOOUQQET.js";import"./chunk-PGDHMJ2V.js";import"./chunk-FVLADGKB.js";import"./chunk-WIFE3R5F.js";import"./chunk-JAKFPOU4.js";import"./chunk-6RK5PLS5.js";import"./chunk-JOTROIZO.js";export{e as ALL_DRIVERS,i as buildDriverListRows,a as chromiumDriver,b as electronDriver,f as getAllDrivers,g as getDriver,c as playwrightDriver,h as resolveDriver,d as systemDriver};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.179 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a as c,b as d,c as e,d as f}from"./chunk-HJPQAS3T.js";import"./chunk-7PDA36Q7.js";import"./chunk-CE2THOSL.js";import"./chunk-7N73VST2.js";import{c as a,d as b}from"./chunk-SRV4YD3I.js";import"./chunk-3EEQRIEH.js";import"./chunk-T5CZ7MZK.js";import"./chunk-QSB4XZH5.js";import"./chunk-HHBOFGWG.js";import"./chunk-IR2KKNHX.js";import"./chunk-VOOUQQET.js";import"./chunk-PGDHMJ2V.js";import"./chunk-FVLADGKB.js";import"./chunk-UM5XHBTT.js";import"./chunk-HOS3HFAX.js";import"./chunk-6NCYDHS5.js";import"./chunk-R4YLBNCO.js";import"./chunk-S3QWJ76W.js";import"./chunk-WIFE3R5F.js";import"./chunk-CWBQ4VR3.js";import"./chunk-SOYTNR2Q.js";import"./chunk-SN7SSPO3.js";import"./chunk-TPQ4OK4D.js";import"./chunk-7LNH4A5G.js";import"./chunk-JAKFPOU4.js";import"./chunk-6RK5PLS5.js";import"./chunk-ZNBHWKKF.js";import"./chunk-RL3JUMAC.js";import"./chunk-JOTROIZO.js";export{c as discoverSootsimUrl,e as hoistLeadingSimFlag,a as parseFlowFile,f as runFlow,d as runFlowPlayback,b as validateFlowFile};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.179 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c}from"./chunk-C2LRNUYZ.js";import"./chunk-VCU44BK4.js";import"./chunk-ORU4M7HC.js";import"./chunk-XMZU4AX3.js";import"./chunk-SN7SSPO3.js";import"./chunk-TPQ4OK4D.js";import"./chunk-7LNH4A5G.js";import"./chunk-JAKFPOU4.js";import"./chunk-6RK5PLS5.js";import"./chunk-J7K5DKTW.js";import"./chunk-XL4TROEL.js";import"./chunk-RL3JUMAC.js";import"./chunk-JOTROIZO.js";export{c as printCommandHelp,b as printGroupHelp,a as printHelp};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.179 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b}from"./chunk-IR2KKNHX.js";import"./chunk-JOTROIZO.js";export{a as loadOptionalDemoApps,b as optionalDemoAppsSync};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.179 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a}from"./chunk-GDBCGIDS.js";import"./chunk-CZJ74QZM.js";import"./chunk-S3QWJ76W.js";import"./chunk-7LNH4A5G.js";import"./chunk-JAKFPOU4.js";import"./chunk-6RK5PLS5.js";import"./chunk-JOTROIZO.js";export{a as runRuntime};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.179 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a}from"./chunk-ZNBHWKKF.js";import"./chunk-RL3JUMAC.js";import"./chunk-JOTROIZO.js";export{a as settingsStore};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.179 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b}from"./chunk-CWBQ4VR3.js";import"./chunk-SOYTNR2Q.js";import"./chunk-6RK5PLS5.js";import"./chunk-JOTROIZO.js";export{b as flushCliTelemetry,a as trackCliEvent};
@@ -1,2 +0,0 @@
1
- /*! sootsim v0.1.179 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
- import{a,b,c}from"./chunk-UM5XHBTT.js";import"./chunk-HOS3HFAX.js";import"./chunk-6NCYDHS5.js";import"./chunk-R4YLBNCO.js";import"./chunk-S3QWJ76W.js";import"./chunk-WIFE3R5F.js";import"./chunk-CWBQ4VR3.js";import"./chunk-SOYTNR2Q.js";import"./chunk-7LNH4A5G.js";import"./chunk-JAKFPOU4.js";import"./chunk-6RK5PLS5.js";import"./chunk-JOTROIZO.js";export{a as resolveDefaultUploadOrigin,b as resolvePublicPreviewOrigin,c as runUpload};