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 setup owns the optional machine and repository choices. rnx itself
1
+ // peach setup owns the optional machine and repository choices. peach itself
2
2
  // works without project setup; bare first-run onboarding launches ConnectRN
3
3
  // during this flow and leaves the repository choice until the end.
4
4
 
@@ -91,7 +91,7 @@ export async function runSetup(
91
91
  console.log(` ${muted('Would enable')} ${accent('the background service')}`)
92
92
  }
93
93
  if (!service && !serviceStatus.installed && !options.json) {
94
- console.log(` ${muted('Enable it later with')} ${accent('rnx daemon install')}`)
94
+ console.log(` ${muted('Enable it later with')} ${accent('peach daemon install')}`)
95
95
  }
96
96
  const simulatorDriver = await decideSimulatorDriver(options)
97
97
  if (options.dryRun && !options.json) {
@@ -102,13 +102,13 @@ export async function runSetup(
102
102
 
103
103
  const manifest = options.json
104
104
  ? await rnxRuntime.fetchManifest()
105
- : await withSpinner('Checking the rnx runtime', () => rnxRuntime.fetchManifest())
105
+ : await withSpinner('Checking the peach runtime', () => rnxRuntime.fetchManifest())
106
106
  const runtimeVersion = rnxRuntime.resolveVersion(manifest, {
107
107
  channel: 'stable',
108
108
  }).version
109
109
  const cliVersion = getCliVersion()
110
110
  if (cliVersion === '0.0.0') {
111
- throw new Error('could not resolve the installed rnx CLI version')
111
+ throw new Error('could not resolve the installed peach CLI version')
112
112
  }
113
113
 
114
114
  let runtimeInstalled = false
@@ -204,7 +204,7 @@ export async function runSetup(
204
204
  console.log(
205
205
  options.dryRun
206
206
  ? `\n ${success('✓')} Dry run complete.`
207
- : `\n ${success('✓')} ${launchConnectRN ? 'ConnectRN is open. ' : ''}rnx is ready.`,
207
+ : `\n ${success('✓')} ${launchConnectRN ? 'ConnectRN is open. ' : ''}peach is ready.`,
208
208
  )
209
209
  }
210
210
 
@@ -280,7 +280,7 @@ async function decideService(
280
280
  if (!options.json) {
281
281
  printPromptBlock('Background service', [
282
282
  'The persistent service is currently available on macOS and Linux.',
283
- 'rnx will start the bridge when needed on this platform.',
283
+ 'peach will start the bridge when needed on this platform.',
284
284
  ])
285
285
  }
286
286
  return false
@@ -309,22 +309,22 @@ async function decideSimulatorDriver(
309
309
  requireInteractive(options, '--desktop or --browser')
310
310
  const desktopDescription =
311
311
  process.platform === 'darwin'
312
- ? 'Desktop downloads a DMG and installs rnx.app.'
312
+ ? 'Desktop downloads a DMG and installs peach.app.'
313
313
  : process.platform === 'win32'
314
- ? 'Desktop downloads and runs the rnx installer.'
315
- : 'Desktop downloads the matching rnx AppImage.'
314
+ ? 'Desktop downloads and runs the peach installer.'
315
+ : 'Desktop downloads the matching peach AppImage.'
316
316
  const desktopChoice =
317
317
  process.platform === 'darwin'
318
- ? 'Desktop app Installs rnx.app from a DMG'
318
+ ? 'Desktop app Installs peach.app from a DMG'
319
319
  : process.platform === 'win32'
320
- ? 'Desktop app Runs the rnx installer'
320
+ ? 'Desktop app Runs the peach installer'
321
321
  : 'Desktop app Installs the matching AppImage'
322
322
  printPromptBlock('Simulator window', [
323
323
  'Browser opens immediately in an isolated Chrome window.',
324
324
  desktopDescription,
325
325
  'The Desktop app opens in a dedicated native window.',
326
326
  ])
327
- const choice = await select('Where should rnx open?', [
327
+ const choice = await select('Where should peach open??', [
328
328
  'Browser (recommended) No additional download',
329
329
  desktopChoice,
330
330
  ])
@@ -343,7 +343,7 @@ async function decidePrivacy(
343
343
  'Reports can contain package compatibility or an error class.',
344
344
  'They never contain your code or app data.',
345
345
  ])
346
- return confirm('Share bounded diagnostics to improve rnx?', false)
346
+ return confirm('Share bounded diagnostics to improve peach??', false)
347
347
  }
348
348
 
349
349
  async function decideRepository(
@@ -359,11 +359,11 @@ async function decideRepository(
359
359
  if (plan.operations.length === 0) return true
360
360
  if (options.repository !== undefined) return options.repository
361
361
  if (options.yes || options.ci || !process.stdin.isTTY) return false
362
- printPromptBlock('Share rnx with your team', [
363
- 'rnx already works here with no project setup.',
364
- 'This only adds an exact peachsim dev dependency and an rnx script for teammates.',
362
+ printPromptBlock('Share peach with your team', [
363
+ 'peach already works here with no project setup.',
364
+ 'This only adds an exact peachsim dev dependency and a peach script for teammates.',
365
365
  ])
366
- return confirm(`Add rnx to ${path.basename(plan.appDir)}?`, false)
366
+ return confirm(`Add peach to ${path.basename(plan.appDir)}?`, false)
367
367
  }
368
368
 
369
369
  function requireInteractive(options: SetupOptions, flags: string): void {
@@ -376,7 +376,7 @@ function runtimeCacheMetadata(runtimeVersion: string) {
376
376
  const arch = os.arch()
377
377
  return {
378
378
  path: runtimeDir(runtimeVersion),
379
- key: `rnx-runtime-${platform}-${arch}-${runtimeVersion}`,
379
+ key: `peach-runtime-${platform}-${arch}-${runtimeVersion}`,
380
380
  inputs: { platform, arch, runtimeVersion },
381
381
  }
382
382
  }
@@ -388,17 +388,17 @@ function printIntro(options: SetupOptions): void {
388
388
 
389
389
  function printHelp(): void {
390
390
  console.log(`
391
- rnx setup - configure optional local conveniences
391
+ peach setup - configure optional local conveniences
392
392
 
393
- rnx works without project setup. This command can enable the faster background
393
+ peach works without project setup. This command can enable the faster background
394
394
  service, choose Browser or Desktop, configure private diagnostics, and optionally
395
- add an exact peachsim dependency plus an rnx script for teammates.
395
+ add an exact peachsim dependency plus a peach script for teammates.
396
396
 
397
397
  usage:
398
- rnx setup
399
- rnx setup --yes
400
- rnx setup --ci --yes --json
401
- rnx setup --dry-run
398
+ peach setup
399
+ peach setup --yes
400
+ peach setup --ci --yes --json
401
+ peach setup --dry-run
402
402
 
403
403
  choices:
404
404
  --service | --no-service
@@ -1,9 +1,9 @@
1
- // rnx skill - install and inspect agent skill files
1
+ // peach skill - install and inspect agent skill files
2
2
  //
3
3
  // usage:
4
- // rnx skill install install all skills to supported agents
5
- // rnx skill install codex debug install specific skills to Codex only
6
- // rnx skill show [name] list skills or print one skill
4
+ // peach skill install install all skills to supported agents
5
+ // peach skill install codex debug install specific skills to Codex only
6
+ // peach skill show [name] list skills or print one skill
7
7
 
8
8
  import * as fs from 'fs'
9
9
  import * as os from 'os'
@@ -38,14 +38,14 @@ interface InstallTarget {
38
38
  }
39
39
 
40
40
  function printSkillHelp() {
41
- console.log(`rnx skill
41
+ console.log(`peach skill
42
42
 
43
- install and inspect bundled rnx agent skills.
43
+ install and inspect bundled peach agent skills.
44
44
 
45
45
  usage:
46
- rnx skill install [all|codex|claude] [skill-name...]
47
- rnx skill install --target <dir> [skill-name...]
48
- rnx skill show [skill-name]
46
+ peach skill install [all|codex|claude] [skill-name...]
47
+ peach skill install --target <dir> [skill-name...]
48
+ peach skill show [skill-name]
49
49
 
50
50
  commands:
51
51
  install install skills; no target means all supported local agents
@@ -59,25 +59,25 @@ targets:
59
59
  }
60
60
 
61
61
  function printInstallHelp() {
62
- console.log(`rnx skill install
62
+ console.log(`peach skill install
63
63
 
64
- install bundled rnx skills in the agent skill layout: <skill>/SKILL.md.
64
+ install bundled peach skills in the agent skill layout: <skill>/SKILL.md.
65
65
  each skill directory is symlinked back to its source, so edits stay live
66
66
  without a re-install. an existing install from an older CLI is upgraded in
67
67
  place; an unrelated skill directory is left alone unless --force is passed.
68
68
 
69
69
  usage:
70
- rnx skill install [all|codex|claude] [skill-name...]
71
- rnx skill install --target <dir> [skill-name...]
70
+ peach skill install [all|codex|claude] [skill-name...]
71
+ peach skill install --target <dir> [skill-name...]
72
72
 
73
73
  options:
74
74
  --force, -f replace a conflicting existing skill with the symlink
75
75
 
76
76
  examples:
77
- rnx skill install
78
- rnx skill install codex
79
- rnx skill install codex rnx-debug
80
- rnx skill install --force rnx-debug
77
+ peach skill install
78
+ peach skill install codex
79
+ peach skill install codex peach-debug
80
+ peach skill install --force peach-debug
81
81
  `)
82
82
  }
83
83
 
@@ -174,9 +174,11 @@ function matchSkills(skills: SkillInfo[], filters: string[]): SkillInfo[] {
174
174
  if (filters.length === 0) return skills
175
175
  const matched = skills.filter((skill) =>
176
176
  filters.some((filter) => {
177
- const needle = filter.replace(/^rnx-/, '')
177
+ // accept the pre-rename rnx- prefix on filter input so installed docs
178
+ // and muscle memory keep resolving; installed names are peach- only.
179
+ const needle = filter.replace(/^(peach|rnx)-/, '')
178
180
  return (
179
- skill.name.includes(filter) || skill.name.replace(/^rnx-/, '').includes(needle)
181
+ skill.name.includes(filter) || skill.name.replace(/^peach-/, '').includes(needle)
180
182
  )
181
183
  }),
182
184
  )
@@ -216,7 +218,7 @@ function symlinkPointsTo(dest: string, src: string): boolean {
216
218
  }
217
219
 
218
220
  // a store entry left by an older CLI is safe to upgrade: either a real dir
219
- // whose only content is a SKILL.md symlink into an rnx skills source (the
221
+ // whose only content is a SKILL.md symlink into a peach skills source (the
220
222
  // pre-dir-layout install — possibly broken after the source moved), or a dir
221
223
  // holding a byte-identical copy of the skill. only our installer creates
222
224
  // those shapes, so replacing them can't lose user work.
@@ -305,6 +307,11 @@ const LEGACY_BUNDLED_SKILL_DIRS = [
305
307
  'sootsim-perf',
306
308
  'sootsim-test',
307
309
  'sootsim-visual',
310
+ 'rnx-setup',
311
+ 'rnx-debug',
312
+ 'rnx-perf',
313
+ 'rnx-test',
314
+ 'rnx-visual',
308
315
  ]
309
316
 
310
317
  function removeLegacyBundledSkills(targetDir: string) {
@@ -331,8 +338,8 @@ function printSkillList(skills: SkillInfo[]) {
331
338
  console.log(` ${skill.name}`)
332
339
  console.log(` ${skill.description}\n`)
333
340
  }
334
- console.log(' usage: rnx skill install [all|codex|claude] [skill-name...]')
335
- console.log(' usage: rnx skill show [skill-name]\n')
341
+ console.log(' usage: peach skill install [all|codex|claude] [skill-name...]')
342
+ console.log(' usage: peach skill show [skill-name]\n')
336
343
  }
337
344
 
338
345
  function parseInstallArgs(args: string[]): {
@@ -386,7 +393,7 @@ function parseInstallArgs(args: string[]): {
386
393
  async function runInstall(args: string[]) {
387
394
  const skills = listSkills()
388
395
  if (skills.length === 0) {
389
- console.error(' no skills found in rnx package')
396
+ console.error(' no skills found in peach package')
390
397
  rnxExit(1)
391
398
  }
392
399
 
@@ -1,4 +1,4 @@
1
- // rnx screenshot slides — drive the live screenshot-mode composition from the
1
+ // peach screenshot slides — drive the live screenshot-mode composition from the
2
2
  // terminal. same pipeline as the in-shell UI (rail/strip): every mutation
3
3
  // goes through the shell's screenshotControl bridge so the browser UI
4
4
  // reflects each step live, captures auto-upload, and exports are the
@@ -16,18 +16,18 @@ import {
16
16
  } from '../ws-bridge'
17
17
 
18
18
  const HELP = `
19
- rnx screenshot slides — compose App Store screenshots in the live sim
19
+ peach screenshot slides — compose App Store screenshots in the live sim
20
20
 
21
21
  usage:
22
- rnx screenshot slides list slides (alias: slides list)
23
- rnx screenshot slides set <n> [fields] patch a slide's copy/colors
24
- rnx screenshot slides add append a blank slide (focuses it)
25
- rnx screenshot slides remove <n> delete a slide
26
- rnx screenshot slides move <n> <position> reorder a slide
27
- rnx screenshot slides focus <n> open a slide (device flips into it)
28
- rnx screenshot slides overview back to the gallery
29
- rnx screenshot slides capture [<n>] capture the live frame into a slide
30
- rnx screenshot slides export [<n>] [--out <dir>]
22
+ peach screenshot slides list slides (alias: slides list)
23
+ peach screenshot slides set <n> [fields] patch a slide's copy/colors
24
+ peach screenshot slides add append a blank slide (focuses it)
25
+ peach screenshot slides remove <n> delete a slide
26
+ peach screenshot slides move <n> <position> reorder a slide
27
+ peach screenshot slides focus <n> open a slide (device flips into it)
28
+ peach screenshot slides overview back to the gallery
29
+ peach screenshot slides capture [<n>] capture the live frame into a slide
30
+ peach screenshot slides export [<n>] [--out <dir>]
31
31
  write composed App-Store PNG(s)
32
32
 
33
33
  set fields:
@@ -43,12 +43,12 @@ set fields:
43
43
  notes:
44
44
  slides are addressed by 1-based index. screenshot mode is auto-enabled.
45
45
  capture shoots whatever the sim currently shows — navigate the app first
46
- (rnx do tap-id …), then capture.
46
+ (peach do tap-id …), then capture.
47
47
 
48
48
  examples:
49
- rnx screenshot slides set 1 --title "The ultimate MMA community." --bg-top cyan --bg-bottom black
50
- rnx screenshot slides capture 1
51
- rnx screenshot slides export --out ./exports
49
+ peach screenshot slides set 1 --title "The ultimate MMA community." --bg-top cyan --bg-bottom black
50
+ peach screenshot slides capture 1
51
+ peach screenshot slides export --out ./exports
52
52
  `
53
53
 
54
54
  interface SlideRow {
@@ -220,7 +220,7 @@ export async function runSlides(
220
220
  }
221
221
  case 'set': {
222
222
  if (refArg == null)
223
- throw new Error('usage: rnx screenshot slides set <n> --title … (see --help)')
223
+ throw new Error('usage: peach screenshot slides set <n> --title … (see --help)')
224
224
  const patch: Record<string, string> = {}
225
225
  for (const key of [
226
226
  'title',
@@ -257,7 +257,7 @@ export async function runSlides(
257
257
  break
258
258
  }
259
259
  case 'remove': {
260
- if (refArg == null) throw new Error('usage: rnx screenshot slides remove <n>')
260
+ if (refArg == null) throw new Error('usage: peach screenshot slides remove <n>')
261
261
  emit(
262
262
  await callInBridgeWrite<ControlState>(
263
263
  bridge,
@@ -269,7 +269,7 @@ export async function runSlides(
269
269
  }
270
270
  case 'move': {
271
271
  if (refArg == null || !Number.isInteger(positionArg) || positionArg < 1) {
272
- throw new Error('usage: rnx screenshot slides move <n> <position>')
272
+ throw new Error('usage: peach screenshot slides move <n> <position>')
273
273
  }
274
274
  emit(
275
275
  await callInBridgeWrite<ControlState>(
@@ -282,7 +282,7 @@ export async function runSlides(
282
282
  break
283
283
  }
284
284
  case 'focus': {
285
- if (refArg == null) throw new Error('usage: rnx screenshot slides focus <n>')
285
+ if (refArg == null) throw new Error('usage: peach screenshot slides focus <n>')
286
286
  emit(
287
287
  await callInBridgeWrite<ControlState>(
288
288
  bridge,
@@ -349,7 +349,7 @@ export async function runSlides(
349
349
  break
350
350
  }
351
351
  default:
352
- throw new Error(`unknown subcommand "${sub}" — see rnx screenshot slides --help`)
352
+ throw new Error(`unknown subcommand "${sub}" — see peach screenshot slides --help`)
353
353
  }
354
354
  } finally {
355
355
  bridge.close()
@@ -19,10 +19,10 @@ function isSimStateResult(value: unknown): value is SimStateResult {
19
19
 
20
20
  function printHelp(): void {
21
21
  console.log(`
22
- rnx state - capture the current app state in one call
22
+ peach state - capture the current app state in one call
23
23
 
24
24
  usage:
25
- rnx state [--json] [--sim <id>]
25
+ peach state [--json] [--sim <id>]
26
26
 
27
27
  options:
28
28
  --json print the complete structured result, including the screenshot
@@ -23,11 +23,11 @@ function findSubcommand(args: string[]): { name: string; index: number } | null
23
23
 
24
24
  function printHelp(): void {
25
25
  console.log(`
26
- rnx storage — manage sim and app storage
26
+ peach storage — manage sim and app storage
27
27
 
28
28
  usage:
29
- rnx storage profile <subcommand>
30
- rnx storage clear [--full] [--sim <id>] [--json]
29
+ peach storage profile <subcommand>
30
+ peach storage clear [--full] [--sim <id>] [--json]
31
31
 
32
32
  subcommands:
33
33
  profile list
@@ -1,4 +1,4 @@
1
- // `rnx config telemetry on|off` — retained as the command spelling for the
1
+ // `peach config telemetry on|off` — retained as the command spelling for the
2
2
  // product analytics preference shown by guided setup and Settings.
3
3
  //
4
4
  // this is the process-wide preference; `DO_NOT_TRACK=1` still forces opt-out
@@ -49,7 +49,7 @@ export async function runTelemetry(args: string[]): Promise<void> {
49
49
 
50
50
  default:
51
51
  console.error(` unknown telemetry action: ${sub}`)
52
- console.error(' usage: rnx config telemetry [on|off|status]')
52
+ console.error(' usage: peach config telemetry [on|off|status]')
53
53
  rnxExit(1)
54
54
  }
55
55
  }