@reticlehq/server 3.6.0 → 3.7.0

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 (614) hide show
  1. package/SKILL.md +122 -123
  2. package/dist/command/cli/adhoc-suite.d.ts +14 -0
  3. package/dist/command/cli/adhoc-suite.js +42 -7
  4. package/dist/command/cli/adhoc-verdict.d.ts +18 -2
  5. package/dist/command/cli/adhoc-verdict.js +70 -6
  6. package/dist/command/cli/answers/gate-exit.d.ts +23 -0
  7. package/dist/command/cli/answers/gate-exit.js +45 -0
  8. package/dist/command/cli/answers/gate-hook-message.d.ts +2 -0
  9. package/dist/command/cli/answers/gate-hook-message.js +3 -1
  10. package/dist/command/cli/auth/device-flow.d.ts +13 -2
  11. package/dist/command/cli/auth/device-flow.js +17 -0
  12. package/dist/command/cli/cli-doctor.js +14 -0
  13. package/dist/command/cli/cli-flow-commands.d.ts +0 -11
  14. package/dist/command/cli/cli-flow-commands.js +28 -105
  15. package/dist/command/cli/cli-kill.js +3 -2
  16. package/dist/command/cli/cli-parse-grammar.d.ts +24 -0
  17. package/dist/command/cli/cli-parse-grammar.js +75 -0
  18. package/dist/command/cli/cli-parse-verify.d.ts +2 -0
  19. package/dist/command/cli/cli-parse-verify.js +18 -0
  20. package/dist/command/cli/cli-parse.d.ts +19 -28
  21. package/dist/command/cli/cli-parse.js +82 -182
  22. package/dist/command/cli/cli-update-commands.d.ts +1 -1
  23. package/dist/command/cli/cli-update-commands.js +61 -9
  24. package/dist/command/cli/cli-usage.d.ts +33 -0
  25. package/dist/command/cli/cli-usage.js +287 -0
  26. package/dist/command/cli/cli-verify.d.ts +34 -4
  27. package/dist/command/cli/cli-verify.js +81 -12
  28. package/dist/command/cli/cloud-cli.d.ts +13 -0
  29. package/dist/command/cli/cloud-cli.js +145 -333
  30. package/dist/command/cli/cloud-kit.d.ts +12 -0
  31. package/dist/command/cli/cloud-kit.js +41 -2
  32. package/dist/command/cli/cloud-link.d.ts +57 -0
  33. package/dist/command/cli/cloud-link.js +308 -0
  34. package/dist/command/cli/cloud-login.d.ts +15 -1
  35. package/dist/command/cli/cloud-login.js +67 -13
  36. package/dist/command/cli/context-command.d.ts +1 -0
  37. package/dist/command/cli/context-command.js +33 -0
  38. package/dist/command/cli/daemon-start-options.d.ts +3 -0
  39. package/dist/command/cli/daemon-start-options.js +24 -3
  40. package/dist/command/cli/doctor/doctor-coverage-line.d.ts +2 -0
  41. package/dist/command/cli/doctor/doctor-coverage-line.js +47 -0
  42. package/dist/command/cli/doctor/doctor-project-line.d.ts +0 -12
  43. package/dist/command/cli/doctor/doctor-project-line.js +5 -4
  44. package/dist/command/cli/doctor/doctor-rows.d.ts +6 -0
  45. package/dist/command/cli/doctor/doctor-rows.js +6 -0
  46. package/dist/command/cli/doctor/doctor-signing-line.d.ts +38 -0
  47. package/dist/command/cli/doctor/doctor-signing-line.js +114 -0
  48. package/dist/command/cli/known-regression.d.ts +13 -0
  49. package/dist/command/cli/known-regression.js +34 -0
  50. package/dist/command/cli/launch/sdk-version-match.d.ts +12 -0
  51. package/dist/command/cli/launch/sdk-version-match.js +25 -0
  52. package/dist/command/cli/lifecycle/daemon-lifecycle.js +11 -2
  53. package/dist/command/cli/mcp-command.d.ts +6 -0
  54. package/dist/command/cli/mcp-command.js +13 -5
  55. package/dist/command/cli/ports/port-holder.js +1 -1
  56. package/dist/command/cli/project-name.d.ts +29 -1
  57. package/dist/command/cli/project-name.js +107 -2
  58. package/dist/command/cli/setup-mcp-cli.d.ts +17 -1
  59. package/dist/command/cli/setup-mcp-cli.js +29 -8
  60. package/dist/command/cli/status/status-lines.d.ts +1 -0
  61. package/dist/command/cli/status/status-lines.js +47 -2
  62. package/dist/command/cli/status/workspace-links.d.ts +10 -0
  63. package/dist/command/cli/status/workspace-links.js +29 -0
  64. package/dist/command/cli/try-command.d.ts +96 -0
  65. package/dist/command/cli/try-command.js +362 -0
  66. package/dist/command/cli/tutorial.d.ts +0 -100
  67. package/dist/command/cli/tutorial.js +0 -178
  68. package/dist/command/cli/verify-results.d.ts +19 -0
  69. package/dist/command/cli/verify-results.js +29 -0
  70. package/dist/command/cli-onboarding.d.ts +0 -11
  71. package/dist/command/cli-onboarding.js +0 -15
  72. package/dist/command/cli.d.ts +14 -0
  73. package/dist/command/cli.js +103 -83
  74. package/dist/command/daemon/daemon-resilience.js +4 -4
  75. package/dist/command/daemon/daemon-resolve.d.ts +9 -1
  76. package/dist/command/daemon/daemon-resolve.js +49 -10
  77. package/dist/command/setup/bringup/bridge-port.d.ts +3 -1
  78. package/dist/command/setup/bringup/bridge-port.js +13 -3
  79. package/dist/command/setup/bringup/dev-server-log-cap.js +2 -0
  80. package/dist/command/setup/bringup/ensure-daemon.js +9 -2
  81. package/dist/command/setup/init/agent-restart.d.ts +23 -0
  82. package/dist/command/setup/init/agent-restart.js +28 -0
  83. package/dist/command/setup/init/init-port.d.ts +10 -1
  84. package/dist/command/setup/init/init-port.js +22 -2
  85. package/dist/command/setup/init/init-runtime.d.ts +12 -2
  86. package/dist/command/setup/init/init-runtime.js +96 -37
  87. package/dist/command/setup/node-effects.d.ts +2 -0
  88. package/dist/command/setup/node-effects.js +36 -8
  89. package/dist/command/setup/probe/existing-app.d.ts +12 -0
  90. package/dist/command/setup/probe/existing-app.js +14 -0
  91. package/dist/command/setup/remaining-steps.js +1 -1
  92. package/dist/command/setup/run-setup.d.ts +29 -9
  93. package/dist/command/setup/run-setup.js +34 -28
  94. package/dist/command/setup/setup-command.d.ts +23 -0
  95. package/dist/command/setup/setup-command.js +57 -4
  96. package/dist/command/setup/setup-mcp.js +25 -2
  97. package/dist/command/setup/tauri-signing.d.ts +19 -0
  98. package/dist/command/setup/tauri-signing.js +79 -0
  99. package/dist/command/setup/terminal/listeners.d.ts +10 -1
  100. package/dist/command/setup/terminal/listeners.js +37 -6
  101. package/dist/command/update/update-nudge.d.ts +9 -0
  102. package/dist/command/update/update-nudge.js +1 -1
  103. package/dist/command/update/updater.js +11 -15
  104. package/dist/command/version/version-nudge.js +3 -0
  105. package/dist/command/version/version-skew.d.ts +20 -1
  106. package/dist/command/version/version-skew.js +38 -2
  107. package/dist/features/crawl/crawl.js +14 -1
  108. package/dist/features/exhaust/ledger.d.ts +14 -14
  109. package/dist/features/harness/drive-report.d.ts +39 -5
  110. package/dist/features/harness/drive-report.js +271 -54
  111. package/dist/features/harness/drive-runs.d.ts +120 -0
  112. package/dist/features/harness/drive-runs.js +289 -0
  113. package/dist/features/harness/drivers.d.ts +1 -1
  114. package/dist/features/harness/drivers.js +1 -1
  115. package/dist/features/harness/explore/console-pages.d.ts +15 -0
  116. package/dist/features/harness/explore/console-pages.js +146 -0
  117. package/dist/features/harness/explore/disparity.d.ts +19 -0
  118. package/dist/features/harness/explore/disparity.js +71 -0
  119. package/dist/features/harness/explore/fake-app.d.ts +16 -0
  120. package/dist/features/harness/explore/fake-app.js +49 -0
  121. package/dist/features/harness/explore/goal-search.d.ts +26 -0
  122. package/dist/features/harness/explore/goal-search.js +144 -0
  123. package/dist/features/harness/explore/page-tree.d.ts +49 -0
  124. package/dist/features/harness/explore/page-tree.js +148 -0
  125. package/dist/features/harness/explore/site-map.d.ts +34 -0
  126. package/dist/features/harness/explore/site-map.js +150 -0
  127. package/dist/features/harness/goals.d.ts +68 -7
  128. package/dist/features/harness/goals.js +289 -36
  129. package/dist/features/harness/harness.d.ts +30 -1
  130. package/dist/features/harness/harness.js +141 -7
  131. package/dist/features/harness/platform/local-apps.d.ts +36 -3
  132. package/dist/features/harness/platform/local-apps.js +81 -5
  133. package/dist/features/harness/platform/persona-credentials.d.ts +20 -0
  134. package/dist/features/harness/platform/persona-credentials.js +69 -0
  135. package/dist/features/harness/platform/platform-drives.d.ts +61 -0
  136. package/dist/features/harness/platform/platform-drives.js +114 -0
  137. package/dist/features/harness/platform/refusal.d.ts +52 -0
  138. package/dist/features/harness/platform/refusal.js +71 -0
  139. package/dist/features/harness/platform/remote-drive.d.ts +8 -2
  140. package/dist/features/harness/platform/remote-drive.js +22 -9
  141. package/dist/features/harness/platform/script.d.ts +57 -11
  142. package/dist/features/harness/platform/script.js +144 -12
  143. package/dist/features/harness/platform/server-driver.d.ts +17 -4
  144. package/dist/features/harness/platform/server-driver.js +29 -26
  145. package/dist/features/harness/platform-config.d.ts +38 -5
  146. package/dist/features/harness/platform-config.js +93 -8
  147. package/dist/features/harness/route-guess.d.ts +13 -0
  148. package/dist/features/harness/route-guess.js +49 -0
  149. package/dist/features/harness/script/script-run.d.ts +30 -1
  150. package/dist/features/harness/script/script-run.js +355 -48
  151. package/dist/features/license/license.d.ts +2 -2
  152. package/dist/features/visual/step-shots.d.ts +31 -0
  153. package/dist/features/visual/step-shots.js +231 -0
  154. package/dist/features/visual/visual-tools.js +22 -14
  155. package/dist/hooks/client-directory.d.ts +18 -0
  156. package/dist/hooks/client-directory.js +57 -0
  157. package/dist/hooks/coding-agents.d.ts +34 -0
  158. package/dist/hooks/coding-agents.js +117 -0
  159. package/dist/hooks/driven-by.d.ts +21 -2
  160. package/dist/hooks/driven-by.js +42 -2
  161. package/dist/hooks/hook-bus.d.ts +4 -0
  162. package/dist/hooks/hook-bus.js +18 -0
  163. package/dist/index.d.ts +1 -0
  164. package/dist/index.js +26 -183
  165. package/dist/judgement/capsule/capsule-store.d.ts +2 -2
  166. package/dist/judgement/capsule/causal-summary.d.ts +15 -1
  167. package/dist/judgement/capsule/causal-summary.js +33 -0
  168. package/dist/judgement/runs/artifact/build-verification-run.d.ts +1 -1
  169. package/dist/judgement/runs/artifact/build-verification-run.js +20 -4
  170. package/dist/judgement/runs/artifact/gap-summary.d.ts +0 -18
  171. package/dist/judgement/runs/artifact/gap-summary.js +12 -3
  172. package/dist/judgement/runs/artifact/replay-mapping.js +25 -9
  173. package/dist/judgement/runs/artifact/run-store.d.ts +13 -1
  174. package/dist/judgement/runs/artifact/run-store.js +175 -8
  175. package/dist/judgement/runs/context-tools.js +59 -1
  176. package/dist/judgement/runs/default-run-id.d.ts +3 -0
  177. package/dist/judgement/runs/default-run-id.js +16 -0
  178. package/dist/judgement/runs/drive-run.d.ts +53 -5
  179. package/dist/judgement/runs/drive-run.js +234 -20
  180. package/dist/judgement/runs/resume.d.ts +44 -0
  181. package/dist/judgement/runs/resume.js +137 -0
  182. package/dist/judgement/runs/reticle-runner.js +5 -2
  183. package/dist/judgement/runs/runner-port.d.ts +5 -1
  184. package/dist/judgement/runs/runner-port.js +8 -2
  185. package/dist/judgement/runs/verification-sync.d.ts +2 -0
  186. package/dist/judgement/runs/verification-sync.js +36 -15
  187. package/dist/language/flows/decision.js +2 -1
  188. package/dist/language/flows/fields/flow-secret-field.d.ts +12 -0
  189. package/dist/language/flows/fields/flow-secret-field.js +25 -2
  190. package/dist/language/flows/flow-anchor.d.ts +7 -2
  191. package/dist/language/flows/flow-anchor.js +10 -3
  192. package/dist/language/flows/flow-intent.d.ts +1 -0
  193. package/dist/language/flows/flow-journey.d.ts +6 -0
  194. package/dist/language/flows/flow-journey.js +20 -0
  195. package/dist/language/flows/flow-learning.d.ts +4 -0
  196. package/dist/language/flows/flow-learning.js +37 -3
  197. package/dist/language/flows/flow-replay-run.js +16 -18
  198. package/dist/language/flows/flow-replay-types.d.ts +1 -1
  199. package/dist/language/flows/flow-replay.d.ts +18 -1
  200. package/dist/language/flows/flow-replay.js +22 -7
  201. package/dist/language/flows/flow-result.d.ts +22 -1
  202. package/dist/language/flows/flow-result.js +47 -2
  203. package/dist/language/flows/flow-step-runners.d.ts +2 -0
  204. package/dist/language/flows/flow-step-runners.js +12 -6
  205. package/dist/language/flows/flow-store-for-session.js +5 -1
  206. package/dist/language/flows/flow-tools.d.ts +10 -0
  207. package/dist/language/flows/flow-tools.js +61 -62
  208. package/dist/language/flows/flows.d.ts +16 -1
  209. package/dist/language/flows/flows.js +69 -10
  210. package/dist/language/flows/narrow-write.d.ts +7 -0
  211. package/dist/language/flows/narrow-write.js +36 -1
  212. package/dist/language/flows/recording/recording-backtrack.js +14 -1
  213. package/dist/language/flows/recording/tape/recordings.d.ts +29 -1
  214. package/dist/language/flows/recording/tape/recordings.js +60 -10
  215. package/dist/language/flows/replay.js +29 -6
  216. package/dist/language/flows/single-replay.d.ts +7 -0
  217. package/dist/language/flows/single-replay.js +26 -0
  218. package/dist/language/flows/verify-change-tools.d.ts +1 -0
  219. package/dist/language/flows/verify-change-tools.js +200 -193
  220. package/dist/memory/cloud/cloud-config.d.ts +10 -1
  221. package/dist/memory/cloud/cloud-config.js +19 -5
  222. package/dist/memory/cloud/cloud-sync.js +3 -3
  223. package/dist/memory/cloud/harness-config.d.ts +49 -0
  224. package/dist/memory/cloud/harness-config.js +16 -20
  225. package/dist/memory/cloud/memory-scope.d.ts +17 -0
  226. package/dist/memory/cloud/memory-scope.js +22 -0
  227. package/dist/memory/cloud/sync-cycle.d.ts +32 -4
  228. package/dist/memory/cloud/sync-cycle.js +113 -12
  229. package/dist/memory/cloud/sync-daemon.d.ts +11 -0
  230. package/dist/memory/cloud/sync-daemon.js +114 -4
  231. package/dist/memory/cloud/sync-disk.js +26 -2
  232. package/dist/memory/cloud/sync-screenshots.d.ts +32 -0
  233. package/dist/memory/cloud/sync-screenshots.js +105 -0
  234. package/dist/memory/cloud/unsynced-roots.d.ts +47 -0
  235. package/dist/memory/cloud/unsynced-roots.js +166 -0
  236. package/dist/memory/impact/account-watch.d.ts +16 -1
  237. package/dist/memory/impact/account-watch.js +26 -1
  238. package/dist/memory/impact/impact-store.d.ts +1 -4
  239. package/dist/memory/impact/impact-store.js +32 -42
  240. package/dist/memory/intent/inline-intent.d.ts +1 -0
  241. package/dist/memory/intent/intent-shard-store.js +16 -4
  242. package/dist/memory/intent/intent-shard.d.ts +12 -0
  243. package/dist/memory/intent/intent-store.d.ts +1 -0
  244. package/dist/memory/intent/intent-tools.js +42 -2
  245. package/dist/memory/intent/open-intents.d.ts +6 -0
  246. package/dist/memory/intent/open-intents.js +10 -1
  247. package/dist/memory/intent/settled-words.d.ts +24 -0
  248. package/dist/memory/intent/settled-words.js +130 -0
  249. package/dist/memory/journal/drive-flow.d.ts +16 -0
  250. package/dist/memory/journal/drive-flow.js +34 -2
  251. package/dist/memory/journal/drive-run-flush.d.ts +2 -0
  252. package/dist/memory/journal/drive-run-flush.js +20 -5
  253. package/dist/memory/journal/journal-recorder.js +46 -3
  254. package/dist/memory/journal/on-disk/retention.d.ts +5 -0
  255. package/dist/memory/journal/on-disk/retention.js +27 -2
  256. package/dist/memory/journal/on-disk/workspace-tiers.js +2 -0
  257. package/dist/memory/journal/session-end.d.ts +15 -1
  258. package/dist/memory/journal/session-end.js +38 -7
  259. package/dist/memory/project/artifact-root-resolver.js +33 -5
  260. package/dist/memory/project/artifact-root.d.ts +4 -3
  261. package/dist/memory/project/artifact-root.js +2 -2
  262. package/dist/memory/project/dir/reticle-dir.d.ts +14 -0
  263. package/dist/memory/project/dir/reticle-dir.js +23 -2
  264. package/dist/memory/project/link-directory.d.ts +15 -0
  265. package/dist/memory/project/link-directory.js +44 -0
  266. package/dist/memory/project/root-claims.d.ts +6 -0
  267. package/dist/memory/project/root-claims.js +39 -0
  268. package/dist/memory/project/session-root.d.ts +2 -0
  269. package/dist/memory/project/session-root.js +9 -1
  270. package/dist/memory/project/sync-status.d.ts +46 -0
  271. package/dist/memory/project/sync-status.js +135 -1
  272. package/dist/memory/recall/memory-tools.js +46 -3
  273. package/dist/memory/recall/platform-memory.d.ts +34 -0
  274. package/dist/memory/recall/platform-memory.js +139 -0
  275. package/dist/memory/recall/project-memory.js +36 -8
  276. package/dist/portal/bridge/bridge.d.ts +9 -5
  277. package/dist/portal/bridge/bridge.js +66 -23
  278. package/dist/portal/bridge/harness-request.d.ts +23 -0
  279. package/dist/portal/bridge/harness-request.js +27 -0
  280. package/dist/portal/bridge/wrong-path.d.ts +17 -0
  281. package/dist/portal/bridge/wrong-path.js +35 -0
  282. package/dist/portal/input/network-mock-tools.js +11 -2
  283. package/dist/portal/input/real-input.d.ts +2 -0
  284. package/dist/portal/input/real-input.js +13 -10
  285. package/dist/portal/pool/browser-pool.d.ts +48 -0
  286. package/dist/portal/pool/browser-pool.js +120 -2
  287. package/dist/portal/pool/context-permissions.d.ts +33 -0
  288. package/dist/portal/pool/context-permissions.js +33 -0
  289. package/dist/portal/pool/lease-marker-stamp.d.ts +23 -0
  290. package/dist/portal/pool/lease-marker-stamp.js +49 -0
  291. package/dist/portal/pool/playwright-launcher.d.ts +27 -5
  292. package/dist/portal/pool/playwright-launcher.js +59 -14
  293. package/dist/portal/pool/pool-contract.d.ts +21 -1
  294. package/dist/portal/session/agent-link.d.ts +8 -0
  295. package/dist/portal/session/agent-link.js +17 -0
  296. package/dist/portal/session/command-payload.js +6 -1
  297. package/dist/portal/session/daemon-answers.d.ts +3 -3
  298. package/dist/portal/session/daemon-answers.js +4 -2
  299. package/dist/portal/session/dev-server/dev-command.d.ts +9 -0
  300. package/dist/portal/session/dev-server/dev-command.js +27 -1
  301. package/dist/portal/session/facts/observed-state.d.ts +16 -18
  302. package/dist/portal/session/facts/observed-state.js +46 -3
  303. package/dist/portal/session/human/live-control.d.ts +9 -2
  304. package/dist/portal/session/human/live-control.js +12 -3
  305. package/dist/portal/session/live-control-tools.js +82 -13
  306. package/dist/portal/session/narration-args.d.ts +5 -0
  307. package/dist/portal/session/narration-args.js +17 -0
  308. package/dist/portal/session/no-session-diagnosis.d.ts +1 -1
  309. package/dist/portal/session/no-session-diagnosis.js +31 -9
  310. package/dist/portal/session/no-session-next-action.d.ts +20 -0
  311. package/dist/portal/session/no-session-next-action.js +134 -61
  312. package/dist/portal/session/no-session-watch.js +179 -22
  313. package/dist/portal/session/presence/session-lease.js +1 -1
  314. package/dist/portal/session/recorded-gaps.d.ts +97 -0
  315. package/dist/portal/session/recorded-gaps.js +251 -0
  316. package/dist/portal/session/session-health.d.ts +11 -0
  317. package/dist/portal/session/session-health.js +3 -1
  318. package/dist/portal/session/session-info.js +2 -1
  319. package/dist/portal/session/session-manager.d.ts +18 -0
  320. package/dist/portal/session/session-manager.js +54 -3
  321. package/dist/portal/session/session-successor.d.ts +8 -0
  322. package/dist/portal/session/session-successor.js +1 -1
  323. package/dist/portal/session/session.d.ts +15 -28
  324. package/dist/portal/session/session.js +60 -61
  325. package/dist/portal/session/timing/command-timeout.js +25 -1
  326. package/dist/portal/session/timing/wall-clock.d.ts +1 -1
  327. package/dist/portal/session/timing/wall-clock.js +1 -1
  328. package/dist/portal/session/zero-install-first-call.d.ts +31 -0
  329. package/dist/portal/session/zero-install-first-call.js +88 -0
  330. package/dist/start-options.d.ts +7 -1
  331. package/dist/start-wiring.d.ts +63 -0
  332. package/dist/start-wiring.js +169 -0
  333. package/dist/status-payload.d.ts +13 -1
  334. package/dist/status-payload.js +13 -1
  335. package/dist/surface/http-server.js +7 -1
  336. package/dist/surface/mcp/attach-memory.d.ts +1 -0
  337. package/dist/surface/mcp/attach-memory.js +12 -1
  338. package/dist/surface/mcp/mcp-proxy.d.ts +4 -0
  339. package/dist/surface/mcp/mcp-proxy.js +29 -8
  340. package/dist/surface/mcp/mcp.d.ts +23 -0
  341. package/dist/surface/mcp/mcp.js +34 -4
  342. package/dist/surface/mcp/proxy/drive-calls.d.ts +10 -0
  343. package/dist/surface/mcp/proxy/drive-calls.js +27 -0
  344. package/dist/surface/mcp/proxy/mcp-post-transport.js +5 -0
  345. package/dist/surface/mcp/server-instructions.js +22 -14
  346. package/dist/surface/mcp/shared-params.js +1 -1
  347. package/dist/surface/mcp/surface-vocabulary.d.ts +2 -0
  348. package/dist/surface/mcp/surface-vocabulary.js +1 -0
  349. package/dist/surface/tools/account-tool.d.ts +22 -0
  350. package/dist/surface/tools/account-tool.js +157 -0
  351. package/dist/surface/tools/act/act-danger.d.ts +11 -0
  352. package/dist/surface/tools/act/act-danger.js +38 -1
  353. package/dist/surface/tools/act/act-observation.d.ts +33 -0
  354. package/dist/surface/tools/act/act-observation.js +57 -0
  355. package/dist/surface/tools/act/act-preflight.js +25 -2
  356. package/dist/surface/tools/act/act-target.js +8 -3
  357. package/dist/surface/tools/act/resolve-target.d.ts +1 -1
  358. package/dist/surface/tools/act/resolve-target.js +18 -3
  359. package/dist/surface/tools/act/screen-request.d.ts +34 -0
  360. package/dist/surface/tools/act/screen-request.js +113 -0
  361. package/dist/surface/tools/act/sequence-grade.d.ts +8 -0
  362. package/dist/surface/tools/act/sequence-grade.js +13 -2
  363. package/dist/surface/tools/act-sequence-tool.js +136 -27
  364. package/dist/surface/tools/act-tools.d.ts +0 -9
  365. package/dist/surface/tools/act-tools.js +48 -34
  366. package/dist/surface/tools/agent/app-notes-learning.d.ts +7 -0
  367. package/dist/surface/tools/agent/app-notes-learning.js +80 -0
  368. package/dist/surface/tools/agent/app-notes.d.ts +4 -0
  369. package/dist/surface/tools/agent/app-notes.js +48 -0
  370. package/dist/surface/tools/agent/build-staleness.d.ts +7 -0
  371. package/dist/surface/tools/agent/build-staleness.js +62 -0
  372. package/dist/surface/tools/agent/compact-envelope.d.ts +80 -0
  373. package/dist/surface/tools/agent/compact-envelope.js +374 -0
  374. package/dist/surface/tools/agent/for-the-agent.d.ts +12 -0
  375. package/dist/surface/tools/agent/for-the-agent.js +44 -0
  376. package/dist/surface/tools/agent/notices.d.ts +50 -0
  377. package/dist/surface/tools/agent/notices.js +152 -0
  378. package/dist/surface/tools/agent/reteach.d.ts +11 -0
  379. package/dist/surface/tools/agent/reteach.js +50 -0
  380. package/dist/surface/tools/args/alias-args.d.ts +5 -0
  381. package/dist/surface/tools/args/alias-args.js +10 -0
  382. package/dist/surface/tools/args/confirm-dangerous-arg.d.ts +6 -0
  383. package/dist/surface/tools/args/confirm-dangerous-arg.js +6 -0
  384. package/dist/surface/tools/assert/assert-source.d.ts +15 -0
  385. package/dist/surface/tools/assert/assert-source.js +40 -0
  386. package/dist/surface/tools/assert/assert-verdict.js +25 -15
  387. package/dist/surface/tools/browser-tools.js +43 -1
  388. package/dist/surface/tools/chat-drives.d.ts +75 -0
  389. package/dist/surface/tools/chat-drives.js +265 -21
  390. package/dist/surface/tools/coverage-tools.d.ts +2 -10
  391. package/dist/surface/tools/coverage-tools.js +2 -53
  392. package/dist/surface/tools/dynamic-tools.js +29 -1
  393. package/dist/surface/tools/empty-session-list.d.ts +10 -0
  394. package/dist/surface/tools/empty-session-list.js +45 -5
  395. package/dist/surface/tools/error-recovery.d.ts +8 -0
  396. package/dist/surface/tools/error-recovery.js +69 -5
  397. package/dist/surface/tools/explore-tools.d.ts +23 -2
  398. package/dist/surface/tools/explore-tools.js +377 -74
  399. package/dist/surface/tools/feedback-tools.d.ts +2 -3
  400. package/dist/surface/tools/feedback-tools.js +4 -3
  401. package/dist/surface/tools/gap-novelty.d.ts +3 -1
  402. package/dist/surface/tools/gap-novelty.js +8 -1
  403. package/dist/surface/tools/harness-explore.d.ts +52 -73
  404. package/dist/surface/tools/harness-explore.js +177 -146
  405. package/dist/surface/tools/harness-gate.d.ts +88 -0
  406. package/dist/surface/tools/harness-gate.js +235 -0
  407. package/dist/surface/tools/harness-hunt.d.ts +43 -0
  408. package/dist/surface/tools/harness-hunt.js +215 -0
  409. package/dist/surface/tools/harness-plan.d.ts +5 -0
  410. package/dist/surface/tools/harness-plan.js +7 -0
  411. package/dist/surface/tools/harness-script.d.ts +22 -0
  412. package/dist/surface/tools/harness-script.js +256 -38
  413. package/dist/surface/tools/harness-tab-guard.d.ts +5 -0
  414. package/dist/surface/tools/harness-tab-guard.js +27 -0
  415. package/dist/surface/tools/harness-toolset.d.ts +8 -0
  416. package/dist/surface/tools/harness-toolset.js +27 -4
  417. package/dist/surface/tools/human-notes.d.ts +16 -0
  418. package/dist/surface/tools/human-notes.js +27 -0
  419. package/dist/surface/tools/invoke-tool.d.ts +5 -2
  420. package/dist/surface/tools/invoke-tool.js +220 -93
  421. package/dist/surface/tools/lease-hint.js +26 -5
  422. package/dist/surface/tools/lease-permissions.d.ts +33 -0
  423. package/dist/surface/tools/lease-permissions.js +73 -0
  424. package/dist/surface/tools/lease-readiness.d.ts +38 -0
  425. package/dist/surface/tools/lease-readiness.js +57 -0
  426. package/dist/surface/tools/lease-seed.d.ts +20 -0
  427. package/dist/surface/tools/lease-seed.js +45 -1
  428. package/dist/surface/tools/lease-tools.d.ts +10 -1
  429. package/dist/surface/tools/lease-tools.js +119 -69
  430. package/dist/surface/tools/live-call-text.js +2 -2
  431. package/dist/surface/tools/merge-tools.js +42 -2
  432. package/dist/surface/tools/merged-name-redirect.js +4 -0
  433. package/dist/surface/tools/next-step.d.ts +11 -1
  434. package/dist/surface/tools/next-step.js +73 -18
  435. package/dist/surface/tools/observe-tools.js +43 -5
  436. package/dist/surface/tools/platform-moment.d.ts +60 -0
  437. package/dist/surface/tools/platform-moment.js +132 -4
  438. package/dist/surface/tools/read-tools.js +65 -14
  439. package/dist/surface/tools/reticle-result.d.ts +120 -0
  440. package/dist/surface/tools/reticle-result.js +364 -0
  441. package/dist/surface/tools/tool-kit.d.ts +68 -2
  442. package/dist/surface/tools/tool-kit.js +73 -1
  443. package/dist/surface/tools/tools.js +25 -13
  444. package/dist/telemetry/account-envelope.d.ts +7 -0
  445. package/dist/telemetry/account-envelope.js +61 -0
  446. package/dist/telemetry/agent-client.d.ts +15 -0
  447. package/dist/telemetry/agent-client.js +57 -0
  448. package/dist/telemetry/app-instrumented.js +9 -2
  449. package/dist/telemetry/argument-shape.d.ts +7 -0
  450. package/dist/telemetry/argument-shape.js +86 -1
  451. package/dist/telemetry/automation-hint.d.ts +2 -3
  452. package/dist/telemetry/automation-hint.js +33 -8
  453. package/dist/telemetry/cli-telemetry.js +7 -2
  454. package/dist/telemetry/daemon-telemetry.js +3 -0
  455. package/dist/telemetry/error-fingerprint.d.ts +10 -1
  456. package/dist/telemetry/error-fingerprint.js +61 -5
  457. package/dist/telemetry/feedback-cli.d.ts +0 -13
  458. package/dist/telemetry/feedback-cli.js +0 -77
  459. package/dist/telemetry/feedback.d.ts +13 -0
  460. package/dist/telemetry/feedback.js +183 -17
  461. package/dist/telemetry/harness-run.d.ts +18 -0
  462. package/dist/telemetry/harness-run.js +80 -0
  463. package/dist/telemetry/hud-events.d.ts +16 -0
  464. package/dist/telemetry/hud-events.js +27 -0
  465. package/dist/telemetry/hud-metrics.d.ts +27 -6
  466. package/dist/telemetry/hud-metrics.js +99 -25
  467. package/dist/telemetry/init-telemetry.js +2 -2
  468. package/dist/telemetry/install-source.d.ts +13 -25
  469. package/dist/telemetry/install-source.js +44 -3
  470. package/dist/telemetry/mcp-connection.d.ts +0 -14
  471. package/dist/telemetry/mcp-connection.js +5 -1
  472. package/dist/telemetry/onboarding-firsts.d.ts +32 -0
  473. package/dist/telemetry/onboarding-firsts.js +81 -6
  474. package/dist/telemetry/platform-linked.d.ts +5 -0
  475. package/dist/telemetry/platform-linked.js +32 -0
  476. package/dist/telemetry/project-profile.js +5 -3
  477. package/dist/telemetry/proxy-telemetry.js +4 -1
  478. package/dist/telemetry/session-metrics.d.ts +15 -4
  479. package/dist/telemetry/session-metrics.js +88 -52
  480. package/dist/telemetry/telemetry.d.ts +26 -2
  481. package/dist/telemetry/telemetry.js +102 -21
  482. package/dist/telemetry/verification-of.d.ts +3 -1
  483. package/dist/telemetry/verification-of.js +12 -4
  484. package/dist/wire-journal.d.ts +2 -2
  485. package/dist/wire-journal.js +16 -5
  486. package/docs/README.md +2 -2
  487. package/docs/actions.mdx +6 -3
  488. package/docs/adapters.md +1 -1
  489. package/docs/agent-cheatsheet.md +24 -27
  490. package/docs/architecture.md +5 -5
  491. package/docs/autodrive.md +13 -12
  492. package/docs/benchmarks.md +5 -5
  493. package/docs/best-practices.mdx +27 -9
  494. package/docs/capabilities.mdx +14 -16
  495. package/docs/cli/affected.mdx +1 -1
  496. package/docs/cli/cloud.mdx +54 -75
  497. package/docs/cli/doctor.mdx +8 -3
  498. package/docs/cli/drive.mdx +12 -12
  499. package/docs/cli/feedback.mdx +3 -3
  500. package/docs/cli/gate.mdx +7 -2
  501. package/docs/cli/help.mdx +50 -55
  502. package/docs/cli/init.mdx +32 -15
  503. package/docs/cli/license.mdx +12 -8
  504. package/docs/cli/mcp.mdx +4 -4
  505. package/docs/cli/open.mdx +3 -3
  506. package/docs/cli/report.mdx +4 -2
  507. package/docs/cli/restart.mdx +2 -2
  508. package/docs/cli/rollback.mdx +14 -8
  509. package/docs/cli/serve.mdx +4 -4
  510. package/docs/cli/setup.mdx +23 -0
  511. package/docs/cli/status.mdx +13 -4
  512. package/docs/cli/stop.mdx +67 -8
  513. package/docs/cli/try.mdx +62 -0
  514. package/docs/cli/update.mdx +4 -3
  515. package/docs/cli/verify.mdx +17 -6
  516. package/docs/cli/version.mdx +3 -2
  517. package/docs/cli.mdx +110 -41
  518. package/docs/debugging.md +3 -3
  519. package/docs/deploy-checks.md +1 -1
  520. package/docs/desktop.mdx +5 -3
  521. package/docs/enterprise.md +11 -10
  522. package/docs/environment.mdx +5 -2
  523. package/docs/faq.mdx +3 -3
  524. package/docs/first-drive.md +5 -4
  525. package/docs/flows.md +35 -27
  526. package/docs/for-agents.md +4 -5
  527. package/docs/frameworks.mdx +32 -21
  528. package/docs/getting-started.md +66 -64
  529. package/docs/human-control.md +15 -14
  530. package/docs/index.mdx +15 -43
  531. package/docs/install-agentic.mdx +22 -37
  532. package/docs/install-manual.mdx +22 -12
  533. package/docs/instrumentation.mdx +5 -3
  534. package/docs/integration-patterns.md +7 -7
  535. package/docs/license-activation.mdx +1 -1
  536. package/docs/multi-agent-testing.md +24 -6
  537. package/docs/packages/babel-plugin.mdx +4 -2
  538. package/docs/packages/browser.mdx +16 -10
  539. package/docs/packages/core.mdx +12 -5
  540. package/docs/packages/electron.mdx +3 -2
  541. package/docs/packages/engine.mdx +1 -1
  542. package/docs/packages/eslint-plugin.mdx +18 -12
  543. package/docs/packages/next.mdx +8 -7
  544. package/docs/packages/open-verification.mdx +1 -1
  545. package/docs/packages/server.mdx +5 -5
  546. package/docs/packages/tauri.mdx +8 -8
  547. package/docs/packages/test.mdx +4 -10
  548. package/docs/packages/vite-plugin.mdx +11 -4
  549. package/docs/packages.mdx +11 -15
  550. package/docs/platform-integration.md +6 -5
  551. package/docs/predicates.mdx +40 -24
  552. package/docs/quickstart.mdx +58 -29
  553. package/docs/required-checks.md +8 -7
  554. package/docs/reticle-manual.md +15 -5
  555. package/docs/skill-file.mdx +17 -79
  556. package/docs/skill-setup.md +9 -9
  557. package/docs/skill.md +200 -0
  558. package/docs/system-map.md +7 -7
  559. package/docs/telemetry.md +22 -24
  560. package/docs/testing.md +4 -4
  561. package/docs/token-efficiency.md +12 -12
  562. package/docs/tools/act-and-wait.mdx +9 -2
  563. package/docs/tools/act-sequence.mdx +6 -7
  564. package/docs/tools/act.mdx +2 -2
  565. package/docs/tools/assert.mdx +18 -17
  566. package/docs/tools/console.mdx +9 -9
  567. package/docs/tools/inspect.mdx +16 -7
  568. package/docs/tools/look.mdx +24 -0
  569. package/docs/tools/navigate.mdx +5 -3
  570. package/docs/tools/network.mdx +2 -2
  571. package/docs/tools/observe.mdx +6 -6
  572. package/docs/tools/overview.mdx +34 -33
  573. package/docs/tools/query.mdx +5 -5
  574. package/docs/tools/session-and-feedback.mdx +13 -4
  575. package/docs/tools/sessions.mdx +8 -8
  576. package/docs/tools/snapshot.mdx +6 -5
  577. package/docs/tools/state.mdx +9 -9
  578. package/docs/tools/tools-and-run.mdx +26 -24
  579. package/docs/tools/verify.mdx +28 -0
  580. package/docs/tools/wait-for.mdx +8 -4
  581. package/docs/troubleshooting.mdx +21 -6
  582. package/docs/usage.md +51 -45
  583. package/docs/use-cases.mdx +3 -3
  584. package/docs/vs-chrome-devtools-mcp.mdx +9 -6
  585. package/docs/vs-playwright-mcp.mdx +3 -1
  586. package/docs/what-is-recorded.md +7 -5
  587. package/docs/what-is-reticle.mdx +2 -2
  588. package/docs/why-reticle.mdx +1 -1
  589. package/package.json +6 -5
  590. package/dist/command/cli/demo/demo-page.d.ts +0 -78
  591. package/dist/command/cli/demo/demo-page.js +0 -249
  592. package/dist/command/cli/demo/demo-run.d.ts +0 -38
  593. package/dist/command/cli/demo/demo-run.js +0 -138
  594. package/dist/judgement/hunt/hunt-report.d.ts +0 -49
  595. package/dist/judgement/hunt/hunt-report.js +0 -84
  596. package/dist/language/flows/buddy-status.d.ts +0 -25
  597. package/dist/language/flows/buddy-status.js +0 -32
  598. package/dist/language/flows/change/watch-batcher.d.ts +0 -18
  599. package/dist/language/flows/change/watch-batcher.js +0 -19
  600. package/dist/memory/cloud/harness-offer.d.ts +0 -44
  601. package/dist/memory/cloud/harness-offer.js +0 -145
  602. package/dist/surface/tools/feature-capture.d.ts +0 -151
  603. package/dist/surface/tools/feature-capture.js +0 -235
  604. package/dist/surface/tools/tool-hit-rate.d.ts +0 -87
  605. package/dist/surface/tools/tool-hit-rate.js +0 -90
  606. package/dist/telemetry/harness-drive.d.ts +0 -4
  607. package/dist/telemetry/harness-drive.js +0 -35
  608. package/dist/telemetry/identify.d.ts +0 -22
  609. package/dist/telemetry/identify.js +0 -73
  610. package/docs/cli/capsules.mdx +0 -70
  611. package/docs/cli/hunt.mdx +0 -73
  612. package/docs/cli/identify.mdx +0 -76
  613. package/docs/cli/kill.mdx +0 -91
  614. package/docs/cli/watch.mdx +0 -62
