rnxsim 0.1.417 → 0.1.419

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 (66) hide show
  1. package/cli/cloud-client.ts +104 -32
  2. package/cli/cloud-dispatch.ts +38 -4
  3. package/cli/commands/inspect/actions.ts +313 -385
  4. package/cli/commands/inspect/core.ts +27 -12
  5. package/cli/commands/inspect/resolve-target.ts +2 -3
  6. package/cli/commands/inspect/settle.ts +10 -0
  7. package/cli/commands/inspect/wait-ready.ts +2 -0
  8. package/cli/commands/inspect.ts +31 -48
  9. package/cli/commands/platform.ts +41 -10
  10. package/cli/outbound-endpoints.ts +1 -1
  11. package/cli/self-invocation.ts +2 -2
  12. package/cli/shell-init.ts +1 -1
  13. package/dist-lib/agent-daemon-client.cjs +1 -1
  14. package/dist-lib/agent-events.cjs +1 -1
  15. package/dist-lib/agent-identity.cjs +1 -1
  16. package/dist-lib/agent-sessions.cjs +1 -1
  17. package/dist-lib/attached-projects.cjs +1 -1
  18. package/dist-lib/auth/shared-session.cjs +1 -1
  19. package/dist-lib/backend-origin.cjs +1 -1
  20. package/dist-lib/beta.cjs +1 -1
  21. package/dist-lib/beta.mjs +1 -1
  22. package/dist-lib/bridge-constants.cjs +1 -1
  23. package/dist-lib/bridge-contract-input.cjs +1 -1
  24. package/dist-lib/bridge-contract-input.mjs +1 -1
  25. package/dist-lib/bridge-contract.cjs +7 -1
  26. package/dist-lib/bridge-contract.mjs +5 -1
  27. package/dist-lib/capture-contract.cjs +1 -1
  28. package/dist-lib/capture-contract.mjs +1 -1
  29. package/dist-lib/cli-constants.cjs +1 -1
  30. package/dist-lib/cloud-contract.cjs +1 -1
  31. package/dist-lib/cloud-contract.mjs +1 -1
  32. package/dist-lib/config.cjs +1 -1
  33. package/dist-lib/detox/index.cjs +1 -1
  34. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  35. package/dist-lib/home-paths.cjs +1 -1
  36. package/dist-lib/host/bridge-host.cjs +1 -1
  37. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  38. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  39. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  40. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  41. package/dist-lib/host/websocket-proxy.cjs +1 -1
  42. package/dist-lib/index.cjs +631 -749
  43. package/dist-lib/jump-to-source-babel.cjs +1 -1
  44. package/dist-lib/menu.cjs +1 -1
  45. package/dist-lib/menu.mjs +1 -1
  46. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  47. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  48. package/dist-lib/metro-production-bundle.cjs +1 -1
  49. package/dist-lib/metro-production-bundle.mjs +1 -1
  50. package/dist-lib/metro.cjs +1 -1
  51. package/dist-lib/profiles.cjs +1 -1
  52. package/dist-lib/public-brand.cjs +1 -1
  53. package/dist-lib/react-native-host-modules.cjs +1 -1
  54. package/dist-lib/react-native-host-modules.mjs +1 -1
  55. package/dist-lib/render-mode.cjs +1 -1
  56. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  57. package/dist-lib/sdk.cjs +1209 -1342
  58. package/dist-lib/sdk.mjs +1209 -1342
  59. package/dist-lib/skills.cjs +63 -2
  60. package/dist-lib/vite.cjs +1 -1
  61. package/package.json +1 -1
  62. package/src/bridge-contract.ts +3 -0
  63. package/src/host/bridge-host.ts +1 -1
  64. package/src/host/plane-host.ts +1 -1
  65. package/src/native-dev-bundle-url.ts +1 -1
  66. package/src/vite-plugin.ts +1 -1
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.417 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.419 | (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;
@@ -21467,6 +21467,49 @@ var init_cli_constants = __esm({
21467
21467
  }
21468
21468
  });
21469
21469
 
