peachsim 0.1.655 → 0.1.657

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 (75) hide show
  1. package/README.md +1 -1
  2. package/cli/app-config.ts +9 -6
  3. package/cli/app-project.ts +6 -6
  4. package/cli/commands/control.ts +20 -20
  5. package/cli/commands/flow.ts +3 -3
  6. package/detox/config-loader.ts +1 -1
  7. package/dist-lib/agent-daemon-client.cjs +1 -1
  8. package/dist-lib/agent-events.cjs +1 -1
  9. package/dist-lib/agent-identity.cjs +1 -1
  10. package/dist-lib/agent-sessions.cjs +1 -1
  11. package/dist-lib/attached-projects.cjs +1 -1
  12. package/dist-lib/auth/shared-session.cjs +1 -1
  13. package/dist-lib/backend-origin.cjs +1 -1
  14. package/dist-lib/beta.cjs +1 -1
  15. package/dist-lib/beta.mjs +1 -1
  16. package/dist-lib/bridge-constants.cjs +1 -1
  17. package/dist-lib/bridge-contract-input.cjs +1 -1
  18. package/dist-lib/bridge-contract-input.mjs +1 -1
  19. package/dist-lib/bridge-contract.cjs +1 -1
  20. package/dist-lib/bridge-contract.mjs +1 -1
  21. package/dist-lib/capture-contract.cjs +1 -1
  22. package/dist-lib/capture-contract.mjs +1 -1
  23. package/dist-lib/cli-constants.cjs +1 -1
  24. package/dist-lib/cloud-contract.cjs +1 -1
  25. package/dist-lib/cloud-contract.mjs +1 -1
  26. package/dist-lib/cloud-test-args.cjs +1 -1
  27. package/dist-lib/cloud-test-args.mjs +1 -1
  28. package/dist-lib/cloud.cjs +1 -1
  29. package/dist-lib/cloud.mjs +1 -1
  30. package/dist-lib/config.cjs +25 -25
  31. package/dist-lib/detox/index.cjs +1 -1
  32. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  33. package/dist-lib/home-paths.cjs +1 -1
  34. package/dist-lib/host/bridge-host.cjs +14 -14
  35. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  36. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  37. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  38. package/dist-lib/host/replacement-module-handler.cjs +2 -2
  39. package/dist-lib/host/websocket-proxy.cjs +1 -1
  40. package/dist-lib/index.cjs +6 -13
  41. package/dist-lib/jump-to-source-babel.cjs +1 -1
  42. package/dist-lib/jump-to-source-native.cjs +1 -1
  43. package/dist-lib/kotlin-host.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 +2 -2
  51. package/dist-lib/native-app-identity.cjs +1 -1
  52. package/dist-lib/native-app-identity.mjs +1 -1
  53. package/dist-lib/profiles.cjs +1 -1
  54. package/dist-lib/public-brand.cjs +1 -1
  55. package/dist-lib/react-native-host-modules.cjs +1 -1
  56. package/dist-lib/react-native-host-modules.mjs +1 -1
  57. package/dist-lib/render-mode.cjs +1 -1
  58. package/dist-lib/scripts/dev-server-scanner.cjs +13 -15
  59. package/dist-lib/sdk.cjs +1 -1
  60. package/dist-lib/sdk.mjs +1 -1
  61. package/dist-lib/skills.cjs +144 -116
  62. package/dist-lib/swift-compile.cjs +1 -1
  63. package/dist-lib/swift-compile.mjs +1 -1
  64. package/dist-lib/swift-package.cjs +1 -1
  65. package/dist-lib/swift-package.mjs +1 -1
  66. package/dist-lib/swift-submit.cjs +1 -1
  67. package/dist-lib/swift-submit.mjs +1 -1
  68. package/dist-lib/swift.cjs +1 -1
  69. package/dist-lib/vite-swift.cjs +1 -1
  70. package/dist-lib/vite.cjs +6 -13
  71. package/package.json +1 -1
  72. package/scripts/dev-server-scanner.ts +3 -3
  73. package/scripts/optional-demo-registry.ts +1 -1
  74. package/src/config.ts +26 -26
  75. package/src/dev-server-open.ts +4 -11
