peachsim 0.1.570 → 0.1.572

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 (242) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +108 -108
  3. package/cli/app-config.ts +1 -1
  4. package/cli/app-fonts.ts +4 -4
  5. package/cli/auth.ts +11 -11
  6. package/cli/bin.ts +4 -4
  7. package/cli/bridge-flow-runner.ts +28 -20
  8. package/cli/browser-evals.ts +2 -2
  9. package/cli/cli-update.ts +6 -6
  10. package/cli/cloud-client.ts +16 -16
  11. package/cli/cloud-dispatch.ts +3 -2
  12. package/cli/cloud-session.ts +12 -12
  13. package/cli/cloud-test-result-files.ts +97 -0
  14. package/cli/cloud-test-tunnel.ts +4 -4
  15. package/cli/command-registry.ts +7 -7
  16. package/cli/commands/agent-wrapper.ts +7 -7
  17. package/cli/commands/agent.ts +16 -16
  18. package/cli/commands/app-fonts.ts +3 -3
  19. package/cli/commands/assert.ts +10 -10
  20. package/cli/commands/auth.ts +5 -5
  21. package/cli/commands/box/checkout-plane.ts +1 -1
  22. package/cli/commands/box/plane-share.ts +2 -2
  23. package/cli/commands/box/rnx-command.ts +5 -5
  24. package/cli/commands/box.ts +38 -38
  25. package/cli/commands/camera.ts +13 -13
  26. package/cli/commands/cleanup.ts +13 -13
  27. package/cli/commands/compat.ts +7 -7
  28. package/cli/commands/config.ts +5 -5
  29. package/cli/commands/control.ts +63 -63
  30. package/cli/commands/cpu-profile.ts +11 -11
  31. package/cli/commands/daemon-mac-app.ts +10 -10
  32. package/cli/commands/daemon.ts +29 -27
  33. package/cli/commands/debug.ts +35 -35
  34. package/cli/commands/desktop.ts +3 -3
  35. package/cli/commands/detox.ts +33 -33
  36. package/cli/commands/device.ts +9 -9
  37. package/cli/commands/diagnose.ts +17 -17
  38. package/cli/commands/do-chain.ts +4 -4
  39. package/cli/commands/electron.ts +9 -9
  40. package/cli/commands/film.ts +9 -9
  41. package/cli/commands/flow.ts +49 -49
  42. package/cli/commands/inspect/core.ts +12 -12
  43. package/cli/commands/inspect/count.ts +1 -1
  44. package/cli/commands/inspect/describe.ts +1 -1
  45. package/cli/commands/inspect/env.ts +2 -2
  46. package/cli/commands/inspect/find.ts +2 -2
  47. package/cli/commands/inspect/get-layout.ts +2 -2
  48. package/cli/commands/inspect/keyboard.ts +1 -1
  49. package/cli/commands/inspect/list.ts +4 -4
  50. package/cli/commands/inspect/memory.ts +1 -1
  51. package/cli/commands/inspect/resolve-target.ts +1 -1
  52. package/cli/commands/inspect/screens.ts +1 -1
  53. package/cli/commands/inspect/shared.ts +1 -1
  54. package/cli/commands/inspect/tree.ts +1 -1
  55. package/cli/commands/inspect/url.ts +1 -1
  56. package/cli/commands/inspect/wait-event.ts +5 -5
  57. package/cli/commands/inspect.ts +82 -82
  58. package/cli/commands/install-cli.ts +16 -16
  59. package/cli/commands/install-desktop.ts +26 -26
  60. package/cli/commands/login.ts +11 -11
  61. package/cli/commands/maestro-generate.ts +10 -10
  62. package/cli/commands/maestro.ts +173 -71
  63. package/cli/commands/mode.ts +4 -4
  64. package/cli/commands/no-bridge-hint.ts +12 -12
  65. package/cli/commands/perf.ts +11 -11
  66. package/cli/commands/permissions.ts +5 -5
  67. package/cli/commands/platform.ts +21 -21
  68. package/cli/commands/preview.ts +5 -5
  69. package/cli/commands/profile.ts +12 -12
  70. package/cli/commands/react.ts +15 -15
  71. package/cli/commands/record.ts +31 -31
  72. package/cli/commands/report-issue.ts +4 -4
  73. package/cli/commands/reset.ts +2 -2
  74. package/cli/commands/runtime.ts +23 -23
  75. package/cli/commands/screenshot-command.ts +2 -2
  76. package/cli/commands/screenshot-layers.ts +5 -5
  77. package/cli/commands/screenshot-mode.ts +7 -7
  78. package/cli/commands/screenshot.ts +24 -24
  79. package/cli/commands/screenshots-capture.ts +13 -13
  80. package/cli/commands/screenshots.ts +6 -6
  81. package/cli/commands/serve.ts +12 -12
  82. package/cli/commands/setup.ts +25 -25
  83. package/cli/commands/skills.ts +30 -23
  84. package/cli/commands/slides.ts +20 -20
  85. package/cli/commands/state.ts +2 -2
  86. package/cli/commands/storage.ts +3 -3
  87. package/cli/commands/telemetry.ts +2 -2
  88. package/cli/commands/test.ts +176 -18
  89. package/cli/commands/three-mode.ts +17 -17
  90. package/cli/commands/timeline.ts +12 -12
  91. package/cli/commands/upgrade.ts +11 -11
  92. package/cli/commands/upload.ts +26 -26
  93. package/cli/commands/version.ts +7 -7
  94. package/cli/commands/what-happened.ts +20 -20
  95. package/cli/current-sim.ts +3 -3
  96. package/cli/desktop-companion.ts +16 -16
  97. package/cli/drivers/electron.ts +4 -4
  98. package/cli/drivers/playwright-sim-host.ts +7 -7
  99. package/cli/drivers/playwright.ts +4 -4
  100. package/cli/drivers/registry.ts +1 -1
  101. package/cli/drivers/types.ts +5 -5
  102. package/cli/flow-export.ts +1 -1
  103. package/cli/flow-file.ts +5 -5
  104. package/cli/flow-session.ts +1 -1
  105. package/cli/help-core.ts +13 -13
  106. package/cli/hints.ts +14 -14
  107. package/cli/inspect-notice-state.ts +1 -1
  108. package/cli/internal-child.ts +2 -2
  109. package/cli/maestro-js.ts +4 -4
  110. package/cli/maestro-report.ts +4 -2
  111. package/cli/main.ts +14 -14
  112. package/cli/outbound-endpoints.ts +32 -30
  113. package/cli/parse-args.ts +7 -7
  114. package/cli/privacy.ts +1 -1
  115. package/cli/recording-access.ts +10 -10
  116. package/cli/resolve-assets.ts +2 -2
  117. package/cli/rnx-in-process.ts +5 -5
  118. package/cli/run-registry.ts +3 -2
  119. package/cli/run-rnx-core.ts +3 -3
  120. package/cli/run-rnx.ts +1 -1
  121. package/cli/runtime-notes.ts +1 -1
  122. package/cli/self-invocation.ts +1 -1
  123. package/cli/send-to-box.ts +1 -1
  124. package/cli/shell-init.ts +40 -40
  125. package/cli/ui.ts +1 -1
  126. package/cli/ws-bridge.ts +22 -22
  127. package/detox/config-loader.ts +1 -1
  128. package/detox/index.ts +28 -28
  129. package/detox/jest-preset.cjs +2 -2
  130. package/detox/navigation.ts +2 -2
  131. package/dist-lib/agent-daemon-client.cjs +12 -12
  132. package/dist-lib/agent-events.cjs +1 -1
  133. package/dist-lib/agent-identity.cjs +2 -2
  134. package/dist-lib/agent-sessions.cjs +12 -12
  135. package/dist-lib/attached-projects.cjs +4 -4
  136. package/dist-lib/auth/shared-session.cjs +4 -4
  137. package/dist-lib/backend-origin.cjs +1 -1
  138. package/dist-lib/beta.cjs +1 -1
  139. package/dist-lib/beta.mjs +1 -1
  140. package/dist-lib/bridge-constants.cjs +4 -4
  141. package/dist-lib/bridge-contract-input.cjs +1 -1
  142. package/dist-lib/bridge-contract-input.mjs +1 -1
  143. package/dist-lib/bridge-contract.cjs +2 -2
  144. package/dist-lib/bridge-contract.mjs +2 -2
  145. package/dist-lib/capture-contract.cjs +1 -1
  146. package/dist-lib/capture-contract.mjs +1 -1
  147. package/dist-lib/cli-constants.cjs +1 -1
  148. package/dist-lib/cloud-contract.cjs +1 -1
  149. package/dist-lib/cloud-contract.mjs +1 -1
  150. package/dist-lib/cloud-test-args.cjs +116 -0
  151. package/dist-lib/cloud-test-args.mjs +86 -0
  152. package/dist-lib/cloud.cjs +42 -42
  153. package/dist-lib/cloud.mjs +42 -42
  154. package/dist-lib/config.cjs +2 -2
  155. package/dist-lib/detox/index.cjs +29 -29
  156. package/dist-lib/detox/jest-preset.cjs +2 -2
  157. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  158. package/dist-lib/home-paths.cjs +12 -12
  159. package/dist-lib/host/bridge-host.cjs +87 -77
  160. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  161. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  162. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  163. package/dist-lib/host/replacement-module-handler.cjs +6 -6
  164. package/dist-lib/host/websocket-proxy.cjs +1 -1
  165. package/dist-lib/index.cjs +63 -73
  166. package/dist-lib/jump-to-source-babel.cjs +1 -1
  167. package/dist-lib/jump-to-source-native.cjs +1 -1
  168. package/dist-lib/menu.cjs +5 -5
  169. package/dist-lib/menu.mjs +5 -5
  170. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  171. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  172. package/dist-lib/metro-production-bundle.cjs +1 -1
  173. package/dist-lib/metro-production-bundle.mjs +1 -1
  174. package/dist-lib/metro.cjs +15 -15
  175. package/dist-lib/profiles.cjs +4 -4
  176. package/dist-lib/public-brand.cjs +3 -3
  177. package/dist-lib/react-native-host-modules.cjs +1 -1
  178. package/dist-lib/react-native-host-modules.mjs +1 -1
  179. package/dist-lib/render-mode.cjs +1 -1
  180. package/dist-lib/scripts/dev-server-scanner.cjs +2 -1
  181. package/dist-lib/sdk.cjs +9 -9
  182. package/dist-lib/sdk.mjs +9 -9
  183. package/dist-lib/skills.cjs +534 -520
  184. package/dist-lib/swift-compile.cjs +372 -0
  185. package/dist-lib/swift-compile.mjs +339 -0
  186. package/dist-lib/swift-package.cjs +78 -0
  187. package/dist-lib/swift-package.mjs +52 -0
  188. package/dist-lib/swift-submit.cjs +1 -1
  189. package/dist-lib/swift-submit.mjs +1 -1
  190. package/dist-lib/swift.cjs +1 -1
  191. package/dist-lib/vite.cjs +479 -161
  192. package/package.json +22 -1
  193. package/scripts/dev-server-scanner.ts +4 -3
  194. package/skills/contrast/SKILL.md +75 -75
  195. package/skills/{rnx-debug → peach-debug}/SKILL.md +90 -90
  196. package/skills/{rnx-perf → peach-perf}/SKILL.md +13 -13
  197. package/skills/{rnx-setup → peach-setup}/SKILL.md +60 -60
  198. package/skills/{rnx-test → peach-test}/SKILL.md +47 -47
  199. package/skills/{rnx-visual → peach-visual}/SKILL.md +26 -26
  200. package/src/agent-daemon-client.ts +5 -5
  201. package/src/agent-events.ts +1 -1
  202. package/src/agent-identity.ts +1 -1
  203. package/src/agent-sessions.ts +13 -13
  204. package/src/attached-projects.ts +1 -1
  205. package/src/auth/shared-session.ts +1 -1
  206. package/src/bridge-constants.ts +3 -3
  207. package/src/bridge-contract-input.ts +1 -1
  208. package/src/bridge-contract.ts +3 -3
  209. package/src/cli-version.ts +6 -6
  210. package/src/cloud-test-args.ts +100 -0
  211. package/src/cloud.ts +40 -40
  212. package/src/config.ts +1 -1
  213. package/src/connect.ts +6 -6
  214. package/src/dev-server-open.ts +8 -8
  215. package/src/disk-cleanup.ts +3 -3
  216. package/src/home-paths.ts +26 -26
  217. package/src/host/agent-host.ts +3 -3
  218. package/src/host/bridge-host.ts +33 -33
  219. package/src/host/fetch-proxy-handler.ts +1 -1
  220. package/src/host/plane-host.ts +2 -2
  221. package/src/host/replacement-module-handler.ts +2 -2
  222. package/src/menu.ts +2 -2
  223. package/src/metro-plugin.ts +7 -7
  224. package/src/metro-production-bundle.ts +2 -2
  225. package/src/native-dev-bundle-url.ts +2 -2
  226. package/src/playwright-host-log.ts +1 -1
  227. package/src/public-brand.ts +2 -2
  228. package/src/react-native-host-modules.ts +1 -1
  229. package/src/rolldown-plugin-swift.ts +11 -10
  230. package/src/runtime-assets.ts +11 -11
  231. package/src/runtime-delivery.ts +6 -6
  232. package/src/screenshots/orchestrate.ts +1 -1
  233. package/src/screenshots/org-deck.ts +1 -1
  234. package/src/screenshots/schema.ts +2 -2
  235. package/src/sim-client.ts +1 -1
  236. package/src/skills/builtin/compat-check.ts +2 -2
  237. package/src/swift-compile.ts +359 -0
  238. package/src/swift-package.ts +69 -0
  239. package/src/swift-submit.ts +3 -2
  240. package/src/vite-plugin-one.ts +8 -8
  241. package/src/vite-plugin-swift.ts +106 -110
  242. package/src/vite-plugin.ts +6 -19
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.570 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.572 | (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;
@@ -48,7 +48,7 @@ var import_node_crypto = require("node:crypto");
48
48
  var import_node_fs = __toESM(require("node:fs"), 1);
49
49
  function tagRnxBundleForPlugin(bundleUrl, replacementOrigin, replacementToken, projectRoot, appName) {
50
50
  const absolute = /^[a-z][a-z\d+.-]*:\/\//i.test(bundleUrl);
51
- const url = new URL(bundleUrl, absolute ? void 0 : "http://rnx.local");
51
+ const url = new URL(bundleUrl, absolute ? void 0 : "http://peach.local");
52
52
  if (appName) {
53
53
  url.searchParams.set("rnxAppName", appName);
54
54
  url.searchParams.set(
@@ -200,7 +200,7 @@ function unsupportedSpecifier(specifier) {
200
200
  );
201
201
  }
202
202
  function bridgeDeclaration(name, specifier) {
203
- const notReady = (what) => JSON.stringify(`[rnx] replacement ${what} bridge is not ready`);
203
+ const notReady = (what) => JSON.stringify(`[peach] replacement ${what} bridge is not ready`);
204
204
  if (specifier === "react") {
205
205
  return `const ${name} = ${REACT_BRIDGE}; if (!${name}) throw new Error(${notReady("React")});`;
206
206
  }
@@ -208,12 +208,12 @@ function bridgeDeclaration(name, specifier) {
208
208
  return `const ${name} = ${REACT_NATIVE_BRIDGE}; if (!${name}) throw new Error(${notReady("React Native")});`;
209
209
  }
210
210
  if (isContrastKitSpecifier(specifier)) {
211
- return `const ${name} = (globalThis.__contrast_kit_modules && globalThis.__contrast_kit_modules[${JSON.stringify(specifier)}]) || (${PACKAGE_BRIDGES} || {})[${JSON.stringify(specifier)}]; if (!${name}) throw new Error(${JSON.stringify(`[rnx] replacement package bridge ${specifier} is not ready`)});`;
211
+ return `const ${name} = (globalThis.__contrast_kit_modules && globalThis.__contrast_kit_modules[${JSON.stringify(specifier)}]) || (${PACKAGE_BRIDGES} || {})[${JSON.stringify(specifier)}]; if (!${name}) throw new Error(${JSON.stringify(`[peach] replacement package bridge ${specifier} is not ready`)});`;
212
212
  }
213
213
  if (JSX_RUNTIME_SPECIFIERS.has(specifier)) {
214
214
  return `const ${name} = (() => { const react = ${REACT_BRIDGE}; if (!react) throw new Error(${notReady("React")}); const jsx = (type, props, key) => react.createElement(type, key === undefined ? props : { ...props, key }); return { Fragment: react.Fragment, jsx, jsxs: jsx, jsxDEV: jsx }; })();`;
215
215
  }
216
- return `const ${name} = (${PACKAGE_BRIDGES} || {})[${JSON.stringify(specifier)}]; if (!${name}) throw new Error(${JSON.stringify(`[rnx] replacement package bridge ${specifier} is not ready`)});`;
216
+ return `const ${name} = (${PACKAGE_BRIDGES} || {})[${JSON.stringify(specifier)}]; if (!${name}) throw new Error(${JSON.stringify(`[peach] replacement package bridge ${specifier} is not ready`)});`;
217
217
  }
218
218
  var DEFAULT_INTEROP = "__rnxReplacementDefault";
219
219
  var DEFAULT_INTEROP_DECLARATION = `const ${DEFAULT_INTEROP} = (bridge) => (bridge && bridge.__esModule ? bridge.default : bridge);`;
@@ -382,7 +382,7 @@ function sendJavaScript(req, res, source) {
382
382
  function isReplacementModuleRequestUrl(rawUrl) {
383
383
  if (!rawUrl) return false;
384
384
  try {
385
- const pathname = new URL(rawUrl, "http://rnx.local").pathname;
385
+ const pathname = new URL(rawUrl, "http://peach.local").pathname;
386
386
  return pathname === REPLACEMENT_MODULE_ROUTE;
387
387
  } catch {
388
388
  return false;
@@ -392,7 +392,7 @@ async function handleReplacementModuleRequest(req, res, options = {}) {
392
392
  const rawUrl = req.url || "";
393
393
  let url;
394
394
  try {
395
- url = new URL(rawUrl, "http://rnx.local");
395
+ url = new URL(rawUrl, "http://peach.local");
396
396
  } catch {
397
397
  return false;
398
398
  }
@@ -542,12 +542,12 @@ function isValidRuntimeVersion(value) {
542
542
  var import_node_fs2 = __toESM(require("node:fs"), 1);
543
543
  var import_node_os = require("node:os");
544
544
  var import_node_path2 = __toESM(require("node:path"), 1);
545
- var RNX_HOME_ENV = "RNX_HOME";
545
+ var PEACH_HOME_ENV = "PEACH_HOME";
546
546
  var ACTIVE_RUNTIME_FILE = "active";
547
547
  function rnxHomeDir() {
548
- const override = process.env[RNX_HOME_ENV];
548
+ const override = process.env[PEACH_HOME_ENV];
549
549
  if (override && override.length > 0) return import_node_path2.default.resolve(override);
550
- return import_node_path2.default.join((0, import_node_os.homedir)(), ".rnx");
550
+ return import_node_path2.default.join((0, import_node_os.homedir)(), ".peach");
551
551
  }
552
552
  function runtimesDir() {
553
553
  return import_node_path2.default.join(rnxHomeDir(), "runtimes");
@@ -569,7 +569,7 @@ function readActiveRuntime() {
569
569
  var DAEMON_LOCKFILE_MAX_BYTES = 16 * 1024;
570
570
 
571
571
  // src/runtime-assets.ts
572
- var SOOTSIM_RUNTIME_MISSING_MESSAGE = "[rnx] no engine runtime installed. run `rnx runtime install`";
572
+ var SOOTSIM_RUNTIME_MISSING_MESSAGE = "[peach] no engine runtime installed. run `peach runtime install`";
573
573
  var _monorepoRootCache;
574
574
  function findMonorepoRoot() {
575
575
  if (_monorepoRootCache !== void 0) return _monorepoRootCache;
@@ -585,7 +585,7 @@ function findMonorepoRoot() {
585
585
  return null;
586
586
  }
587
587
  function resolveDevCheckoutRuntimeRoot() {
588
- if (process.env.RNX_HOME && readActiveRuntime()) return null;
588
+ if (process.env.PEACH_HOME && readActiveRuntime()) return null;
589
589
  const root = findMonorepoRoot();
590
590
  if (!root) return null;
591
591
  const devBuild = import_path.default.join(root, "public/sootsim");
@@ -815,7 +815,7 @@ function withRNX(config) {
815
815
  try {
816
816
  connect = require("connect");
817
817
  } catch {
818
- console.warn("[rnx] connect not available");
818
+ console.warn("[peach] connect not available");
819
819
  return middleware;
820
820
  }
821
821
  const server = connect();
@@ -874,7 +874,7 @@ function withRNX(config) {
874
874
  next();
875
875
  });
876
876
  server.use(middleware);
877
- console.log(`[rnx] serving at ${prefix}/`);
877
+ console.log(`[peach] serving at ${prefix}/`);
878
878
  return server;
879
879
  }
880
880
  };
@@ -891,7 +891,7 @@ function resolveMetroPort(server) {
891
891
  const rawPort = inlinePort || splitPort || process.env.RCT_METRO_PORT || server?.port || 8081;
892
892
  const port = Number(rawPort);
893
893
  if (!Number.isInteger(port) || port <= 0) {
894
- throw new Error(`rnx: Metro port must be a positive integer, got ${rawPort}`);
894
+ throw new Error(`peach: Metro port must be a positive integer, got ${rawPort}`);
895
895
  }
896
896
  return port;
897
897
  }
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.570 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.572 | (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;
@@ -55,11 +55,11 @@ var import_path = __toESM(require("path"), 1);
55
55
  var import_node_fs = __toESM(require("node:fs"), 1);
56
56
  var import_node_os = require("node:os");
57
57
  var import_node_path = __toESM(require("node:path"), 1);
58
- var RNX_HOME_ENV = "RNX_HOME";
58
+ var PEACH_HOME_ENV = "PEACH_HOME";
59
59
  function rnxHomeDir() {
60
- const override = process.env[RNX_HOME_ENV];
60
+ const override = process.env[PEACH_HOME_ENV];
61
61
  if (override && override.length > 0) return import_node_path.default.resolve(override);
62
- return import_node_path.default.join((0, import_node_os.homedir)(), ".rnx");
62
+ return import_node_path.default.join((0, import_node_os.homedir)(), ".peach");
63
63
  }
64
64
  function runtimesDir() {
65
65
  return import_node_path.default.join(rnxHomeDir(), "runtimes");
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.570 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.572 | (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;
@@ -25,11 +25,11 @@ __export(public_brand_exports, {
25
25
  rnxPublicBrand: () => rnxPublicBrand
26
26
  });
27
27
  module.exports = __toCommonJS(public_brand_exports);
28
- var name = "rnx";
28
+ var name = "Peach";
29
29
  var rnxPublicBrand = Object.freeze({
30
30
  name,
31
31
  packageName: "peachsim",
32
- commandName: "rnx",
32
+ commandName: "peach",
33
33
  domain: "rnxsim.com",
34
34
  origin: "https://rnxsim.com"
35
35
  });
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.570 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.572 | (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.570 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.572 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
 
3
3
  // src/react-native-host-modules.ts
4
4
  var REACT_NATIVE_PASSTHROUGH_SPECIFIERS = [
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.570 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.572 | (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.570 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.572 | (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;
@@ -1100,6 +1100,7 @@ async function probePort(port, buildIconProxyUrl, listeningProcess) {
1100
1100
  function isSootSimSelfServer(server) {
1101
1101
  const bundleId = server.bundleId?.trim().toLowerCase();
1102
1102
  if (bundleId?.startsWith("dev.sootsim.")) return true;
1103
+ if (bundleId?.startsWith("dev.peachsim.")) return true;
1103
1104
  return false;
1104
1105
  }
1105
1106
  var __isSootSimSelfServerForTests = isSootSimSelfServer;
package/dist-lib/sdk.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.570 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.572 | (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;
@@ -101,7 +101,7 @@ module.exports = __toCommonJS(sdk_exports);
101
101
 
102
102
  // src/bridge-contract.ts
103
103
  var SEMANTIC_READY_CONTENT_NODE_FLOOR = 100;
104
- var PUBLIC_NO_NETWORK_MARKER = "public RNX Cloud simulators have no network";
104
+ var PUBLIC_NO_NETWORK_MARKER = "public Peach Cloud simulators have no network";
105
105
  var HEADLESS_TENANT_FETCH_HUNG_MARKER = "headless tenant fetch hung";
106
106
  function readyProbeHasContent(probe) {
107
107
  return probe.liveFrameActive || probe.targets > 0 || probe.nodes >= SEMANTIC_READY_CONTENT_NODE_FLOOR;
@@ -500,7 +500,7 @@ function layoutGetNativeEval(opts = {}) {
500
500
 
501
501
  const screenshot = window.SootSim && window.SootSim.bridges && window.SootSim.bridges.screenshot
502
502
  if (typeof screenshot !== 'function') {
503
- throw new Error('styled native layout requires the rnx capture bridge')
503
+ throw new Error('styled native layout requires the peach capture bridge')
504
504
  }
505
505
  const device = list.find((node) => node && node.device)?.device || {}
506
506
  const width = Math.round(Number(device.width) || window.innerWidth || 0)
@@ -713,12 +713,12 @@ function scoreInteractive(n) {
713
713
  return score;
714
714
  }
715
715
  function tapCommandForNode(n) {
716
- if (n.testID) return `rnx do tap-id ${shellEscape(n.testID)}`;
716
+ if (n.testID) return `peach do tap-id ${shellEscape(n.testID)}`;
717
717
  const text = typeof n.text === "string" ? n.text.trim() : "";
718
- if (text.length > 0 && text.length <= 80) return `rnx do tap-text ${shellEscape(text)}`;
718
+ if (text.length > 0 && text.length <= 80) return `peach do tap-text ${shellEscape(text)}`;
719
719
  const x = Math.round(((n.absolutePosition?.x ?? 0) + (n.layout?.width ?? 0) / 2) * 10) / 10;
720
720
  const y = Math.round(((n.absolutePosition?.y ?? 0) + (n.layout?.height ?? 0) / 2) * 10) / 10;
721
- return `rnx do tap ${x} ${y}`;
721
+ return `peach do tap ${x} ${y}`;
722
722
  }
723
723
  function shellEscape(value) {
724
724
  if (/^[A-Za-z0-9_./@:-]+$/.test(value)) return value;
@@ -729,7 +729,7 @@ function waitReadyReason(status) {
729
729
  if (status.bridgeError.includes(HEADLESS_TENANT_FETCH_HUNG_MARKER) || status.bridgeError.includes(PUBLIC_NO_NETWORK_MARKER)) {
730
730
  return status.bridgeError;
731
731
  }
732
- return `sim unreachable: ${status.bridgeError} \u2014 the target tab is closed or no sim is connected (check \`rnx list\`, reopen with \`rnx open\`)`;
732
+ return `sim unreachable: ${status.bridgeError} \u2014 the target tab is closed or no sim is connected (check \`peach list\`, reopen with \`peach open\`)`;
733
733
  }
734
734
  const waitingOnGuestFetch = status.externalReady === false && /https?:\/\//.test(status.externalStatus);
735
735
  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";
@@ -931,7 +931,7 @@ async function inspectLogs(bridge) {
931
931
  return [
932
932
  {
933
933
  id: `cloud-${ts}-${index}`,
934
- source: "rnx-cloud",
934
+ source: "peach-cloud",
935
935
  level,
936
936
  ts,
937
937
  args: [text],
@@ -980,7 +980,7 @@ function filterLogEntries(entries, opts = {}) {
980
980
  if (!opts.showInternal) {
981
981
  out = out.filter((e) => {
982
982
  const first = e.args[0];
983
- return !(typeof first === "string" && /^\[(?:rnx|sootsim)(?:\s[^\]]*)?\]/.test(first));
983
+ return !(typeof first === "string" && /^\[(?:peach|sootsim)(?:\s[^\]]*)?\]/.test(first));
984
984
  });
985
985
  }
986
986
  if (opts.level) out = out.filter((e) => opts.level.has(e.level));
package/dist-lib/sdk.mjs CHANGED
@@ -1,11 +1,11 @@
1
- /*! rnx v0.1.570 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.572 | (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);
5
5
 
6
6
  // src/bridge-contract.ts
7
7
  var SEMANTIC_READY_CONTENT_NODE_FLOOR = 100;
8
- var PUBLIC_NO_NETWORK_MARKER = "public RNX Cloud simulators have no network";
8
+ var PUBLIC_NO_NETWORK_MARKER = "public Peach Cloud simulators have no network";
9
9
  var HEADLESS_TENANT_FETCH_HUNG_MARKER = "headless tenant fetch hung";
10
10
  function readyProbeHasContent(probe) {
11
11
  return probe.liveFrameActive || probe.targets > 0 || probe.nodes >= SEMANTIC_READY_CONTENT_NODE_FLOOR;
@@ -404,7 +404,7 @@ function layoutGetNativeEval(opts = {}) {
404
404
 
405
405
  const screenshot = window.SootSim && window.SootSim.bridges && window.SootSim.bridges.screenshot
406
406
  if (typeof screenshot !== 'function') {
407
- throw new Error('styled native layout requires the rnx capture bridge')
407
+ throw new Error('styled native layout requires the peach capture bridge')
408
408
  }
409
409
  const device = list.find((node) => node && node.device)?.device || {}
410
410
  const width = Math.round(Number(device.width) || window.innerWidth || 0)
@@ -617,12 +617,12 @@ function scoreInteractive(n) {
617
617
  return score;
618
618
  }
619
619
  function tapCommandForNode(n) {
620
- if (n.testID) return `rnx do tap-id ${shellEscape(n.testID)}`;
620
+ if (n.testID) return `peach do tap-id ${shellEscape(n.testID)}`;
621
621
  const text = typeof n.text === "string" ? n.text.trim() : "";
622
- if (text.length > 0 && text.length <= 80) return `rnx do tap-text ${shellEscape(text)}`;
622
+ if (text.length > 0 && text.length <= 80) return `peach do tap-text ${shellEscape(text)}`;
623
623
  const x = Math.round(((n.absolutePosition?.x ?? 0) + (n.layout?.width ?? 0) / 2) * 10) / 10;
624
624
  const y = Math.round(((n.absolutePosition?.y ?? 0) + (n.layout?.height ?? 0) / 2) * 10) / 10;
625
- return `rnx do tap ${x} ${y}`;
625
+ return `peach do tap ${x} ${y}`;
626
626
  }
627
627
  function shellEscape(value) {
628
628
  if (/^[A-Za-z0-9_./@:-]+$/.test(value)) return value;
@@ -633,7 +633,7 @@ function waitReadyReason(status) {
633
633
  if (status.bridgeError.includes(HEADLESS_TENANT_FETCH_HUNG_MARKER) || status.bridgeError.includes(PUBLIC_NO_NETWORK_MARKER)) {
634
634
  return status.bridgeError;
635
635
  }
636
- return `sim unreachable: ${status.bridgeError} \u2014 the target tab is closed or no sim is connected (check \`rnx list\`, reopen with \`rnx open\`)`;
636
+ return `sim unreachable: ${status.bridgeError} \u2014 the target tab is closed or no sim is connected (check \`peach list\`, reopen with \`peach open\`)`;
637
637
  }
638
638
  const waitingOnGuestFetch = status.externalReady === false && /https?:\/\//.test(status.externalStatus);
639
639
  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";
@@ -835,7 +835,7 @@ async function inspectLogs(bridge) {
835
835
  return [
836
836
  {
837
837
  id: `cloud-${ts}-${index}`,
838
- source: "rnx-cloud",
838
+ source: "peach-cloud",
839
839
  level,
840
840
  ts,
841
841
  args: [text],
@@ -884,7 +884,7 @@ function filterLogEntries(entries, opts = {}) {
884
884
  if (!opts.showInternal) {
885
885
  out = out.filter((e) => {
886
886
  const first = e.args[0];
887
- return !(typeof first === "string" && /^\[(?:rnx|sootsim)(?:\s[^\]]*)?\]/.test(first));
887
+ return !(typeof first === "string" && /^\[(?:peach|sootsim)(?:\s[^\]]*)?\]/.test(first));
888
888
  });
889
889
  }
890
890
  if (opts.level) out = out.filter((e) => opts.level.has(e.level));