21470
+ // ../compat/src/stub-manifest.ts
21471
+ var init_stub_manifest = __esm({
21472
+ "../compat/src/stub-manifest.ts"() {
21473
+ "use strict";
21474
+ }
21475
+ });
21476
+
21477
+ // ../sootsim-engine/src/metro-asset-path.ts
21478
+ var init_metro_asset_path = __esm({
21479
+ "../sootsim-engine/src/metro-asset-path.ts"() {
21480
+ "use strict";
21481
+ }
21482
+ });
21483
+
21484
+ // ../sootsim-engine/src/stub-pattern-matcher.ts
21485
+ var init_stub_pattern_matcher = __esm({
21486
+ "../sootsim-engine/src/stub-pattern-matcher.ts"() {
21487
+ "use strict";
21488
+ }
21489
+ });
21490
+
21491
+ // ../sootsim-engine/src/metro-fingerprint.ts
21492
+ var import_metro_production_bundle, import_react_native_host_modules;
21493
+ var init_metro_fingerprint = __esm({
21494
+ "../sootsim-engine/src/metro-fingerprint.ts"() {
21495
+ "use strict";
21496
+ init_stub_manifest();
21497
+ import_metro_production_bundle = require("rnxsim/metro-production-bundle");
21498
+ import_react_native_host_modules = require("rnxsim/react-native-host-modules");
21499
+ init_metro_asset_path();
21500
+ init_stub_pattern_matcher();
21501
+ }
21502
+ });
21503
+
21504
+ // ../sootsim-engine/src/metro-fingerprint-registry-client.ts
21505
+ var import_metro_fingerprint_registry;
21506
+ var init_metro_fingerprint_registry_client = __esm({
21507
+ "../sootsim-engine/src/metro-fingerprint-registry-client.ts"() {
21508
+ "use strict";
21509
+ import_metro_fingerprint_registry = require("rnxsim/metro-fingerprint-registry");
21510
+ }
21511
+ });
21512
+
21470
21513
  // src/cloud-contract.ts
21471
21514
  function isRnxCloudCommandType(value) {
21472
21515
  return RNX_CLOUD_COMMAND_TYPE_SET.has(value);
@@ -21500,6 +21543,13 @@ var init_cloud_contract = __esm({
21500
21543
  }
21501
21544
  });
21502
21545
 
21546
+ // src/metro-production-bundle.ts
21547
+ var init_metro_production_bundle = __esm({
21548
+ "src/metro-production-bundle.ts"() {
21549
+ "use strict";
21550
+ }
21551
+ });
21552
+
21503
21553
  // cli/cloud-session.ts