package/README.md CHANGED
@@ -627,7 +627,7 @@ Per-repo configuration is optional. Every installed-runtime `peach open`
627
627
  serves its selected version from a version-specific localhost origin, so a
628
628
  background activation cannot mix an already loaded shell with chunks from the
629
629
  next runtime. Without config, each new open selects the active stable version.
630
- When `rnx.config.ts` sets `runtimeVersion`, `peach open` installs that
630
+ When `peach.config.ts` sets `runtimeVersion`, `peach open` installs that
631
631
  version without changing the machine default. App config, native-linked fonts,
632
632
  and splash assets all resolve from the project root advertised by the selected
633
633
  development server. Bare Metro, which has no Expo manifest project root, uses
package/cli/app-config.ts CHANGED
@@ -4,7 +4,7 @@ import { isValidRuntimeVersion } from '@contrast/runtime-delivery'
4
4
  import { createJiti } from 'jiti'
5
5
  import { rnxPublicBrand } from '../src/public-brand'
6
6
  import { resolveAppProject, type ResolvedAppProject } from './app-project'
7
- import type { RNXConfig } from '../src/config'
7
+ import type { PeachConfig } from '../src/config'
8
8
 
9
9
  const require = createRequire(import.meta.url)
10
10
 
@@ -15,7 +15,7 @@ function isOptionalRecord(value: unknown): boolean {
15
15
  )
16
16
  }
17
17
 
