peachsim 0.1.527

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 (324) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +640 -0
  3. package/cli/app-config.ts +82 -0
  4. package/cli/app-fonts.ts +388 -0
  5. package/cli/app-project.ts +59 -0
  6. package/cli/app-splash.ts +171 -0
  7. package/cli/app-state-reset.ts +26 -0
  8. package/cli/auth.ts +184 -0
  9. package/cli/bin.ts +59 -0
  10. package/cli/bridge-diagnostics.ts +226 -0
  11. package/cli/bridge-flow-runner.ts +2806 -0
  12. package/cli/browser-backend.ts +44 -0
  13. package/cli/browser-evals.ts +96 -0
  14. package/cli/cli-update.ts +261 -0
  15. package/cli/cloud-client.ts +1530 -0
  16. package/cli/cloud-dispatch.ts +206 -0
  17. package/cli/cloud-session.ts +227 -0
  18. package/cli/command-contract.ts +221 -0
  19. package/cli/command-registry.ts +304 -0
  20. package/cli/commands/agent-wrapper.ts +1048 -0
  21. package/cli/commands/agent.ts +439 -0
  22. package/cli/commands/app-fonts.ts +99 -0
  23. package/cli/commands/assert.ts +542 -0
  24. package/cli/commands/auth.ts +71 -0
  25. package/cli/commands/box/bundle-plane.ts +71 -0
  26. package/cli/commands/box/checkout-plane.ts +256 -0
  27. package/cli/commands/box/plane-share.ts +208 -0
  28. package/cli/commands/box/rnx-command.ts +60 -0
  29. package/cli/commands/box/search-command.ts +157 -0
  30. package/cli/commands/box.ts +925 -0
  31. package/cli/commands/camera.ts +266 -0
  32. package/cli/commands/cleanup.ts +169 -0
  33. package/cli/commands/compat.ts +176 -0
  34. package/cli/commands/config.ts +34 -0
  35. package/cli/commands/control.ts +2154 -0
  36. package/cli/commands/cpu-profile.ts +941 -0
  37. package/cli/commands/daemon-mac-app.ts +165 -0
  38. package/cli/commands/daemon.ts +800 -0
  39. package/cli/commands/debug.ts +751 -0
  40. package/cli/commands/desktop.ts +39 -0
  41. package/cli/commands/detect.ts +201 -0
  42. package/cli/commands/detox.ts +481 -0
  43. package/cli/commands/device.ts +134 -0
  44. package/cli/commands/diagnose.ts +589 -0
  45. package/cli/commands/do-chain.ts +408 -0
  46. package/cli/commands/electron.ts +94 -0
  47. package/cli/commands/film.ts +379 -0
  48. package/cli/commands/flow.ts +1240 -0
  49. package/cli/commands/inspect/actions.ts +516 -0
  50. package/cli/commands/inspect/core.ts +2086 -0
  51. package/cli/commands/inspect/count.ts +17 -0
  52. package/cli/commands/inspect/describe.ts +119 -0
  53. package/cli/commands/inspect/env.ts +25 -0
  54. package/cli/commands/inspect/find.ts +169 -0
  55. package/cli/commands/inspect/get-layout.ts +53 -0
  56. package/cli/commands/inspect/keyboard.ts +54 -0
  57. package/cli/commands/inspect/list.ts +175 -0
  58. package/cli/commands/inspect/memory.ts +215 -0
  59. package/cli/commands/inspect/redaction.ts +39 -0
  60. package/cli/commands/inspect/resolve-target.ts +77 -0
  61. package/cli/commands/inspect/screens.ts +78 -0
  62. package/cli/commands/inspect/settle.ts +32 -0
  63. package/cli/commands/inspect/settling.ts +197 -0
  64. package/cli/commands/inspect/shared.ts +259 -0
  65. package/cli/commands/inspect/sleep.ts +15 -0
  66. package/cli/commands/inspect/tree.ts +23 -0
  67. package/cli/commands/inspect/url.ts +17 -0
  68. package/cli/commands/inspect/wait-event.ts +211 -0
  69. package/cli/commands/inspect/wait-idle.ts +25 -0
  70. package/cli/commands/inspect/wait-ready.ts +87 -0
  71. package/cli/commands/inspect/wait-selector.ts +59 -0
  72. package/cli/commands/inspect/wait.ts +32 -0
  73. package/cli/commands/inspect.ts +4738 -0
  74. package/cli/commands/install-cli.ts +275 -0
  75. package/cli/commands/install-desktop.ts +385 -0
  76. package/cli/commands/login.ts +357 -0
  77. package/cli/commands/logout.ts +24 -0
  78. package/cli/commands/maestro-generate.ts +375 -0
  79. package/cli/commands/maestro.ts +536 -0
  80. package/cli/commands/mode.ts +58 -0
  81. package/cli/commands/no-bridge-hint.ts +80 -0
  82. package/cli/commands/perf.ts +67 -0
  83. package/cli/commands/permissions.ts +203 -0
  84. package/cli/commands/platform.ts +410 -0
  85. package/cli/commands/preview.ts +103 -0
  86. package/cli/commands/profile.ts +106 -0
  87. package/cli/commands/react.ts +353 -0
  88. package/cli/commands/record.ts +1435 -0
  89. package/cli/commands/report-issue.ts +305 -0
  90. package/cli/commands/reset.ts +89 -0
  91. package/cli/commands/runtime.ts +348 -0
  92. package/cli/commands/screenshot-command.ts +106 -0
  93. package/cli/commands/screenshot-layers.ts +144 -0
  94. package/cli/commands/screenshot-mode.ts +38 -0
  95. package/cli/commands/screenshot.ts +492 -0
  96. package/cli/commands/screenshots-capture.ts +608 -0
  97. package/cli/commands/screenshots.ts +127 -0
  98. package/cli/commands/serve.ts +139 -0
  99. package/cli/commands/setup.ts +416 -0
  100. package/cli/commands/shell-boolean-mode.ts +82 -0
  101. package/cli/commands/skills.ts +468 -0
  102. package/cli/commands/slides.ts +357 -0
  103. package/cli/commands/state.ts +94 -0
  104. package/cli/commands/storage.ts +58 -0
  105. package/cli/commands/telemetry.ts +55 -0
  106. package/cli/commands/test.ts +535 -0
  107. package/cli/commands/three-mode.ts +771 -0
  108. package/cli/commands/timeline.ts +121 -0
  109. package/cli/commands/upgrade.ts +167 -0
  110. package/cli/commands/upload.ts +1203 -0
  111. package/cli/commands/version.ts +63 -0
  112. package/cli/commands/welcome.ts +17 -0
  113. package/cli/commands/what-happened.ts +328 -0
  114. package/cli/current-sim.ts +217 -0
  115. package/cli/desktop-companion.ts +315 -0
  116. package/cli/drivers/electron.ts +70 -0
  117. package/cli/drivers/index.ts +20 -0
  118. package/cli/drivers/playwright-provisioning.ts +184 -0
  119. package/cli/drivers/playwright-sim-host.ts +537 -0
  120. package/cli/drivers/playwright.ts +209 -0
  121. package/cli/drivers/registry.ts +65 -0
  122. package/cli/drivers/types.ts +102 -0
  123. package/cli/flow-export.ts +55 -0
  124. package/cli/flow-file.ts +142 -0
  125. package/cli/flow-live-status.ts +126 -0
  126. package/cli/flow-session.ts +140 -0
  127. package/cli/help-core.ts +143 -0
  128. package/cli/help.ts +44 -0
  129. package/cli/hidden-runtime-alias.ts +19 -0
  130. package/cli/hints.ts +214 -0
  131. package/cli/inspect-notice-state.ts +114 -0
  132. package/cli/internal-child.ts +176 -0
  133. package/cli/maestro-js.ts +323 -0
  134. package/cli/main.ts +704 -0
  135. package/cli/open-url.ts +8 -0
  136. package/cli/outbound-endpoints.ts +830 -0
  137. package/cli/parent-pid.ts +204 -0
  138. package/cli/parse-args.ts +189 -0
  139. package/cli/privacy.ts +53 -0
  140. package/cli/prompt.ts +56 -0
  141. package/cli/recording-access.ts +108 -0
  142. package/cli/registry.ts +2 -0
  143. package/cli/resolve-assets.ts +63 -0
  144. package/cli/rnx-in-process.ts +98 -0
  145. package/cli/run-registry.ts +226 -0
  146. package/cli/run-rnx-core.ts +148 -0
  147. package/cli/run-rnx.ts +137 -0
  148. package/cli/runtime-notes.ts +66 -0
  149. package/cli/runtime-summary.ts +25 -0
  150. package/cli/secure-file.ts +31 -0
  151. package/cli/self-invocation.ts +58 -0
  152. package/cli/send-to-box.ts +109 -0
  153. package/cli/setup-repository.ts +191 -0
  154. package/cli/shell-init.ts +98 -0
  155. package/cli/standalone.ts +4 -0
  156. package/cli/telemetry.ts +84 -0
  157. package/cli/ui.ts +68 -0
  158. package/cli/ws-bridge.ts +1020 -0
  159. package/detox/attempt-events.cjs +23 -0
  160. package/detox/colors.ts +54 -0
  161. package/detox/config-loader.ts +135 -0
  162. package/detox/element-types.ts +48 -0
  163. package/detox/expectations.ts +534 -0
  164. package/detox/gestures.ts +501 -0
  165. package/detox/index.ts +2694 -0
  166. package/detox/jest-preset.cjs +29 -0
  167. package/detox/jest-setup-after-env.cjs +22 -0
  168. package/detox/matchers.ts +30 -0
  169. package/detox/motion-change.cjs +109 -0
  170. package/detox/motion-change.d.cts +35 -0
  171. package/detox/navigation-lifecycle.ts +290 -0
  172. package/detox/navigation.ts +43 -0
  173. package/detox/proof-frame.cjs +114 -0
  174. package/detox/record-block-execution.cjs +78 -0
  175. package/detox/screenshots/animated-color-test-rest-norngh.png +0 -0
  176. package/detox/screenshots/color-test-after-drag-norngh.png +0 -0
  177. package/detox/screenshots/color-test-rest-norngh.png +0 -0
  178. package/detox/screenshots/theme-blue-toggle.png +0 -0
  179. package/detox/screenshots/theme-blue.png +0 -0
  180. package/detox/screenshots/theme-red-toggle.png +0 -0
  181. package/detox/screenshots/theme-red.png +0 -0
  182. package/dist-lib/agent-daemon-client.cjs +502 -0
  183. package/dist-lib/agent-events.cjs +48 -0
  184. package/dist-lib/agent-identity.cjs +53 -0
  185. package/dist-lib/agent-sessions.cjs +759 -0
  186. package/dist-lib/attached-projects.cjs +526 -0
  187. package/dist-lib/auth/shared-session.cjs +208 -0
  188. package/dist-lib/backend-origin.cjs +88 -0
  189. package/dist-lib/beta.cjs +41 -0
  190. package/dist-lib/beta.mjs +13 -0
  191. package/dist-lib/bridge-constants.cjs +161 -0
  192. package/dist-lib/bridge-contract-input.cjs +451 -0
  193. package/dist-lib/bridge-contract-input.mjs +414 -0
  194. package/dist-lib/bridge-contract.cjs +130 -0
  195. package/dist-lib/bridge-contract.mjs +94 -0
  196. package/dist-lib/capture-contract.cjs +220 -0
  197. package/dist-lib/capture-contract.mjs +190 -0
  198. package/dist-lib/cli-constants.cjs +32 -0
  199. package/dist-lib/cloud-contract.cjs +194 -0
  200. package/dist-lib/cloud-contract.mjs +145 -0
  201. package/dist-lib/cloud.cjs +670 -0
  202. package/dist-lib/cloud.mjs +639 -0
  203. package/dist-lib/config.cjs +96 -0
  204. package/dist-lib/detox/index.cjs +3789 -0
  205. package/dist-lib/detox/jest-preset.cjs +29 -0
  206. package/dist-lib/dev-bundle-resolution.cjs +290 -0
  207. package/dist-lib/home-paths.cjs +638 -0
  208. package/dist-lib/host/bridge-host.cjs +10903 -0
  209. package/dist-lib/host/fetch-proxy-handler.cjs +421 -0
  210. package/dist-lib/host/fetch-proxy-overrides.cjs +63 -0
  211. package/dist-lib/host/fetch-proxy-overrides.mjs +37 -0
  212. package/dist-lib/host/replacement-module-handler.cjs +469 -0
  213. package/dist-lib/host/websocket-proxy.cjs +298 -0
  214. package/dist-lib/index.cjs +4268 -0
  215. package/dist-lib/jump-to-source-babel.cjs +93 -0
  216. package/dist-lib/jump-to-source-native.cjs +112 -0
  217. package/dist-lib/menu.cjs +646 -0
  218. package/dist-lib/menu.mjs +604 -0
  219. package/dist-lib/metro-fingerprint-registry.cjs +186 -0
  220. package/dist-lib/metro-fingerprint-registry.mjs +156 -0
  221. package/dist-lib/metro-production-bundle.cjs +329 -0
  222. package/dist-lib/metro-production-bundle.mjs +295 -0
  223. package/dist-lib/metro.cjs +904 -0
  224. package/dist-lib/profiles.cjs +246 -0
  225. package/dist-lib/public-brand.cjs +39 -0
  226. package/dist-lib/react-native-host-modules.cjs +51 -0
  227. package/dist-lib/react-native-host-modules.mjs +25 -0
  228. package/dist-lib/render-mode.cjs +54 -0
  229. package/dist-lib/scripts/dev-server-scanner.cjs +1232 -0
  230. package/dist-lib/sdk.cjs +2433 -0
  231. package/dist-lib/sdk.mjs +2336 -0
  232. package/dist-lib/skills.cjs +39132 -0
  233. package/dist-lib/swift-submit.cjs +92 -0
  234. package/dist-lib/swift-submit.mjs +65 -0
  235. package/dist-lib/swift.cjs +1646 -0
  236. package/dist-lib/vite.cjs +1591 -0
  237. package/package.json +290 -0
  238. package/scripts/dev-server-scanner.ts +1291 -0
  239. package/scripts/optional-demo-registry.ts +113 -0
  240. package/skills/contrast/SKILL.md +165 -0
  241. package/skills/rnx-debug/SKILL.md +433 -0
  242. package/skills/rnx-perf/SKILL.md +399 -0
  243. package/skills/rnx-setup/SKILL.md +172 -0
  244. package/skills/rnx-test/SKILL.md +321 -0
  245. package/skills/rnx-visual/SKILL.md +126 -0
  246. package/src/agent-daemon-client.ts +410 -0
  247. package/src/agent-events.ts +71 -0
  248. package/src/agent-identity.ts +23 -0
  249. package/src/agent-prompt.ts +71 -0
  250. package/src/agent-sessions.ts +580 -0
  251. package/src/app-url.ts +39 -0
  252. package/src/attached-projects.ts +539 -0
  253. package/src/auth/shared-session.ts +235 -0
  254. package/src/backend-origin.ts +70 -0
  255. package/src/beta.ts +19 -0
  256. package/src/bridge-constants.ts +175 -0
  257. package/src/bridge-contract-input.ts +502 -0
  258. package/src/bridge-contract.ts +558 -0
  259. package/src/browser-cache.ts +16 -0
  260. package/src/capture-contract.ts +587 -0
  261. package/src/cli-constants.ts +1 -0
  262. package/src/cli-version.ts +40 -0
  263. package/src/cloud-contract.ts +274 -0
  264. package/src/cloud.ts +762 -0
  265. package/src/codex-client.ts +234 -0
  266. package/src/config.ts +132 -0
  267. package/src/connect.ts +101 -0
  268. package/src/dev-bundle-resolution.ts +346 -0
  269. package/src/dev-server-open.ts +198 -0
  270. package/src/disk-cleanup.ts +540 -0
  271. package/src/flow-timeout-scale.ts +15 -0
  272. package/src/home-paths.ts +806 -0
  273. package/src/host/agent-host.ts +666 -0
  274. package/src/host/bridge-host.ts +2788 -0
  275. package/src/host/fetch-proxy-handler.ts +449 -0
  276. package/src/host/fetch-proxy-overrides.ts +51 -0
  277. package/src/host/open-url.ts +89 -0
  278. package/src/host/plane-host.ts +203 -0
  279. package/src/host/replacement-module-handler.ts +158 -0
  280. package/src/host/websocket-proxy.ts +315 -0
  281. package/src/index.ts +71 -0
  282. package/src/jump-to-source-babel.ts +135 -0
  283. package/src/jump-to-source-native.ts +102 -0
  284. package/src/menu.ts +777 -0
  285. package/src/metro-fingerprint-registry.ts +302 -0
  286. package/src/metro-plugin.ts +341 -0
  287. package/src/metro-production-bundle.ts +471 -0
  288. package/src/native-dev-bundle-url.ts +118 -0
  289. package/src/native-seam-manifest.ts +341 -0
  290. package/src/playwright-host-log.ts +16 -0
  291. package/src/plist.ts +27 -0
  292. package/src/poll-until.ts +123 -0
  293. package/src/profiles.ts +179 -0
  294. package/src/public-brand.ts +9 -0
  295. package/src/react-native-host-modules.ts +26 -0
  296. package/src/render-mode.ts +27 -0
  297. package/src/rolldown-plugin-swift.ts +240 -0
  298. package/src/runtime-assets.ts +233 -0
  299. package/src/runtime-delivery.ts +54 -0
  300. package/src/screenshots/compose.ts +422 -0
  301. package/src/screenshots/frame-compose.ts +514 -0
  302. package/src/screenshots/orchestrate.ts +256 -0
  303. package/src/screenshots/org-deck.ts +91 -0
  304. package/src/screenshots/registry.ts +58 -0
  305. package/src/screenshots/schema.ts +364 -0
  306. package/src/sdk.ts +15 -0
  307. package/src/settings-bundle.ts +418 -0
  308. package/src/shell-bridge-identity.ts +15 -0
  309. package/src/sim-client.ts +697 -0
  310. package/src/skills/builtin/a11y-review.ts +132 -0
  311. package/src/skills/builtin/compat-check.ts +71 -0
  312. package/src/skills/builtin/maestro-test.ts +121 -0
  313. package/src/skills/builtin/perf-profile.ts +90 -0
  314. package/src/skills/builtin/screenshot-all.ts +52 -0
  315. package/src/skills/builtin/visual-diff.ts +100 -0
  316. package/src/skills/registry.ts +107 -0
  317. package/src/skills/types.ts +41 -0
  318. package/src/swift-submit.ts +185 -0
  319. package/src/swift.ts +7 -0
  320. package/src/team-machine-prompt.ts +73 -0
  321. package/src/vite-plugin-one.ts +264 -0
  322. package/src/vite-plugin-swift.ts +620 -0
  323. package/src/vite-plugin.ts +1946 -0
  324. package/src/worklets-babel.ts +250 -0