@@ -4,13 +4,15 @@ description: Connect a project in one command, then read runs and regressions fr
4
4
  icon: cloud
5
5
  ---
6
6
 
7
- From your app directory, `reticle connect --project "My App"` wires the app, opens browser sign-in approval if needed, links the named cloud project, and syncs the local history already on this machine. Run the [installer](/quickstart) once on the machine first. The commands below remain available when you need to sign in or link separately.
7
+ From your app directory, `reticle connect --project "My App"` wires the app, opens browser sign-in approval if needed, links the named cloud project, and syncs the local history already on this machine. Run the [installer](/quickstart) once on the machine first. `connect` is the one command for signing in, linking and choosing a project.
8
8
 
9
9
  ```bash
10
10
  npx @reticlehq/server connect --project "My App"
11
11
  ```
12
12
 
13
- Use `--url https://your-cloud-origin` for a self-hosted cloud. `connect` checks a saved sign-in against that exact host before reuse; if it has expired, the browser approval opens again. It mints or reuses a project-scoped key, so there is no key to paste. A newly wired app may have no run to sync yet: ask your agent to verify one flow and the linked daemon will sync the result. Run `reticle whoami` to check the binding and `reticle push` to send anything still pending.
13
+ If your daemon is not on the default port 4400, run `npx @reticlehq/server init --port <N>` first: `connect` takes no `--port`, and the `init` it runs for an unwired app uses the default.
14
+
15
+ Use `--url https://your-cloud-origin` for a self-hosted cloud. `connect` checks a saved sign-in against that exact host before reuse; if it has expired, the browser approval opens again. It mints or reuses a project-scoped key, so there is no key to paste. The browser asks you to sign in, or to create a free account at app.reticle.sh. A new account gets 10 free credits to try Harness; adding a card starts a 14-day trial with 500 credits, and the paid plan includes 1,000 credits per seat each month. Harness drives and chat checks spend credits; storing and syncing runs is free. What syncs, and how to switch each part off, is in [What is recorded](/what-is-recorded). A newly wired app may have no run to sync yet: ask your agent to verify one flow and the linked daemon will sync the result. Run `reticle status` to check who is signed in and whether this folder is linked, and `reticle sync` to send anything still pending.
14
16
 
