sootsim 0.1.185 → 0.1.186

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 (157) hide show
  1. package/dist-cli/bin.js +3 -3
  2. package/dist-cli/chunks/{agent-VF756RZU.js → agent-HOCS7BA7.js} +2 -2
  3. package/dist-cli/chunks/{agent-wrapper-IAFL7ROV.js → agent-wrapper-OFIKO65K.js} +2 -2
  4. package/dist-cli/chunks/{app-fonts-VWLEC7ZA.js → app-fonts-PXVMBZZ7.js} +2 -2
  5. package/dist-cli/chunks/{assert-I55QVGG7.js → assert-OZS6AXZE.js} +2 -2
  6. package/dist-cli/chunks/beta-LUMNYREE.js +2 -0
  7. package/dist-cli/chunks/{camera-CYYBJH7W.js → camera-QJ2PKIJB.js} +2 -2
  8. package/dist-cli/chunks/{chunk-2T73IGB2.js → chunk-2B2D2EBR.js} +2 -2
  9. package/dist-cli/chunks/{chunk-ARNLQPMQ.js → chunk-353E6UCU.js} +2 -2
  10. package/dist-cli/chunks/chunk-3ISH4ZRW.js +1 -0
  11. package/dist-cli/chunks/{chunk-PIUKLO3W.js → chunk-4HVMPXJZ.js} +1 -1
  12. package/dist-cli/chunks/chunk-5TTEOJ4A.js +1 -0
  13. package/dist-cli/chunks/chunk-5XIRXMOS.js +971 -0
  14. package/dist-cli/chunks/chunk-6MJVRIUP.js +118 -0
  15. package/dist-cli/chunks/{chunk-EXFB33AZ.js → chunk-6OQVIQY7.js} +2 -2
  16. package/dist-cli/chunks/chunk-BU5CRHHR.js +24 -0
  17. package/dist-cli/chunks/{chunk-TUF6EPCQ.js → chunk-DPXVA7ZF.js} +2 -2
  18. package/dist-cli/chunks/{chunk-R4KLD4P4.js → chunk-FN64EREO.js} +2 -2
  19. package/dist-cli/chunks/{chunk-BI56RR3G.js → chunk-FUHNIWFL.js} +4 -4
  20. package/dist-cli/chunks/{chunk-WEJKLJ4B.js → chunk-GNGEYMS3.js} +2 -2
  21. package/dist-cli/chunks/{chunk-QTFCJYBF.js → chunk-I65LTDPY.js} +3 -3
  22. package/dist-cli/chunks/{chunk-BMCBPMTC.js → chunk-INIASYOZ.js} +1 -1
  23. package/dist-cli/chunks/{chunk-FUHXL6BW.js → chunk-KNICGV7H.js} +1 -1
  24. package/dist-cli/chunks/{chunk-E5DE33BU.js → chunk-LV7DFIBL.js} +1 -1
  25. package/dist-cli/chunks/{chunk-M3P67TBN.js → chunk-MAGDSBXT.js} +1 -1
  26. package/dist-cli/chunks/chunk-MP4CRGWM.js +2 -0
  27. package/dist-cli/chunks/{chunk-MADEJDFD.js → chunk-MPUCQL3Q.js} +1 -1
  28. package/dist-cli/chunks/{chunk-FY6DJGOS.js → chunk-N3PLEUYD.js} +39 -15
  29. package/dist-cli/chunks/{chunk-CYBRFHPU.js → chunk-NYYP5QQK.js} +2 -2
  30. package/dist-cli/chunks/{chunk-4OUQAR34.js → chunk-O2SQQXUO.js} +1 -1
  31. package/dist-cli/chunks/{chunk-K2THZIVC.js → chunk-OMFESSKA.js} +1 -1
  32. package/dist-cli/chunks/{chunk-C3UEINOZ.js → chunk-P5UT637B.js} +2 -2
  33. package/dist-cli/chunks/{chunk-C63EVPDN.js → chunk-POOE26UD.js} +2 -2
  34. package/dist-cli/chunks/{chunk-HQG4DRQ3.js → chunk-PTUTIFWJ.js} +1 -1
  35. package/dist-cli/chunks/{chunk-IJP257WP.js → chunk-QBLTH2F6.js} +1 -1
  36. package/dist-cli/chunks/{chunk-LJ3SOZBF.js → chunk-RAY2ZSNI.js} +2 -2
  37. package/dist-cli/chunks/{chunk-DZLBZGHN.js → chunk-RDM3LVH2.js} +2 -2
  38. package/dist-cli/chunks/chunk-RP5CVR6O.js +382 -0
  39. package/dist-cli/chunks/{chunk-PKZNXDUJ.js → chunk-TYV3FMBE.js} +2 -2
  40. package/dist-cli/chunks/{chunk-4NUQVW5P.js → chunk-U3BTJLRM.js} +17 -6
  41. package/dist-cli/chunks/{chunk-QQ4NSPAD.js → chunk-UATE6GSA.js} +2 -2
  42. package/dist-cli/chunks/chunk-V434ATFM.js +13 -0
  43. package/dist-cli/chunks/{chunk-GX6MKIFC.js → chunk-VGAD3CMW.js} +1 -1
  44. package/dist-cli/chunks/{chunk-LI4RLX6B.js → chunk-VPUJQTEO.js} +1 -1
  45. package/dist-cli/chunks/chunk-WBPTJ3WC.js +5 -0
  46. package/dist-cli/chunks/{chunk-NL5IFN4T.js → chunk-WFSLSEGX.js} +2 -2
  47. package/dist-cli/chunks/{chunk-TFZO277G.js → chunk-XFQOFRYY.js} +1 -1
  48. package/dist-cli/chunks/{chunk-TNHF6BON.js → chunk-XQ6PPMM6.js} +1 -1
  49. package/dist-cli/chunks/{chunk-FHJTTB3W.js → chunk-YYZGAZQI.js} +2 -2
  50. package/dist-cli/chunks/{chunk-WBY4JJ2K.js → chunk-ZE2O7AA5.js} +2 -2
  51. package/dist-cli/chunks/{chunk-X4KS33ZC.js → chunk-ZJ64K2PL.js} +2 -2
  52. package/dist-cli/chunks/cli-version-474OBNTF.js +2 -0
  53. package/dist-cli/chunks/{compat-ZJA3N4ZT.js → compat-BNXJOVMU.js} +3 -3
  54. package/dist-cli/chunks/control-6LPRGKTF.js +2 -0
  55. package/dist-cli/chunks/{cpu-profile-ACSQMVXY.js → cpu-profile-3KXOGOJP.js} +2 -2
  56. package/dist-cli/chunks/daemon-OMT3RVU4.js +2 -0
  57. package/dist-cli/chunks/{debug-W2ZOVTQO.js → debug-B3MN6772.js} +11 -10
  58. package/dist-cli/chunks/{detox-ANJO6T27.js → detox-YKSX4DUO.js} +2 -2
  59. package/dist-cli/chunks/{device-KPPN4KYD.js → device-NZX6AKQI.js} +2 -2
  60. package/dist-cli/chunks/{diagnose-5PEJYGES.js → diagnose-26HE6KS5.js} +2 -2
  61. package/dist-cli/chunks/drivers-2PZC4QA3.js +2 -0
  62. package/dist-cli/chunks/{electron-U456QLSQ.js → electron-XEUWIM47.js} +3 -3
  63. package/dist-cli/chunks/flow-P22NDT6V.js +2 -0
  64. package/dist-cli/chunks/help-ECGL4JSP.js +2 -0
  65. package/dist-cli/chunks/{hints-MBBQLMQU.js → hints-C56M4PMW.js} +2 -2
  66. package/dist-cli/chunks/{home-paths-KQKYP2SE.js → home-paths-EYH3RBPS.js} +2 -2
  67. package/dist-cli/chunks/inspect-LJYG4WC6.js +2 -0
  68. package/dist-cli/chunks/{install-desktop-OR6ZJ43X.js → install-desktop-UWHLWFKB.js} +3 -3
  69. package/dist-cli/chunks/{keys-JSQMBUE7.js → keys-Q37NM52E.js} +2 -2
  70. package/dist-cli/chunks/{login-DVMWAI3G.js → login-6E6ZEJRF.js} +4 -4
  71. package/dist-cli/chunks/{logout-RIVPFE5N.js → logout-A7QHH6DQ.js} +2 -2
  72. package/dist-cli/chunks/{maestro-TX6FPTVH.js → maestro-YJRGFGDQ.js} +2 -2
  73. package/dist-cli/chunks/optional-demo-registry-OVWOHGTW.js +2 -0
  74. package/dist-cli/chunks/{preview-3AD7WNA6.js → preview-3OYFVL4A.js} +2 -2
  75. package/dist-cli/chunks/{profile-HY55VFNR.js → profile-5Z2YGBCJ.js} +2 -2
  76. package/dist-cli/chunks/{react-HDRCKCKV.js → react-ZNFFE3VQ.js} +2 -2
  77. package/dist-cli/chunks/{record-HW4C7QYN.js → record-V4CBW3GG.js} +2 -2
  78. package/dist-cli/chunks/runtime-OC6S2C22.js +2 -0
  79. package/dist-cli/chunks/{screenshot-XFR3QN5T.js → screenshot-QWMRWTIQ.js} +2 -2
  80. package/dist-cli/chunks/{screenshot-mode-Y5CVO267.js → screenshot-mode-36EUFBF5.js} +2 -2
  81. package/dist-cli/chunks/{screenshots-RKUL2ZZT.js → screenshots-LOS6WHZN.js} +2 -2
  82. package/dist-cli/chunks/{screenshots-capture-RVNF75ZD.js → screenshots-capture-6D6TBI6A.js} +2 -2
  83. package/dist-cli/chunks/{serve-QMRYLWL5.js → serve-YWGZ2JSI.js} +16 -16
  84. package/dist-cli/chunks/{setup-ELNJS7AI.js → setup-JS35KZ6P.js} +3 -3
  85. package/dist-cli/chunks/{skills-GPSJYS4W.js → skills-2TRDAXNC.js} +2 -2
  86. package/dist-cli/chunks/{slides-OCFNPIFG.js → slides-AO5MBP5Q.js} +2 -2
  87. package/dist-cli/chunks/store-HQKPCA6W.js +2 -0
  88. package/dist-cli/chunks/telemetry-I2H25VVF.js +2 -0
  89. package/dist-cli/chunks/{telemetry-KFZQUFG5.js → telemetry-MBWJUKBU.js} +2 -2
  90. package/dist-cli/chunks/{test-Z2HZXCZM.js → test-TRP2O6AP.js} +3 -3
  91. package/dist-cli/chunks/{three-mode-NKJFCDYS.js → three-mode-VVNOGAZT.js} +2 -2
  92. package/dist-cli/chunks/{timeline-PRGQMQRR.js → timeline-4WDFXUXB.js} +2 -2
  93. package/dist-cli/chunks/{upgrade-3NW7JRRX.js → upgrade-NHQRFD4J.js} +2 -2
  94. package/dist-cli/chunks/upload-6C2EC56N.js +2 -0
  95. package/dist-cli/chunks/{version-FDTZRIYT.js → version-T7O46MZL.js} +2 -2
  96. package/dist-cli/chunks/{web-4N5QQEQJ.js → web-7YW2ISLF.js} +2 -2
  97. package/dist-cli/chunks/{what-happened-IX2RRCOS.js → what-happened-IDOUXSFI.js} +2 -2
  98. package/dist-cli/chunks/{whoami-QZ42FYYF.js → whoami-DQBR3UTO.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 +2 -2
  113. package/dist-lib/host/bridge-host.cjs +77 -44
  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 +28 -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 +28 -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 +1 -1
  126. package/dist-lib/sdk.cjs +38 -10
  127. package/dist-lib/sdk.mjs +38 -10
  128. package/dist-lib/skills.cjs +283 -254
  129. package/dist-lib/vite.cjs +28 -1
  130. package/package.json +1 -1
  131. package/src/home-paths.ts +8 -1
  132. package/src/host/bridge-host.ts +15 -1
  133. package/src/runtime-assets.ts +70 -0
  134. package/src/vite-plugin.ts +9 -0
  135. package/dist-cli/chunks/beta-X6YPQVZH.js +0 -2
  136. package/dist-cli/chunks/chunk-7OAUPGLN.js +0 -23
  137. package/dist-cli/chunks/chunk-IGJHME3T.js +0 -1
  138. package/dist-cli/chunks/chunk-JRL7PFNZ.js +0 -463
  139. package/dist-cli/chunks/chunk-KOKIECMB.js +0 -118
  140. package/dist-cli/chunks/chunk-OAHGYDJR.js +0 -13
  141. package/dist-cli/chunks/chunk-PDLQWZN4.js +0 -2
  142. package/dist-cli/chunks/chunk-SL6565MR.js +0 -1
  143. package/dist-cli/chunks/chunk-V4M2R6FZ.js +0 -2
  144. package/dist-cli/chunks/chunk-V5JEPE3P.js +0 -5
  145. package/dist-cli/chunks/chunk-XU5EMZ4B.js +0 -264
  146. package/dist-cli/chunks/cli-version-ICHQMND6.js +0 -2
  147. package/dist-cli/chunks/control-CZFSYSYG.js +0 -2
  148. package/dist-cli/chunks/daemon-337B4P3B.js +0 -2
  149. package/dist-cli/chunks/drivers-MSDIFHBD.js +0 -2
  150. package/dist-cli/chunks/flow-JL3SC6HC.js +0 -2
  151. package/dist-cli/chunks/help-PA4RTR5X.js +0 -2
  152. package/dist-cli/chunks/inspect-ZP5SM4EW.js +0 -987
  153. package/dist-cli/chunks/optional-demo-registry-ONYG6DUI.js +0 -2
  154. package/dist-cli/chunks/runtime-RHHPW5WO.js +0 -2
  155. package/dist-cli/chunks/store-MBKDUQEQ.js +0 -2
  156. package/dist-cli/chunks/telemetry-46XXIUEE.js +0 -2
  157. package/dist-cli/chunks/upload-QVDVJ6ZK.js +0 -2
package/dist-lib/sdk.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.185 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.186 | (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;
@@ -718,6 +718,7 @@ var WAIT_READY_PROBE = `(async () => {
718
718
  let externalReady = null
719
719
  let externalStatus = ''
720
720
  let externalError = ''
721
+ let suppressedEntryError = ''
721
722
  try {
722
723
  const getExternalAppState = t?.getExternalAppState
723
724
  const external = typeof getExternalAppState === 'function'
@@ -742,10 +743,16 @@ var WAIT_READY_PROBE = `(async () => {
742
743
  if (typeof state.error === 'string') externalError = state.error
743
744
  }
744
745
  if (!externalError && Array.isArray(external?.entryErrors)) {
745
- const entry = external.entryErrors.find((item) => {
746
- return item && typeof item.message === 'string' && item.message.trim()
747
- })
748
- if (entry) externalError = entry.message
746
+ // suppressed-and-continued entry errors (bundle-loader's patched __r
747
+ // swallows entry throws and moves on) must NOT gate readiness \u2014 the
748
+ // app frequently runs fine after one (e.g. metro's "Unknown named
749
+ // module" probing noise). they surface separately as a diagnostic
750
+ // for the timeout path.
751
+ const isReal = (item) => item && typeof item.message === 'string' && item.message.trim()
752
+ const fatal = external.entryErrors.find((item) => isReal(item) && item.suppressed !== true)
753
+ if (fatal) externalError = fatal.message
754
+ const suppressed = external.entryErrors.find((item) => isReal(item) && item.suppressed === true)
755
+ if (suppressed) suppressedEntryError = suppressed.message
749
756
  }
750
757
  if (externalReady === false && externalStatus) loadingText = externalStatus
751
758
  } catch {}
@@ -761,6 +768,7 @@ var WAIT_READY_PROBE = `(async () => {
761
768
  externalReady,
762
769
  externalStatus,
763
770
  externalError,
771
+ suppressedEntryError,
764
772
  }
765
773
  })()`;
766
774
  var READY_CONTENT_NODE_FLOOR = 100;
@@ -773,7 +781,8 @@ function readyProbeHasTargetContent(probe) {
773
781
  return probe.targets > 0;
774
782
  }
775
783
  function waitReadyReason(status) {
776
- return status.externalError ? `guest app errored: ${status.externalError}` : status.loadingText ? `still showing "${status.loadingText}"` : status.externalReady === false ? "guest app is still loading" : status.flag !== true && status.targets > 0 ? "native content is rendered but the ready signal has not settled" : status.flag !== true ? "guest app has not emitted sootsim:externalAppReady" : status.targets <= 0 ? "ready flag emitted but no visible app content is inspectable yet" : "node tree is still changing";
784
+ const base = status.externalError ? `guest app errored: ${status.externalError}` : status.loadingText ? `still showing "${status.loadingText}"` : status.externalReady === false ? "guest app is still loading" : status.flag !== true && status.targets > 0 ? "native content is rendered but the ready signal has not settled" : status.flag !== true ? "guest app has not emitted sootsim:externalAppReady" : status.targets <= 0 ? "ready flag emitted but no visible app content is inspectable yet" : "node tree is still changing";
785
+ return !status.externalError && status.suppressedEntryError ? `${base} (suppressed entry error: ${status.suppressedEntryError})` : base;
777
786
  }
778
787
  async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
779
788
  const start = Date.now();
@@ -791,7 +800,8 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
791
800
  loadingText: "",
792
801
  externalReady: null,
793
802
  externalStatus: "",
794
- externalError: ""
803
+ externalError: "",
804
+ suppressedEntryError: ""
795
805
  };
796
806
  while (Date.now() < deadline) {
797
807
  try {
@@ -809,6 +819,7 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
809
819
  externalReady: last.externalReady,
810
820
  externalStatus: last.externalStatus,
811
821
  externalError: last.externalError,
822
+ suppressedEntryError: last.suppressedEntryError,
812
823
  errors: last.errors
813
824
  };
814
825
  if (last.nodes !== lastNodes) {
@@ -843,6 +854,7 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
843
854
  externalReady: last.externalReady,
844
855
  externalStatus: last.externalStatus,
845
856
  externalError: last.externalError,
857
+ suppressedEntryError: last.suppressedEntryError,
846
858
  errors: last.errors
847
859
  };
848
860
  }
@@ -1200,6 +1212,22 @@ async function inspectMemory(bridge) {
1200
1212
  code: `(async () => {
1201
1213
  const host = window.__sootsimRenderHost
1202
1214
  const stats = host?.queryStats ? await host.queryStats() : null
1215
+ const shellRaw = window.__sootsimShellMemory
1216
+ ? await window.__sootsimShellMemory()
1217
+ : null
1218
+ const shell = shellRaw && !shellRaw.error ? shellRaw : null
1219
+ const normalize = (m) =>
1220
+ m
1221
+ ? {
1222
+ nodesRegistered: m.nodesRegistered ?? null,
1223
+ nodesDetached: m.nodesDetached ?? null,
1224
+ detachedTypes: m.detachedTypes ?? null,
1225
+ objects: m.objects ?? null,
1226
+ activeNativeAnimations: m.activeNativeAnimations ?? null,
1227
+ imageLoader: m.imageLoader ?? null,
1228
+ workerHeap: m.workerHeap ?? null,
1229
+ }
1230
+ : null
1203
1231
  const hostMem = performance.memory
1204
1232
  ? {
1205
1233
  usedJSHeapSize: performance.memory.usedJSHeapSize,
@@ -1208,13 +1236,13 @@ async function inspectMemory(bridge) {
1208
1236
  }
1209
1237
  : null
1210
1238
  return {
1211
- imageLoader: stats?.memory?.imageLoader ?? null,
1212
- workerHeap: stats?.memory?.workerHeap ?? null,
1239
+ tenant: normalize(stats?.memory),
1240
+ shell: normalize(shell),
1213
1241
  hostHeap: hostMem,
1214
1242
  }
1215
1243
  })()`
1216
1244
  });