@@ -0,0 +1,113 @@
1
+ // optional, best-effort access to the INTERNAL demo-app registry
2
+ // (`./demo-app-registry.ts`). that file is repo-internal dev tooling: it pins
3
+ // real demo apps to fixed ports (e.g. 3pc on 8081) and is consumed only by
4
+ // `bun run demo` + the in-repo electron/vite discovery paths, which run from
5
+ // the typescript source where the registry is always present.
6
+ //
7
+ // the PUBLISHED `sootsim` npm package must know nothing about those internal
8
+ // apps — shipping the registry once matched a brand-new user's `expo start` on
9
+ // the default port 8081 against the 3pc `one` entry and crashed their metro
10
+ // (repo-agnostic-pipeline violation). so the registry is NOT in the package
11
+ // `files` list, and the `import()` below is resolved to an absolute path at
12
+ // runtime: it finds the source registry in-repo and nothing (empty list) on a
13
+ // published install. no bundler can see through that, so it never inlines.
14
+ //
15
+ // one path, no env toggle: every consumer goes through this loader; whether the
16
+ // registry resolves is purely a function of whether the file exists on disk.
17
+
18
+ import { existsSync } from 'node:fs'
19
+ import { basename, dirname, join } from 'node:path'
20
+ import { fileURLToPath, pathToFileURL } from 'node:url'
21
+
22
+ // this module is emitted at three different depths — the source at
23
+ // packages/sootsim/scripts/, the built CLI at packages/sootsim/dist-cli/chunks/,
24
+ // and the electron main bundle at packages/sootsim-engine/dist-electron/ — so a
25
+ // relative './demo-app-registry.ts' is only correct from the source copy. from
26
+ // the other two it points at a file that does not exist, the catch below
27
+ // swallows that, and every demo app then boots with no runtimeConfig at all
28
+ // (mattermost stops on the server-select screen because AutoSelectServerUrl
29
+ // never reaches it). the one description that holds from every emit site is the
30
+ // ancestor that holds the registry at its repo path, which in-repo is the
31
+ // monorepo root.
32
+ const REGISTRY_REPO_PATH = 'packages/sootsim/scripts/demo-app-registry.ts'
33
+
34
+ // the walk must never leave the installed package. `sootsim` publishes this
35
+ // loader's source, so on a published install it runs from
36
+ // node_modules/sootsim/scripts/ (or dist-cli/chunks/) with the consumer's whole
37
+ // filesystem above it — and consumers include this repo's own templates and
38
+ // examples, which install sootsim while sitting inside the monorepo. an
39
+ // unbounded walk from there reaches the real registry and hands a user's
40
+ // `expo start` on port 8081 the internal 3pc entry, which is the exact incident
41
+ // the header describes. a node_modules ancestor means "installed as a
42
+ // dependency", so the search stops there and the registry stays absent.
43
+ const MAX_ANCESTOR_STEPS = 8
44
+
45
+ /** absolute path to the internal registry, or null when this copy is running
46
+ * outside the monorepo (a published install) and must not have one. */
47
+ export function findInternalDemoRegistry(startDir: string): string | null {
48
+ let dir = startDir
49
+ for (let step = 0; step < MAX_ANCESTOR_STEPS; step++) {
50
+ if (basename(dir) === 'node_modules') return null
51
+ const candidate = join(dir, REGISTRY_REPO_PATH)
52
+ if (existsSync(candidate)) return candidate
53
+ const parent = dirname(dir)
54
+ if (parent === dir) return null
55
+ dir = parent
56
+ }
57
+ return null
58
+ }
59
+
60
+ export interface OptionalDemoApp {
61
+ name: string
62
+ label: string
63
+ dir: string
64
+ preferredPort: number
65
+ framework: 'expo' | 'one' | 'rock'
66
+ runtimeConfig?: import('../src/config.ts').RNXConfig
67
+ }
68
+
69
+ let cached: OptionalDemoApp[] | null = null
70
+
71
+ /** load the internal demo registry if it's present on disk (in-repo only).
72
+ * returns [] on a published install where the registry was not shipped. */
73
+ export async function loadOptionalDemoApps(): Promise<OptionalDemoApp[]> {
74
+ if (cached) return cached
75
+ const registryPath = findInternalDemoRegistry(dirname(fileURLToPath(import.meta.url)))
76
+ if (!registryPath) {
77
+ cached = []
78
+ return cached
79
+ }
80
+ try {
81
+ const mod = (await import(/* @vite-ignore */ pathToFileURL(registryPath).href)) as {
82
+ APPS?: OptionalDemoApp[]
83
+ }
84
+ cached = Array.isArray(mod.APPS) ? mod.APPS : []
85
+ } catch {
86
+ cached = []
87
+ }
88
+ return cached
89
+ }
90
+
91
+ /** synchronous view of the registry — empty until `loadOptionalDemoApps()` has
92
+ * resolved at least once. every caller that builds a result from the registry
93
+ * awaits the load first. */
94
+ export function optionalDemoAppsSync(): OptionalDemoApp[] {
95
+ return cached ?? []
96
+ }
97
+
98
+ /** replace the registry with a fixed list, and restore it on the returned
99
+ * handle. what the real registry holds depends on which third-party app
100
+ * checkouts and credential files happen to exist on the machine, so a test
101
+ * that reads it asserts on the developer's home directory rather than on the
102
+ * code. it passes on the box that has them and fails everywhere else. */
103
+ export function __withOptionalDemoAppsForTests(apps: OptionalDemoApp[]): {
104
+ restore: () => void
105
+ } {
106
+ const previous = cached
107
+ cached = apps
108
+ return {
109
+ restore: () => {
110
+ cached = previous
111
+ },
112
+ }
113
+ }
@@ -0,0 +1,165 @@
1
+ ---
2
+ name: contrast
3
+ description: >-
4
+ index of all Contrast and rnx agent skills and CLI commands.
5
+ auto-generated from the CLI info registry — do not edit by hand.
6
+ ---
7
+
8
+ # contrast
9
+
10
+ overview of all available skills and CLI commands in this repo.
11
+
12
+ > this file is auto-generated by `bun scripts/generate-contrast-skill.ts`.
13
+ > to update, edit the source registries and re-run the generator.
14
+
15
+ ## rnx CLI commands
16
+
17
+ the `rnx` CLI is the operational surface for booting shells, driving
18
+ automation, inspecting the render tree, and managing sims.
19
+
20
+ | command | description |
21
+ | --- | --- |
22
+ | `rnx maestro` | author, generate, and run Maestro YAML flows against rnx |
23
+ | `rnx detox` | run existing Detox suites against rnx on headless Chromium |
24
+ | `rnx cleanup` | inspect and reclaim local rnx disk usage |
25
+ | `rnx record` | capture the live sim as webm/mp4/gif, or sample N png frames (--frames) |
26
+ | `rnx film` | record a flow on the flat canvas, play it back on the 3d device stage under a camera cinematic, save a clip |
27
+ | `rnx storage` | manage guest app storage and launch profiles |
28
+ | `rnx permissions` | inspect and change simulated operating-system permissions |
29
+ | `rnx perf` | CPU, React render, shell frame, and scroll-layer profiling |
30
+ | `rnx describe` | curated human-readable UI summary (default inspection tool) |
31
+ | `rnx find` | locate nodes by text / testID / role / type / predicate |
32
+ | `rnx assert` | run any read verb and convert its output into an exit code |
33
+ | `rnx screenshot` | capture PNGs and manage App Store screenshot assets |
34
+ | `rnx get` | read runtime state (tree, a11y, layout, url, count, errors, …) |
35
+ | `rnx do` | drive the app (tap, type, scroll, swipe, key, reload, …) |
36
+ | `rnx wait` | block until the runtime reaches a known state |
37
+ | `rnx shell` | drive shell state and simulator chrome |
38
+ | `rnx mode` | toggle screenshot and 3D display modes |
39
+ | `rnx device` | inspect or change the live device preset for a sim |
40
+ | `rnx network` | inspect live network traffic from the running rnx worker |
41
+ | `rnx logs` | inspect live console output from the running rnx worker |
42
+ | `rnx debug` | drive __sootsimDebug: channels, snapshots, and inspectors |
43
+ | `rnx what-happened` | show recent semantic events: toasts, keyboards, screens, alerts, fetches, errors |
44
+ | `rnx timeline` | control the semantic event timeline (enable opt-in kinds, clear, dump) |
45
+ | `rnx box` | start a local Box or create a cloud Box |
46
+ | `rnx ios` | start an iOS simulator |
47
+ | `rnx android` | start an Android simulator |
48
+ | `rnx open` | load a target into the current sim or open a new one |
49
+ | `rnx list` | list connected sims or available launch drivers |
50
+ | `rnx use` | select a connected sim |
51
+ | `rnx skill` | install and inspect bundled rnx agent skills |
52
+ | `rnx claim` | take an exclusive lease on a sim |
53
+ | `rnx agent` | attached projects + local agent sessions (codex/claude) |
54
+ | `rnx close` | close a connected sim |
55
+ | `rnx setup` | configure optional local conveniences |
56
+ | `rnx compat` | check package compatibility |
57
+ | `rnx report-issue` | send an explicitly approved compatibility report |
58
+ | `rnx desktop` | launch or install the desktop companion |
59
+ | `rnx daemon` | manage the recommended background bridge service |
60
+ | `rnx version` | show the CLI + engine runtime versions you are running |
61
+ | `rnx upgrade` | update the rnx CLI and engine runtime to the latest |
62
+ | `rnx serve` | run the rnx bridge in the foreground |
63
+ | `rnx runtime` | manage engine runtimes under ~/.rnx/runtimes/ |
64
+ | `rnx auth` | inspect active CLI auth |
65
+ | `rnx login` | sign in for preview uploads |
66
+ | `rnx logout` | clear the local desktop auth session |
67
+ | `rnx config` | manage local CLI preferences |
68
+
69
+ ### runtime verb groups
70
+
71
+ every runtime verb is organized under one of these grouping prefixes.
72
+ run `rnx --help` to see the full list under each group.
73
+
74
+ - `rnx describe` — summarize the current UI
75
+ - `rnx find <...>` — unified finder (bare text, --testid, --role, --type, --pressable, --visible)
76
+ - `rnx get <noun>` — read runtime state (tree, a11y, url, count, errors, warnings, requests, globals, layout, node)
77
+ - `rnx do <action>` — drive the app (tap, tap-text, tap-id, type, type-into, key, dismiss, scroll, drag, swipe, pinch, reload, shell, sleep, settle, wait)
78
+ - `rnx debug <tool>` — instrumentation (state, js, eval, perf, sample-color, enable/disable channels, snapshots, diff, record, recent)
79
+
80
+ ### global flags
81
+
82
+ - `-h, --help` — show help
83
+ - `-V, --version` — show version
84
+ - `-v, --verbose` — verbose output
85
+ - `-p, --port <number>` — bridge port, depending on command
86
+ - `-d, --device <model>` — override the simulated device model
87
+ - `-t, --theme <scheme>` — override light, dark, or auto color scheme
88
+ - `--headless` — run browser automation without a visible window where supported
89
+
90
+ ## bundled rnx agent skills
91
+
92
+ skills for working with the rnx native preview engine:
93
+
94
+ | skill | description |
95
+ | --- | --- |
96
+ | `/rnx-debug` | Debug rendering, animation, gesture, performance, and accessibility issues in a React Native app running under rnx. Reach for this whenever an animation looks wrong (janky, stutters, snaps, only updates once, or doesn't move at all), a swipe/transition/gesture misbehaves or feels broken, scrolling drops frames or feels slow, the UI renders the wrong tree/props, or a screen reader can't reach something — and drive the rnx CLI debug tooling first, not screenshots or ad-hoc logging. |
97
+ | `/rnx-perf` | Optimize rnx engine and app performance — scroll jank, dropped frames, slow animation, idle CPU, memory growth, and "smooth normally but laggy under load" (video calls, busy machines). Covers measuring on the right thread with the right browser, proving each perf tier actually engages via its counters, a CPU-contention test harness, and the map of existing perf machinery so you improve it instead of reinventing it. For general app debugging load /rnx-debug first. |
98
+ | `/rnx-setup` | Get rnx connected to your React Native app with no project setup |
99
+ | `/rnx-test` | Run automated tests against your React Native app under rnx with Maestro YAML or Detox/Jest |
100
+ | `/rnx-visual` | Pixel-level rendering comparison between rnx and native iOS — fonts, gradients, shadows, image fidelity |
101
+
102
+ ## automatic settling
103
+
104
+ every CLI command already waits at the right moment — **do not wrap
105
+ commands in your own `sleep` or chain `do settle` "just to be safe"**.
106
+
107
+ - **before read commands** (`describe`, `find`, `get`, `tree`, `node`,
108
+ `layout`, `screenshot`, `capture`, `a11y`, `sample-color`, `count`,
109
+ and every gesture — `tap`, `tap-id`, `tap-text`, `type-into`,
110
+ `touch`, `swipe`, `drag`, `scroll`, `pinch`, `long-press`,
111
+ `double-tap`, `gesture`) the CLI waits up to **1800 ms** for any
112
+ in-flight screen transition to actually start, so the tree you read is
113
+ never mid-flip.
114
+ - **after write commands** (`tap`, `tap-text`, `tap-id`, `type`,
115
+ `type-into`, `key`, `key-sequence`, `keycode`, `drag`, `swipe`,
116
+ `long-press`, `touch`, `gesture`, `pinch`, `scroll`, `shell`)
117
+ the CLI polls the layout hash until it is stable for two consecutive
118
+ frames. budget: **400 ms for agents** (`RNX_AGENT=1`, set by the
119
+ harness), 200 ms for humans.
120
+
121
+ what this means:
122
+
123
+ - `rnx do tap-id login` then `rnx find "Welcome"` Just Works™.
124
+ - you only need `rnx do settle <seconds>` or `rnx wait idle
125
+ --max-ms <N>` when the CLI explicitly prints
126
+ `⚠ auto-wait timed out after Nms — next command may see mid-animation
127
+ state`, or when the transition you care about lasts longer than ~400 ms
128
+ (full stack navigation, crossfades, video load).
129
+ - opt-out: `--no-wait` on a single command, `RNX_NO_AUTO_WAIT=1`
130
+ for a whole lane.
131
+ - if a read keeps racing its write, the fix is **never** a blind `sleep` —
132
+ prefer `wait selector`, `wait ready`, `wait idle`, or a longer
133
+ explicit `do settle`, and investigate whether the app's animation
134
+ completion signal is actually firing.
135
+
136
+ ## quick reference
137
+
138
+ ### dev workflow
139
+
140
+ ```sh
141
+ bun dev # start everything
142
+ rnx dev -- pnpm dev # wrap a bundler
143
+ rnx open 8081 # load an app
144
+ rnx describe # inspect the UI tree
145
+ ```
146
+
147
+ ### debugging
148
+
149
+ ```sh
150
+ rnx get errors 5 # recent console errors
151
+ rnx get requests 5 # recent failed requests
152
+ rnx debug snapshot before # capture state
153
+ rnx debug diff before after # compare snapshots
154
+ rnx debug state shell # runtime state dump
155
+ ```
156
+
157
+ ### inspection
158
+
159
+ ```sh
160
+ rnx describe # visible elements
161
+ rnx find "Sign in" # find by text
162
+ rnx find --testid loginButton # find by testID
163
+ rnx do tap-text "Submit" # tap by text
164
+ rnx do type "hello" # type text
165
+ ```