15
17
  The other cloud commands are thin clients over the `/v1` API. Their logic is server-side.
16
18
 
@@ -18,82 +20,41 @@ The other cloud commands are thin clients over the `/v1` API. Their logic is ser
18
20
 
19
21
  | Path | Contents | Secret |
20
22
  | --- | --- | --- |
21
- | `~/.reticle/session.json` | `{ url, token, orgName }` from `reticle login` | Yes |
22
- | `~/.reticle/credentials.json` | Project-scoped API keys from `reticle link`, keyed by `projectId` | Yes |
23
+ | `~/.reticle/session.json` | `{ url, token, orgName }` from `reticle connect` | Yes |
24
+ | `~/.reticle/credentials.json` | Project-scoped API keys from `reticle connect`, keyed by `projectId` | Yes |
23
25
  | `<repo>/.reticle/cloud.json` | `{ projectId, projectName, url, sync, verify }`. The non-secret binding | No, commit it |
24
26
 
25
27
  Auth for any command is `RETICLE_API_KEY` from the environment (the agent path) if set, otherwise the login token. `RETICLE_CLOUD_URL` (or its short form `RETICLE_URL`) overrides the endpoint; without it, a command uses the saved session's host, and otherwise the hosted service, `https://app.reticle.sh`.
26
28
 