21504
21554
  function isRecord3(value) {
21505
21555
  return value !== null && typeof value === "object" && !Array.isArray(value);
@@ -21631,7 +21681,10 @@ var init_cloud_client = __esm({
21631
21681
  "cli/cloud-client.ts"() {
21632
21682
  "use strict";
21633
21683
  import_node_crypto5 = require("node:crypto");
21684
+ init_metro_fingerprint();
21685
+ init_metro_fingerprint_registry_client();
21634
21686
  init_cloud_contract();
21687
+ init_metro_production_bundle();
21635
21688
  init_public_brand();
21636
21689
  init_cloud_session();
21637
21690
  DEFAULT_RNX_CLOUD_ORIGIN = rnxPublicBrand.origin;
@@ -23271,9 +23324,12 @@ var init_app_splash = __esm({
23271
23324
  });
23272
23325
 
23273
23326
  // src/bridge-contract.ts
23327
+ var PUBLIC_NO_NETWORK_MARKER, HEADLESS_TENANT_FETCH_HUNG_MARKER;
23274
23328
  var init_bridge_contract = __esm({
23275
23329
  "src/bridge-contract.ts"() {
23276
23330
  "use strict";
23331
+ PUBLIC_NO_NETWORK_MARKER = "public RNX Cloud simulators have no network";
23332
+ HEADLESS_TENANT_FETCH_HUNG_MARKER = "headless tenant fetch hung";
23277
23333
  }
23278
23334
  });
23279
23335
 
@@ -23654,9 +23710,13 @@ function layoutGetNativeEval(opts = {}) {
23654
23710
  }
23655
23711
  function waitReadyReason(status) {
23656
23712
  if (status.bridgeError) {
23713
+ if (status.bridgeError.includes(HEADLESS_TENANT_FETCH_HUNG_MARKER) || status.bridgeError.includes(PUBLIC_NO_NETWORK_MARKER)) {
23714
+ return status.bridgeError;
23715
+ }
23657
23716
  return `sim unreachable: ${status.bridgeError} \u2014 the target tab is closed or no sim is connected (check \`rnx list\`, reopen with \`rnx open\`)`;
23658
23717
  }
23659
- 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";
23718
+ const waitingOnGuestFetch = status.externalReady === false && /https?:\/\//.test(status.externalStatus);
23719
+ const base = status.externalError ? `guest app errored: ${status.externalError}` : waitingOnGuestFetch ? `waiting on a guest fetch: ${status.externalStatus}` : 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";
23660
23720
  return !status.externalError && status.suppressedEntryError ? `${base} (suppressed entry error: ${status.suppressedEntryError})` : base;
23661
23721
  }
23662
23722
  async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
@@ -23761,6 +23821,7 @@ var init_core = __esm({
23761
23821
  "cli/commands/inspect/core.ts"() {
23762
23822
  "use strict";
23763
23823
  init_bridge_contract();
23824
+ init_bridge_contract();
23764
23825
  LAYOUT_GET_NATIVE_EVAL = layoutGetNativeEval();
23765
23826
  MERGED_CONSOLE_COUNT_EVAL = `(() => {
23766
23827
  const norm = (s) => (typeof s === 'string' ? s : (() => { try { return JSON.stringify(s) } catch { return String(s) } })())
package/dist-lib/vite.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.417 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.419 | (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": "rnxsim",
3
- "version": "0.1.417",
3
+ "version": "0.1.419",
4
4
  "description": "Vite and Metro plugins, testing drivers, and SDK exports for rnx.",
5
5
  "author": "Tamagui LLC",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -231,6 +231,9 @@ export const SEMANTIC_READY_CONTENT_NODE_FLOOR = 100
231
231
  export const SEMANTIC_READY_NODE_STABLE_MS = 750
232
232
  export const SEMANTIC_READY_POLL_MS = 150
233
233
 
234
+ export const PUBLIC_NO_NETWORK_MARKER = 'public RNX Cloud simulators have no network'
235
+ export const HEADLESS_TENANT_FETCH_HUNG_MARKER = 'headless tenant fetch hung'
236
+
234
237
  export function readyProbeHasContent(
235
238
  probe: Pick<SemanticReadyProbe, 'nodes' | 'targets'> &
236
239
  Partial<Pick<SemanticReadyProbe, 'liveFrameActive'>>,
@@ -49,7 +49,7 @@ import {
49
49
  isFetchProxyRequestUrl,
50
50
  } from './fetch-proxy-handler.ts'
51
51
  import { openUrl as openUrlInBrowser, type OpenUrlOptions } from './open-url.ts'
52
- import { PlaneHost } from './plane-host'
52
+ import { PlaneHost } from './plane-host.ts'
53
53
  import {
54
54
  handleReplacementModuleRequest,
55
55
  isReplacementModuleRequestUrl,
@@ -18,7 +18,7 @@
18
18
  import fs from 'node:fs'
19
19
  import path from 'node:path'
20
20
  import { dispatchPlaneCommand, indexVersion } from '@rnx/box/plane'
21
- import { CheckoutFilePlane } from '../../cli/commands/box/checkout-plane'
21
+ import { CheckoutFilePlane } from '../../cli/commands/box/checkout-plane.ts'
22
22
  import type { ProjectFilePlane } from '@rnx/box/plane'
23
23
  import type { WebSocket } from 'ws'
24
24
 
@@ -1,4 +1,4 @@
1
- import { isLoopbackHost } from './backend-origin'
1
+ import { isLoopbackHost } from './backend-origin.ts'
2
2
 
3
3
  // canonical entry path for a plain Metro packager that serves no Expo
4
4
  // manifest. only used when `/status` confirms `packager-status:running` and
@@ -511,7 +511,7 @@ export function workerBootChunkPlugin(closures: WorkerBootClosure[]): Plugin {
511
511
  },
512
512
  outputOptions(options) {
513
513
  if (!closure) return null
514
- return { ...options, inlineDynamicImports: true }
514
+ return { ...options, codeSplitting: false }
515
515
  },
516
516
  generateBundle(_options, bundle) {
517
517
  if (!closure) return