@reticlehq/server 3.7.0 → 3.8.1

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 (578) hide show
  1. package/SKILL.md +59 -68
  2. package/bin/reticle.js +9 -2
  3. package/dist/command/cli/adhoc-suite.js +1 -1
  4. package/dist/command/cli/adhoc-verdict.d.ts +12 -0
  5. package/dist/command/cli/adhoc-verdict.js +62 -4
  6. package/dist/command/cli/answers/gate-hook-message.d.ts +2 -0
  7. package/dist/command/cli/answers/gate-hook-message.js +5 -1
  8. package/dist/command/cli/auth/cloud-session.d.ts +11 -19
  9. package/dist/command/cli/auth/cloud-session.js +23 -0
  10. package/dist/command/cli/auth/device-flow.d.ts +3 -37
  11. package/dist/command/cli/cli-doctor.js +66 -21
  12. package/dist/command/cli/cli-flow-commands.js +53 -11
  13. package/dist/command/cli/cli-kill.d.ts +8 -0
  14. package/dist/command/cli/cli-kill.js +43 -3
  15. package/dist/command/cli/cli-parse-feedback.d.ts +4 -0
  16. package/dist/command/cli/cli-parse-feedback.js +13 -1
  17. package/dist/command/cli/cli-parse-grammar.d.ts +1 -2
  18. package/dist/command/cli/cli-parse-grammar.js +1 -6
  19. package/dist/command/cli/cli-parse-serve.d.ts +24 -0
  20. package/dist/command/cli/cli-parse-serve.js +124 -0
  21. package/dist/command/cli/cli-parse.d.ts +12 -11
  22. package/dist/command/cli/cli-parse.js +100 -123
  23. package/dist/command/cli/cli-usage.d.ts +0 -11
  24. package/dist/command/cli/cli-usage.js +43 -16
  25. package/dist/command/cli/cli-verify.d.ts +1 -1
  26. package/dist/command/cli/cli-verify.js +29 -14
  27. package/dist/command/cli/cloud-cli.js +27 -9
  28. package/dist/command/cli/cloud-kit.js +3 -3
  29. package/dist/command/cli/cloud-link.d.ts +1 -20
  30. package/dist/command/cli/cloud-link.js +2 -0
  31. package/dist/command/cli/cloud-login.d.ts +6 -2
  32. package/dist/command/cli/cloud-login.js +13 -41
  33. package/dist/command/cli/config/checkout.d.ts +10 -0
  34. package/dist/command/cli/config/checkout.js +78 -0
  35. package/dist/command/cli/doctor/doctor-agent-link.d.ts +23 -0
  36. package/dist/command/cli/doctor/doctor-agent-link.js +28 -0
  37. package/dist/command/cli/doctor/doctor-coverage-line.js +1 -7
  38. package/dist/command/cli/doctor/doctor-rows.d.ts +4 -0
  39. package/dist/command/cli/doctor/doctor-rows.js +4 -0
  40. package/dist/command/cli/drive/drive-attach.d.ts +5 -0
  41. package/dist/command/cli/drive/drive-attach.js +21 -1
  42. package/dist/command/cli/hook/codex-transcript.d.ts +20 -0
  43. package/dist/command/cli/hook/codex-transcript.js +224 -0
  44. package/dist/command/cli/hook/episode-structure.d.ts +24 -0
  45. package/dist/command/cli/hook/episode-structure.js +138 -0
  46. package/dist/command/cli/hook/hook-command.d.ts +9 -0
  47. package/dist/command/cli/hook/hook-command.js +211 -0
  48. package/dist/command/cli/hook/hook-fast.d.ts +31 -0
  49. package/dist/command/cli/hook/hook-fast.js +136 -0
  50. package/dist/command/cli/hook/prompt-hook.d.ts +30 -0
  51. package/dist/command/cli/hook/prompt-hook.js +199 -0
  52. package/dist/command/cli/hook/tool-hook.d.ts +21 -0
  53. package/dist/command/cli/hook/tool-hook.js +259 -0
  54. package/dist/command/cli/launch/cli-launch.d.ts +2 -0
  55. package/dist/command/cli/launch/cli-launch.js +22 -2
  56. package/dist/command/cli/lifecycle/daemon-lifecycle.js +28 -2
  57. package/dist/command/cli/mcp-command.d.ts +9 -0
  58. package/dist/command/cli/mcp-command.js +127 -41
  59. package/dist/command/cli/open-navigate.d.ts +43 -0
  60. package/dist/command/cli/open-navigate.js +85 -0
  61. package/dist/command/cli/ports/port-holder.d.ts +16 -4
  62. package/dist/command/cli/ports/port-holder.js +58 -12
  63. package/dist/command/cli/ports/resolve/cli-port.js +18 -2
  64. package/dist/command/cli/project-name.d.ts +1 -7
  65. package/dist/command/cli/project-name.js +1 -0
  66. package/dist/command/cli/report-command.d.ts +8 -2
  67. package/dist/command/cli/report-command.js +95 -18
  68. package/dist/command/cli/status-fields.d.ts +9 -2
  69. package/dist/command/cli/status-fields.js +148 -4
  70. package/dist/command/cli/try-command.d.ts +3 -4
  71. package/dist/command/cli/try-command.js +6 -11
  72. package/dist/command/cli/verify-results.d.ts +4 -1
  73. package/dist/command/cli/verify-results.js +3 -1
  74. package/dist/command/cli.d.ts +1 -7
  75. package/dist/command/cli.js +79 -160
  76. package/dist/command/daemon/daemon-resilience.d.ts +6 -1
  77. package/dist/command/daemon/daemon-resilience.js +31 -18
  78. package/dist/command/daemon/daemon.d.ts +11 -0
  79. package/dist/command/daemon/daemon.js +70 -2
  80. package/dist/command/daemon/lifetime/daemon-usefulness.d.ts +2 -0
  81. package/dist/command/daemon/lifetime/daemon-usefulness.js +13 -2
  82. package/dist/command/daemon/wake-decision.js +4 -2
  83. package/dist/command/daemon/win32-escape.d.ts +32 -0
  84. package/dist/command/daemon/win32-escape.js +119 -0
  85. package/dist/command/setup/agent-configs.d.ts +9 -0
  86. package/dist/command/setup/agent-configs.js +9 -0
  87. package/dist/command/setup/auto-approve.d.ts +10 -3
  88. package/dist/command/setup/auto-approve.js +51 -3
  89. package/dist/command/setup/bringup/dev-server-files.d.ts +1 -9
  90. package/dist/command/setup/bringup/dev-server-wait.js +5 -1
  91. package/dist/command/setup/bringup/ensure-daemon.js +4 -7
  92. package/dist/command/setup/init/init-host.js +6 -0
  93. package/dist/command/setup/init/init-port.js +5 -4
  94. package/dist/command/setup/init/init-runtime.js +7 -1
  95. package/dist/command/setup/node-effects.d.ts +8 -0
  96. package/dist/command/setup/node-effects.js +36 -4
  97. package/dist/command/setup/probe/dev-port.d.ts +26 -0
  98. package/dist/command/setup/probe/dev-port.js +117 -0
  99. package/dist/command/setup/probe/page-probe.d.ts +1 -1
  100. package/dist/command/setup/probe/page-probe.js +11 -3
  101. package/dist/command/setup/remaining-steps.d.ts +0 -7
  102. package/dist/command/setup/remaining-steps.js +3 -2
  103. package/dist/command/setup/run-setup.d.ts +11 -0
  104. package/dist/command/setup/run-setup.js +33 -5
  105. package/dist/command/setup/setup-command.d.ts +2 -0
  106. package/dist/command/setup/setup-command.js +22 -4
  107. package/dist/command/update/updater.d.ts +1 -6
  108. package/dist/command/update/updater.js +4 -5
  109. package/dist/command/update/version-seen.d.ts +24 -0
  110. package/dist/command/update/version-seen.js +65 -0
  111. package/dist/command/version/peer-announce.d.ts +9 -1
  112. package/dist/command/version/peer-announce.js +25 -2
  113. package/dist/command/version/sdk-fix.d.ts +5 -6
  114. package/dist/command/version/sdk-fix.js +17 -32
  115. package/dist/command/version/version-skew.d.ts +16 -1
  116. package/dist/command/version/version-skew.js +84 -10
  117. package/dist/features/crawl/crawl-tools.js +2 -2
  118. package/dist/features/crawl/crawl.js +2 -0
  119. package/dist/features/exhaust/ledger.d.ts +15 -96
  120. package/dist/features/exhaust/ledger.js +3 -3
  121. package/dist/features/harness/drive-runs.d.ts +28 -4
  122. package/dist/features/harness/drive-runs.js +99 -7
  123. package/dist/features/harness/drivers.d.ts +1 -1
  124. package/dist/features/harness/drivers.js +1 -1
  125. package/dist/features/harness/harness.d.ts +5 -0
  126. package/dist/features/harness/harness.js +24 -12
  127. package/dist/features/harness/platform/platform-drives.d.ts +7 -1
  128. package/dist/features/harness/platform/platform-drives.js +12 -7
  129. package/dist/features/harness/platform/refusal.d.ts +1 -1
  130. package/dist/features/harness/platform/refusal.js +4 -4
  131. package/dist/features/harness/platform/remote-drive.js +70 -28
  132. package/dist/features/harness/platform/server-driver.js +22 -1
  133. package/dist/features/harness/platform-config.d.ts +1 -10
  134. package/dist/features/harness/platform-config.js +0 -20
  135. package/dist/features/license/license.d.ts +2 -14
  136. package/dist/features/visual/step-shots.d.ts +33 -1
  137. package/dist/features/visual/step-shots.js +155 -1
  138. package/dist/features/visual/visual-tools.js +12 -4
  139. package/dist/hooks/coding-agents.d.ts +6 -0
  140. package/dist/hooks/coding-agents.js +24 -3
  141. package/dist/hooks/episode-stamp.d.ts +32 -0
  142. package/dist/hooks/episode-stamp.js +61 -0
  143. package/dist/hooks/hook-commands.js +19 -9
  144. package/dist/index.d.ts +5 -1
  145. package/dist/index.js +66 -24
  146. package/dist/judgement/app-graph/journal-steps.d.ts +8 -0
  147. package/dist/judgement/app-graph/journal-steps.js +92 -0
  148. package/dist/judgement/capsule/capsule-store.d.ts +2 -39
  149. package/dist/judgement/domain/domain-model.js +1 -10
  150. package/dist/judgement/domain/domain-tools.js +4 -2
  151. package/dist/judgement/runs/artifact/run-store.d.ts +28 -8
  152. package/dist/judgement/runs/artifact/run-store.js +153 -28
  153. package/dist/judgement/runs/default-run-id.d.ts +3 -1
  154. package/dist/judgement/runs/default-run-id.js +15 -3
  155. package/dist/judgement/runs/drive-run.d.ts +3 -3
  156. package/dist/judgement/runs/drive-run.js +11 -7
  157. package/dist/judgement/runs/run-ledger.d.ts +21 -0
  158. package/dist/judgement/runs/run-ledger.js +143 -0
  159. package/dist/judgement/runs/runner-port.d.ts +1 -1
  160. package/dist/judgement/runs/runner-port.js +8 -2
  161. package/dist/judgement/runs/verification-sync.d.ts +4 -3
  162. package/dist/judgement/runs/verification-sync.js +27 -5
  163. package/dist/language/flows/affected-tools.js +2 -1
  164. package/dist/language/flows/annotate-notes/annotate.js +8 -3
  165. package/dist/language/flows/annotate-tools.js +1 -1
  166. package/dist/language/flows/change/affected.d.ts +8 -0
  167. package/dist/language/flows/change/affected.js +20 -7
  168. package/dist/language/flows/decision.js +19 -4
  169. package/dist/language/flows/fields/flow-secret-field.d.ts +9 -0
  170. package/dist/language/flows/fields/flow-secret-field.js +67 -5
  171. package/dist/language/flows/flow-anchor.d.ts +5 -0
  172. package/dist/language/flows/flow-anchor.js +4 -0
  173. package/dist/language/flows/flow-cross-step.d.ts +7 -1
  174. package/dist/language/flows/flow-cross-step.js +9 -0
  175. package/dist/language/flows/flow-expect-grammar.js +15 -10
  176. package/dist/language/flows/flow-intent.js +6 -1
  177. package/dist/language/flows/flow-journey.d.ts +8 -0
  178. package/dist/language/flows/flow-journey.js +13 -0
  179. package/dist/language/flows/flow-lease.d.ts +27 -0
  180. package/dist/language/flows/flow-lease.js +59 -0
  181. package/dist/language/flows/flow-replay-run.d.ts +1 -87
  182. package/dist/language/flows/flow-replay-run.js +111 -310
  183. package/dist/language/flows/flow-replay.js +21 -19
  184. package/dist/language/flows/flow-replayable.d.ts +38 -0
  185. package/dist/language/flows/flow-replayable.js +179 -0
  186. package/dist/language/flows/flow-start-path.d.ts +108 -0
  187. package/dist/language/flows/flow-start-path.js +313 -0
  188. package/dist/language/flows/flow-step-runners.d.ts +23 -2
  189. package/dist/language/flows/flow-step-runners.js +191 -32
  190. package/dist/language/flows/flow-store-for-session.d.ts +8 -1
  191. package/dist/language/flows/flow-store-for-session.js +6 -0
  192. package/dist/language/flows/flow-tools.d.ts +2 -23
  193. package/dist/language/flows/flow-tools.js +63 -113
  194. package/dist/language/flows/flows.d.ts +4 -6
  195. package/dist/language/flows/flows.js +90 -15
  196. package/dist/language/flows/heal-run.d.ts +10 -4
  197. package/dist/language/flows/heal-run.js +26 -9
  198. package/dist/language/flows/recording/flake.d.ts +3 -27
  199. package/dist/language/flows/recording/flake.js +1 -1
  200. package/dist/language/flows/recording/recording-backtrack.js +1 -4
  201. package/dist/language/flows/recording/tape/recordings.d.ts +11 -1
  202. package/dist/language/flows/recording/tape/recordings.js +9 -3
  203. package/dist/language/flows/replay.d.ts +25 -5
  204. package/dist/language/flows/replay.js +83 -16
  205. package/dist/language/flows/stores/assertion-tiers-store.js +1 -1
  206. package/dist/language/flows/suite/coverage.d.ts +9 -0
  207. package/dist/language/flows/suite/coverage.js +12 -1
  208. package/dist/language/flows/suite-selection.d.ts +25 -0
  209. package/dist/language/flows/suite-selection.js +41 -9
  210. package/dist/machine/git-tracks.d.ts +6 -0
  211. package/dist/machine/git-tracks.js +36 -0
  212. package/dist/memory/cloud/background-sync.d.ts +25 -0
  213. package/dist/memory/cloud/background-sync.js +79 -0
  214. package/dist/memory/cloud/cloud-config.d.ts +12 -1
  215. package/dist/memory/cloud/cloud-config.js +39 -13
  216. package/dist/memory/cloud/cloud-sync.d.ts +3 -24
  217. package/dist/memory/cloud/cloud-sync.js +5 -2
  218. package/dist/memory/cloud/harness-config.d.ts +0 -7
  219. package/dist/memory/cloud/memory-scope.d.ts +19 -0
  220. package/dist/memory/cloud/memory-scope.js +48 -0
  221. package/dist/memory/cloud/sync-answer.d.ts +43 -0
  222. package/dist/memory/cloud/sync-answer.js +42 -0
  223. package/dist/memory/cloud/sync-cycle.d.ts +40 -10
  224. package/dist/memory/cloud/sync-cycle.js +97 -144
  225. package/dist/memory/cloud/sync-daemon.d.ts +50 -3
  226. package/dist/memory/cloud/sync-daemon.js +473 -83
  227. package/dist/memory/cloud/sync-describe.d.ts +28 -0
  228. package/dist/memory/cloud/sync-describe.js +92 -0
  229. package/dist/memory/cloud/sync-disk.d.ts +9 -1
  230. package/dist/memory/cloud/sync-disk.js +137 -33
  231. package/dist/memory/cloud/sync-flow-versions.d.ts +26 -0
  232. package/dist/memory/cloud/sync-flow-versions.js +42 -0
  233. package/dist/memory/impact/impact-store.js +32 -15
  234. package/dist/memory/intent/intent-shard.d.ts +41 -266
  235. package/dist/memory/intent/intent-tools.js +20 -61
  236. package/dist/memory/intent/record-request.d.ts +27 -0
  237. package/dist/memory/intent/record-request.js +88 -0
  238. package/dist/memory/intent/settled-words.js +9 -1
  239. package/dist/memory/journal/drive-flow.d.ts +3 -0
  240. package/dist/memory/journal/drive-flow.js +11 -41
  241. package/dist/memory/journal/envelope-store.js +1 -1
  242. package/dist/memory/journal/envelope.d.ts +6 -154
  243. package/dist/memory/journal/episode-log.d.ts +107 -0
  244. package/dist/memory/journal/episode-log.js +302 -0
  245. package/dist/memory/journal/journal-recorder.d.ts +7 -0
  246. package/dist/memory/journal/journal-recorder.js +22 -9
  247. package/dist/memory/journal/on-disk/ambient-file.d.ts +1 -7
  248. package/dist/memory/journal/on-disk/ambient-file.js +1 -1
  249. package/dist/memory/journal/on-disk/workspace-gitignore.d.ts +24 -3
  250. package/dist/memory/journal/on-disk/workspace-gitignore.js +38 -7
  251. package/dist/memory/journal/on-disk/workspace-tiers.js +7 -0
  252. package/dist/memory/journal/self-observation.js +3 -1
  253. package/dist/memory/journal/session-end.js +23 -9
  254. package/dist/memory/journal/session-journal.js +39 -20
  255. package/dist/memory/project/artifact-root-resolver.d.ts +14 -1
  256. package/dist/memory/project/artifact-root-resolver.js +68 -23
  257. package/dist/memory/project/artifact-root.d.ts +17 -3
  258. package/dist/memory/project/artifact-root.js +47 -9
  259. package/dist/memory/project/fs/fs-port.d.ts +5 -0
  260. package/dist/memory/project/fs/fs-port.js +13 -0
  261. package/dist/memory/project/learned-routes.d.ts +3 -4
  262. package/dist/memory/project/learned-routes.js +3 -11
  263. package/dist/memory/project/link-directory.js +5 -2
  264. package/dist/memory/project/root-claims.d.ts +3 -1
  265. package/dist/memory/project/root-claims.js +41 -7
  266. package/dist/memory/project/session-root.d.ts +1 -1
  267. package/dist/memory/project/session-root.js +1 -15
  268. package/dist/memory/project/sync-status.js +5 -6
  269. package/dist/memory/recall/memory-tools.js +2 -2
  270. package/dist/memory/recall/platform-memory.d.ts +3 -1
  271. package/dist/memory/recall/platform-memory.js +9 -1
  272. package/dist/memory/recall/project-memory.js +15 -19
  273. package/dist/portal/bridge/auth-failure-reason.d.ts +13 -0
  274. package/dist/portal/bridge/auth-failure-reason.js +19 -0
  275. package/dist/portal/bridge/bridge.d.ts +19 -4
  276. package/dist/portal/bridge/bridge.js +150 -177
  277. package/dist/portal/bridge/harness-request.d.ts +15 -0
  278. package/dist/portal/bridge/harness-request.js +19 -0
  279. package/dist/portal/bridge/origin/origin-follow.d.ts +46 -0
  280. package/dist/portal/bridge/origin/origin-follow.js +110 -0
  281. package/dist/portal/bridge/pairing-token.d.ts +6 -0
  282. package/dist/portal/bridge/pairing-token.js +47 -16
  283. package/dist/portal/bridge/protocol-skew.d.ts +27 -2
  284. package/dist/portal/bridge/protocol-skew.js +66 -2
  285. package/dist/portal/bridge/session-nonces.d.ts +46 -0
  286. package/dist/portal/bridge/session-nonces.js +72 -0
  287. package/dist/portal/input/viewport-tools.d.ts +31 -0
  288. package/dist/portal/input/viewport-tools.js +106 -15
  289. package/dist/portal/pool/bounded-close.d.ts +23 -0
  290. package/dist/portal/pool/bounded-close.js +38 -0
  291. package/dist/portal/pool/browser-pool.d.ts +44 -39
  292. package/dist/portal/pool/browser-pool.js +247 -95
  293. package/dist/portal/pool/context-permissions.d.ts +9 -1
  294. package/dist/portal/pool/context-permissions.js +26 -0
  295. package/dist/portal/pool/lease-emulation.d.ts +37 -0
  296. package/dist/portal/pool/lease-emulation.js +29 -0
  297. package/dist/portal/pool/playwright-launcher.d.ts +6 -0
  298. package/dist/portal/pool/playwright-launcher.js +74 -7
  299. package/dist/portal/pool/pool-contract.d.ts +23 -1
  300. package/dist/portal/pool/pool-lease.d.ts +128 -0
  301. package/dist/portal/pool/pool-lease.js +49 -0
  302. package/dist/portal/pool/zero-install.d.ts +8 -1
  303. package/dist/portal/pool/zero-install.js +24 -2
  304. package/dist/portal/production/production-activation.d.ts +136 -0
  305. package/dist/portal/production/production-activation.js +173 -0
  306. package/dist/portal/production/production-drive.d.ts +52 -0
  307. package/dist/portal/production/production-drive.js +301 -0
  308. package/dist/portal/production/production-hello.d.ts +23 -0
  309. package/dist/portal/production/production-hello.js +23 -0
  310. package/dist/portal/realm/web-realm.js +42 -15
  311. package/dist/portal/session/control-envelope.d.ts +1 -1
  312. package/dist/portal/session/dev-server/served-document.d.ts +0 -5
  313. package/dist/portal/session/dev-server/served-document.js +6 -8
  314. package/dist/portal/session/facts/handshake-facts.d.ts +8 -1
  315. package/dist/portal/session/first-run-wiring.d.ts +3 -36
  316. package/dist/portal/session/first-run-wiring.js +10 -103
  317. package/dist/portal/session/live-control-tools.js +61 -19
  318. package/dist/portal/session/no-session-next-action.d.ts +11 -0
  319. package/dist/portal/session/no-session-next-action.js +40 -15
  320. package/dist/portal/session/no-session-watch.d.ts +7 -0
  321. package/dist/portal/session/no-session-watch.js +67 -23
  322. package/dist/portal/session/output-budget.d.ts +10 -0
  323. package/dist/portal/session/output-budget.js +16 -0
  324. package/dist/portal/session/presence/session-lease.d.ts +2 -0
  325. package/dist/portal/session/presence/session-lease.js +8 -0
  326. package/dist/portal/session/recorded-gaps.d.ts +15 -11
  327. package/dist/portal/session/recorded-gaps.js +39 -18
  328. package/dist/portal/session/serving-directory.d.ts +24 -2
  329. package/dist/portal/session/serving-directory.js +93 -5
  330. package/dist/portal/session/session-info.d.ts +26 -0
  331. package/dist/portal/session/session-info.js +20 -0
  332. package/dist/portal/session/session-manager.d.ts +35 -3
  333. package/dist/portal/session/session-manager.js +69 -14
  334. package/dist/portal/session/session-successor.js +1 -9
  335. package/dist/portal/session/session-tools.js +22 -4
  336. package/dist/portal/session/session.d.ts +10 -10
  337. package/dist/portal/session/session.js +37 -29
  338. package/dist/portal/session/zero-install-first-call.d.ts +7 -2
  339. package/dist/portal/session/zero-install-first-call.js +43 -20
  340. package/dist/start-wiring.d.ts +2 -2
  341. package/dist/start-wiring.js +17 -3
  342. package/dist/status-payload.d.ts +11 -1
  343. package/dist/status-payload.js +7 -1
  344. package/dist/surface/agent-presence-grace.d.ts +11 -0
  345. package/dist/surface/agent-presence-grace.js +34 -0
  346. package/dist/surface/http-server.d.ts +12 -1
  347. package/dist/surface/http-server.js +64 -15
  348. package/dist/surface/mcp/faults/mcp-outage.d.ts +12 -2
  349. package/dist/surface/mcp/faults/mcp-outage.js +19 -1
  350. package/dist/surface/mcp/mcp-proxy.d.ts +17 -74
  351. package/dist/surface/mcp/mcp-proxy.js +194 -267
  352. package/dist/surface/mcp/mcp.d.ts +20 -3
  353. package/dist/surface/mcp/mcp.js +88 -25
  354. package/dist/surface/mcp/proxy/drive-calls.d.ts +44 -0
  355. package/dist/surface/mcp/proxy/drive-calls.js +114 -5
  356. package/dist/surface/mcp/proxy/proxy-boot.d.ts +11 -0
  357. package/dist/surface/mcp/proxy/proxy-boot.js +1 -0
  358. package/dist/surface/mcp/proxy/proxy-daemon-probe.d.ts +6 -0
  359. package/dist/surface/mcp/proxy/proxy-daemon-probe.js +14 -1
  360. package/dist/surface/mcp/proxy/proxy-handshake.d.ts +34 -2
  361. package/dist/surface/mcp/proxy/proxy-handshake.js +76 -8
  362. package/dist/surface/mcp/server-instructions.js +35 -16
  363. package/dist/surface/mcp/shared-params.d.ts +8 -0
  364. package/dist/surface/mcp/shared-params.js +15 -1
  365. package/dist/surface/mcp/sse-frame-parser.d.ts +11 -0
  366. package/dist/surface/mcp/sse-frame-parser.js +18 -0
  367. package/dist/surface/mcp/surface-vocabulary.d.ts +2 -0
  368. package/dist/surface/mcp/surface-vocabulary.js +13 -0
  369. package/dist/surface/mcp/tool-catalog-cache.d.ts +2 -0
  370. package/dist/surface/mcp/tool-catalog-cache.js +14 -4
  371. package/dist/surface/tools/account-tool.d.ts +4 -3
  372. package/dist/surface/tools/account-tool.js +20 -31
  373. package/dist/surface/tools/act/act-danger.d.ts +2 -0
  374. package/dist/surface/tools/act/act-danger.js +41 -14
  375. package/dist/surface/tools/act/act-observation.d.ts +11 -0
  376. package/dist/surface/tools/act/act-observation.js +33 -0
  377. package/dist/surface/tools/act/act-preflight.js +10 -3
  378. package/dist/surface/tools/act/act-sequence-retry.js +2 -1
  379. package/dist/surface/tools/act/act-target.js +19 -5
  380. package/dist/surface/tools/act/durable.js +1 -1
  381. package/dist/surface/tools/act/navigation/navigate-arrival.d.ts +9 -7
  382. package/dist/surface/tools/act/navigation/navigate-arrival.js +11 -14
  383. package/dist/surface/tools/act/unsettled-find.d.ts +36 -0
  384. package/dist/surface/tools/act/unsettled-find.js +71 -0
  385. package/dist/surface/tools/act-sequence-tool.js +53 -24
  386. package/dist/surface/tools/act-tools.d.ts +2 -3
  387. package/dist/surface/tools/act-tools.js +49 -47
  388. package/dist/surface/tools/agent/compact-envelope.d.ts +2 -2
  389. package/dist/surface/tools/agent/for-the-agent.js +41 -3
  390. package/dist/surface/tools/assert/assert-grade.js +8 -3
  391. package/dist/surface/tools/assert/assert-verdict.js +4 -2
  392. package/dist/surface/tools/browser-tools.js +7 -4
  393. package/dist/surface/tools/chat-drives.js +50 -25
  394. package/dist/surface/tools/coverage-tools.js +1 -1
  395. package/dist/surface/tools/dynamic-tools.d.ts +8 -0
  396. package/dist/surface/tools/dynamic-tools.js +89 -34
  397. package/dist/surface/tools/empty-session-list.d.ts +18 -25
  398. package/dist/surface/tools/empty-session-list.js +67 -38
  399. package/dist/surface/tools/error-recovery.d.ts +17 -7
  400. package/dist/surface/tools/error-recovery.js +53 -20
  401. package/dist/surface/tools/explore-tools.d.ts +10 -0
  402. package/dist/surface/tools/explore-tools.js +72 -19
  403. package/dist/surface/tools/feedback-tools.js +23 -2
  404. package/dist/surface/tools/gap-novelty.d.ts +6 -0
  405. package/dist/surface/tools/gap-novelty.js +9 -0
  406. package/dist/surface/tools/gaps/capability-absences.js +4 -3
  407. package/dist/surface/tools/harness-explore.d.ts +1 -1
  408. package/dist/surface/tools/harness-explore.js +6 -4
  409. package/dist/surface/tools/harness-gate.d.ts +43 -21
  410. package/dist/surface/tools/harness-gate.js +55 -81
  411. package/dist/surface/tools/harness-script.d.ts +2 -0
  412. package/dist/surface/tools/harness-script.js +11 -6
  413. package/dist/surface/tools/harness-toolset.js +3 -4
  414. package/dist/surface/tools/invoke-tool.d.ts +0 -8
  415. package/dist/surface/tools/invoke-tool.js +164 -178
  416. package/dist/surface/tools/lease-hint.d.ts +9 -0
  417. package/dist/surface/tools/lease-hint.js +22 -3
  418. package/dist/surface/tools/lease-permissions.d.ts +1 -1
  419. package/dist/surface/tools/lease-readiness.d.ts +55 -0
  420. package/dist/surface/tools/lease-readiness.js +150 -2
  421. package/dist/surface/tools/lease-tools.d.ts +3 -75
  422. package/dist/surface/tools/lease-tools.js +124 -188
  423. package/dist/surface/tools/map-tools.d.ts +20 -0
  424. package/dist/surface/tools/map-tools.js +145 -0
  425. package/dist/surface/tools/merge-tools.js +11 -7
  426. package/dist/surface/tools/next-step.js +6 -3
  427. package/dist/surface/tools/observe-tools.js +46 -35
  428. package/dist/surface/tools/platform-moment.d.ts +3 -12
  429. package/dist/surface/tools/platform-moment.js +12 -24
  430. package/dist/surface/tools/read/complete-snapshot.d.ts +7 -1
  431. package/dist/surface/tools/read/complete-snapshot.js +13 -2
  432. package/dist/surface/tools/read/query-paginate.js +6 -0
  433. package/dist/surface/tools/read/query-shape.d.ts +9 -0
  434. package/dist/surface/tools/read/query-shape.js +15 -0
  435. package/dist/surface/tools/read/snapshot-unmounted-note.d.ts +1 -0
  436. package/dist/surface/tools/read/snapshot-unmounted-note.js +73 -0
  437. package/dist/surface/tools/read-tools.js +5 -5
  438. package/dist/surface/tools/real-input-attempt.d.ts +11 -0
  439. package/dist/surface/tools/real-input-attempt.js +206 -38
  440. package/dist/surface/tools/reconcile-tools.js +21 -8
  441. package/dist/surface/tools/reticle-result.d.ts +3 -0
  442. package/dist/surface/tools/reticle-result.js +8 -1
  443. package/dist/surface/tools/run-report.d.ts +22 -0
  444. package/dist/surface/tools/run-report.js +141 -0
  445. package/dist/surface/tools/session-ports.d.ts +57 -0
  446. package/dist/surface/tools/session-ports.js +102 -0
  447. package/dist/surface/tools/tool-kit.d.ts +58 -4
  448. package/dist/surface/tools/tool-kit.js +140 -6
  449. package/dist/surface/tools/tool-surface.d.ts +2 -0
  450. package/dist/surface/tools/tool-surface.js +45 -0
  451. package/dist/surface/tools/tools.js +49 -87
  452. package/dist/telemetry/automation-hint.d.ts +5 -0
  453. package/dist/telemetry/automation-hint.js +7 -0
  454. package/dist/telemetry/cli-telemetry.d.ts +22 -0
  455. package/dist/telemetry/cli-telemetry.js +80 -11
  456. package/dist/telemetry/daemon-telemetry.d.ts +3 -1
  457. package/dist/telemetry/daemon-telemetry.js +9 -2
  458. package/dist/telemetry/feedback-cli.d.ts +1 -1
  459. package/dist/telemetry/feedback-cli.js +8 -3
  460. package/dist/telemetry/feedback.d.ts +1 -1
  461. package/dist/telemetry/feedback.js +51 -4
  462. package/dist/telemetry/harness-run.d.ts +3 -3
  463. package/dist/telemetry/harness-run.js +18 -7
  464. package/dist/telemetry/hud-events.d.ts +1 -1
  465. package/dist/telemetry/hud-metrics.d.ts +6 -3
  466. package/dist/telemetry/hud-metrics.js +20 -8
  467. package/dist/telemetry/install-source.js +1 -1
  468. package/dist/telemetry/mcp-connection.d.ts +1 -1
  469. package/dist/telemetry/mcp-connection.js +21 -2
  470. package/dist/telemetry/onboarding-firsts.d.ts +6 -1
  471. package/dist/telemetry/onboarding-firsts.js +41 -1
  472. package/dist/telemetry/proxy-telemetry.d.ts +42 -0
  473. package/dist/telemetry/proxy-telemetry.js +70 -1
  474. package/dist/telemetry/session-metrics.d.ts +1 -3
  475. package/dist/telemetry/session-metrics.js +16 -12
  476. package/dist/telemetry/telemetry.d.ts +9 -1
  477. package/dist/telemetry/telemetry.js +16 -1
  478. package/dist/telemetry/verification-of.d.ts +3 -1
  479. package/dist/telemetry/verification-of.js +7 -1
  480. package/dist/wire-journal.js +12 -2
  481. package/docs/README.md +4 -2
  482. package/docs/actions.mdx +7 -6
  483. package/docs/adapters.md +2 -1
  484. package/docs/agent-cheatsheet.md +19 -5
  485. package/docs/architecture.md +13 -10
  486. package/docs/autodrive.md +6 -5
  487. package/docs/benchmarks.md +2 -2
  488. package/docs/capabilities.mdx +1 -1
  489. package/docs/cli/affected.mdx +1 -1
  490. package/docs/cli/cloud.mdx +6 -6
  491. package/docs/cli/doctor.mdx +3 -1
  492. package/docs/cli/feedback.mdx +11 -7
  493. package/docs/cli/gate.mdx +1 -1
  494. package/docs/cli/help.mdx +1 -1
  495. package/docs/cli/init.mdx +20 -16
  496. package/docs/cli/mcp.mdx +5 -2
  497. package/docs/cli/open.mdx +5 -2
  498. package/docs/cli/report.mdx +1 -1
  499. package/docs/cli/restart.mdx +1 -1
  500. package/docs/cli/rollback.mdx +4 -4
  501. package/docs/cli/serve.mdx +7 -5
  502. package/docs/cli/setup.mdx +1 -1
  503. package/docs/cli/status.mdx +6 -2
  504. package/docs/cli/stop.mdx +3 -3
  505. package/docs/cli/telemetry.mdx +5 -1
  506. package/docs/cli/try.mdx +8 -8
  507. package/docs/cli/update.mdx +8 -5
  508. package/docs/cli/verify.mdx +12 -5
  509. package/docs/cli/version.mdx +1 -1
  510. package/docs/cli.mdx +10 -6
  511. package/docs/debugging.md +1 -1
  512. package/docs/deploy-checks.md +8 -6
  513. package/docs/desktop.mdx +14 -18
  514. package/docs/enterprise.md +6 -6
  515. package/docs/environment.mdx +5 -3
  516. package/docs/faq.mdx +9 -6
  517. package/docs/first-drive.md +19 -9
  518. package/docs/flows.md +3 -4
  519. package/docs/for-agents.md +1 -1
  520. package/docs/frameworks.mdx +34 -11
  521. package/docs/getting-started.md +46 -29
  522. package/docs/http-transport.md +2 -2
  523. package/docs/human-control.md +8 -8
  524. package/docs/index.mdx +2 -2
  525. package/docs/install-agentic.mdx +18 -19
  526. package/docs/install-manual.mdx +8 -4
  527. package/docs/integration-patterns.md +5 -5
  528. package/docs/multi-agent-testing.md +7 -5
  529. package/docs/packages/browser.mdx +34 -2
  530. package/docs/packages/core.mdx +2 -1
  531. package/docs/packages/electron.mdx +15 -3
  532. package/docs/packages/eslint-plugin.mdx +1 -1
  533. package/docs/packages/next.mdx +17 -5
  534. package/docs/packages/react.mdx +8 -1
  535. package/docs/packages/server.mdx +3 -3
  536. package/docs/packages/tauri.mdx +3 -3
  537. package/docs/packages/vite-plugin.mdx +1 -1
  538. package/docs/packages.mdx +19 -6
  539. package/docs/platform-integration.md +12 -4
  540. package/docs/predicates.mdx +18 -7
  541. package/docs/production-mode.md +108 -0
  542. package/docs/prompt-capture.md +99 -0
  543. package/docs/quickstart.mdx +14 -12
  544. package/docs/recipes.mdx +9 -8
  545. package/docs/required-checks.md +3 -2
  546. package/docs/skill-file.mdx +4 -3
  547. package/docs/skill-setup.md +2 -2
  548. package/docs/skill.md +62 -70
  549. package/docs/state-files.md +1 -0
  550. package/docs/state-management.mdx +11 -9
  551. package/docs/system-map.md +14 -13
  552. package/docs/telemetry.md +32 -24
  553. package/docs/testing.md +9 -5
  554. package/docs/tools/act-and-wait.mdx +17 -13
  555. package/docs/tools/act-sequence.mdx +40 -66
  556. package/docs/tools/act.mdx +7 -5
  557. package/docs/tools/assert.mdx +1 -1
  558. package/docs/tools/look.mdx +1 -1
  559. package/docs/tools/navigate.mdx +1 -1
  560. package/docs/tools/network.mdx +13 -11
  561. package/docs/tools/overview.mdx +3 -3
  562. package/docs/tools/query.mdx +3 -3
  563. package/docs/tools/session-and-feedback.mdx +9 -6
  564. package/docs/tools/sessions.mdx +7 -0
  565. package/docs/tools/snapshot.mdx +9 -7
  566. package/docs/tools/tools-and-run.mdx +11 -10
  567. package/docs/tools/verify.mdx +1 -1
  568. package/docs/troubleshooting.mdx +21 -9
  569. package/docs/usage.md +58 -43
  570. package/docs/use-cases.mdx +2 -2
  571. package/docs/vs-chrome-devtools-mcp.mdx +5 -5
  572. package/docs/vs-playwright-mcp.mdx +5 -4
  573. package/docs/what-is-recorded.md +12 -7
  574. package/docs/what-is-reticle.mdx +2 -2
  575. package/docs/why-reticle.mdx +1 -1
  576. package/package.json +9 -12
  577. package/dist/command/dev/stale-issue-guard.d.ts +0 -34
  578. package/dist/command/dev/stale-issue-guard.js +0 -69