27
29
  ## In CI
28
30
 
29
- CI needs `RETICLE_API_KEY` and nothing else: no `login`, no `link`. Commit `.reticle/cloud.json`, store the key as a secret, and the daemon and `reticle push` sync to the project the binding names. A key stored in `credentials.json` wins over the environment when both exist.
31
+ CI needs `RETICLE_API_KEY` and nothing else: no `connect`. Commit `.reticle/cloud.json`, store the key as a secret, and the daemon and `reticle sync` sync to the project the binding names. A key stored in `credentials.json` wins over the environment when both exist.
30
32
 
31
33
  The environment key is only sent to the host it belongs to: `RETICLE_CLOUD_URL` when set, otherwise the hosted service. A repo linked to a self-hosted install therefore also needs `RETICLE_CLOUD_URL` set to that install in CI. A repo with no `cloud.json` and a key in the environment syncs to the hosted service, or to `RETICLE_CLOUD_URL`.
32
34
 
33
35
  ## The commands
34
36
 
35
- ### `reticle login`
37
+ ### `reticle connect`
36
38
 
37
39
  ```bash
38
- npx @reticlehq/server login # browser device flow (the default)
39
- npx @reticlehq/server login --email you@acme.com # headless: requests a code
40
- npx @reticlehq/server login --email you@acme.com --code 123456 # headless: exchanges it
41
- npx @reticlehq/server login --email you@acme.com --org "Acme" # --org is consulted only for a brand new account
42
- ```
43
-
44
- With no `--email`, it runs a browser device flow like `gh auth login`: fetch a device and user code, open the browser to approve, poll until confirmed. With `--email` it keeps the two-step code path for CI and servers, because it proves you own the inbox before handing out a session. A local cloud whose dev mailer cannot deliver echoes the code back and completes in one command.
45
-
46
- ### `reticle logout`
47
-
48
- Empties `session.json`. Per-project keys in `credentials.json` stay. Prints `{ "loggedOut": true }`.
49
-
50
- ### `reticle whoami`
51
-
52
- The one call to make when you do not know your state. Real capture:
53
-
54
- ```json
55
- {
56
- "loggedInAs": "acme",
57
- "repo": {
58
- "attached": false,
59
- "projectId": null,
60
- "url": null,
61
- "sync": { "runs": true, "memory": true, "flows": true },
62
- "verify": "local"
63
- }
64
- }
40
+ npx @reticlehq/server connect [--project <name|id>] [--workspace <name|id>] [--url <cloud origin>] [--no-install]
65
41
  ```