1217
- return result ?? { imageLoader: null, workerHeap: null, hostHeap: null };
1245
+ return result ?? { tenant: null, shell: null, hostHeap: null };
1218
1246
  }
1219
1247
  function formatTimelineSummary(summary) {
1220
1248
  if (summary.total === 0) return "nothing recorded";
package/dist-lib/sdk.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! sootsim v0.1.185 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! sootsim v0.1.186 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // cli/commands/inspect/core.ts
4
4
  function resolveMaxMsFlag(args, fallbackMs) {
@@ -628,6 +628,7 @@ var WAIT_READY_PROBE = `(async () => {
628
628
  let externalReady = null
629
629
  let externalStatus = ''
630
630
  let externalError = ''
631
+ let suppressedEntryError = ''
631
632
  try {
632
633
  const getExternalAppState = t?.getExternalAppState
633
634
  const external = typeof getExternalAppState === 'function'
@@ -652,10 +653,16 @@ var WAIT_READY_PROBE = `(async () => {
652
653
  if (typeof state.error === 'string') externalError = state.error
653
654
  }
654
655
  if (!externalError && Array.isArray(external?.entryErrors)) {
655
- const entry = external.entryErrors.find((item) => {
656
- return item && typeof item.message === 'string' && item.message.trim()
657
- })
658
- if (entry) externalError = entry.message
656
+ // suppressed-and-continued entry errors (bundle-loader's patched __r
657
+ // swallows entry throws and moves on) must NOT gate readiness \u2014 the
658
+ // app frequently runs fine after one (e.g. metro's "Unknown named
659
+ // module" probing noise). they surface separately as a diagnostic
660
+ // for the timeout path.
661
+ const isReal = (item) => item && typeof item.message === 'string' && item.message.trim()
662
+ const fatal = external.entryErrors.find((item) => isReal(item) && item.suppressed !== true)
663
+ if (fatal) externalError = fatal.message
664
+ const suppressed = external.entryErrors.find((item) => isReal(item) && item.suppressed === true)
665
+ if (suppressed) suppressedEntryError = suppressed.message
659
666
  }
660
667
  if (externalReady === false && externalStatus) loadingText = externalStatus
661
668
  } catch {}
@@ -671,6 +678,7 @@ var WAIT_READY_PROBE = `(async () => {
671
678
  externalReady,
672
679
  externalStatus,
673
680
  externalError,
681
+ suppressedEntryError,
674
682
  }
675
683
  })()`;
676
684
  var READY_CONTENT_NODE_FLOOR = 100;
@@ -683,7 +691,8 @@ function readyProbeHasTargetContent(probe) {
683
691
  return probe.targets > 0;
684
692
  }
685
693
  function waitReadyReason(status) {
686
- return status.externalError ? `guest app errored: ${status.externalError}` : status.loadingText ? `still showing "${status.loadingText}"` : status.externalReady === false ? "guest app is still loading" : status.flag !== true && status.targets > 0 ? "native content is rendered but the ready signal has not settled" : status.flag !== true ? "guest app has not emitted sootsim:externalAppReady" : status.targets <= 0 ? "ready flag emitted but no visible app content is inspectable yet" : "node tree is still changing";
694
+ const base = status.externalError ? `guest app errored: ${status.externalError}` : status.loadingText ? `still showing "${status.loadingText}"` : status.externalReady === false ? "guest app is still loading" : status.flag !== true && status.targets > 0 ? "native content is rendered but the ready signal has not settled" : status.flag !== true ? "guest app has not emitted sootsim:externalAppReady" : status.targets <= 0 ? "ready flag emitted but no visible app content is inspectable yet" : "node tree is still changing";
695
+ return !status.externalError && status.suppressedEntryError ? `${base} (suppressed entry error: ${status.suppressedEntryError})` : base;
687
696
  }
688
697
  async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
689
698
  const start = Date.now();
@@ -701,7 +710,8 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
701
710
  loadingText: "",
702
711
  externalReady: null,
703
712
  externalStatus: "",
704
- externalError: ""
713
+ externalError: "",
714
+ suppressedEntryError: ""
705
715
  };
706
716
  while (Date.now() < deadline) {
707
717
  try {
@@ -719,6 +729,7 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
719
729
  externalReady: last.externalReady,
720
730
  externalStatus: last.externalStatus,
721
731
  externalError: last.externalError,
732
+ suppressedEntryError: last.suppressedEntryError,
722
733
  errors: last.errors
723
734
  };
724
735
  if (last.nodes !== lastNodes) {
@@ -753,6 +764,7 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
753
764
  externalReady: last.externalReady,
754
765
  externalStatus: last.externalStatus,
755
766
  externalError: last.externalError,
767
+ suppressedEntryError: last.suppressedEntryError,
756
768
  errors: last.errors
757
769
  };
758
770
  }
@@ -1110,6 +1122,22 @@ async function inspectMemory(bridge) {
1110
1122
  code: `(async () => {
1111
1123
  const host = window.__sootsimRenderHost
1112
1124
  const stats = host?.queryStats ? await host.queryStats() : null
1125
+ const shellRaw = window.__sootsimShellMemory
1126
+ ? await window.__sootsimShellMemory()
1127
+ : null
1128
+ const shell = shellRaw && !shellRaw.error ? shellRaw : null
1129
+ const normalize = (m) =>
1130
+ m
1131
+ ? {
1132
+ nodesRegistered: m.nodesRegistered ?? null,
1133
+ nodesDetached: m.nodesDetached ?? null,
1134
+ detachedTypes: m.detachedTypes ?? null,
1135
+ objects: m.objects ?? null,
1136
+ activeNativeAnimations: m.activeNativeAnimations ?? null,
1137
+ imageLoader: m.imageLoader ?? null,
1138
+ workerHeap: m.workerHeap ?? null,
1139
+ }
1140
+ : null
1113
1141
  const hostMem = performance.memory
1114
1142
  ? {
1115
1143
  usedJSHeapSize: performance.memory.usedJSHeapSize,
@@ -1118,13 +1146,13 @@ async function inspectMemory(bridge) {
1118
1146
  }
1119
1147
  : null
1120
1148
  return {
1121
- imageLoader: stats?.memory?.imageLoader ?? null,
1122
- workerHeap: stats?.memory?.workerHeap ?? null,
1149
+ tenant: normalize(stats?.memory),
1150
+ shell: normalize(shell),
1123
1151
  hostHeap: hostMem,
1124
1152
  }
1125
1153
  })()`
1126
1154
  });
1127
- return result ?? { imageLoader: null, workerHeap: null, hostHeap: null };
1155
+ return result ?? { tenant: null, shell: null, hostHeap: null };
1128
1156
  }
1129
1157
  function formatTimelineSummary(summary) {
1130
1158
  if (summary.total === 0) return "nothing recorded";