18
- function isRNXConfig(value: unknown): value is RNXConfig {
18
+ function isPeachConfig(value: unknown): value is PeachConfig {
19
19
  if (!value || typeof value !== 'object' || Array.isArray(value)) return false
20
20
  const runtimeVersion = Reflect.get(value, 'runtimeVersion')
21
21
  const network = Reflect.get(value, 'network')
@@ -34,7 +34,10 @@ function isRNXConfig(value: unknown): value is RNXConfig {
34
34
  )
35
35
  }
36
36
 
37
- function resolveConfigReplacementFiles(config: RNXConfig, configPath: string): RNXConfig {
37
+ function resolveConfigReplacementFiles(
38
+ config: PeachConfig,
39
+ configPath: string,
40
+ ): PeachConfig {
38
41
  if (!config.modules) return config
39
42
  const configDir = path.dirname(configPath)
40
43
  return {
@@ -52,7 +55,7 @@ function resolveConfigReplacementFiles(config: RNXConfig, configPath: string): R
52
55
 
53
56
  export async function loadRNXAppConfig(
54
57
  project: ResolvedAppProject | null,
55
- ): Promise<RNXConfig | undefined> {
58
+ ): Promise<PeachConfig | undefined> {
56
59
  if (!project?.configPath) return undefined
57
60
  try {
58
61
  const jiti = createJiti(import.meta.url, {
@@ -64,7 +67,7 @@ export async function loadRNXAppConfig(
64
67
  },
65
68
  })
66
69
  const loaded: unknown = await jiti.import(project.configPath, { default: true })
67
- if (!isRNXConfig(loaded)) {
70
+ if (!isPeachConfig(loaded)) {
68
71
  throw new Error('the default export must be a peach config object')
69
72
  }
70
73
  return resolveConfigReplacementFiles(loaded, project.configPath)
@@ -76,7 +79,7 @@ export async function loadRNXAppConfig(
76
79
 
77
80
  export async function resolveRNXAppConfig(
78
81
  startDir: string = process.cwd(),
79
- ): Promise<{ project: ResolvedAppProject | null; config: RNXConfig | undefined }> {
82
+ ): Promise<{ project: ResolvedAppProject | null; config: PeachConfig | undefined }> {
80
83
  const project = resolveAppProject(startDir)
81
84
  return { project, config: await loadRNXAppConfig(project) }
82
85
  }
@@ -9,11 +9,11 @@ export const EXPO_APP_CONFIG_NAMES = [
9
9
  'app.json',
10
10
  ] as const
11
11
 
12
- export const RNX_APP_CONFIG_NAMES = [
13
- 'rnx.config.ts',
14
- 'rnx.config.js',
15
- 'rnx.config.mjs',
16
- 'rnx.config.cjs',
12
+ export const PEACH_APP_CONFIG_NAMES = [
13
+ 'peach.config.ts',
14
+ 'peach.config.js',
15
+ 'peach.config.mjs',
16
+ 'peach.config.cjs',
17
17
  ] as const
18
18
 
19
19
  export interface ResolvedAppProject {
@@ -36,7 +36,7 @@ export function findExpoAppConfig(dir: string): string | null {
36
36
  }
37
37
 
38
38
  export function findRNXAppConfig(dir: string): string | null {
39
- return firstNamedFile(dir, RNX_APP_CONFIG_NAMES)
39
+ return firstNamedFile(dir, PEACH_APP_CONFIG_NAMES)
40
40
  }
41
41
 
42
42
  export function resolveAppProject(projectRoot: string): ResolvedAppProject | null {
@@ -15,10 +15,10 @@ import { isAppDeepLinkTarget, openAppUrl } from '../../src/app-url'
15
15
  import { isLoopbackHost } from '../../src/backend-origin'
16
16
  import { resolveSootsimShellBaseUrlForBridgePort } from '../../src/bridge-constants'
17
17
  import {
18
- applyRNXConfigToUrl,
19
- mergeRNXConfig,
20
- RNX_CONFIG_QUERY_PARAM,
21
- type RNXConfig,
18
+ applyPeachConfigToUrl,
19
+ mergePeachConfig,
20
+ PEACH_CONFIG_QUERY_PARAM,
21
+ type PeachConfig,
22
22
  } from '../../src/config'
23
23
  import {
24
24
  resolveConnectionInput,
@@ -97,7 +97,7 @@ import type { DriverId, DriverLaunchResult } from '../drivers/types'
97
97
  interface ControlCommandOptions {
98
98
  port?: number
99
99
  timeoutMs?: number
100
- runtimeConfig?: RNXConfig
100
+ runtimeConfig?: PeachConfig
101
101
  }
102
102
 
103
103
  export interface OpenCommandResources {
@@ -555,8 +555,8 @@ function normalizeReplacementPath(filePath: string): string {
555
555
  return path.resolve(process.cwd(), filePath)
556
556
  }
557
557
 
558
- function parseOpenRuntimeConfig(args: string[]): RNXConfig | undefined {
559
- const modules: NonNullable<RNXConfig['modules']> = {}
558
+ function parseOpenRuntimeConfig(args: string[]): PeachConfig | undefined {
559
+ const modules: NonNullable<PeachConfig['modules']> = {}
560
560
  const remap: Record<string, string> = {}
561
561
 
562
562
  for (let i = 0; i < args.length; i++) {
@@ -597,7 +597,7 @@ function parseOpenRuntimeConfig(args: string[]): RNXConfig | undefined {
597
597
  }
598
598
  }
599
599
 
600
- const config: RNXConfig = {}
600
+ const config: PeachConfig = {}
601
601
  if (Object.keys(modules).length > 0) config.modules = modules
602
602
  if (Object.keys(remap).length > 0) config.network = { remap }
603
603
  return config.modules || config.network ? config : undefined
@@ -737,9 +737,9 @@ async function resolveShellUrl(
737
737
  if (looksLikeSootsimUrl(target)) {
738
738
  const url = new URL(target)
739
739
  const base = new URL(baseUrl)
740
- const baseConfig = base.searchParams.get(RNX_CONFIG_QUERY_PARAM)
741
- if (baseConfig && !url.searchParams.has(RNX_CONFIG_QUERY_PARAM)) {
742
- url.searchParams.set(RNX_CONFIG_QUERY_PARAM, baseConfig)
740
+ const baseConfig = base.searchParams.get(PEACH_CONFIG_QUERY_PARAM)
741
+ if (baseConfig && !url.searchParams.has(PEACH_CONFIG_QUERY_PARAM)) {
742
+ url.searchParams.set(PEACH_CONFIG_QUERY_PARAM, baseConfig)
743
743
  }
744
744
  return url.toString()
745
745
  }
@@ -1281,16 +1281,16 @@ export function printOpenedSim(
1281
1281
  try {
1282
1282
  const parsed = new URL(value)
1283
1283
  let changed = false
1284
- if (parsed.searchParams.has(RNX_CONFIG_QUERY_PARAM)) {
1285
- parsed.searchParams.set(RNX_CONFIG_QUERY_PARAM, '[redacted]')
1284
+ if (parsed.searchParams.has(PEACH_CONFIG_QUERY_PARAM)) {
1285
+ parsed.searchParams.set(PEACH_CONFIG_QUERY_PARAM, '[redacted]')
1286
1286
  changed = true
1287
1287
  }
1288
1288
  const bundle = parsed.searchParams.get('bundle')
1289
1289
  if (bundle) {
1290
1290
  try {
1291
1291
  const parsedBundle = new URL(bundle)
1292
- if (parsedBundle.searchParams.has(RNX_CONFIG_QUERY_PARAM)) {
1293
- parsedBundle.searchParams.set(RNX_CONFIG_QUERY_PARAM, '[redacted]')
1292
+ if (parsedBundle.searchParams.has(PEACH_CONFIG_QUERY_PARAM)) {
1293
+ parsedBundle.searchParams.set(PEACH_CONFIG_QUERY_PARAM, '[redacted]')
1294
1294
  parsed.searchParams.set('bundle', parsedBundle.toString())
1295
1295
  changed = true
1296
1296
  }
@@ -1585,8 +1585,8 @@ export async function runOpenCommand(
1585
1585
  const project = await resolveAppProjectForBundleUrl(resolvedBundle?.bundleUrl)
1586
1586
  const appConfig = await loadRNXAppConfig(project)
1587
1587
  const configuredRuntimeVersion = appConfig?.runtimeVersion
1588
- const runtimeConfig = mergeRNXConfig(
1589
- mergeRNXConfig(
1588
+ const runtimeConfig = mergePeachConfig(
1589
+ mergePeachConfig(
1590
1590
  appConfig ? { ...appConfig, runtimeVersion: undefined } : undefined,
1591
1591
  opts.runtimeConfig,
1592
1592
  ),
@@ -1842,7 +1842,7 @@ export async function runOpenCommand(
1842
1842
  if (!targetSim && parsed.simIdSource !== 'flag') {
1843
1843
  targetShellUrl = await buildShellUrl(
1844
1844
  target,
1845
- applyRNXConfigToUrl(baseUrl, runtimeConfig),
1845
+ applyPeachConfigToUrl(baseUrl, runtimeConfig),
1846
1846
  buildShellUrlOpts,
1847
1847
  )
1848
1848
  const normalizedTarget = new URL(targetShellUrl)
@@ -1881,7 +1881,7 @@ export async function runOpenCommand(
1881
1881
  targetShellUrl ??
1882
1882
  (await buildShellUrl(
1883
1883
  target,
1884
- applyRNXConfigToUrl(resolvedBaseUrl, runtimeConfig),
1884
+ applyPeachConfigToUrl(resolvedBaseUrl, runtimeConfig),
1885
1885
  buildShellUrlOpts,
1886
1886
  ))
1887
1887
  const navigationUrl = new URL(navigatedShellUrl)
@@ -1968,7 +1968,7 @@ export async function runOpenCommand(
1968
1968
  }
1969
1969
  }
1970
1970
 
1971
- const configuredBaseUrl = applyRNXConfigToUrl(baseUrl, runtimeConfig)
1971
+ const configuredBaseUrl = applyPeachConfigToUrl(baseUrl, runtimeConfig)
1972
1972
  const openUrl = await buildOpenUrl(target, configuredBaseUrl, token, buildShellUrlOpts)
1973
1973
  const ownerPid = opts.ownerPid ?? getStableOwnerPid()
1974
1974
  if (!ownerPid) {
@@ -7,7 +7,7 @@ import { tmpdir } from 'os'
7
7
  import * as path from 'path'
8
8
  import { scanDevServers } from '../../scripts/dev-server-scanner'
9
9
  import { loadOptionalDemoApps } from '../../scripts/optional-demo-registry'
10
- import { applyRNXConfigToUrl, type RNXConfig } from '../../src/config'
10
+ import { applyPeachConfigToUrl, type PeachConfig } from '../../src/config'
11
11
  import { printBridgeFailureDiagnostics } from '../bridge-diagnostics'
12
12
  import {
13
13
  SootSimBridgeFlowRunner,
@@ -176,7 +176,7 @@ export function getLastFlowTraceSteps(): SootSimFlowTraceStep[] {
176
176
  // port and runtime config into the open command.
177
177
  export async function resolveAppFrontmatterTarget(
178
178
  raw: string,
179
- ): Promise<{ target: string; runtimeConfig?: RNXConfig }> {
179
+ ): Promise<{ target: string; runtimeConfig?: PeachConfig }> {
180
180
  if (!raw) return { target: '' }
181
181
  const trimmed = raw.trim()
182
182
  if (!trimmed) return { target: '' }
@@ -531,7 +531,7 @@ flow extension:
531
531
  }
532
532
 
533
533
  if (openTarget && targetDevice) {
534
- const shellBaseUrl = applyRNXConfigToUrl(
534
+ const shellBaseUrl = applyPeachConfigToUrl(
535
535
  pinnedShellBaseUrl || resolveShellBaseUrlForBridgePort(parsedBridgeArgs.wsPort),
536
536
  targetAppResolution.runtimeConfig,
537
537
  )
@@ -121,7 +121,7 @@ export function mapDetoxDevice(config: DetoxConfig | null): string {
121
121
  }
122
122
 
123
123
  // generate a sootsim-compatible config from detox config
124
- export function toRNXConfig(
124
+ export function toPeachConfig(
125
125
  projectDir: string,
126
126
  config: DetoxConfig | null,
127
127
  ): SootSimDetoxConfig {
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/beta.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/beta.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/beta.ts
4
4
  var IS_BETA = true;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/bridge-contract.ts
4
4
  var SIM_LONG_PRESS_MAX_MS = 5e3;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/bridge-contract.ts
4
4
  var REFUSED_PERFORM_STEP_TYPES = [
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/capture-contract.ts
4
4
  var RNX_SCREEN_CAPTURE_VERSION = 1;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/cloud-contract.ts
4
4
  var RNX_CLOUD_MAX_ARTIFACT_BYTES = 20 * 1024 * 1024;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/cloud-test-args.ts
4
4
  var CLOUD_TEST_ARGS_MAX_COUNT = 32;
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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;
@@ -22,29 +22,29 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
22
22
  // src/config.ts
23
23
  var config_exports = {};
24
24
  __export(config_exports, {
25
- RNX_CONFIG_QUERY_PARAM: () => RNX_CONFIG_QUERY_PARAM,
26
- applyRNXConfigToUrl: () => applyRNXConfigToUrl,
25
+ PEACH_CONFIG_QUERY_PARAM: () => PEACH_CONFIG_QUERY_PARAM,
26
+ applyPeachConfigToUrl: () => applyPeachConfigToUrl,
27
27
  defineConfig: () => defineConfig,
28
- hasRNXConfig: () => hasRNXConfig,
29
- mergeRNXConfig: () => mergeRNXConfig,
30
- readRNXConfigFromSearchParams: () => readRNXConfigFromSearchParams
28
+ hasPeachConfig: () => hasPeachConfig,
29
+ mergePeachConfig: () => mergePeachConfig,
30
+ readPeachConfigFromSearchParams: () => readPeachConfigFromSearchParams
31
31
  });
32
32
  module.exports = __toCommonJS(config_exports);
33
- var RNX_CONFIG_QUERY_PARAM = "rnxConfig";
33
+ var PEACH_CONFIG_QUERY_PARAM = "peachConfig";
34
34
  function defineConfig(config) {
35
35
  return config;
36
36
  }
37
37
  function hasOwnKeys(value) {
38
38
  return !!value && Object.keys(value).length > 0;
39
39
  }
40
- function hasRNXConfig(config) {
40
+ function hasPeachConfig(config) {
41
41
  if (!config) return false;
42
42
  return typeof config.runtimeVersion === "string" && config.runtimeVersion.length > 0 || hasOwnKeys(config.modules) || hasOwnKeys(config.turboModules) || hasOwnKeys(config.nativeModules) || hasOwnKeys(config.env) || hasOwnKeys(config.network?.remap) || hasOwnKeys(config.settings) || hasOwnKeys(config.initialState);
43
43
  }
44
- function mergeRNXConfig(base, override) {
45
- if (!hasRNXConfig(base) && !hasRNXConfig(override)) return void 0;
46
- if (!hasRNXConfig(base)) return override ? { ...override } : void 0;
47
- if (!hasRNXConfig(override)) return base ? { ...base } : void 0;
44
+ function mergePeachConfig(base, override) {
45
+ if (!hasPeachConfig(base) && !hasPeachConfig(override)) return void 0;
46
+ if (!hasPeachConfig(base)) return override ? { ...override } : void 0;
47
+ if (!hasPeachConfig(override)) return base ? { ...base } : void 0;
48
48
  return {
49
49
  runtimeVersion: override.runtimeVersion ?? base.runtimeVersion,
50
50
  modules: { ...base.modules || {}, ...override.modules || {} },
@@ -64,33 +64,33 @@ function mergeRNXConfig(base, override) {
64
64
  initialState: { ...base.initialState || {}, ...override.initialState || {} }
65
65
  };
66
66
  }
67
- function readRNXConfigFromSearchParams(searchParams) {
68
- const raw = searchParams.get(RNX_CONFIG_QUERY_PARAM);
67
+ function readPeachConfigFromSearchParams(searchParams) {
68
+ const raw = searchParams.get(PEACH_CONFIG_QUERY_PARAM);
69
69
  if (!raw) return void 0;
70
70
  try {
71
71
  const parsed = JSON.parse(raw);
72
- return hasRNXConfig(parsed) ? parsed : void 0;
72
+ return hasPeachConfig(parsed) ? parsed : void 0;
73
73
  } catch (error) {
74
74
  const message = error instanceof Error ? error.message : String(error);
75
- console.warn(`[peach] invalid ${RNX_CONFIG_QUERY_PARAM}: ${message}`);
75
+ console.warn(`[peach] invalid ${PEACH_CONFIG_QUERY_PARAM}: ${message}`);
76
76
  return void 0;
77
77
  }
78
78
  }
79
- function applyRNXConfigToUrl(url, config) {
79
+ function applyPeachConfigToUrl(url, config) {
80
80
  const parsed = new URL(url);
81
- if (hasRNXConfig(config)) {
82
- parsed.searchParams.set(RNX_CONFIG_QUERY_PARAM, JSON.stringify(config));
81
+ if (hasPeachConfig(config)) {
82
+ parsed.searchParams.set(PEACH_CONFIG_QUERY_PARAM, JSON.stringify(config));
83
83
  } else {
84
- parsed.searchParams.delete(RNX_CONFIG_QUERY_PARAM);
84
+ parsed.searchParams.delete(PEACH_CONFIG_QUERY_PARAM);
85
85
  }
86
86
  return parsed.toString();
87
87
  }
88
88
  // Annotate the CommonJS export names for ESM import in node:
89
89
  0 && (module.exports = {
90
- RNX_CONFIG_QUERY_PARAM,
91
- applyRNXConfigToUrl,
90
+ PEACH_CONFIG_QUERY_PARAM,
91
+ applyPeachConfigToUrl,
92
92
  defineConfig,
93
- hasRNXConfig,
94
- mergeRNXConfig,
95
- readRNXConfigFromSearchParams
93
+ hasPeachConfig,
94
+ mergePeachConfig,
95
+ readPeachConfigFromSearchParams
96
96
  });
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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;
@@ -4687,6 +4687,11 @@ var import_ws = require("ws");
4687
4687
 
4688
4688
  // scripts/dev-server-scanner.ts
4689
4689
  var import_child_process = require("child_process");
4690
+ var import_promises2 = require("fs/promises");
4691
+ var import_http = __toESM(require("http"), 1);
4692
+ var import_net = __toESM(require("net"), 1);
4693
+ var import_node_fs2 = require("node:fs");
4694
+ var import_node_path3 = require("node:path");
4690
4695
 
4691
4696
  // ../contrast/src/runtime/process-group.ts
4692
4697
  var import_node_child_process = require("node:child_process");
@@ -4842,28 +4847,23 @@ async function terminateProcessGroup(child, signal = "SIGTERM", gracefulTimeoutM
4842
4847
  }
4843
4848
 
4844
4849
  // scripts/dev-server-scanner.ts
4845
- var import_promises2 = require("fs/promises");
4846
- var import_http = __toESM(require("http"), 1);
4847
- var import_net = __toESM(require("net"), 1);
4848
- var import_node_fs2 = require("node:fs");
4849
- var import_node_path3 = require("node:path");
4850
4850
  init_backend_origin();
4851
4851
 
4852
4852
  // src/config.ts
4853
- var RNX_CONFIG_QUERY_PARAM = "rnxConfig";
4853
+ var PEACH_CONFIG_QUERY_PARAM = "peachConfig";
4854
4854
  function hasOwnKeys(value) {
4855
4855
  return !!value && Object.keys(value).length > 0;
4856
4856
  }
4857
- function hasRNXConfig(config) {
4857
+ function hasPeachConfig(config) {
4858
4858
  if (!config) return false;
4859
4859
  return typeof config.runtimeVersion === "string" && config.runtimeVersion.length > 0 || hasOwnKeys(config.modules) || hasOwnKeys(config.turboModules) || hasOwnKeys(config.nativeModules) || hasOwnKeys(config.env) || hasOwnKeys(config.network?.remap) || hasOwnKeys(config.settings) || hasOwnKeys(config.initialState);
4860
4860
  }
4861
- function applyRNXConfigToUrl(url, config) {
4861
+ function applyPeachConfigToUrl(url, config) {
4862
4862
  const parsed = new URL(url);
4863
- if (hasRNXConfig(config)) {
4864
- parsed.searchParams.set(RNX_CONFIG_QUERY_PARAM, JSON.stringify(config));
4863
+ if (hasPeachConfig(config)) {
4864
+ parsed.searchParams.set(PEACH_CONFIG_QUERY_PARAM, JSON.stringify(config));
4865
4865
  } else {
4866
- parsed.searchParams.delete(RNX_CONFIG_QUERY_PARAM);
4866
+ parsed.searchParams.delete(PEACH_CONFIG_QUERY_PARAM);
4867
4867
  }
4868
4868
  return parsed.toString();
4869
4869
  }
@@ -5571,7 +5571,7 @@ function withRuntimeConfig(port, bundleUrl, projectCwd) {
5571
5571
  }) : [];
5572
5572
  const exactKnownApps = knownApps.filter((app) => app.preferredPort === port);
5573
5573
  const knownApp = exactKnownApps.length === 1 ? exactKnownApps[0] : exactKnownApps.length === 0 && knownApps.length === 1 ? knownApps[0] : void 0;
5574
- const configured = knownApp?.runtimeConfig ? applyRNXConfigToUrl(bundleUrl, knownApp.runtimeConfig) : bundleUrl;
5574
+ const configured = knownApp?.runtimeConfig ? applyPeachConfigToUrl(bundleUrl, knownApp.runtimeConfig) : bundleUrl;
5575
5575
  return normalizeNativeDevBundleUrl(configured);
5576
5576
  }
5577
5577
  function isDirectOneBundleUrl(bundleUrl) {
@@ -8840,7 +8840,7 @@ function isContrastKitSpecifier(specifier) {
8840
8840
  }
8841
8841
  function unsupportedSpecifier(specifier) {
8842
8842
  return new Error(
8843
- `replacement modules may only import react, react-native, contrast-kit, and the packages rnx stubs for this app; '${specifier}' is none of those. vendor the code into the replacement file, or add the package to rnx.config so the simulator bridges it.`
8843
+ `replacement modules may only import react, react-native, contrast-kit, and the packages rnx stubs for this app; '${specifier}' is none of those. vendor the code into the replacement file, or add the package to peach.config so the simulator bridges it.`
8844
8844
  );
8845
8845
  }
8846
8846
  function bridgeDeclaration(name2, specifier) {
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (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
- /*! rnx v0.1.655 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.657 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/host/fetch-proxy-overrides.ts
4
4
  var FETCH_PROXY_BROWSER_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";