66
42
 
67
- An unattached repo also gets a next-step nudge on stderr, telling you to run `reticle link`:
68
-
69
- ```
70
- → this repo is not attached ... run `reticle link`
71
- ```
43
+ Signs in if needed (a browser device flow like `gh auth login`: approve in the browser, the CLI polls until confirmed), then binds this repository to a cloud project and sends local history. It **mints** a project-scoped key, so there is nothing to paste; with `RETICLE_API_KEY` already set, it resolves that key's project instead. `--project` accepts a slug id or a display name, and creates the project when no project has that name. Omitted, the project is named after the `projectId` in `.reticle.json`, else after this folder. `--workspace` picks the workspace to link in when you belong to more than one. `--no-install` is passed to the `init` it runs for an unwired app. Writes `cloud.json` and the key.
72
44
 
73
- `whoami` exits `0` either way. Throughout this page, the punctuation joining the two halves of a message is shown as `...`.
45
+ `reticle login`, `reticle link` and `reticle project` are the old spellings. They still work for one release and print one line naming `connect`. To sign in without a browser (an agent, a server), `login` keeps a two-step email path: `reticle login --email <e> [--org <name>]` mails a 6-digit code, then `reticle login --email <e> --code <123456>` signs in and links this repo. For CI, use `RETICLE_API_KEY` rather than any sign-in.
74
46
 
75
- ### `reticle link`
47
+ ### `reticle logout`
76
48
 
77
49
  ```bash
78
- npx @reticlehq/server link [--project <name|id>]
50
+ npx @reticlehq/server logout [--url <cloud origin>]
79
51
  ```
80
52
 
81
- Binds this repository to a cloud project. With a login token it **mints** a project-scoped key, so there is nothing to paste. With `RETICLE_API_KEY` already set, it resolves that key's project instead. `--project` accepts a slug id or a display name; omitted, it uses the `default` project. Writes `cloud.json` and the key.
82
-
83
- ### `reticle project`
53
+ Signs out of ONE host. Which host: `--url`, else `RETICLE_CLOUD_URL`, else the active session. Every other host stays signed in, and per-project keys in `credentials.json` stay. Prints `{ "loggedOut": true, "url": "…" }`, naming the host it signed out of.
84
54
 
85
- ```bash
86
- npx @reticlehq/server project ls
87
- npx @reticlehq/server project create "My App"
88
- npx @reticlehq/server project rename <projectId> "New name"
89
- npx @reticlehq/server project rm <projectId>
90
- ```
55
+ ### Who am I: `reticle status`
91
56
 
92
- `rename` and `rm` work but are missing from the top-level `reticle help` block, which lists only `<ls|create <name>>`. The command's own usage error names all four. Missing or malformed arguments exit `2`:
93
-
94
- ```
95
- reticle: usage: reticle project <ls|create <name>|rename <id> <name>|rm <id>>
96
- ```
57
+ [`reticle status`](/cli/status) says who you are signed in as and whether this folder is linked to a cloud project, beside the daemon and session facts. The account half reads local files only and makes no call to the cloud. `reticle whoami` is the old spelling; it still works for one release and prints one line naming `status`.
97
58
 
98
59
  ### `reticle config`
99
60
 
@@ -104,45 +65,64 @@ npx @reticlehq/server config [--runs on|off] [--memory on|off] [--flows on|off]
104
65
  Edits `.reticle/cloud.json` in place. Any value other than `on` or `off` (or `local` or `server` for `--verify`) exits `2`. Requires the repo to be linked; run in an unlinked repo it exits `2` before it looks at the flags at all:
105
66
 
106
67
  ```
107
- reticle: no .reticle/cloud.json here ... run `reticle link` first
68
+ reticle: no .reticle/cloud.json here ... run `reticle connect` first
108
69
  ```
109
70
 
110
- ### `reticle push`
71
+ ### `reticle sync`
111
72
 
112
- Sends local run artifacts from `.reticle` to the linked project, honoring the sync policy. With `sync.runs` off it does nothing and says so. Prints `{ ok, project, sent, pulled }`, where `sent` carries the accepted counts and, when the server refused anything, a `rejected` array naming each run's index and reason and a `refused` array for flows, capsules and derived records. `sent.records` lists only the records the server accepted.
73
+ Sends local run artifacts from `.reticle` to the linked project, honoring the sync policy, and collects decisions made on the dashboard. Each switch removes only its own part: with `sync.runs` off no runs are sent, but flows and records still go unless they are off too. Prints `{ ok, project, sent, pulled }`, where `sent` carries the accepted counts and, when the server refused anything, a `rejected` array naming each run's index and reason and a `refused` array for flows, capsules and derived records. `sent.records` lists only the records the server accepted.
113
74
 
114
75
  Runs go up in batches, so a large backlog is never one oversized request.
115
76
 
77
+ `reticle push` is the old name; it still works for one release and prints one line naming `sync`. Add `--watch` to keep syncing: it runs one cycle, waits, and runs the next, until you stop it with `Ctrl+C`. The wait is 60 seconds by default; set `RETICLE_SYNC_INTERVAL_MS` to change it. Add `--move-history` to also send the runs, flows and records made under this folder's previous link, after it was linked to another workspace.
78
+
79
+ ```bash
80
+ npx @reticlehq/server sync --watch
81
+ ```
82
+
116
83
  What the platform cannot read is not sent at all, and a `notSent` array says why: a record kind an older platform does not know yet (this one alone leaves `ok` true), or a flow or run in a file version it does not read. Sending those would only be refused again on every cycle.
117
84
 
118
- **A rejection is a failed push.** If the server refuses any artifact, `ok` is `false` and the command exits `1`, even when other artifacts in the same bundle landed. The reason is kept as `sync.lastError` in `reticle whoami`, and the background daemon logs it once, until a cycle refuses nothing. A refused run is not offered again until its file changes or the platform reports that it reads more: until then it is listed under `notRetried`, and the summary reads `refused, not retried: N run(s) (reason)`. A refused artifact never reaches the dashboard and is re-offered on every cycle, so partial loss is still loss. `ok: true` and exit `0` mean everything offered was accepted, which includes the common case of a repo that was already up to date. The accepted counts still report what did land, so a partial push is visible as one.
85
+ **A rejection is a failed sync.** If the server refuses any artifact, `ok` is `false` and the command exits `1`, even when other artifacts in the same bundle landed. The reason is kept as the last sync error, which `reticle status` reports, and the background daemon logs it once, until a cycle refuses nothing. A refused run is not offered again until its file changes or the platform reports that it reads more: until then it is listed under `notRetried`, and the summary reads `refused, not retried: N run(s) (reason)`. A refused artifact never reaches the dashboard and is re-offered on every cycle, so partial loss is still loss. `ok: true` and exit `0` mean everything offered was accepted, which includes the common case of a repo that was already up to date. The accepted counts still report what did land, so a partial sync is visible as one.
119
86
 
