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
- // transport-agnostic rnx inspect-verb kernels.
1
+ // transport-agnostic peach inspect-verb kernels.
2
2
  //
3
3
  // each function here sends the smallest bridge command its verb needs and
4
4
  // returns *structured data* — no arg parsing or stdout. the
@@ -54,7 +54,7 @@ export function resolveMaxMsFlag(args: string[], fallbackMs: number): number {
54
54
  }
55
55
 
56
56
  // the minimal bridge an inspect kernel needs: a JSON command channel into a
57
- // rnx instance.
57
+ // peach instance.
58
58
  export interface InspectBridge {
59
59
  readonly plane?: 'local' | 'cloud'
60
60
  send(cmd: WsBridgeCommand, opts?: { timeoutMs?: number }): Promise<any>
@@ -289,7 +289,7 @@ export async function inspectDescribe(
289
289
  // fields with `styling:true` / `--styling`.
290
290
  //
291
291
  // the SAME LayoutElement shape is produced by both preview surfaces:
292
- // - native/rnx — `LAYOUT_GET_NATIVE_EVAL` reads the engine node tree via
292
+ // - native/peach — `LAYOUT_GET_NATIVE_EVAL` reads the engine node tree via
293
293
  // __sootsimTest.listInspectable() (the source `describe` uses), where each
294
294
  // SootSimInspectInfo already carries absolute layout and optional style /
295
295
  // box-model data.
@@ -662,7 +662,7 @@ export function layoutGetNativeEval(opts: LayoutExtractionOptions = {}): string
662
662
 
663
663
  const screenshot = window.SootSim && window.SootSim.bridges && window.SootSim.bridges.screenshot
664
664
  if (typeof screenshot !== 'function') {
665
- throw new Error('styled native layout requires the rnx capture bridge')
665
+ throw new Error('styled native layout requires the peach capture bridge')
666
666
  }
667
667
  const device = list.find((node) => node && node.device)?.device || {}
668
668
  const width = Math.round(Number(device.width) || window.innerWidth || 0)
@@ -707,7 +707,7 @@ export function layoutGetNativeEval(opts: LayoutExtractionOptions = {}): string
707
707
  export const LAYOUT_GET_NATIVE_EVAL = layoutGetNativeEval()
708
708
 
709
709
  // `get-layout` (native) — bounding boxes for visible meaningful elements on the
710
- // rnx/native preview. transport-agnostic: the CLI runs it over its WS
710
+ // peach/native preview. transport-agnostic: the CLI runs it over its WS
711
711
  // bridge, the agent runs it over its in-process preview bridge.
712
712
  export async function inspectGetLayout(
713
713
  bridge: InspectBridge,
@@ -981,16 +981,16 @@ export function scoreInteractive(n: InteractiveNode): number {
981
981
  return score
982
982
  }
983
983
 
984
- // the copy-paste `rnx do` tap command for an interactive node.
984
+ // the copy-paste `peach do` tap command for an interactive node.
985
985
  export function tapCommandForNode(n: InteractiveNode): string {
986
- if (n.testID) return `rnx do tap-id ${shellEscape(n.testID)}`
986
+ if (n.testID) return `peach do tap-id ${shellEscape(n.testID)}`
987
987
  const text = typeof n.text === 'string' ? n.text.trim() : ''
988
- if (text.length > 0 && text.length <= 80) return `rnx do tap-text ${shellEscape(text)}`
988
+ if (text.length > 0 && text.length <= 80) return `peach do tap-text ${shellEscape(text)}`
989
989
  const x =
990
990
  Math.round(((n.absolutePosition?.x ?? 0) + (n.layout?.width ?? 0) / 2) * 10) / 10
991
991
  const y =
992
992
  Math.round(((n.absolutePosition?.y ?? 0) + (n.layout?.height ?? 0) / 2) * 10) / 10
993
- return `rnx do tap ${x} ${y}`
993
+ return `peach do tap ${x} ${y}`
994
994
  }
995
995
 
996
996
  function shellEscape(value: string): string {
@@ -1045,7 +1045,7 @@ export function waitReadyReason(
1045
1045
  ) {
1046
1046
  return status.bridgeError
1047
1047
  }
1048
- return `sim unreachable: ${status.bridgeError} — the target tab is closed or no sim is connected (check \`rnx list\`, reopen with \`rnx open\`)`
1048
+ return `sim unreachable: ${status.bridgeError} — the target tab is closed or no sim is connected (check \`peach list\`, reopen with \`peach open\`)`
1049
1049
  }
1050
1050
  const waitingOnGuestFetch =
1051
1051
  status.externalReady === false && /https?:\/\//.test(status.externalStatus)
@@ -1417,7 +1417,7 @@ export async function inspectLogs(bridge: InspectBridge): Promise<LogEntry[]> {
1417
1417
  return [
1418
1418
  {
1419
1419
  id: `cloud-${ts}-${index}`,
1420
- source: 'rnx-cloud',
1420
+ source: 'peach-cloud',
1421
1421
  level,
1422
1422
  ts,
1423
1423
  args: [text],
@@ -1477,7 +1477,7 @@ export function filterLogEntries(
1477
1477
  out = out.filter((e) => {
1478
1478
  const first = e.args[0]
1479
1479
  return !(
1480
- typeof first === 'string' && /^\[(?:rnx|sootsim)(?:\s[^\]]*)?\]/.test(first)
1480
+ typeof first === 'string' && /^\[(?:peach|sootsim)(?:\s[^\]]*)?\]/.test(first)
1481
1481
  )
1482
1482
  })
1483
1483
  }
@@ -1,4 +1,4 @@
1
- // `rnx get count` — total SootSimNode count in the live tree.
1
+ // `peach get count` — total SootSimNode count in the live tree.
2
2
 
3
3
  import { inspectNodeCount } from './core'
4
4
  import { printJson, wantsJson } from './shared'
@@ -1,4 +1,4 @@
1
- // `rnx describe` — format the pruned visible semantic tree.
1
+ // `peach describe` — format the pruned visible semantic tree.
2
2
 
3
3
  import { maybeHint } from '../../hints'
4
4
  import { inspectDescribe, type DescribeDumpOptions } from './core'
@@ -3,7 +3,7 @@
3
3
  // budget and log more aggressively, because an agent can't see mid-animation
4
4
  // flicker the way a human can.
5
5
  const AGENT_ENV_VARS = [
6
- 'RNX_AGENT',
6
+ 'PEACH_AGENT',
7
7
  'TM_SESSION',
8
8
  'CLAUDECODE',
9
9
  'CLAUDE_CODE_ENTRYPOINT',
@@ -16,7 +16,7 @@ const AGENT_ENV_VARS = [
16
16
  export function isAgentEnv(
17
17
  env: Readonly<Record<string, string | undefined>> = process.env,
18
18
  ): boolean {
19
- if (env.RNX_AGENT === '0') return false
19
+ if (env.PEACH_AGENT === '0') return false
20
20
  for (const name of AGENT_ENV_VARS) {
21
21
  const v = env[name]
22
22
  if (v && v.trim() && v !== '0') return true
@@ -33,7 +33,7 @@ export async function runFindSubcommand(opts: {
33
33
  // ranked-tappable list — same data source as --pressable, but the
34
34
  // output prioritises high-signal targets the agent likely wants to
35
35
  // tap next (visible, has text or testID, has accessibilityLabel),
36
- // and emits a copy-paste `rnx do` command per row so the agent
36
+ // and emits a copy-paste `peach do` command per row so the agent
37
37
  // doesn't have to re-form a tap from raw fields.
38
38
  const interactive = hasFlag('--interactive-targets') || hasFlag('--actions')
39
39
  const bareText =
@@ -71,7 +71,7 @@ export async function runFindSubcommand(opts: {
71
71
  if (jsonOut) {
72
72
  if (mode === 'interactive-targets' && Array.isArray(result)) {
73
73
  // include the `tap` command per row when emitting JSON for agents
74
- // — the human renderer does the same. tooling that drives rnx
74
+ // — the human renderer does the same. tooling that drives peach
75
75
  // can pick the highest-scored entry and execute its `tap` field.
76
76
  printJson(rankInteractive(result).map((n) => ({ ...n, tap: tapCommandForNode(n) })))
77
77
  } else {
@@ -1,4 +1,4 @@
1
- // `rnx get-layout` — bounding boxes for visible meaningful elements on the
1
+ // `peach get-layout` — bounding boxes for visible meaningful elements on the
2
2
  // current screen. focused on the layout numbers a designer checks: on-screen
3
3
  // box (x/y/w/h). pass --styling for computed borderRadius, per-side padding,
4
4
  // fontSize, visual style fields, and native rendered text contrast. pass
@@ -30,7 +30,7 @@ export async function runGetLayoutSubcommand(opts: {
30
30
  if (
31
31
  styling &&
32
32
  error instanceof Error &&
33
- (error.message === 'unsupported RNX Cloud command type: evaluate' ||
33
+ (error.message === 'unsupported Peach Cloud command type: evaluate' ||
34
34
  error.message.includes('requires the debug scope'))
35
35
  ) {
36
36
  throw new Error(
@@ -1,4 +1,4 @@
1
- // `rnx get keyboard` — prints the current iOS keyboard's full state.
1
+ // `peach get keyboard` — prints the current iOS keyboard's full state.
2
2
  //
3
3
  // shows visibility, keyboardType, returnKeyType, autoCapitalize policy,
4
4
  // active QWERTY sub-mode, shift + capsLock, and the mounted accessory bar
@@ -1,4 +1,4 @@
1
- // `rnx list` — connected sims, with the active one marked.
1
+ // `peach list` — connected sims, with the active one marked.
2
2
 
3
3
  import { resolveDevCheckoutRuntimeRoot } from '../../../src/runtime-assets'
4
4
  import { type BridgeSimInfo, formatLockOwner, type WsBridge } from '../../ws-bridge'
@@ -92,7 +92,7 @@ function summarizeSimUrl(url: string | undefined): string | null {
92
92
  parsed.pathname === '/sootsim/' ||
93
93
  parsed.pathname === '/sootsim'
94
94
  ) {
95
- return 'embedded rnx'
95
+ return 'embedded peach'
96
96
  }
97
97
  return null
98
98
  } catch {
@@ -146,8 +146,8 @@ function printConnectedSims(sims: BridgeSimInfo[], selectedId?: string) {
146
146
  }
147
147
 
148
148
  // classify which engine a sim is running so dev-vs-published is never ambiguous
149
- // to agents or humans reading `rnx list`. dev shell serves local source on
150
- // :5173; the Contrast app embeds rnx on :3000; the bridge/daemon and the
149
+ // to agents or humans reading `peach list`. dev shell serves local source on
150
+ // :5173; the Contrast app embeds peach on :3000; the bridge/daemon and the
151
151
  // /__soot plugin serve the active runtime dir — which, inside a dev checkout, is
152
152
  // the fresh dev-stack build (resolveDevCheckoutRuntimeRoot mode boundary), not a
153
153
  // published runtime. keep this label honest so it never says "published" while
@@ -1,4 +1,4 @@
1
- // `rnx get memory` / `rnx debug memory` — per-worker live object
1
+ // `peach get memory` / `peach debug memory` — per-worker live object
2
2
  // counts (nodes registered, pictures, raster images, paragraphs, yoga wasm
3
3
  // nodes), image-loader cache, and JS heaps. one-shot by default; --watch
4
4
  // samples repeatedly and reports per-counter slope, which is the leak-RCA
@@ -5,7 +5,7 @@ import { isSimSemanticTree, type InspectBridge } from './core'
5
5
  //
6
6
  // pass `positional` from a verb whose positionals are x/y coordinates (tap,
7
7
  // double-tap, long-press) and a bare non-numeric first positional reads as a
8
- // testID: `rnx do tap my-button` works like `do tap-id my-button` and like
8
+ // testID: `peach do tap my-button` works like `do tap-id my-button` and like
9
9
  // `do scroll <id>`, instead of failing with a usage line for the one verb an
10
10
  // agent is most likely to reach for. a coordinate is always numeric, so there
11
11
  // is nothing to disambiguate.
@@ -1,4 +1,4 @@
1
- // `rnx get screens` — print the current navigation stack + shell state +
1
+ // `peach get screens` — print the current navigation stack + shell state +
2
2
  // any presented modal + keyboard. answers "what screen am I on?" without
3
3
  // having to dump the whole tree or scrape screen-specific testIDs.
4
4
  //
@@ -224,7 +224,7 @@ export interface ReloadReadyResult {
224
224
  errors: number
225
225
  }
226
226
 
227
- // post-reload readiness is the same engine-owned condition as `rnx wait ready`.
227
+ // post-reload readiness is the same engine-owned condition as `peach wait ready`.
228
228
  // keeping reload on that primitive prevents another polling implementation
229
229
  // from drifting on loading text, live frames, or tree stability.
230
230
  export async function pollForReloadReady(
@@ -1,4 +1,4 @@
1
- // `rnx get tree` — pruned structured semantic tree, default depth 5.
1
+ // `peach get tree` — pruned structured semantic tree, default depth 5.
2
2
 
3
3
  import { formatSemanticTree, inspectTree, isSimSemanticTree } from './core'
4
4
  import { printJson, wantsJson } from './shared'
@@ -1,4 +1,4 @@
1
- // `rnx get url` — prints the current page URL the bridge is attached to.
1
+ // `peach get url` — prints the current page URL the bridge is attached to.
2
2
 
3
3
  import { inspectUrl } from './core'
4
4
  import { printJson, wantsJson } from './shared'
@@ -1,10 +1,10 @@
1
- // rnx wait event — block until a semantic timeline event of the
1
+ // peach wait event — block until a semantic timeline event of the
2
2
  // given kind appears, or timeout.
3
3
  //
4
4
  // usage:
5
- // rnx wait event <kind> [--max-ms 5000] [--since now|cursor]
6
- // rnx wait event fetch [--filter <substring>]
7
- // rnx wait event screen [--equals SignInPage]
5
+ // peach wait event <kind> [--max-ms 5000] [--since now|cursor]
6
+ // peach wait event fetch [--filter <substring>]
7
+ // peach wait event screen [--equals SignInPage]
8
8
  //
9
9
  // the existing wait family is layout-driven: `wait selector` polls
10
10
  // for a testID, `wait idle` polls for rAF + animation settling,
@@ -111,7 +111,7 @@ function eventMatches(
111
111
  export async function runWaitEventSubcommand(opts: WaitEventOptions): Promise<void> {
112
112
  const { bridge, args, positional, inspectUsage } = opts
113
113
  // positional shape after verb-prefix strip and stripBooleanFlags:
114
- // rnx wait event <kind> → ['event', '<kind>']
114
+ // peach wait event <kind> → ['event', '<kind>']
115
115
  // so positional[1] is the kind.
116
116
  const kind = positional[1]
117
117
  if (!kind) {