@@ -6,9 +6,12 @@
6
6
  import { type ParsedFeedback } from './cli-parse-feedback.js';
7
7
  import { HEADED_FLAG, PORT_FLAG } from './cli-parse-grammar.js';
8
8
  export { HEADED_FLAG, PORT_FLAG };
9
- export { AGENT_FLAG, BUG_FLAG, FEEDBACK_KINDS, KIND_FLAG, RATING_FLAG, } from './cli-parse-feedback.js';
9
+ export { DRIVE_FLAG, HEADLESS_FLAG, HTTP_FLAG, HTTP_PORT_FLAG, HTTP_TOKEN_FLAG, } from './cli-parse-serve.js';
10
+ export { AGENT_FLAG, BUG_FLAG, CONTACT_FLAG, FEEDBACK_KINDS, KIND_FLAG, RATING_FLAG, } from './cli-parse-feedback.js';
10
11
  import { CLI_USAGE } from './cli-usage.js';
11
12
  export { CLI_USAGE };
13
+ /** `reticle hook`: the agent prompt hook. `cli.ts` runs it before this parser, and before telemetry. */
14
+ export declare const HOOK_COMMAND = "hook";
12
15
  /** The `reticle telemetry` sub-actions. Bare `reticle telemetry` means `status`. */
13
16
  export declare const TelemetryAction: {
14
17
  readonly STATUS: "status";
@@ -27,20 +30,15 @@ export declare const DAEMON_INNER_COMMAND = "_daemon";
27
30
  * defined; a second list somewhere else would drift the first time a command is added.
28
31
  */
29
32
  export declare const UNKNOWN_COMMAND = "unknown";
33
+ /**
34
+ * Commands that only ask about the CLI. An agent often runs one before anything else, so the first
35
+ * run on a machine is not the install until a real command follows.
36
+ */
37
+ export declare const PROBE_COMMANDS: ReadonlySet<string>;
30
38
  /** Every command the typed parser below routes. The parser refuses any word not in this list. */
31
39
  export declare const LOCAL_COMMANDS: readonly string[];
32
40
  /** The subcommand name if we recognize it, else `unknown`. Bare `reticle` reports `help`. */
33
41
  export declare function knownCommand(arg: string | undefined): string;
34
- /**
35
- * Force a hidden browser. The default is now HEADED: a run nobody can see is a run nobody trusts,
36
- * and every "did it actually do anything?" question cost a round-trip. CI passes this (or just sets
37
- * CI, which flips the default) because there is no display there to be headed on.
38
- */
39
- export declare const HEADLESS_FLAG = "--headless";
40
- export declare const DRIVE_FLAG = "--drive";
41
- export declare const HTTP_FLAG = "--http";
42
- export declare const HTTP_PORT_FLAG = "--http-port";
43
- export declare const HTTP_TOKEN_FLAG = "--http-token";
44
42
  /**
45
43
  * A predicate for a flow-free, one-shot verdict against the daemon that is already running.
46
44
  *
@@ -60,6 +58,7 @@ export type CliResult = {
60
58
  filesOnly: boolean;
61
59
  captureBodies: boolean;
62
60
  hooks: boolean;
61
+ promptCapture: boolean;
63
62
  json: boolean;
64
63
  relaunch: boolean;
65
64
  open: boolean;
@@ -68,6 +67,7 @@ export type CliResult = {
68
67
  url: string | undefined;
69
68
  timeoutSeconds: number | undefined;
70
69
  licenseKey: string | undefined;
70
+ newId: boolean;
71
71
  } | {
72
72
  kind: 'serve';
73
73
  port: number;
@@ -121,6 +121,7 @@ export type CliResult = {
121
121
  kind: 'open';
122
122
  port: number;
123
123
  url?: string;
124
+ navigate: boolean;
124
125
  } | {
125
126
  kind: '_daemon';
126
127
  port: number;
@@ -4,14 +4,16 @@
4
4
  * and re-exports this surface.
5
5
  */
6
6
  import { parseFeedbackArgs } from './cli-parse-feedback.js';
7
+ import { HEADLESS_FLAG, parseServeFlags } from './cli-parse-serve.js';
7
8
  import { parseVerifySuffix } from './cli-parse-verify.js';
8
9
  import { HEADED_FLAG, PORT_FLAG, VERIFY_COMMAND, missingOperand, missingValue, notANumber, retiredFlag, unknownArgument, CLOUD_COMMANDS, REMOVED_COMMANDS, removedNote, } from './cli-parse-grammar.js';
9
10
  // Re-exported because the daemon's own argv builder reaches for these through this module, which is
10
11
  // where the grammar has always lived as far as every caller is concerned.
11
12
  export { HEADED_FLAG, PORT_FLAG };
13
+ export { DRIVE_FLAG, HEADLESS_FLAG, HTTP_FLAG, HTTP_PORT_FLAG, HTTP_TOKEN_FLAG, } from './cli-parse-serve.js';
12
14
  import { FORCE_FLAG } from './cli-kill.js';
13
15
  // Re-exported so every existing importer of these flags is unaffected by the file split.
14
- export { AGENT_FLAG, BUG_FLAG, FEEDBACK_KINDS, KIND_FLAG, RATING_FLAG, } from './cli-parse-feedback.js';
16
+ export { AGENT_FLAG, BUG_FLAG, CONTACT_FLAG, FEEDBACK_KINDS, KIND_FLAG, RATING_FLAG, } from './cli-parse-feedback.js';
15
17
  // The help text lives on its own page; re-exported so every importer of it is unaffected.
16
18
  import { CLI_USAGE } from './cli-usage.js';
17
19
  export { CLI_USAGE };
@@ -42,6 +44,8 @@ const TELEMETRY_COMMAND = 'telemetry';
42
44
  const FEEDBACK_COMMAND = 'feedback';
43
45
  const DOCTOR_COMMAND = 'doctor';
44
46
  const SETUP_COMMAND = 'setup';
47
+ /** `reticle hook`: the agent prompt hook. `cli.ts` runs it before this parser, and before telemetry. */
48
+ export const HOOK_COMMAND = 'hook';
45
49
  /** The `reticle telemetry` sub-actions. Bare `reticle telemetry` means `status`. */
46
50
  export const TelemetryAction = {
47
51
  STATUS: 'status',
@@ -61,6 +65,15 @@ export const DAEMON_INNER_COMMAND = '_daemon';
61
65
  export const UNKNOWN_COMMAND = 'unknown';
62
66
  const HELP_COMMAND = 'help';
63
67
  const HELP_FLAGS = new Set(['--help', '-h']);
68
+ /**
69
+ * Commands that only ask about the CLI. An agent often runs one before anything else, so the first
70
+ * run on a machine is not the install until a real command follows.
71
+ */
72
+ export const PROBE_COMMANDS = new Set([
73
+ VERSION_COMMAND,
74
+ HELP_COMMAND,
75
+ TELEMETRY_COMMAND,
76
+ ]);
64
77
  /** Every command the typed parser below routes. The parser refuses any word not in this list. */
65
78
  export const LOCAL_COMMANDS = [
66
79
  INIT_COMMAND,
@@ -86,6 +99,7 @@ export const LOCAL_COMMANDS = [
86
99
  DAEMON_INNER_COMMAND,
87
100
  DOCTOR_COMMAND,
88
101
  SETUP_COMMAND,
102
+ HOOK_COMMAND,
89
103
  ];
90
104
  const LOCAL_COMMAND_SET = new Set(LOCAL_COMMANDS);
91
105
  const KNOWN_COMMANDS = new Set([
@@ -110,24 +124,19 @@ const COMMAND_FLAG_ALIASES = new Map([
110
124
  */
111
125
  function numberFlag(args, name) {
112
126
  const at = args.indexOf(name);
113
- if (at < 0)
127
+ if (at < 0) {
114
128
  return 0;
129
+ }
115
130
  const raw = Number(args[at + 1]);
116
131
  return Number.isFinite(raw) && raw >= 0 ? Math.floor(raw) : 0;
117
132
  }
118
133
  /** The subcommand name if we recognize it, else `unknown`. Bare `reticle` reports `help`. */
119
134
  export function knownCommand(arg) {
120
- if (arg === undefined || '' === arg)
135
+ if (arg === undefined || '' === arg) {
121
136
  return HELP_COMMAND;
137
+ }
122
138
  return KNOWN_COMMANDS.has(arg) ? arg : (COMMAND_FLAG_ALIASES.get(arg) ?? UNKNOWN_COMMAND);
123
139
  }
124
- /**
125
- * Force a hidden browser. The default is now HEADED: a run nobody can see is a run nobody trusts,
126
- * and every "did it actually do anything?" question cost a round-trip. CI passes this (or just sets
127
- * CI, which flips the default) because there is no display there to be headed on.
128
- */
129
- export const HEADLESS_FLAG = '--headless';
130
- export const DRIVE_FLAG = '--drive';
131
140
  const QUIET_FLAG = '--quiet';
132
141
  const DRY_RUN_FLAG = '--dry-run';
133
142
  const YES_FLAG = '--yes';
@@ -159,6 +168,8 @@ const START_FLAG = '--start';
159
168
  const CAPTURE_BODIES_FLAG = '--capture-bodies';
160
169
  /** `--hooks`: also install the print-only Claude Code Stop hook (`reticle report --hook`). */
161
170
  const HOOKS_FLAG = '--hooks';
171
+ /** `--no-prompt-capture`: install no prompt-capture hook for the agents found. */
172
+ const NO_PROMPT_CAPTURE_FLAG = '--no-prompt-capture';
162
173
  /**
163
174
  * The rest of the runtime surface.
164
175
  *
@@ -169,6 +180,8 @@ const HOOKS_FLAG = '--hooks';
169
180
  const JSON_FLAG = '--json';
170
181
  const NO_DRIVE_FLAG = '--no-drive';
171
182
  const NO_OPEN_FLAG = '--no-open';
183
+ /** `reticle open <url> --navigate`: move a tab already on the origin to the url (#1140). */
184
+ const NAVIGATE_FLAG = '--navigate';
172
185
  /** Connect and stop: no coverage summary and no prompt at the end. */
173
186
  const NO_FIRST_RUN_FLAG = '--no-first-run';
174
187
  const NO_AGENTS_FLAG = '--no-agents';
@@ -193,9 +206,8 @@ const DRIVE_MODEL_FLAG = '--drive-model';
193
206
  */
194
207
  const LICENSE_FLAG = '--license';
195
208
  const NO_INSTALL_FLAG = '--no-install';
196
- export const HTTP_FLAG = '--http';
197
- export const HTTP_PORT_FLAG = '--http-port';
198
- export const HTTP_TOKEN_FLAG = '--http-token';
209
+ /** Give this checkout a project id of its own: a copied repository keeps the original's. */
210
+ const NEW_ID_FLAG = '--new-id';
199
211
  /**
200
212
  * A usage error names the thing that was wrong.
201
213
  *
@@ -208,98 +220,19 @@ export const HTTP_TOKEN_FLAG = '--http-token';
208
220
  * The help text is still shown — cli.ts renders it as readable text underneath. It is just not the
209
221
  * message any more.
210
222
  */
211
- const requiresHttp = (flag) => ({
212
- kind: 'error',
213
- message: `${flag} requires ${HTTP_FLAG} — it configures the verify endpoint ${HTTP_FLAG} starts`,
214
- });
215
223
  const unknownCommand = (command) => ({
216
224
  kind: 'error',
217
225
  message: `unknown command '${command}'`,
218
226
  });
219
- function parseServeFlags(args, defaultPort, defaultHeadless) {
220
- let port = defaultPort;
221
- let driveUrl;
222
- let headless = defaultHeadless;
223
- let http = false;
224
- let httpPort;
225
- let httpToken;
226
- let i = 0;
227
- while (i < args.length) {
228
- const arg = args[i];
229
- // `i < args.length` already guarantees this, but the index signature does not say so and the
230
- // unknown-argument error needs a real string to name.
231
- if (arg === undefined)
232
- break;
233
- if (arg === PORT_FLAG) {
234
- i++;
235
- const n = args[i];
236
- if (n === undefined)
237
- return missingValue(PORT_FLAG);
238
- const parsed = parseInt(n, 10);
239
- if (isNaN(parsed))
240
- return notANumber(PORT_FLAG, n);
241
- port = parsed;
242
- }
243
- else if (arg === DRIVE_FLAG) {
244
- i++;
245
- driveUrl = args[i];
246
- if (driveUrl === undefined)
247
- return missingValue(DRIVE_FLAG);
248
- }
249
- else if (arg === HEADED_FLAG) {
250
- headless = false;
251
- }
252
- else if (arg === HEADLESS_FLAG) {
253
- headless = true;
254
- }
255
- else if (arg === HTTP_FLAG) {
256
- http = true;
257
- }
258
- else if (arg === HTTP_PORT_FLAG) {
259
- i++;
260
- const n = args[i];
261
- if (n === undefined)
262
- return missingValue(HTTP_PORT_FLAG);
263
- const parsed = parseInt(n, 10);
264
- if (isNaN(parsed))
265
- return notANumber(HTTP_PORT_FLAG, n);
266
- httpPort = parsed;
267
- }
268
- else if (arg === HTTP_TOKEN_FLAG) {
269
- i++;
270
- httpToken = args[i];
271
- if (httpToken === undefined)
272
- return missingValue(HTTP_TOKEN_FLAG);
273
- }
274
- else {
275
- return unknownArgument(arg);
276
- }
277
- i++;
278
- }
279
- // Without `--http` these flags configure an endpoint nothing starts, and they were accepted and
280
- // silently ignored — worse than being rejected, because the whole reason to pass them is to be
281
- // honoured (#687).
282
- if (!http && httpPort !== undefined)
283
- return requiresHttp(HTTP_PORT_FLAG);
284
- if (!http && httpToken !== undefined)
285
- return requiresHttp(HTTP_TOKEN_FLAG);
286
- return {
287
- kind: 'ok',
288
- port,
289
- headless,
290
- http,
291
- ...(driveUrl !== undefined ? { driveUrl } : {}),
292
- ...(httpPort !== undefined ? { httpPort } : {}),
293
- ...(httpToken !== undefined ? { httpToken } : {}),
294
- };
295
- }
296
227
  function parsePortFlag(args, defaultPort) {
297
228
  const idx = args.indexOf(PORT_FLAG);
298
- if (-1 === idx)
229
+ if (-1 === idx) {
299
230
  return defaultPort;
231
+ }
300
232
  const n = args[idx + 1];
301
- if (n === undefined)
233
+ if (n === undefined) {
302
234
  return defaultPort;
235
+ }
303
236
  const parsed = parseInt(n, 10);
304
237
  return isNaN(parsed) ? defaultPort : parsed;
305
238
  }
@@ -323,8 +256,9 @@ function parseDriveSuffix(args, port, defaultHeadless) {
323
256
  return unknownArgument(arg);
324
257
  }
325
258
  }
326
- if (driveUrl === undefined)
259
+ if (driveUrl === undefined) {
327
260
  return missingOperand(DRIVE_COMMAND, 'a url');
261
+ }
328
262
  return { kind: 'ok', port, driveUrl, headless };
329
263
  }
330
264
  function parseInitFlags(args) {
@@ -339,6 +273,7 @@ function parseInitFlags(args) {
339
273
  let start = false;
340
274
  let captureBodies = false;
341
275
  let hooks = false;
276
+ let promptCapture = true;
342
277
  let json = false;
343
278
  let open = true;
344
279
  let firstRun = true;
@@ -347,28 +282,33 @@ function parseInitFlags(args) {
347
282
  let url;
348
283
  let timeoutSeconds;
349
284
  let licenseKey;
285
+ let newId = false;
350
286
  let i = 0;
351
287
  while (i < args.length) {
352
288
  const arg = args[i];
353
289
  // `i < args.length` already guarantees this, but the index signature does not say so and the
354
290
  // unknown-argument error needs a real string to name.
355
- if (arg === undefined)
291
+ if (arg === undefined) {
356
292
  break;
293
+ }
357
294
  if (arg === PORT_FLAG) {
358
295
  i++;
359
296
  const n = args[i];
360
- if (n === undefined)
297
+ if (n === undefined) {
361
298
  return missingValue(PORT_FLAG);
299
+ }
362
300
  const parsed = parseInt(n, 10);
363
- if (isNaN(parsed))
301
+ if (isNaN(parsed)) {
364
302
  return notANumber(PORT_FLAG, n);
303
+ }
365
304
  port = parsed;
366
305
  }
367
306
  else if (arg === APP_FLAG) {
368
307
  i++;
369
308
  const value = args[i];
370
- if (value === undefined)
309
+ if (value === undefined) {
371
310
  return missingValue(APP_FLAG);
311
+ }
372
312
  app = value;
373
313
  }
374
314
  else if (arg === FLOW_FLAG || arg === NO_DRIVE_FLAG || arg === DRIVE_MODEL_FLAG) {
@@ -377,8 +317,9 @@ function parseInitFlags(args) {
377
317
  else if (arg === ENV_FLAG) {
378
318
  i++;
379
319
  const value = args[i];
380
- if (value === undefined)
320
+ if (value === undefined) {
381
321
  return missingValue(ENV_FLAG);
322
+ }
382
323
  env.push(value);
383
324
  }
384
325
  else if (arg === FILES_ONLY_FLAG) {
@@ -393,6 +334,9 @@ function parseInitFlags(args) {
393
334
  else if (arg === HOOKS_FLAG) {
394
335
  hooks = true;
395
336
  }
337
+ else if (arg === NO_PROMPT_CAPTURE_FLAG) {
338
+ promptCapture = false;
339
+ }
396
340
  else if (arg === JSON_FLAG) {
397
341
  json = true;
398
342
  }
@@ -411,25 +355,29 @@ function parseInitFlags(args) {
411
355
  else if (arg === URL_FLAG) {
412
356
  i++;
413
357
  const value = args[i];
414
- if (value === undefined)
358
+ if (value === undefined) {
415
359
  return missingValue(URL_FLAG);
360
+ }
416
361
  url = value;
417
362
  }
418
363
  else if (arg === LICENSE_FLAG) {
419
364
  i++;
420
365
  const value = args[i];
421
- if (value === undefined)
366
+ if (value === undefined) {
422
367
  return missingValue(LICENSE_FLAG);
368
+ }
423
369
  licenseKey = value;
424
370
  }
425
371
  else if (arg === TIMEOUT_FLAG_INIT) {
426
372
  i++;
427
373
  const value = args[i];
428
- if (value === undefined)
374
+ if (value === undefined) {
429
375
  return missingValue(TIMEOUT_FLAG_INIT);
376
+ }
430
377
  const seconds = parseInt(value, 10);
431
- if (isNaN(seconds))
378
+ if (isNaN(seconds)) {
432
379
  return notANumber(TIMEOUT_FLAG_INIT, value);
380
+ }
433
381
  timeoutSeconds = seconds;
434
382
  }
435
383
  else if (arg === NO_MCP_FLAG) {
@@ -438,6 +386,9 @@ function parseInitFlags(args) {
438
386
  else if (arg === NO_INSTALL_FLAG) {
439
387
  install = false;
440
388
  }
389
+ else if (arg === NEW_ID_FLAG) {
390
+ newId = true;
391
+ }
441
392
  else if (arg === DRY_RUN_FLAG) {
442
393
  dryRun = true;
443
394
  }
@@ -462,6 +413,7 @@ function parseInitFlags(args) {
462
413
  filesOnly: filesOnly || (app !== undefined && !start),
463
414
  captureBodies,
464
415
  hooks,
416
+ promptCapture,
465
417
  json,
466
418
  open,
467
419
  firstRun,
@@ -470,6 +422,7 @@ function parseInitFlags(args) {
470
422
  url,
471
423
  timeoutSeconds,
472
424
  licenseKey,
425
+ newId,
473
426
  };
474
427
  }
475
428
  /** Pure CLI arg parser — exported for unit tests. argv = process.argv.slice(2). */
@@ -499,8 +452,9 @@ function parseTargetArgs(rest) {
499
452
  i += 1;
500
453
  continue;
501
454
  }
502
- if (arg !== undefined && !arg.startsWith('-'))
455
+ if (arg !== undefined && !arg.startsWith('-')) {
503
456
  files.push(arg);
457
+ }
504
458
  }
505
459
  return since === undefined ? { files } : { files, since };
506
460
  }
@@ -510,8 +464,9 @@ function parseTargetArgs(rest) {
510
464
  * workspace itself, and a tutorial only dials one when asked to run.
511
465
  */
512
466
  export function dialsTheDaemon(parsed) {
513
- if ('init' === parsed.kind)
467
+ if ('init' === parsed.kind) {
514
468
  return false;
469
+ }
515
470
  return 'port' in parsed;
516
471
  }
517
472
  /**
@@ -522,16 +477,19 @@ export function dialsTheDaemon(parsed) {
522
477
  */
523
478
  export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
524
479
  // Bare `reticle` is `serve`.
525
- if (0 === argv.length)
480
+ if (0 === argv.length) {
526
481
  return { kind: 'serve', port: defaultPort, headless: defaultHeadless, http: false };
482
+ }
527
483
  const [cmd, ...rest] = argv;
528
484
  // Guaranteed by the bare-argv check above; restated so the unknown-command error can name it.
529
- if (cmd === undefined)
485
+ if (cmd === undefined) {
530
486
  return { kind: 'error', message: CLI_USAGE };
487
+ }
531
488
  // `version` (or the conventional -v/--version flags) prints the running version — the diagnostic the
532
489
  // troubleshooting docs lean on to confirm which npx-resolved build is actually executing.
533
- if (cmd === VERSION_COMMAND || '--version' === cmd || '-v' === cmd)
490
+ if (cmd === VERSION_COMMAND || '--version' === cmd || '-v' === cmd) {
534
491
  return { kind: 'version' };
492
+ }
535
493
  // `help` (and the conventional -h/--help) print usage to stdout and exit 0 — the universal first move
536
494
  // for a new user, which otherwise fell through to a JSON error with exit 1.
537
495
  //
@@ -545,23 +503,27 @@ export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
545
503
  // Removed commands answer before help does: `reticle hunt --help` should say it is gone, not
546
504
  // describe something that no longer runs.
547
505
  const removed = REMOVED_COMMANDS.get(cmd);
548
- if (removed !== undefined)
506
+ if (removed !== undefined) {
549
507
  return { kind: 'removed', message: removedNote(cmd, removed) };
508
+ }
550
509
  if (HELP_COMMAND === cmd || HELP_FLAGS.has(cmd)) {
551
510
  // `reticle help all`, `reticle --help all`, `reticle help init`.
552
511
  const topic = rest.find((arg) => !HELP_FLAGS.has(arg));
553
512
  return topic === undefined ? { kind: 'help' } : { kind: 'help', topic };
554
513
  }
555
- if (argv.some((arg) => HELP_FLAGS.has(arg)))
514
+ if (argv.some((arg) => HELP_FLAGS.has(arg))) {
556
515
  return { kind: 'help', topic: cmd };
516
+ }
557
517
  // The list is the gate, so a command cannot be routed without also being named in telemetry.
558
- if (!LOCAL_COMMAND_SET.has(cmd))
518
+ if (!LOCAL_COMMAND_SET.has(cmd)) {
559
519
  return unknownCommand(cmd);
520
+ }
560
521
  switch (cmd) {
561
522
  case INIT_COMMAND: {
562
523
  const r = parseInitFlags(rest);
563
- if ('error' === r.kind)
524
+ if ('error' === r.kind) {
564
525
  return r;
526
+ }
565
527
  return {
566
528
  kind: 'init',
567
529
  port: r.port,
@@ -573,6 +535,7 @@ export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
573
535
  filesOnly: r.filesOnly,
574
536
  captureBodies: r.captureBodies,
575
537
  hooks: r.hooks,
538
+ promptCapture: r.promptCapture,
576
539
  json: r.json,
577
540
  open: r.open,
578
541
  firstRun: r.firstRun,
@@ -581,12 +544,14 @@ export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
581
544
  url: r.url,
582
545
  timeoutSeconds: r.timeoutSeconds,
583
546
  licenseKey: r.licenseKey,
547
+ newId: r.newId,
584
548
  };
585
549
  }
586
550
  case SERVE_COMMAND: {
587
551
  const r = parseServeFlags(rest, defaultPort, defaultHeadless);
588
- if ('error' === r.kind)
552
+ if ('error' === r.kind) {
589
553
  return r;
554
+ }
590
555
  return {
591
556
  kind: 'serve',
592
557
  port: r.port,
@@ -601,8 +566,9 @@ export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
601
566
  const port = parsePortFlag(rest, defaultPort);
602
567
  // `stop --force` is what `kill` was: free the port by its listener, which must still be a
603
568
  // Reticle daemon. Overriding that refusal stays on `restart --force` and the old `kill --force`.
604
- if (rest.includes(FORCE_FLAG))
569
+ if (rest.includes(FORCE_FLAG)) {
605
570
  return { kind: 'kill', port, force: false };
571
+ }
606
572
  const quiet = rest.includes(QUIET_FLAG);
607
573
  return { kind: 'stop', port, quiet };
608
574
  }
@@ -657,8 +623,9 @@ export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
657
623
  }
658
624
  // Only `mcp` today. A bare `reticle setup` falls to help rather than guessing, because the
659
625
  // next subcommand here will not be a synonym for this one.
660
- if (what !== 'mcp')
626
+ if (what !== 'mcp') {
661
627
  return { kind: 'help', topic: SETUP_COMMAND };
628
+ }
662
629
  return { kind: 'setup-mcp' };
663
630
  }
664
631
  case LICENSE_COMMAND:
@@ -678,18 +645,23 @@ export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
678
645
  const port = parsePortFlag(rest, defaultPort);
679
646
  // The first non-flag arg is the url (optional — omitting reuses a connected tab).
680
647
  const url = rest.find((a) => !a.startsWith('--') && a !== String(port));
681
- return url !== undefined ? { kind: 'open', port, url } : { kind: 'open', port };
648
+ const navigate = rest.includes(NAVIGATE_FLAG);
649
+ return url !== undefined
650
+ ? { kind: 'open', port, url, navigate }
651
+ : { kind: 'open', port, navigate };
682
652
  }
683
653
  case DRIVE_COMMAND: {
684
654
  const r = parseDriveSuffix(rest, defaultPort, defaultHeadless);
685
- if ('error' === r.kind)
655
+ if ('error' === r.kind) {
686
656
  return r;
657
+ }
687
658
  return { kind: 'drive', port: r.port, driveUrl: r.driveUrl, headless: r.headless };
688
659
  }
689
660
  case DAEMON_INNER_COMMAND: {
690
661
  const r = parseServeFlags(rest, defaultPort, defaultHeadless);
691
- if ('error' === r.kind)
662
+ if ('error' === r.kind) {
692
663
  return r;
664
+ }
693
665
  return {
694
666
  kind: '_daemon',
695
667
  port: r.port,
@@ -702,8 +674,9 @@ export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
702
674
  }
703
675
  case VERIFY_COMMAND: {
704
676
  const r = parseVerifySuffix(rest, defaultPort);
705
- if ('error' === r.kind)
677
+ if ('error' === r.kind) {
706
678
  return r;
679
+ }
707
680
  return {
708
681
  kind: 'verify',
709
682
  url: r.url,
@@ -749,6 +722,9 @@ export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
749
722
  ...(session === undefined ? {} : { session }),
750
723
  };
751
724
  }
725
+ // `cli.ts` runs `hook` before this parser. Reached only without that dispatch: say what it does.
726
+ case HOOK_COMMAND:
727
+ return { kind: 'help', topic: HOOK_COMMAND };
752
728
  case CONTEXT_COMMAND: {
753
729
  // `--compact` is the only form; accepted so the hook line reads as what it does.
754
730
  const at = rest.indexOf(SESSION_FLAG);
@@ -761,8 +737,9 @@ export function parseCliArgs(argv, defaultPort, defaultHeadless = false) {
761
737
  return { kind: 'rollback' };
762
738
  case MCP_COMMAND: {
763
739
  const r = parseServeFlags(rest, defaultPort, defaultHeadless);
764
- if ('error' === r.kind)
740
+ if ('error' === r.kind) {
765
741
  return r;
742
+ }
766
743
  return {
767
744
  kind: 'mcp',
768
745
  port: r.port,
@@ -1,14 +1,3 @@
1
- /**
2
- * The `reticle` help text.
3
- *
4
- * `reticle --help` is short: the commands a person needs, one line each, in four groups. Every other
5
- * command is still there and still works; `reticle help all` lists it, and `reticle <command> --help`
6
- * carries the detail that used to sit in the one long page.
7
- *
8
- * The lines say `reticle <command>`, which is the bin this package installs. Copied into `npx` it is
9
- * not: `npx reticle` resolves the PACKAGE named `reticle`, which belongs to somebody else, and npx
10
- * will happily fetch and run it. So the npx spelling leads every page.
11
- */
12
1
  export declare const HelpGroup: {
13
2
  readonly START: "Get started";
14
3
  readonly CHECK: "Check your app";