120
87
  ### `reticle runs`
121
88
 
122
89
  The linked project's recent run artifacts. The key scopes the query server-side.
123
90
 
124
- ### `reticle regression`
91
+ `reticle runs <runId>` reads one run, which is how to get back a Harness drive whose local `.reticle/runs/<runId>.drive.json` is gone. It exits `1` with "not synced yet, or not found" when the platform does not have it.
92
+
93
+ ### `reticle runs regression`
125
94
 
126
- The CI gate: which flows broke relative to before. **Exits `3`** when any flow regressed, which is the whole point of it being a separate command.
95
+ Which flows broke relative to before. **Exits `3`** when any flow regressed. [`reticle gate`](/cli/gate) checks the same thing in a linked repo and exits `3` too, so CI needs only the gate.
127
96
 
128
- ### `reticle share`
97
+ ### `reticle runs share`
129
98
 
130
99
  ```bash
131
- npx @reticlehq/server share <runId>
100
+ npx @reticlehq/server runs share <runId>
132
101
  ```
133
102
 
134
- Mints a public proof link for one run. A missing `runId` exits `2`:
103
+ Mints a public proof link for one run. A missing `runId` exits `2`.
135
104
 
105
+ ### `reticle runs issues`
106
+
107
+ ```bash
108
+ npx @reticlehq/server runs issues
109
+ npx @reticlehq/server runs issues --fix <fingerprint>
136
110
  ```
137
- reticle: usage: reticle share <runId>
138
- ```
111
+
112
+ The triage queue from the dashboard. `--fix <fingerprint>` prints that one issue's fix prompt as bare text on stdout, so it can be piped straight into an agent. An unknown fingerprint exits `2`; an issue with no suggested fix prints nothing on stdout and exits `4`.
113
+
114
+ ### `reticle runs memory`
115
+
116
+ What the linked project has learned, scoped to the project this folder is linked to. `--subject <name>` narrows it to one area. If the response cannot be shown to be about this project, it prints nothing on stdout and exits `1`.
117
+
118
+ `reticle regression`, `reticle share`, `reticle issues` and `reticle memory` are the old spellings. They still work for one release, with the same exit codes, and print one line naming the `runs` form.
139
119
 
140
120
  ## When the repo is not attached
141
121
 
142
- `push`, `runs` and `regression` all need a project to talk to. Without one they exit `1` with the same line on stderr, measured:
122
+ `sync` and every `runs` command need a project to talk to. Without one they exit `1` with the same line on stderr, measured:
143
123
 
144
124
  ```
145
- reticle: cloud not attached here ... run `reticle link` (or set RETICLE_API_KEY)
125
+ reticle: cloud not attached here: run `reticle connect`, or set RETICLE_API_KEY
146
126
  ```
147
127
 
148
128
  ## Exit codes
@@ -150,18 +130,17 @@ reticle: cloud not attached here ... run `reticle link` (or set RETICLE_API_KEY)
150
130
  | Code | Meaning |
151
131
  | --- | --- |
152
132
  | `0` | Success |
153
- | `1` | The API call failed, the repository is not attached where attachment is required, or `push` had an artifact refused |
133
+ | `1` | The API call failed, the repository is not attached where attachment is required, or `sync` had an artifact refused |
154
134
  | `2` | Usage error, or not signed in and no `RETICLE_API_KEY` |
155
- | `3` | `regression` only: at least one flow broke |
135
+ | `3` | `runs regression` only: at least one flow broke |
136
+ | `4` | `runs issues --fix` only: that issue carries no suggested fix |
156
137
 
157
138
  Output is pretty-printed JSON on stdout. Errors and next-step nudges go to stderr, so an agent parsing stdout is unaffected.
158
139
 
159
140
  ## Worked example
160
141
 
161
142
  ```bash
162
- npx @reticlehq/server login
163
- npx @reticlehq/server project create "Checkout"
164
- npx @reticlehq/server link --project "Checkout"
165
- npx @reticlehq/server verify http://localhost:4173 # runs auto-push once linked
166
- npx @reticlehq/server regression # exit 3 fails the pipeline
143
+ npx @reticlehq/server connect --project "Checkout" # signs in, creates the project if needed, links
144
+ npx @reticlehq/server verify http://localhost:4173 # runs sync automatically once linked
145
+ npx @reticlehq/server runs regression # exit 3 fails the pipeline
167
146
  ```
@@ -14,19 +14,21 @@ npx @reticlehq/server doctor [--port N]
14
14
 
15
15
  | Flag | Type | Default | What it does |
16
16
  | --- | --- | --- | --- |
17
- | `--port N` | number | `4400` (or `RETICLE_PORT`, or the port in `.reticle.json`) | Which bridge port to diagnose |
17
+ | `--port N` | number | `RETICLE_PORT`, else the port in `.reticle.json`, else the daemon already serving this project, else `4400` | Which bridge port to diagnose |
18
18
 
19
19
  ## What it prints
20
20
 
21
- Human-readable lines on stdout, not the JSON log. Real capture:
21
+ Human-readable lines on stdout, not the JSON log. A healthy setup (rows that print only on a condition are absent):
22
22
 
23
23
  ```
24
24
  reticle doctor
25
25
  node v22.14.0
26
26
  chromium ✓ installed (chromium-1234)
27
- daemon ✓ running on :4400 (pid 72698, v2.8.0)
27
+ daemon ✓ running on :4400 (pid 72698, v3.7.0)
28
28
  sessions ✓ 1 page connected
29
29
  bridge port 4400 (your app must dial THIS port, not your dev-server port)
30
+ agent link ✓ an MCP client attached here and called tools before (a record, not a live check)
31
+ project ✓ wired here (my-app)
30
32
  daemon log /Users/you/.reticle/daemon-4400.log
31
33
  tracing RETICLE_TRACE=1 on the daemon for per-stage timings in that log
32
34
  ```
@@ -56,9 +58,12 @@ When nothing has connected, the `sessions` line fails and the daemon's own diagn
56
58
  | `bridge port` | The port your app must dial, spelled out because mixing it up with the dev server port is the most common setup failure |
57
59
  | `port check` | Only when your project's configured port disagrees with the one the daemon is on. Prints the mismatch rather than leaving you to spot it across two lines |
58
60
  | `sibling` | Only when a well-known Reticle port other than this daemon's has a listener. An observation, not a diagnosis: that listener may or may not be related |
61
+ | `project` | Whether the app in this folder is wired: a `.reticle.json` with a readable `projectId`, or an app that has connected here before. Everything above can be green in a project that never ran `init` |
59
62
  | `daemon log` | Where the structured daemon log lives |
60
63
  | `tracing` | How to turn that log into a per-stage trace |
61
64
  | `desktop` | Only on a desktop project. Every Electron and Tauri misconfiguration here fails silently, so it is diagnosed explicitly |
65
+ | `coverage` | Only with a connected app. What Reticle sees in it, out of eight capabilities: what is missing, what is not seen yet, and, once a verdict recorded a gap, a prompt to paste into your coding agent |
66
+ | `unsynced` | Only when a project folder holds runs the platform never got. Names the folder and the command that sends them, usually `reticle connect` run there |
62
67
 
63
68
  ## The chromium line
64
69
 
@@ -12,13 +12,13 @@ npx @reticlehq/server drive <url> [--headless] [--headed]
12
12
 
13
13
  ## Arguments and flags
14
14
 
15
- | Argument | Type | Default | What it does |
16
- | ------------ | -------------------------------- | ------------------------ | ----------------- |
17
- | `url` | string, positional, **required** | none | The page to drive |
18
- | `--headed` | boolean | on by default outside CI | Show the browser |
19
- | `--headless` | boolean | on when `CI` is set | Hide it |
15
+ | Argument | Type | Default | What it does |
16
+ | --- | --- | --- | --- |
17
+ | `url` | string, positional, **required** | none | The page to drive |
18
+ | `--headed` | boolean | on by default outside CI | Show the browser |
19
+ | `--headless` | boolean | on when `CI` or `RETICLE_HEADLESS` is set, or on Linux with no display | Hide it |
20
20
 
21
- `drive` is the one interactive command in the family, so it is the one that shows the browser by default. `serve`, `mcp` and the internal daemon own the pooled browser behind leases, which is batch work, and hide theirs.
21
+ `serve` and `mcp` show their browser by default too, so you can watch your agent's run; `--headless` hides it. `restart` always starts its daemon headless.
22
22
 
23
23
  ## What it prints
24
24
 
@@ -30,7 +30,7 @@ Omitting the URL is a usage error. Real capture, with the usage block that follo
30
30
  {"t":"2026-08-15T18:43:06.977Z","event":"reticle_usage_error","message":"drive needs a url"}
31
31
  drive needs a url
32
32
 
33
- usage: npx @reticlehq/server <command> (or `reticle <command>` once the bin is on your PATH)
33
+ usage: reticle <command> (or npx @reticlehq/server <command>)
34
34
  ...
35
35
  ```
36
36
 
@@ -42,10 +42,10 @@ usage: npx @reticlehq/server <command> (or `reticle <command>` once the bin i
42
42
 
43
43
  ## Exit codes
44
44
 
45
- | Code | Meaning |
46
- | ---- | --------------------------------------------------------------------- |
47
- | `0` | Running in the foreground, or attached with a connected session |
48
- | `1` | No URL, an unknown flag, the engine failed to start, or attach failed |
45
+ | Code | Meaning |
46
+ | --- | --- |
47
+ | `0` | Running in the foreground, or attached with a connected session |
48
+ | `1` | No URL, an unknown flag, the engine failed to start, attach failed, or the attached tab never connected |
49
49
 
50
50
  ## When a daemon already has the port
51
51
 
@@ -66,7 +66,7 @@ attached to the Reticle daemon on :4497 ... it is driving http://localhost:5177/
66
66
 
67
67
  That session lives in the daemon, so the tools your agent already has open can address it by id. You do **not** need `reticle stop` first, and should not use it: the MCP proxy respawns a daemon as soon as the next tool call arrives, which is a race a manual `stop` loses.
68
68
 
69
- Attaching means the browser is the daemon's pooled, headless one, so `--headed` cannot apply. To watch a browser instead, drive on a port no daemon owns (`RETICLE_PORT=4460`).
69
+ Attaching means the browser is the daemon's pooled one, shown or hidden as that daemon was started, so `--headed` cannot apply. To watch a browser instead, drive on a port no daemon owns (`RETICLE_PORT=4460`).
70
70
 
71
71
  <Note>
72
72
  If the port is held by something that is **not** a Reticle daemon, `drive` refuses and names the
@@ -8,7 +8,7 @@ icon: comment
8
8
 
9
9
  ```bash
10
10
  npx @reticlehq/server feedback [--rating 1-5] [--bug] "what worked, what didn't"
11
- npx @reticlehq/server feedback --agent --kind <bug|gap|ambiguity|feature_request|improvement> "what happened"
11
+ npx @reticlehq/server feedback --agent --kind <bug|gap|ambiguity|feature_request|improvement|experience> "what happened"
12
12
  ```
13
13
 
14
14
  The `--agent` form is for an agent that cannot reach the `reticle_session { action: "feedback" }` tool: during `init`, while instrumentation is half wired, or when the daemon will not start. Those are the reports that are hardest to hear and most needed, because every other path requires the tool surface to already work.
@@ -29,12 +29,12 @@ Everything that is not a flag or a flag's value becomes the message, joined with
29
29
  The payload is printed **before** it is sent, every time. A channel that carries free text and does not show you what it sends is asking for trust it has not earned.
30
30
 
31
31
  ```
32
- sending {"source":"human","kind":"experience","stack":"vite","runtime":"web"}
32
+ sending {"stack":"vite","version":"3.7.0","os":"darwin","ci":false}
33
33
  redacted email (removed before sending)
34
34
  thanks your feedback is in. it genuinely changes what gets built next.
35
35
  ```
36
36
 
37
- `not sent` replaces the last line when the send failed or telemetry is off, and names the reason. Humans who have never identified also get an offer of a reply route, printed after the receipt rather than as a prompt.
37
+ `not sent` replaces the last line when the send failed or telemetry is off, and names the reason. Nothing is lost either way: a failed send is kept on disk and retried, and with telemetry off the report is written to disk instead.
38
38
 
39
39
  Run with no message and no rating, it prints usage and exits `1`. Real capture:
40
40
 
package/docs/cli/gate.mdx CHANGED
@@ -7,7 +7,7 @@ icon: shield-halved
7
7
  `reticle gate` is what makes verification unavoidable. It computes the [affected](/cli/affected) flows, looks for a passing artifact for each, and fails the command if any is missing. An agent that edits a covered file cannot call itself finished without re-verifying.
8
8
 
9
9
  ```bash
10
- npx @reticlehq/server gate [--since <ref>] [--accept-coverage] [file...]
10
+ npx @reticlehq/server gate [--since <ref>] [--accept-coverage] [--hook] [file...]
11
11
  ```
12
12
 
13
13
  ## Arguments and flags
@@ -17,6 +17,9 @@ npx @reticlehq/server gate [--since <ref>] [--accept-coverage] [file...]
17
17
  | `file...` | strings, positional | none | Explicit changed files |
18
18
  | `--since <ref>` | string | `HEAD` when no files are given | Also include files git reports as changed since this ref |
19
19
  | `--accept-coverage` | boolean | off | Accept today's coverage levels as the new best before judging. Use it when a drop was intended, such as a control you removed on purpose. The run reports what it accepted as `coverageAccepted` |
20
+ | `--hook` | boolean | off | For an agent's Stop hook. A failure or a known regression also prints a short prose summary for a human; exit `2` (no saved flows) prints nothing extra. A refused platform credential does not fail the gate in this mode |
21
+
22
+ In hook mode only, setting `RETICLE_SKIP_GATE` turns a failing gate into exit `0` and prints that the change is unverified.
20
23
 
21
24
  ## What blocks and what does not
22
25
 
@@ -53,7 +56,9 @@ One `reticle_gate` line. Real capture from this repository, with the flow lists
53
56
  | Code | Meaning |
54
57
  | --- | --- |
55
58
  | `0` | Every affected, non-flaky flow has a passing artifact, nothing was weakened or deleted, and coverage held |
56
- | `1` | Something is uncovered, downgraded, deleted, unflowed, unexecuted, or coverage fell. Also `1` on any internal fault: the gate fails closed |
59
+ | `1` | Something is uncovered, downgraded, deleted, unflowed, unexecuted, or coverage fell. Also `1` on any internal fault, and, outside `--hook`, when the linked platform refused the project's credential: the gate fails closed |
60
+ | `2` | No saved flows, so nothing was checked. This is not a failure of the change: the gate says how to record one |
61
+ | `3` | The linked project's dashboard knows a flow that passed before and is broken now, the same code `reticle runs regression` exits with. Checked only when the repo is linked; offline, it changes nothing |
57
62
 
58
63
  Measured on this repository, `npx @reticlehq/server gate --since HEAD~1` exited `1` with the output above: 0 of 47 flows covered, 39 uncovered and 8 quarantined.
59
64
 
package/docs/cli/help.mdx CHANGED
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  title: reticle help
3
- description: Print the complete Reticle command grammar, every command and every flag, on one screen.
3
+ description: Print the short, grouped list of Reticle commands; every command with help all; one command in detail with --help.
4
4
  icon: circle-question
5
5
  ---
6
6
 
7
- `reticle help` prints the whole usage block to stdout and exits `0`.
7
+ `reticle help` prints a short list of the commands most people need, grouped, one line each, to stdout and exits `0`.
8
8
 
9
9
  ```bash
10
10
  npx @reticlehq/server help
@@ -14,70 +14,65 @@ npx @reticlehq/server -h
14
14
 
15
15
  All three are the same command.
16
16
 
17
- <Warning>
18
- There is no per-command help. `reticle init --help` is not a help request, it is an unknown
19
- argument: the parser rejects it, prints `unknown argument '--help'` followed by this same block,
20
- and exits `1`. This page and the rest of this section are the per-command reference.
21
- </Warning>
17
+ | You type | You get |
18
+ | --- | --- |
19
+ | `reticle help` | The short list, grouped |
20
+ | `reticle help all` (or `--help all`) | Every command, one line each, including the ones the short list leaves out |
21
+ | `reticle <command> --help` (or `reticle help <command>`) | That command's flags and detail |
22
22
 
23
- ## What it prints
23
+ `--help` works anywhere on the line, so `reticle init --help` is a help request, never an unknown argument, and never runs the command.
24
24
 
25
- Real capture, in full:
25
+ ## The short list
26
26
 
27
+ ```text
28
+ usage: reticle <command> (or npx @reticlehq/server <command>)
29
+
30
+ Get started
31
+ init Wire Reticle into the app in this folder
32
+ connect Sign in and link this project to the dashboard
33
+ try Watch Reticle drive a URL once and say which journeys work
34
+
35
+ Check your app
36
+ verify Check the saved flows against the running app; exit 0 means pass
37
+ gate Fail unless passing checks cover the flows your changes touch
38
+
39
+ Reticle on this machine
40
+ status Is Reticle running, is your app connected, are you signed in
41
+ doctor Find what is wrong with the setup, and what is missing from coverage
42
+ open Open the app in your browser, or reuse a tab that is already connected
43
+ stop Stop Reticle; --force frees its port even without a recorded pid
44
+ restart Stop Reticle, then start it and wait until it is listening
45
+ update Install the latest version and restart
46
+
47
+ Account
48
+ logout Sign out (of one host; others stay signed in)
49
+ feedback Tell us what worked and what didn't; prints exactly what it sends
50
+ telemetry Show or change anonymous usage metrics
51
+
52
+ All commands: reticle help all One command: reticle <command> --help
27
53
  ```
28
- usage: npx @reticlehq/server <command> (or `reticle <command>` once the bin is on your PATH)
29
-
30
- reticle init [--dry-run] [--port N] [--no-mcp] [--no-install] [--app <dir>] (wire Reticle into the project in this directory)
31
- --app picks WHICH app in a monorepo, when several are found
32
- --no-mcp skips MORE than the server registration: also the agent rule files
33
- (CLAUDE.md / AGENTS.md / .cursor) and the /reticle command, because all three
34
- only make sense once the tools are reachable.
35
- reticle serve [--port N] [--drive <url>] [--headless] [--http] [--http-port N] [--http-token T]
36
- reticle stop [--port N] [--quiet] (stop the daemon we started, by its recorded pid)
37
- reticle kill [--port N] [--force] (free the port by its LISTENER, never the agent's mcp proxy)
38
- reticle restart [--port N] [--force] (kill, then start a daemon and wait for a real bind)
39
- reticle status [--port N]
40
- reticle doctor [--port N] (one command to diagnose setup: Chromium, daemon, port)
41
- reticle open [url] [--port N] (show the app: reuse the connected tab, else open one)
42
- reticle verify <url> [--headed] [--timeout N] [--storage-state <file>] (one-shot: drive the URL, verify saved flows, exit 0=pass)
43
- reticle affected [--since <ref>] [file...] (which saved flows must re-verify for the changed files)
44
- reticle gate [--since <ref>] [file...] (exit non-zero unless passing artifacts cover the affected flows)
45
- reticle watch [url] (on save, report which saved flows must re-verify)
46
- reticle drive <url> [--headless] (foreground mode, for debugging)
47
- reticle mcp [--port N] [--drive <url>] [--headless] (MCP stdio proxy; auto-starts daemon if needed)
48
- reticle update (install the latest server version and restart)
49
- reticle rollback (restore the previous server version and restart)
50
- reticle license (show enterprise license status: active | eval | missing)
51
- reticle telemetry [status|enable|disable] (anonymous usage metrics; status shows what's sent + the policy)
52
- reticle feedback [--rating 1-5] [--bug] "message" (tell us what worked and what didn't; prints exactly what it sends)
53
- reticle feedback --agent --kind <bug|gap|ambiguity|feature_request|improvement> "message"
54
- (agents: file from anywhere, including a setup that never finished)
55
- reticle identify --context company|side_project|open_source|learning [--company N] [--email E] [--forget]
56
- (OPT-IN: tell us who you are, e.g. for support or an enterprise trial)
57
-
58
- Cloud (link this project to Reticle Cloud; runs/flows recorded on the dashboard):
59
- reticle login --email <e> [--code <c>] [--org <n>] (sign in: mails a code, then exchanges it)
60
- reticle link [--project <name|id>] (bind this repo: mints a scoped key, writes .reticle/cloud.json)
61
- reticle whoami (who am I signed in as, and is this repo attached?)
62
- reticle project <ls|create <name>> (list or create cloud projects)
63
- reticle config [--runs on|off] [--memory on|off] [--flows on|off] [--verify local|server]
64
- reticle push (send local run artifacts to the dashboard)
65
- reticle runs | regression | share <runId> (read cloud state; regression exits 3 if any flow broke)
66
-
67
- 'drive' shows the browser; everything else is hidden (serve/mcp own the pool behind leases, replay
68
- and the spec runner: batch work). --headed opts any of them in, --headless hides drive, CI hides it.
69
- ```
54
+
55
+ | Group | Commands |
56
+ | ----------------------- | ------------------------------------------------------- |
57
+ | Get started | `init`, `connect`, `try` |
58
+ | Check your app | `verify`, `gate` |
59
+ | Reticle on this machine | `status`, `doctor`, `open`, `stop`, `restart`, `update` |
60
+ | Account | `logout`, `feedback`, `telemetry` |
61
+
62
+ ## Only in `help all`
63
+
64
+ `sync`, `runs`, `config`, `affected`, `report`, `context`, `mcp`, `serve`, `drive`, `setup`, `license`, `rollback` and `version`. They all work the same as always; they are left out of the short list because most people never type them. See the [CLI reference](/cli) for one row per command, including the renamed and removed ones.
70
65
 
71
66
  ## Errors print it too
72
67
 
73
- Any usage error prints the offending thing first, then this same block on stderr, and exits `1`:
68
+ Any usage error prints the offending thing first, then the short list on stderr, and exits `1`:
74
69
 
75
- ```
70
+ ```text
76
71
  {"t":"2026-08-15T18:42:48.476Z","event":"reticle_usage_error","message":"unknown command 'nonsense-cmd'"}
77
72
  unknown command 'nonsense-cmd'
78
73
 
79
- usage: npx @reticlehq/server <command> (or `reticle <command>` once the bin is on your PATH)
80
- ... the whole block above ...
74
+ usage: reticle <command> (or npx @reticlehq/server <command>)
75
+ ... the short list ...
81
76
  ```
82
77
 
83
78
  Two audiences, two channels: the structured line for logs and scripts, the plain text for the person who just typed the command.
package/docs/cli/init.mdx CHANGED
@@ -7,7 +7,10 @@ icon: wand-magic-sparkles
7
7
  `reticle init` is the one command a person runs before anything else. It inspects the directory it is standing in, works out the framework, and writes every piece of wiring Reticle needs: the MCP server registration, the agent rule files, the dev dependencies, `.reticle.json`, and the bundler plugin.
8
8
 
9
9
  ```bash
10
- npx @reticlehq/server init [--dry-run] [--port N] [--no-mcp] [--no-install] [--app <dir>] [--yes]
10
+ npx @reticlehq/server init [--env KEY=VALUE]... [--app <dir>] [--license <key>] [--json]
11
+ [--files-only] [--relaunch] [--no-open] [--no-agents] [--url <app url>]
12
+ [--timeout S] [--dry-run] [--hooks] [--port N] [--no-mcp] [--no-install]
13
+ [--start] [--capture-bodies] [--no-first-run]
11
14
  ```
12
15
 
13
16
  ## Flags
@@ -17,9 +20,21 @@ npx @reticlehq/server init [--dry-run] [--port N] [--no-mcp] [--no-install] [--a
17
20
  | `--dry-run` | boolean | `false` | Print the full plan and write nothing |
18
21
  | `--port N` | number | unset (resolves to `4400`) | Bridge port to write into the config |
19
22
  | `--no-mcp` | boolean | `false` (MCP is registered) | Skip the MCP registration **and** the agent rule files (`CLAUDE.md`, `AGENTS.md`, `.cursor`) and the `/reticle` command |
20
- | `--no-install` | boolean | `false` (deps are installed) | Do not run the install. The step becomes `[⚠]` and prints the `add -D` command for you to run by hand, rather than vanishing from the plan |
21
- | `--app <dir>` | string | unset | Pick which app to wire in a monorepo, without changing directory |
23
+ | `--no-install` | boolean | `false` (deps are installed) | Do not run the install. The step becomes `[–]` ("skipped (--no-install); install them yourself: …") with the install command for you to run by hand, rather than vanishing from the plan |
24
+ | `--app <dir>` | string | unset | Pick which app to wire in a monorepo, without changing directory. On its own it implies `--files-only` |
25
+ | `--start` | boolean | `false` | With `--app`, also boot the app the way a plain `init` does |
26
+ | `--capture-bodies` | boolean | `false` | Write `captureNetworkBodies: true` into the Vite plugin call, so request and response bodies are captured |
27
+ | `--no-first-run` | boolean | `false` | Connect and stop, without the coverage summary |
22
28
  | `--hooks` | boolean | `false` | Also add a print-only Stop hook to `.claude/settings.json`, merged into what is there. When the agent stops without a claim that held, it prints one line; it never blocks. See [`reticle report`](/cli/report) |
29
+ | `--env KEY=VALUE` | string, repeatable | none | What the app needs to reach a usable state: a key from `.env.example`, a mock backend, a variable that skips an auth wall. A value may contain spaces and `=` |
30
+ | `--license <key>` | string | unset | Write an enterprise license key to `.env` and keep `.env` out of git |
31
+ | `--json` | boolean | `false` | Put the result on stdout as one object, for an agent to read |
32
+ | `--files-only` | boolean | `false` | Write the files, register the MCP server and pre-approve the tools, then stop: no dev server, no browser. Also the upgrade path for an existing install |
33
+ | `--relaunch` | boolean | `false` | Print the exact command that restarts this agent conversation with the `reticle_*` tools loaded. Refuses when the session has no transcript behind it. Works with `--files-only` |
34
+ | `--no-open` | boolean | `false` | Do not open a browser window. The connect is checked in a hidden tab instead |
35
+ | `--no-agents` | boolean | `false` | Do not register the MCP server with the other agents on this machine |
36
+ | `--url <app url>` | string | unset | The app is already running at this URL: use it instead of starting a dev server |
37
+ | `--timeout S` | seconds | the framework's own budget | How long to wait for the dev server and for a session to connect |
23
38
  | `--yes` | boolean | `false` | Accepted for scripting. `init` has no interactive prompts today, so it is a no-op |
24
39
 
25
40
  <Warning>
@@ -29,7 +44,7 @@ npx @reticlehq/server init [--dry-run] [--port N] [--no-mcp] [--no-install] [--a
29
44
 
30
45
  ## What it prints
31
46
 
32
- A plan, one line per step, each with a status mark: `✓` written, `·` already in place or left alone, `⚠` needs a hand, `–` deliberately skipped by a flag. Captured from a real `--dry-run` inside `apps/bench-app`:
47
+ A plan, one line per step, each with a status mark: `✓` written, `·` already in place or left alone, `⚠` needs a hand, `–` deliberately skipped by a flag, `ℹ` done, but incomplete in a way that matters. Captured from a real `--dry-run` inside `apps/bench-app`:
33
48
 
34
49
  ```
35
50
  reticle init (dry run, no files written)
@@ -37,8 +52,8 @@ reticle init (dry run, no files written)
37
52
 
38
53
  [·] MCP server (Claude, global) → global (claude user scope)
39
54
  reticle already registered (install once, used by every project)
40
- [·] MCP server (Cursor, global) → /Users/you/.cursor/mcp.json
41
- reticle already in Cursor global config
55
+ [·] MCP server (Cursor) → /Users/you/.cursor/mcp.json
56
+ reticle already registered with Cursor
42
57
  [⚠] MCP server (Codex CLI) → /Users/you/.codex/config.toml
43
58
  add this to /Users/you/.codex/config.toml by hand:
44
59
  [mcp_servers.reticle]
@@ -54,7 +69,7 @@ reticle init (dry run, no files written)
54
69
  [✓] The /reticle command → .claude/commands/reticle.md
55
70
  type /reticle to verify one flow in the browser
56
71
  [✓] Install dependencies → package.json
57
- pnpm add -D @reticlehq/react@2.8.0 @reticlehq/vite-plugin@2.8.0
72
+ pnpm add -D @reticlehq/react@3.7.0 @reticlehq/vite-plugin@3.7.0
58
73
  [✓] Reticle config → .reticle.json
59
74
  write project config (framework + port)
60
75
  [✓] Vite plugin → vite.config.ts
@@ -62,9 +77,11 @@ reticle init (dry run, no files written)
62
77
  [·] Capabilities + store → src/reticle-dev.ts
63
78
  file exists, left alone, it is yours to edit
64
79
 
65
- Restart `vite`.
80
+ Restart your dev server (`vite`).
66
81
  ```
67
82
 
83
+ The install line pins the packages to the version of Reticle you are running. When the `codex` binary is on your PATH, the Codex row is not a hand edit: it reads `[✓] MCP server (Codex CLI)` and registers through `codex mcp add reticle -- npx @reticlehq/server mcp`.
84
+
68
85
  Below the plan it also prints the two things that actually finish the install: restart your agent so it re-reads its MCP server list, then run `npx @reticlehq/server status` to confirm the app connected.
69
86
 
70
87
  With `--no-mcp`, the whole MCP and rules group collapses into one skipped line:
@@ -89,7 +106,7 @@ Several apps found in this workspace. Re-run `reticle init` for the one you want
89
106
  reticle init --app apps/vibe-builder-demo
90
107
  ```
91
108
 
92
- Given `--app`, it says which directory it moved to before printing the plan:
109
+ Given `--app`, it writes that app's files and starts nothing: no daemon and no dev server, since a monorepo app's dev server is often run from the root. Add `--start` to boot it the way a plain `init` does. It says which directory it moved to before printing the plan:
93
110
 
94
111
  ```
95
112
  No app in this directory ... wiring apps/bench-app instead.
@@ -99,12 +116,12 @@ In the two captures above, the punctuation that separates the two halves of the
99
116
 
100
117
  ## Exit codes
101
118
 
102
- | Code | Meaning |
103
- | ---- | --------------------------------------------------------------------------------------- |
104
- | `0` | The plan ran. Steps marked `⚠` still need a hand, and do not change the code |
105
- | `1` | Init failed, an unknown flag was passed, or several apps were found and none was chosen |
119
+ | Code | Meaning |
120
+ | --- | --- |
121
+ | `0` | The app connected. Steps marked `⚠` still need a hand, and do not change the code |
122
+ | `1` | No session connected, init failed, an unknown flag was passed, or several apps were found and none was chosen |
106
123
 
107
- An unknown flag is rejected by name: `reticle init --bogus` prints `unknown argument '--bogus'`, then the full usage block, and exits `1`.
124
+ An unknown flag is rejected by name: `reticle init --bogus` prints `unknown argument '--bogus'`, then the short usage (`reticle --help`), and exits `1`.
108
125
 
109
126
  ## Worked example
110
127
 
@@ -116,5 +133,5 @@ npx @reticlehq/server status # confirm the app actually connected
116
133
  ```
117
134
 
118
135
  <Card title="The install, step by step" icon="wand-magic-sparkles" href="/install-agentic">
119
- What each step writes and how to read the four status marks.
136
+ What each step writes and how to read the five status marks.
120
137
  </Card>