@reticlehq/server 2.2.1 → 2.4.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 (790) hide show
  1. package/README.md +1 -1
  2. package/dist/bridge-security.d.ts +0 -1
  3. package/dist/bridge-security.js +0 -1
  4. package/dist/bridge.d.ts +0 -1
  5. package/dist/bridge.js +102 -12
  6. package/dist/bridge.test-harness.d.ts +5 -1
  7. package/dist/bridge.test-harness.js +12 -1
  8. package/dist/capsule/capsule-store.d.ts +2 -3
  9. package/dist/capsule/capsule-store.js +0 -1
  10. package/dist/capsule/capsule.d.ts +0 -1
  11. package/dist/capsule/capsule.js +0 -1
  12. package/dist/capsule/causal-summary.d.ts +21 -1
  13. package/dist/capsule/causal-summary.js +20 -2
  14. package/dist/capsule/divergence.d.ts +0 -1
  15. package/dist/capsule/divergence.js +0 -1
  16. package/dist/capsule/minimize.d.ts +0 -1
  17. package/dist/capsule/minimize.js +0 -1
  18. package/dist/capsule/predicate-to-links.d.ts +0 -1
  19. package/dist/capsule/predicate-to-links.js +0 -1
  20. package/dist/cli-doctor.d.ts +6 -0
  21. package/dist/cli-doctor.js +60 -0
  22. package/dist/cli-flow-commands.d.ts +0 -1
  23. package/dist/cli-flow-commands.js +0 -1
  24. package/dist/cli-launch.d.ts +0 -1
  25. package/dist/cli-launch.js +7 -3
  26. package/dist/cli-parse.d.ts +47 -3
  27. package/dist/cli-parse.js +147 -13
  28. package/dist/cli-port.d.ts +3 -1
  29. package/dist/cli-port.js +21 -1
  30. package/dist/cli-verify.d.ts +0 -1
  31. package/dist/cli-verify.js +1 -2
  32. package/dist/cli.d.ts +0 -1
  33. package/dist/cli.js +88 -69
  34. package/dist/cloud/cloud-config.d.ts +0 -1
  35. package/dist/cloud/cloud-config.js +0 -1
  36. package/dist/cloud/cloud-sync.d.ts +4 -5
  37. package/dist/cloud/cloud-sync.js +0 -1
  38. package/dist/cloud-cli.d.ts +0 -1
  39. package/dist/cloud-cli.js +9 -2
  40. package/dist/crawl/crawl-tools.d.ts +0 -1
  41. package/dist/crawl/crawl-tools.js +1 -2
  42. package/dist/crawl/crawl.d.ts +17 -3
  43. package/dist/crawl/crawl.js +43 -4
  44. package/dist/daemon-resilience.d.ts +6 -1
  45. package/dist/daemon-resilience.js +63 -1
  46. package/dist/daemon.d.ts +23 -3
  47. package/dist/daemon.js +36 -24
  48. package/dist/domain/domain-model.d.ts +0 -1
  49. package/dist/domain/domain-model.js +1 -2
  50. package/dist/domain/domain-tools.d.ts +0 -7
  51. package/dist/domain/domain-tools.js +21 -4
  52. package/dist/domain/flow-risk.d.ts +0 -1
  53. package/dist/domain/flow-risk.js +0 -1
  54. package/dist/ee/audit-log.d.ts +0 -1
  55. package/dist/ee/audit-log.js +0 -1
  56. package/dist/events/body-failures.d.ts +4 -0
  57. package/dist/events/body-failures.js +113 -0
  58. package/dist/events/contradictions.d.ts +53 -0
  59. package/dist/events/contradictions.js +282 -0
  60. package/dist/events/echo-mismatch.d.ts +4 -0
  61. package/dist/events/echo-mismatch.js +138 -0
  62. package/dist/events/event-filters.d.ts +17 -3
  63. package/dist/events/event-filters.js +13 -3
  64. package/dist/events/json-salvage.d.ts +32 -0
  65. package/dist/events/json-salvage.js +96 -0
  66. package/dist/events/predicate-eval.d.ts +2 -1
  67. package/dist/events/predicate-eval.js +56 -9
  68. package/dist/events/predicate.d.ts +0 -1
  69. package/dist/events/predicate.js +56 -2
  70. package/dist/events/reaction.d.ts +0 -1
  71. package/dist/events/reaction.js +0 -1
  72. package/dist/events/reconcile.d.ts +39 -0
  73. package/dist/events/reconcile.js +211 -0
  74. package/dist/events/ring-buffer.d.ts +0 -1
  75. package/dist/events/ring-buffer.js +0 -1
  76. package/dist/events/stale-response.d.ts +4 -0
  77. package/dist/events/stale-response.js +139 -0
  78. package/dist/events/unit-mismatch.d.ts +16 -0
  79. package/dist/events/unit-mismatch.js +167 -0
  80. package/dist/flows/affected-tools.d.ts +18 -0
  81. package/dist/flows/affected-tools.js +52 -0
  82. package/dist/flows/affected.d.ts +0 -1
  83. package/dist/flows/affected.js +0 -1
  84. package/dist/flows/annotate-tools.d.ts +0 -1
  85. package/dist/flows/annotate-tools.js +21 -3
  86. package/dist/flows/annotate.d.ts +0 -1
  87. package/dist/flows/annotate.js +0 -1
  88. package/dist/flows/annotation-store.d.ts +0 -1
  89. package/dist/flows/annotation-store.js +0 -1
  90. package/dist/flows/assertion-integrity.d.ts +0 -1
  91. package/dist/flows/assertion-integrity.js +0 -1
  92. package/dist/flows/assertion-tiers-store.d.ts +0 -1
  93. package/dist/flows/assertion-tiers-store.js +0 -1
  94. package/dist/flows/buddy-status.d.ts +0 -1
  95. package/dist/flows/buddy-status.js +0 -1
  96. package/dist/flows/coverage.d.ts +0 -1
  97. package/dist/flows/coverage.js +0 -1
  98. package/dist/flows/decision.d.ts +0 -7
  99. package/dist/flows/decision.js +47 -7
  100. package/dist/flows/flake-store.d.ts +0 -1
  101. package/dist/flows/flake-store.js +0 -1
  102. package/dist/flows/flake.d.ts +0 -1
  103. package/dist/flows/flake.js +0 -1
  104. package/dist/flows/flow-classify.d.ts +0 -1
  105. package/dist/flows/flow-classify.js +0 -1
  106. package/dist/flows/flow-replay-run.d.ts +0 -1
  107. package/dist/flows/flow-replay-run.js +2 -3
  108. package/dist/flows/flow-replay.d.ts +20 -4
  109. package/dist/flows/flow-replay.js +9 -43
  110. package/dist/flows/flow-report.d.ts +0 -1
  111. package/dist/flows/flow-report.js +0 -1
  112. package/dist/flows/flow-scope.d.ts +0 -1
  113. package/dist/flows/flow-scope.js +0 -1
  114. package/dist/flows/flow-sources.d.ts +0 -1
  115. package/dist/flows/flow-sources.js +0 -1
  116. package/dist/flows/flow-step-runners.d.ts +23 -0
  117. package/dist/flows/flow-step-runners.js +102 -0
  118. package/dist/flows/flow-success.d.ts +0 -1
  119. package/dist/flows/flow-success.js +0 -1
  120. package/dist/flows/flow-tools.d.ts +0 -1
  121. package/dist/flows/flow-tools.js +44 -14
  122. package/dist/flows/flows.d.ts +6 -2
  123. package/dist/flows/flows.js +15 -2
  124. package/dist/flows/gate.d.ts +0 -1
  125. package/dist/flows/gate.js +0 -1
  126. package/dist/flows/git-changed.d.ts +0 -1
  127. package/dist/flows/git-changed.js +0 -1
  128. package/dist/flows/heal-run.d.ts +0 -1
  129. package/dist/flows/heal-run.js +0 -1
  130. package/dist/flows/heal.d.ts +0 -1
  131. package/dist/flows/heal.js +0 -1
  132. package/dist/flows/parallel-suite.d.ts +0 -1
  133. package/dist/flows/parallel-suite.js +0 -1
  134. package/dist/flows/recordings.d.ts +0 -1
  135. package/dist/flows/recordings.js +0 -1
  136. package/dist/flows/replay.d.ts +0 -1
  137. package/dist/flows/replay.js +71 -4
  138. package/dist/flows/server-verify.d.ts +0 -1
  139. package/dist/flows/server-verify.js +0 -1
  140. package/dist/flows/verify-change-tools.d.ts +2 -0
  141. package/dist/flows/verify-change-tools.js +187 -0
  142. package/dist/flows/watch-batcher.d.ts +0 -1
  143. package/dist/flows/watch-batcher.js +0 -1
  144. package/dist/honesty/accepted-write.d.ts +14 -0
  145. package/dist/honesty/accepted-write.js +17 -0
  146. package/dist/honesty/blind-spots.d.ts +18 -1
  147. package/dist/honesty/blind-spots.js +47 -5
  148. package/dist/honesty/honesty.d.ts +0 -1
  149. package/dist/honesty/honesty.js +0 -1
  150. package/dist/honesty/uncaptured-bodies.d.ts +19 -0
  151. package/dist/honesty/uncaptured-bodies.js +30 -0
  152. package/dist/honesty/unread-outcome.d.ts +2 -0
  153. package/dist/honesty/unread-outcome.js +50 -0
  154. package/dist/honesty/verified.d.ts +40 -0
  155. package/dist/honesty/verified.js +86 -0
  156. package/dist/http-server.d.ts +0 -1
  157. package/dist/http-server.js +5 -1
  158. package/dist/hunt/hunt-report.d.ts +50 -0
  159. package/dist/hunt/hunt-report.js +84 -0
  160. package/dist/idle-shutdown.d.ts +0 -1
  161. package/dist/idle-shutdown.js +0 -1
  162. package/dist/index.d.ts +0 -1
  163. package/dist/index.js +0 -1
  164. package/dist/init/agent-rules.d.ts +0 -1
  165. package/dist/init/agent-rules.js +4 -2
  166. package/dist/init/capabilities.d.ts +17 -0
  167. package/dist/init/capabilities.js +51 -0
  168. package/dist/init/cursor.d.ts +0 -1
  169. package/dist/init/cursor.js +0 -1
  170. package/dist/init/desktop-doctor.d.ts +40 -0
  171. package/dist/init/desktop-doctor.js +198 -0
  172. package/dist/init/detect.d.ts +25 -1
  173. package/dist/init/detect.js +65 -4
  174. package/dist/init/mcp.d.ts +0 -1
  175. package/dist/init/mcp.js +0 -1
  176. package/dist/init/next-patch.d.ts +41 -0
  177. package/dist/init/next-patch.js +106 -0
  178. package/dist/init/node-io.d.ts +0 -1
  179. package/dist/init/node-io.js +25 -1
  180. package/dist/init/patch-kind.d.ts +20 -0
  181. package/dist/init/patch-kind.js +10 -0
  182. package/dist/init/plan-framework.d.ts +35 -0
  183. package/dist/init/plan-framework.js +217 -0
  184. package/dist/init/plan.d.ts +55 -4
  185. package/dist/init/plan.js +130 -112
  186. package/dist/init/project-id.d.ts +0 -1
  187. package/dist/init/project-id.js +0 -1
  188. package/dist/init/run.d.ts +17 -1
  189. package/dist/init/run.js +237 -18
  190. package/dist/init/slash-command.d.ts +18 -0
  191. package/dist/init/slash-command.js +52 -0
  192. package/dist/init/snippets.d.ts +48 -3
  193. package/dist/init/snippets.js +156 -6
  194. package/dist/init/vite-config.d.ts +4 -11
  195. package/dist/init/vite-config.js +15 -8
  196. package/dist/input/driven-redaction.d.ts +15 -0
  197. package/dist/input/driven-redaction.js +76 -0
  198. package/dist/input/network-detail.d.ts +9 -4
  199. package/dist/input/network-detail.js +35 -16
  200. package/dist/input/network-mock-tools.d.ts +0 -1
  201. package/dist/input/network-mock-tools.js +3 -4
  202. package/dist/input/network-mock.d.ts +0 -1
  203. package/dist/input/network-mock.js +0 -1
  204. package/dist/input/real-input.d.ts +14 -1
  205. package/dist/input/real-input.js +45 -3
  206. package/dist/input/scroll-find.d.ts +0 -1
  207. package/dist/input/scroll-find.js +0 -1
  208. package/dist/input/scroll-tools.d.ts +0 -1
  209. package/dist/input/scroll-tools.js +0 -1
  210. package/dist/input/viewport-tools.d.ts +0 -1
  211. package/dist/input/viewport-tools.js +3 -4
  212. package/dist/journal/ambient-store.d.ts +0 -1
  213. package/dist/journal/ambient-store.js +0 -1
  214. package/dist/journal/ambient.d.ts +0 -1
  215. package/dist/journal/ambient.js +0 -1
  216. package/dist/journal/attach-journal.d.ts +0 -1
  217. package/dist/journal/attach-journal.js +0 -1
  218. package/dist/journal/deviation-report.d.ts +0 -1
  219. package/dist/journal/deviation-report.js +0 -1
  220. package/dist/journal/deviation-service.d.ts +0 -1
  221. package/dist/journal/deviation-service.js +0 -1
  222. package/dist/journal/envelope-store.d.ts +0 -1
  223. package/dist/journal/envelope-store.js +0 -1
  224. package/dist/journal/envelope.d.ts +8 -9
  225. package/dist/journal/envelope.js +0 -1
  226. package/dist/journal/journal-query.d.ts +0 -1
  227. package/dist/journal/journal-query.js +0 -1
  228. package/dist/journal/journal-recorder.d.ts +0 -1
  229. package/dist/journal/journal-recorder.js +0 -1
  230. package/dist/journal/retention.d.ts +0 -1
  231. package/dist/journal/retention.js +0 -1
  232. package/dist/journal/rollups.d.ts +0 -1
  233. package/dist/journal/rollups.js +0 -1
  234. package/dist/journal/session-end.d.ts +0 -1
  235. package/dist/journal/session-end.js +0 -1
  236. package/dist/journal/session-journal.d.ts +0 -1
  237. package/dist/journal/session-journal.js +0 -1
  238. package/dist/license/license.d.ts +0 -1
  239. package/dist/license/license.js +0 -1
  240. package/dist/log.d.ts +0 -1
  241. package/dist/log.js +0 -1
  242. package/dist/mcp-proxy.d.ts +35 -4
  243. package/dist/mcp-proxy.js +174 -28
  244. package/dist/mcp.d.ts +15 -1
  245. package/dist/mcp.js +145 -17
  246. package/dist/oracles/flow-instrument-gaps.d.ts +0 -1
  247. package/dist/oracles/flow-instrument-gaps.js +0 -1
  248. package/dist/oracles/propose-consequences.d.ts +0 -1
  249. package/dist/oracles/propose-consequences.js +0 -1
  250. package/dist/oracles/self-instrument.d.ts +0 -1
  251. package/dist/oracles/self-instrument.js +0 -1
  252. package/dist/pairing-token.d.ts +0 -1
  253. package/dist/pairing-token.js +0 -1
  254. package/dist/phenomena/phenomena.d.ts +0 -1
  255. package/dist/phenomena/phenomena.js +0 -1
  256. package/dist/pool/browser-pool.d.ts +0 -1
  257. package/dist/pool/browser-pool.js +0 -1
  258. package/dist/pool/lease-reaper.d.ts +0 -1
  259. package/dist/pool/lease-reaper.js +0 -1
  260. package/dist/pool/playwright-launcher.d.ts +0 -1
  261. package/dist/pool/playwright-launcher.js +10 -2
  262. package/dist/project/baselines.d.ts +0 -1
  263. package/dist/project/baselines.js +0 -1
  264. package/dist/project/file-lock.d.ts +2 -1
  265. package/dist/project/file-lock.js +12 -2
  266. package/dist/project/fs-port.d.ts +0 -1
  267. package/dist/project/fs-port.js +0 -1
  268. package/dist/project/project-store.d.ts +0 -1
  269. package/dist/project/project-store.js +0 -1
  270. package/dist/project/project-tools.d.ts +0 -1
  271. package/dist/project/project-tools.js +29 -4
  272. package/dist/project/reticle-dir.d.ts +0 -1
  273. package/dist/project/reticle-dir.js +0 -1
  274. package/dist/runs/build-verification-run.d.ts +0 -1
  275. package/dist/runs/build-verification-run.js +0 -1
  276. package/dist/runs/profile-redact.d.ts +0 -1
  277. package/dist/runs/profile-redact.js +0 -1
  278. package/dist/runs/render-report.d.ts +0 -1
  279. package/dist/runs/render-report.js +0 -1
  280. package/dist/runs/repair-prompt.d.ts +0 -1
  281. package/dist/runs/repair-prompt.js +0 -1
  282. package/dist/runs/replay-mapping.d.ts +0 -1
  283. package/dist/runs/replay-mapping.js +0 -1
  284. package/dist/runs/reticle-runner.d.ts +0 -1
  285. package/dist/runs/reticle-runner.js +4 -2
  286. package/dist/runs/risk-classify.d.ts +0 -1
  287. package/dist/runs/risk-classify.js +0 -1
  288. package/dist/runs/run-diff.d.ts +0 -1
  289. package/dist/runs/run-diff.js +0 -1
  290. package/dist/runs/run-store.d.ts +0 -1
  291. package/dist/runs/run-store.js +0 -1
  292. package/dist/runs/run-tools.d.ts +0 -1
  293. package/dist/runs/run-tools.js +0 -1
  294. package/dist/runs/runner-port.d.ts +0 -1
  295. package/dist/runs/runner-port.js +0 -1
  296. package/dist/runs/verification-sync.d.ts +0 -1
  297. package/dist/runs/verification-sync.js +0 -1
  298. package/dist/runs/verify-http.d.ts +0 -1
  299. package/dist/runs/verify-http.js +0 -1
  300. package/dist/runs/verify-server.d.ts +0 -1
  301. package/dist/runs/verify-server.js +0 -1
  302. package/dist/server-version.d.ts +0 -1
  303. package/dist/server-version.js +0 -1
  304. package/dist/session/command-timeout.d.ts +35 -0
  305. package/dist/session/command-timeout.js +41 -0
  306. package/dist/session/control-envelope.d.ts +2 -3
  307. package/dist/session/control-envelope.js +2 -3
  308. package/dist/session/last-act.d.ts +31 -0
  309. package/dist/session/last-act.js +24 -0
  310. package/dist/session/live-control-tools.d.ts +0 -1
  311. package/dist/session/live-control-tools.js +3 -4
  312. package/dist/session/live-control.d.ts +0 -1
  313. package/dist/session/live-control.js +0 -1
  314. package/dist/session/observed-state.d.ts +12 -2
  315. package/dist/session/observed-state.js +29 -2
  316. package/dist/session/output-budget.d.ts +0 -1
  317. package/dist/session/output-budget.js +0 -1
  318. package/dist/session/pending-commands.d.ts +12 -0
  319. package/dist/session/pending-commands.js +36 -0
  320. package/dist/session/presenter-args.d.ts +0 -1
  321. package/dist/session/presenter-args.js +0 -1
  322. package/dist/session/review-store.d.ts +0 -1
  323. package/dist/session/review-store.js +0 -1
  324. package/dist/session/session-health.d.ts +26 -2
  325. package/dist/session/session-health.js +13 -1
  326. package/dist/session/session-info.d.ts +29 -0
  327. package/dist/session/session-info.js +1 -0
  328. package/dist/session/session-lease.d.ts +25 -0
  329. package/dist/session/session-lease.js +14 -0
  330. package/dist/session/session-manager.d.ts +7 -19
  331. package/dist/session/session-manager.js +35 -2
  332. package/dist/session/session-readiness.d.ts +0 -1
  333. package/dist/session/session-readiness.js +3 -4
  334. package/dist/session/session-reaper.d.ts +0 -1
  335. package/dist/session/session-reaper.js +0 -1
  336. package/dist/session/session-recommendation.d.ts +0 -1
  337. package/dist/session/session-recommendation.js +0 -1
  338. package/dist/session/session-tools.d.ts +0 -1
  339. package/dist/session/session-tools.js +2 -3
  340. package/dist/session/session.d.ts +33 -53
  341. package/dist/session/session.js +102 -66
  342. package/dist/session/state-select.d.ts +0 -1
  343. package/dist/session/state-select.js +0 -1
  344. package/dist/telemetry/argument-shape.d.ts +41 -0
  345. package/dist/telemetry/argument-shape.js +87 -0
  346. package/dist/telemetry/bug-found.d.ts +33 -0
  347. package/dist/telemetry/bug-found.js +95 -0
  348. package/dist/telemetry/cli-telemetry.d.ts +13 -0
  349. package/dist/telemetry/cli-telemetry.js +43 -0
  350. package/dist/telemetry/connect-failure.d.ts +16 -0
  351. package/dist/telemetry/connect-failure.js +44 -0
  352. package/dist/telemetry/daemon-telemetry.d.ts +19 -0
  353. package/dist/telemetry/daemon-telemetry.js +76 -0
  354. package/dist/telemetry/dev-repo.d.ts +10 -0
  355. package/dist/telemetry/dev-repo.js +80 -0
  356. package/dist/telemetry/error-fingerprint.d.ts +24 -0
  357. package/dist/telemetry/error-fingerprint.js +88 -0
  358. package/dist/telemetry/feedback-cli.d.ts +31 -0
  359. package/dist/telemetry/feedback-cli.js +102 -0
  360. package/dist/telemetry/feedback-context.d.ts +32 -0
  361. package/dist/telemetry/feedback-context.js +143 -0
  362. package/dist/telemetry/feedback.d.ts +66 -0
  363. package/dist/telemetry/feedback.js +175 -0
  364. package/dist/telemetry/git-facts.d.ts +21 -0
  365. package/dist/telemetry/git-facts.js +109 -0
  366. package/dist/telemetry/identify.d.ts +22 -0
  367. package/dist/telemetry/identify.js +73 -0
  368. package/dist/telemetry/init-telemetry.d.ts +26 -0
  369. package/dist/telemetry/init-telemetry.js +33 -0
  370. package/dist/telemetry/machine-snapshot.d.ts +6 -0
  371. package/dist/telemetry/machine-snapshot.js +39 -0
  372. package/dist/telemetry/mcp-connection.d.ts +5 -0
  373. package/dist/telemetry/mcp-connection.js +44 -0
  374. package/dist/telemetry/project-profile.d.ts +44 -0
  375. package/dist/telemetry/project-profile.js +205 -0
  376. package/dist/telemetry/run-telemetry.d.ts +21 -0
  377. package/dist/telemetry/run-telemetry.js +62 -0
  378. package/dist/telemetry/session-metrics.d.ts +103 -0
  379. package/dist/telemetry/session-metrics.js +329 -0
  380. package/dist/telemetry/telemetry.d.ts +35 -8
  381. package/dist/telemetry/telemetry.js +105 -12
  382. package/dist/token-auth.d.ts +0 -1
  383. package/dist/token-auth.js +0 -1
  384. package/dist/tools/act-capsule.d.ts +23 -0
  385. package/dist/tools/act-capsule.js +47 -0
  386. package/dist/tools/act-danger.d.ts +7 -0
  387. package/dist/tools/act-danger.js +44 -0
  388. package/dist/tools/act-helpers.d.ts +17 -0
  389. package/dist/tools/act-helpers.js +40 -0
  390. package/dist/tools/act-tools.d.ts +8 -1
  391. package/dist/tools/act-tools.js +96 -98
  392. package/dist/tools/act-view.d.ts +7 -1
  393. package/dist/tools/act-view.js +13 -1
  394. package/dist/tools/assert-grade.d.ts +22 -1
  395. package/dist/tools/assert-grade.js +46 -1
  396. package/dist/tools/assert-verdict.d.ts +21 -0
  397. package/dist/tools/assert-verdict.js +62 -0
  398. package/dist/tools/browser-tools.d.ts +0 -1
  399. package/dist/tools/browser-tools.js +2 -2
  400. package/dist/tools/contract-tools.d.ts +0 -1
  401. package/dist/tools/contract-tools.js +0 -1
  402. package/dist/tools/coverage-tools.d.ts +9 -0
  403. package/dist/tools/coverage-tools.js +92 -0
  404. package/dist/tools/dynamic-tools.d.ts +0 -1
  405. package/dist/tools/dynamic-tools.js +21 -2
  406. package/dist/tools/error-recovery.d.ts +18 -2
  407. package/dist/tools/error-recovery.js +42 -7
  408. package/dist/tools/feedback-tools.d.ts +24 -0
  409. package/dist/tools/feedback-tools.js +180 -0
  410. package/dist/tools/invoke-tool.d.ts +0 -1
  411. package/dist/tools/invoke-tool.js +115 -5
  412. package/dist/tools/lease-tools.d.ts +0 -1
  413. package/dist/tools/lease-tools.js +6 -5
  414. package/dist/tools/merge-tools.d.ts +0 -1
  415. package/dist/tools/merge-tools.js +0 -1
  416. package/dist/tools/observe-tools.d.ts +0 -1
  417. package/dist/tools/observe-tools.js +91 -39
  418. package/dist/tools/profiles.d.ts +1 -2
  419. package/dist/tools/profiles.js +43 -16
  420. package/dist/tools/query-paginate.d.ts +0 -1
  421. package/dist/tools/query-paginate.js +0 -1
  422. package/dist/tools/read-tools.d.ts +0 -1
  423. package/dist/tools/read-tools.js +14 -8
  424. package/dist/tools/reconcile-tools.d.ts +2 -0
  425. package/dist/tools/reconcile-tools.js +111 -0
  426. package/dist/tools/snapshot-delta.d.ts +0 -1
  427. package/dist/tools/snapshot-delta.js +0 -0
  428. package/dist/tools/tool-invoker.d.ts +0 -1
  429. package/dist/tools/tool-invoker.js +0 -1
  430. package/dist/tools/tool-kit.d.ts +16 -1
  431. package/dist/tools/tool-kit.js +8 -2
  432. package/dist/tools/tool-names.d.ts +6 -1
  433. package/dist/tools/tool-names.js +6 -1
  434. package/dist/tools/tools-helpers.d.ts +0 -1
  435. package/dist/tools/tools-helpers.js +0 -1
  436. package/dist/tools/tools.d.ts +0 -1
  437. package/dist/tools/tools.js +24 -4
  438. package/dist/update/update-checker.d.ts +0 -1
  439. package/dist/update/update-checker.js +0 -1
  440. package/dist/update/update-nudge.d.ts +20 -0
  441. package/dist/update/update-nudge.js +72 -0
  442. package/dist/update/updater.d.ts +14 -1
  443. package/dist/update/updater.js +33 -2
  444. package/dist/visual/visual-diff.d.ts +0 -1
  445. package/dist/visual/visual-diff.js +0 -1
  446. package/dist/visual/visual-store.d.ts +0 -1
  447. package/dist/visual/visual-store.js +0 -1
  448. package/dist/visual/visual-tools.d.ts +0 -1
  449. package/dist/visual/visual-tools.js +103 -16
  450. package/package.json +2 -2
  451. package/dist/bridge-security.d.ts.map +0 -1
  452. package/dist/bridge-security.js.map +0 -1
  453. package/dist/bridge.d.ts.map +0 -1
  454. package/dist/bridge.js.map +0 -1
  455. package/dist/bridge.test-harness.d.ts.map +0 -1
  456. package/dist/bridge.test-harness.js.map +0 -1
  457. package/dist/capsule/capsule-store.d.ts.map +0 -1
  458. package/dist/capsule/capsule-store.js.map +0 -1
  459. package/dist/capsule/capsule.d.ts.map +0 -1
  460. package/dist/capsule/capsule.js.map +0 -1
  461. package/dist/capsule/causal-summary.d.ts.map +0 -1
  462. package/dist/capsule/causal-summary.js.map +0 -1
  463. package/dist/capsule/divergence.d.ts.map +0 -1
  464. package/dist/capsule/divergence.js.map +0 -1
  465. package/dist/capsule/minimize.d.ts.map +0 -1
  466. package/dist/capsule/minimize.js.map +0 -1
  467. package/dist/capsule/predicate-to-links.d.ts.map +0 -1
  468. package/dist/capsule/predicate-to-links.js.map +0 -1
  469. package/dist/cli-flow-commands.d.ts.map +0 -1
  470. package/dist/cli-flow-commands.js.map +0 -1
  471. package/dist/cli-launch.d.ts.map +0 -1
  472. package/dist/cli-launch.js.map +0 -1
  473. package/dist/cli-parse.d.ts.map +0 -1
  474. package/dist/cli-parse.js.map +0 -1
  475. package/dist/cli-port.d.ts.map +0 -1
  476. package/dist/cli-port.js.map +0 -1
  477. package/dist/cli-verify.d.ts.map +0 -1
  478. package/dist/cli-verify.js.map +0 -1
  479. package/dist/cli.d.ts.map +0 -1
  480. package/dist/cli.js.map +0 -1
  481. package/dist/cloud/cloud-config.d.ts.map +0 -1
  482. package/dist/cloud/cloud-config.js.map +0 -1
  483. package/dist/cloud/cloud-sync.d.ts.map +0 -1
  484. package/dist/cloud/cloud-sync.js.map +0 -1
  485. package/dist/cloud-cli.d.ts.map +0 -1
  486. package/dist/cloud-cli.js.map +0 -1
  487. package/dist/crawl/crawl-tools.d.ts.map +0 -1
  488. package/dist/crawl/crawl-tools.js.map +0 -1
  489. package/dist/crawl/crawl.d.ts.map +0 -1
  490. package/dist/crawl/crawl.js.map +0 -1
  491. package/dist/daemon-resilience.d.ts.map +0 -1
  492. package/dist/daemon-resilience.js.map +0 -1
  493. package/dist/daemon.d.ts.map +0 -1
  494. package/dist/daemon.js.map +0 -1
  495. package/dist/domain/domain-model.d.ts.map +0 -1
  496. package/dist/domain/domain-model.js.map +0 -1
  497. package/dist/domain/domain-tools.d.ts.map +0 -1
  498. package/dist/domain/domain-tools.js.map +0 -1
  499. package/dist/domain/flow-risk.d.ts.map +0 -1
  500. package/dist/domain/flow-risk.js.map +0 -1
  501. package/dist/ee/audit-log.d.ts.map +0 -1
  502. package/dist/ee/audit-log.js.map +0 -1
  503. package/dist/events/event-filters.d.ts.map +0 -1
  504. package/dist/events/event-filters.js.map +0 -1
  505. package/dist/events/predicate-eval.d.ts.map +0 -1
  506. package/dist/events/predicate-eval.js.map +0 -1
  507. package/dist/events/predicate.d.ts.map +0 -1
  508. package/dist/events/predicate.js.map +0 -1
  509. package/dist/events/reaction.d.ts.map +0 -1
  510. package/dist/events/reaction.js.map +0 -1
  511. package/dist/events/ring-buffer.d.ts.map +0 -1
  512. package/dist/events/ring-buffer.js.map +0 -1
  513. package/dist/flows/affected.d.ts.map +0 -1
  514. package/dist/flows/affected.js.map +0 -1
  515. package/dist/flows/annotate-tools.d.ts.map +0 -1
  516. package/dist/flows/annotate-tools.js.map +0 -1
  517. package/dist/flows/annotate.d.ts.map +0 -1
  518. package/dist/flows/annotate.js.map +0 -1
  519. package/dist/flows/annotation-store.d.ts.map +0 -1
  520. package/dist/flows/annotation-store.js.map +0 -1
  521. package/dist/flows/assertion-integrity.d.ts.map +0 -1
  522. package/dist/flows/assertion-integrity.js.map +0 -1
  523. package/dist/flows/assertion-tiers-store.d.ts.map +0 -1
  524. package/dist/flows/assertion-tiers-store.js.map +0 -1
  525. package/dist/flows/buddy-status.d.ts.map +0 -1
  526. package/dist/flows/buddy-status.js.map +0 -1
  527. package/dist/flows/coverage.d.ts.map +0 -1
  528. package/dist/flows/coverage.js.map +0 -1
  529. package/dist/flows/decision.d.ts.map +0 -1
  530. package/dist/flows/decision.js.map +0 -1
  531. package/dist/flows/flake-store.d.ts.map +0 -1
  532. package/dist/flows/flake-store.js.map +0 -1
  533. package/dist/flows/flake.d.ts.map +0 -1
  534. package/dist/flows/flake.js.map +0 -1
  535. package/dist/flows/flow-classify.d.ts.map +0 -1
  536. package/dist/flows/flow-classify.js.map +0 -1
  537. package/dist/flows/flow-replay-run.d.ts.map +0 -1
  538. package/dist/flows/flow-replay-run.js.map +0 -1
  539. package/dist/flows/flow-replay.d.ts.map +0 -1
  540. package/dist/flows/flow-replay.js.map +0 -1
  541. package/dist/flows/flow-report.d.ts.map +0 -1
  542. package/dist/flows/flow-report.js.map +0 -1
  543. package/dist/flows/flow-scope.d.ts.map +0 -1
  544. package/dist/flows/flow-scope.js.map +0 -1
  545. package/dist/flows/flow-sources.d.ts.map +0 -1
  546. package/dist/flows/flow-sources.js.map +0 -1
  547. package/dist/flows/flow-success.d.ts.map +0 -1
  548. package/dist/flows/flow-success.js.map +0 -1
  549. package/dist/flows/flow-tools.d.ts.map +0 -1
  550. package/dist/flows/flow-tools.js.map +0 -1
  551. package/dist/flows/flows.d.ts.map +0 -1
  552. package/dist/flows/flows.js.map +0 -1
  553. package/dist/flows/gate.d.ts.map +0 -1
  554. package/dist/flows/gate.js.map +0 -1
  555. package/dist/flows/git-changed.d.ts.map +0 -1
  556. package/dist/flows/git-changed.js.map +0 -1
  557. package/dist/flows/heal-run.d.ts.map +0 -1
  558. package/dist/flows/heal-run.js.map +0 -1
  559. package/dist/flows/heal.d.ts.map +0 -1
  560. package/dist/flows/heal.js.map +0 -1
  561. package/dist/flows/parallel-suite.d.ts.map +0 -1
  562. package/dist/flows/parallel-suite.js.map +0 -1
  563. package/dist/flows/recordings.d.ts.map +0 -1
  564. package/dist/flows/recordings.js.map +0 -1
  565. package/dist/flows/replay.d.ts.map +0 -1
  566. package/dist/flows/replay.js.map +0 -1
  567. package/dist/flows/server-verify.d.ts.map +0 -1
  568. package/dist/flows/server-verify.js.map +0 -1
  569. package/dist/flows/watch-batcher.d.ts.map +0 -1
  570. package/dist/flows/watch-batcher.js.map +0 -1
  571. package/dist/honesty/blind-spots.d.ts.map +0 -1
  572. package/dist/honesty/blind-spots.js.map +0 -1
  573. package/dist/honesty/honesty.d.ts.map +0 -1
  574. package/dist/honesty/honesty.js.map +0 -1
  575. package/dist/http-server.d.ts.map +0 -1
  576. package/dist/http-server.js.map +0 -1
  577. package/dist/idle-shutdown.d.ts.map +0 -1
  578. package/dist/idle-shutdown.js.map +0 -1
  579. package/dist/index.d.ts.map +0 -1
  580. package/dist/index.js.map +0 -1
  581. package/dist/init/agent-rules.d.ts.map +0 -1
  582. package/dist/init/agent-rules.js.map +0 -1
  583. package/dist/init/cursor.d.ts.map +0 -1
  584. package/dist/init/cursor.js.map +0 -1
  585. package/dist/init/detect.d.ts.map +0 -1
  586. package/dist/init/detect.js.map +0 -1
  587. package/dist/init/mcp.d.ts.map +0 -1
  588. package/dist/init/mcp.js.map +0 -1
  589. package/dist/init/node-io.d.ts.map +0 -1
  590. package/dist/init/node-io.js.map +0 -1
  591. package/dist/init/plan.d.ts.map +0 -1
  592. package/dist/init/plan.js.map +0 -1
  593. package/dist/init/project-id.d.ts.map +0 -1
  594. package/dist/init/project-id.js.map +0 -1
  595. package/dist/init/run.d.ts.map +0 -1
  596. package/dist/init/run.js.map +0 -1
  597. package/dist/init/snippets.d.ts.map +0 -1
  598. package/dist/init/snippets.js.map +0 -1
  599. package/dist/init/vite-config.d.ts.map +0 -1
  600. package/dist/init/vite-config.js.map +0 -1
  601. package/dist/input/network-detail.d.ts.map +0 -1
  602. package/dist/input/network-detail.js.map +0 -1
  603. package/dist/input/network-mock-tools.d.ts.map +0 -1
  604. package/dist/input/network-mock-tools.js.map +0 -1
  605. package/dist/input/network-mock.d.ts.map +0 -1
  606. package/dist/input/network-mock.js.map +0 -1
  607. package/dist/input/real-input.d.ts.map +0 -1
  608. package/dist/input/real-input.js.map +0 -1
  609. package/dist/input/scroll-find.d.ts.map +0 -1
  610. package/dist/input/scroll-find.js.map +0 -1
  611. package/dist/input/scroll-tools.d.ts.map +0 -1
  612. package/dist/input/scroll-tools.js.map +0 -1
  613. package/dist/input/viewport-tools.d.ts.map +0 -1
  614. package/dist/input/viewport-tools.js.map +0 -1
  615. package/dist/journal/ambient-store.d.ts.map +0 -1
  616. package/dist/journal/ambient-store.js.map +0 -1
  617. package/dist/journal/ambient.d.ts.map +0 -1
  618. package/dist/journal/ambient.js.map +0 -1
  619. package/dist/journal/attach-journal.d.ts.map +0 -1
  620. package/dist/journal/attach-journal.js.map +0 -1
  621. package/dist/journal/deviation-report.d.ts.map +0 -1
  622. package/dist/journal/deviation-report.js.map +0 -1
  623. package/dist/journal/deviation-service.d.ts.map +0 -1
  624. package/dist/journal/deviation-service.js.map +0 -1
  625. package/dist/journal/envelope-store.d.ts.map +0 -1
  626. package/dist/journal/envelope-store.js.map +0 -1
  627. package/dist/journal/envelope.d.ts.map +0 -1
  628. package/dist/journal/envelope.js.map +0 -1
  629. package/dist/journal/journal-query.d.ts.map +0 -1
  630. package/dist/journal/journal-query.js.map +0 -1
  631. package/dist/journal/journal-recorder.d.ts.map +0 -1
  632. package/dist/journal/journal-recorder.js.map +0 -1
  633. package/dist/journal/retention.d.ts.map +0 -1
  634. package/dist/journal/retention.js.map +0 -1
  635. package/dist/journal/rollups.d.ts.map +0 -1
  636. package/dist/journal/rollups.js.map +0 -1
  637. package/dist/journal/session-end.d.ts.map +0 -1
  638. package/dist/journal/session-end.js.map +0 -1
  639. package/dist/journal/session-journal.d.ts.map +0 -1
  640. package/dist/journal/session-journal.js.map +0 -1
  641. package/dist/license/license.d.ts.map +0 -1
  642. package/dist/license/license.js.map +0 -1
  643. package/dist/log.d.ts.map +0 -1
  644. package/dist/log.js.map +0 -1
  645. package/dist/mcp-proxy.d.ts.map +0 -1
  646. package/dist/mcp-proxy.js.map +0 -1
  647. package/dist/mcp.d.ts.map +0 -1
  648. package/dist/mcp.js.map +0 -1
  649. package/dist/oracles/flow-instrument-gaps.d.ts.map +0 -1
  650. package/dist/oracles/flow-instrument-gaps.js.map +0 -1
  651. package/dist/oracles/propose-consequences.d.ts.map +0 -1
  652. package/dist/oracles/propose-consequences.js.map +0 -1
  653. package/dist/oracles/self-instrument.d.ts.map +0 -1
  654. package/dist/oracles/self-instrument.js.map +0 -1
  655. package/dist/pairing-token.d.ts.map +0 -1
  656. package/dist/pairing-token.js.map +0 -1
  657. package/dist/phenomena/phenomena.d.ts.map +0 -1
  658. package/dist/phenomena/phenomena.js.map +0 -1
  659. package/dist/pool/browser-pool.d.ts.map +0 -1
  660. package/dist/pool/browser-pool.js.map +0 -1
  661. package/dist/pool/lease-reaper.d.ts.map +0 -1
  662. package/dist/pool/lease-reaper.js.map +0 -1
  663. package/dist/pool/playwright-launcher.d.ts.map +0 -1
  664. package/dist/pool/playwright-launcher.js.map +0 -1
  665. package/dist/project/baselines.d.ts.map +0 -1
  666. package/dist/project/baselines.js.map +0 -1
  667. package/dist/project/file-lock.d.ts.map +0 -1
  668. package/dist/project/file-lock.js.map +0 -1
  669. package/dist/project/fs-port.d.ts.map +0 -1
  670. package/dist/project/fs-port.js.map +0 -1
  671. package/dist/project/project-store.d.ts.map +0 -1
  672. package/dist/project/project-store.js.map +0 -1
  673. package/dist/project/project-tools.d.ts.map +0 -1
  674. package/dist/project/project-tools.js.map +0 -1
  675. package/dist/project/reticle-dir.d.ts.map +0 -1
  676. package/dist/project/reticle-dir.js.map +0 -1
  677. package/dist/runs/build-verification-run.d.ts.map +0 -1
  678. package/dist/runs/build-verification-run.js.map +0 -1
  679. package/dist/runs/profile-redact.d.ts.map +0 -1
  680. package/dist/runs/profile-redact.js.map +0 -1
  681. package/dist/runs/render-report.d.ts.map +0 -1
  682. package/dist/runs/render-report.js.map +0 -1
  683. package/dist/runs/repair-prompt.d.ts.map +0 -1
  684. package/dist/runs/repair-prompt.js.map +0 -1
  685. package/dist/runs/replay-mapping.d.ts.map +0 -1
  686. package/dist/runs/replay-mapping.js.map +0 -1
  687. package/dist/runs/reticle-runner.d.ts.map +0 -1
  688. package/dist/runs/reticle-runner.js.map +0 -1
  689. package/dist/runs/risk-classify.d.ts.map +0 -1
  690. package/dist/runs/risk-classify.js.map +0 -1
  691. package/dist/runs/run-diff.d.ts.map +0 -1
  692. package/dist/runs/run-diff.js.map +0 -1
  693. package/dist/runs/run-store.d.ts.map +0 -1
  694. package/dist/runs/run-store.js.map +0 -1
  695. package/dist/runs/run-tools.d.ts.map +0 -1
  696. package/dist/runs/run-tools.js.map +0 -1
  697. package/dist/runs/runner-port.d.ts.map +0 -1
  698. package/dist/runs/runner-port.js.map +0 -1
  699. package/dist/runs/verification-sync.d.ts.map +0 -1
  700. package/dist/runs/verification-sync.js.map +0 -1
  701. package/dist/runs/verify-http.d.ts.map +0 -1
  702. package/dist/runs/verify-http.js.map +0 -1
  703. package/dist/runs/verify-server.d.ts.map +0 -1
  704. package/dist/runs/verify-server.js.map +0 -1
  705. package/dist/server-version.d.ts.map +0 -1
  706. package/dist/server-version.js.map +0 -1
  707. package/dist/session/control-envelope.d.ts.map +0 -1
  708. package/dist/session/control-envelope.js.map +0 -1
  709. package/dist/session/live-control-tools.d.ts.map +0 -1
  710. package/dist/session/live-control-tools.js.map +0 -1
  711. package/dist/session/live-control.d.ts.map +0 -1
  712. package/dist/session/live-control.js.map +0 -1
  713. package/dist/session/observed-state.d.ts.map +0 -1
  714. package/dist/session/observed-state.js.map +0 -1
  715. package/dist/session/output-budget.d.ts.map +0 -1
  716. package/dist/session/output-budget.js.map +0 -1
  717. package/dist/session/presenter-args.d.ts.map +0 -1
  718. package/dist/session/presenter-args.js.map +0 -1
  719. package/dist/session/review-store.d.ts.map +0 -1
  720. package/dist/session/review-store.js.map +0 -1
  721. package/dist/session/session-health.d.ts.map +0 -1
  722. package/dist/session/session-health.js.map +0 -1
  723. package/dist/session/session-manager.d.ts.map +0 -1
  724. package/dist/session/session-manager.js.map +0 -1
  725. package/dist/session/session-readiness.d.ts.map +0 -1
  726. package/dist/session/session-readiness.js.map +0 -1
  727. package/dist/session/session-reaper.d.ts.map +0 -1
  728. package/dist/session/session-reaper.js.map +0 -1
  729. package/dist/session/session-recommendation.d.ts.map +0 -1
  730. package/dist/session/session-recommendation.js.map +0 -1
  731. package/dist/session/session-tools.d.ts.map +0 -1
  732. package/dist/session/session-tools.js.map +0 -1
  733. package/dist/session/session.d.ts.map +0 -1
  734. package/dist/session/session.js.map +0 -1
  735. package/dist/session/state-select.d.ts.map +0 -1
  736. package/dist/session/state-select.js.map +0 -1
  737. package/dist/telemetry/telemetry.d.ts.map +0 -1
  738. package/dist/telemetry/telemetry.js.map +0 -1
  739. package/dist/token-auth.d.ts.map +0 -1
  740. package/dist/token-auth.js.map +0 -1
  741. package/dist/tools/act-tools.d.ts.map +0 -1
  742. package/dist/tools/act-tools.js.map +0 -1
  743. package/dist/tools/act-view.d.ts.map +0 -1
  744. package/dist/tools/act-view.js.map +0 -1
  745. package/dist/tools/assert-grade.d.ts.map +0 -1
  746. package/dist/tools/assert-grade.js.map +0 -1
  747. package/dist/tools/browser-tools.d.ts.map +0 -1
  748. package/dist/tools/browser-tools.js.map +0 -1
  749. package/dist/tools/contract-tools.d.ts.map +0 -1
  750. package/dist/tools/contract-tools.js.map +0 -1
  751. package/dist/tools/dynamic-tools.d.ts.map +0 -1
  752. package/dist/tools/dynamic-tools.js.map +0 -1
  753. package/dist/tools/error-recovery.d.ts.map +0 -1
  754. package/dist/tools/error-recovery.js.map +0 -1
  755. package/dist/tools/invoke-tool.d.ts.map +0 -1
  756. package/dist/tools/invoke-tool.js.map +0 -1
  757. package/dist/tools/lease-tools.d.ts.map +0 -1
  758. package/dist/tools/lease-tools.js.map +0 -1
  759. package/dist/tools/merge-tools.d.ts.map +0 -1
  760. package/dist/tools/merge-tools.js.map +0 -1
  761. package/dist/tools/observe-tools.d.ts.map +0 -1
  762. package/dist/tools/observe-tools.js.map +0 -1
  763. package/dist/tools/profiles.d.ts.map +0 -1
  764. package/dist/tools/profiles.js.map +0 -1
  765. package/dist/tools/query-paginate.d.ts.map +0 -1
  766. package/dist/tools/query-paginate.js.map +0 -1
  767. package/dist/tools/read-tools.d.ts.map +0 -1
  768. package/dist/tools/read-tools.js.map +0 -1
  769. package/dist/tools/snapshot-delta.d.ts.map +0 -1
  770. package/dist/tools/snapshot-delta.js.map +0 -1
  771. package/dist/tools/tool-invoker.d.ts.map +0 -1
  772. package/dist/tools/tool-invoker.js.map +0 -1
  773. package/dist/tools/tool-kit.d.ts.map +0 -1
  774. package/dist/tools/tool-kit.js.map +0 -1
  775. package/dist/tools/tool-names.d.ts.map +0 -1
  776. package/dist/tools/tool-names.js.map +0 -1
  777. package/dist/tools/tools-helpers.d.ts.map +0 -1
  778. package/dist/tools/tools-helpers.js.map +0 -1
  779. package/dist/tools/tools.d.ts.map +0 -1
  780. package/dist/tools/tools.js.map +0 -1
  781. package/dist/update/update-checker.d.ts.map +0 -1
  782. package/dist/update/update-checker.js.map +0 -1
  783. package/dist/update/updater.d.ts.map +0 -1
  784. package/dist/update/updater.js.map +0 -1
  785. package/dist/visual/visual-diff.d.ts.map +0 -1
  786. package/dist/visual/visual-diff.js.map +0 -1
  787. package/dist/visual/visual-store.d.ts.map +0 -1
  788. package/dist/visual/visual-store.js.map +0 -1
  789. package/dist/visual/visual-tools.d.ts.map +0 -1
  790. package/dist/visual/visual-tools.js.map +0 -1
@@ -4,16 +4,37 @@
4
4
  * runner performs the `write` side-effects; this module decides *what* should happen.
5
5
  */
6
6
  import { Framework, type Detection } from './detect.js';
7
+ /**
8
+ * Pin the SDK to the CLI's own version.
9
+ *
10
+ * `pnpm add -D @reticlehq/react` installed **2.2.1** in one project while npm and yarn took 2.3.0 in
11
+ * the next — a stale registry metadata cache, invisible to the user and to us. A version-skewed SDK
12
+ * talking to a newer daemon is the `-32000` failure path: the app connects, the protocol disagrees,
13
+ * and nothing on either side names a version. Asking for the CLI's exact version makes the cache
14
+ * irrelevant, and a skewed pair impossible to install by accident.
15
+ */
16
+ export declare function pinnedPackages(packages: readonly string[], version: string | undefined): readonly string[];
7
17
  /** The dev-dependencies `reticle init` installs for a given framework — kit first, build plugin next. */
8
18
  export declare function frameworkPackages(framework: Framework): readonly string[];
19
+ /** Exported so the init telemetry can tell an MCP-registration failure from a dependency install. */
20
+ export declare const MCP_TARGET = "global (claude user scope)";
21
+ /** The step that runs the package manager — the other thing that commonly fails on a user's machine. */
22
+ export declare const DEPS_TARGET = "package.json";
9
23
  export declare const StepStatus: {
10
24
  readonly APPLY: "apply";
11
25
  readonly MANUAL: "manual";
12
26
  readonly ALREADY: "already";
13
27
  readonly SKIP: "skip";
28
+ /**
29
+ * Something the user should KNOW, not something they must DO. The UNVERIFIED lines are the case:
30
+ * a Preact or SvelteKit app is wired and working, it just isn't covered by a gate. Reporting those
31
+ * as `manual` made "steps left to do" a number that could never reach zero, and made a release gate
32
+ * read two regressions that were not regressions.
33
+ */
34
+ readonly NOTICE: "notice";
14
35
  };
15
36
  export type StepStatus = (typeof StepStatus)[keyof typeof StepStatus];
16
- interface Step {
37
+ export interface Step {
17
38
  title: string;
18
39
  target: string;
19
40
  status: StepStatus;
@@ -29,6 +50,13 @@ interface Step {
29
50
  args: string[];
30
51
  fallback: string;
31
52
  };
53
+ /**
54
+ * This step wires the app to a package the install step provides. If that install fails, applying
55
+ * it anyway leaves the app importing a module that is not there — `next.config.ts` importing
56
+ * `@reticlehq/next` took a dev server down exactly this way. Installing Reticle must never be the
57
+ * reason an app stops booting.
58
+ */
59
+ dependsOnInstall?: boolean;
32
60
  }
33
61
  export interface Plan {
34
62
  framework: Framework;
@@ -42,6 +70,8 @@ export interface PlanInput {
42
70
  mcpExists: boolean;
43
71
  /** Whether Cursor is installed for this user (its global config dir exists). */
44
72
  cursorPresent: boolean;
73
+ /** Whether THIS project has a .cursor/ directory — the signal that Cursor works on this repo. */
74
+ cursorProjectPresent?: boolean | undefined;
45
75
  /** Current ~/.cursor/mcp.json content, or null if absent. */
46
76
  cursorConfig: string | null;
47
77
  /** Absolute path of ~/.cursor/mcp.json (the write target). */
@@ -53,8 +83,25 @@ export interface PlanInput {
53
83
  } | null;
54
84
  /** Discovered Next config filename (e.g. 'next.config.mjs'), or null. */
55
85
  nextConfigFile: string | null;
56
- /** Whether app/reticle-dev.tsx already exists. */
86
+ /** Source of that Next config, so the export can be wrapped in withReticle. */
87
+ nextConfigSource?: string | null | undefined;
88
+ /** Discovered Next root layout: its path + source, or null (App Router only). */
89
+ nextLayout?: {
90
+ path: string;
91
+ source: string;
92
+ } | null | undefined;
93
+ /** Where the dev-only connect component goes — never inside `pages/`, which routes on presence. */
94
+ nextReticleDevPath?: string | undefined;
95
+ /** What the mount file should import — a sibling for App Router, `../components/…` for Pages. */
96
+ nextReticleDevImport?: string | undefined;
97
+ /** Whether the ReticleDev component file already exists. */
57
98
  nextReticleDevExists: boolean;
99
+ /** `data-testid` values scanned from the app's source, for the generated capabilities block. */
100
+ testids?: readonly string[] | undefined;
101
+ /** Ready-to-uncomment `registerStore` lines for the state libraries the app actually depends on. */
102
+ storeHints?: readonly string[] | undefined;
103
+ /** Whether src/reticle-dev.ts already exists — it is the one generated file users are meant to edit. */
104
+ viteDevModuleExists?: boolean | undefined;
58
105
  /** Whether src/hooks.client.ts already exists (SvelteKit idempotency). */
59
106
  svelteKitHooksExists?: boolean;
60
107
  /** Whether .reticle.json already exists in the project root (idempotency). */
@@ -65,14 +112,18 @@ export interface PlanInput {
65
112
  agentsMdContent?: string | null | undefined;
66
113
  /** Whether .cursor/rules/reticle.mdc already exists (agent-rule idempotency). */
67
114
  cursorRuleExists?: boolean | undefined;
115
+ /** Whether .claude/commands/reticle.md already exists (slash-command idempotency). */
116
+ claudeCommandExists?: boolean | undefined;
117
+ /** Whether .cursor/commands/reticle.md already exists. */
118
+ cursorCommandExists?: boolean | undefined;
68
119
  options: {
69
120
  port: number | undefined;
70
121
  mcp: boolean;
71
122
  install: boolean;
72
123
  /** Stable project identity derived at init (package.json name + root). Baked into snippets/.reticle.json. */
73
124
  projectId?: string;
125
+ /** The CLI's own version, pinned onto the SDK install so a stale registry cache cannot skew it. */
126
+ sdkVersion?: string;
74
127
  };
75
128
  }
76
129
  export declare function buildPlan(input: PlanInput): Plan;
77
- export {};
78
- //# sourceMappingURL=plan.d.ts.map
package/dist/init/plan.js CHANGED
@@ -3,12 +3,13 @@
3
3
  * contents, produce an ordered list of steps — each marked apply / manual / already / skip. The
4
4
  * runner performs the `write` side-effects; this module decides *what* should happen.
5
5
  */
6
- import { Framework, installCommand, installCommandParts } from './detect.js';
6
+ import { Framework, PackageManager, UiLibrary, installCommand, installCommandParts, } from './detect.js';
7
7
  import { claudeAddCommand, mcpManual } from './mcp.js';
8
8
  import { mergeCursorConfig, CursorMergeStatus, cursorServerEntry } from './cursor.js';
9
+ import { CLAUDE_COMMAND_PATH, CURSOR_COMMAND_PATH, SLASH_COMMAND_BODY, } from './slash-command.js';
9
10
  import { mergeMarkedInstruction, cursorRuleFile, AgentRuleStatus, CLAUDE_MD_PATH, AGENTS_MD_PATH, CURSOR_RULE_PATH, } from './agent-rules.js';
10
- import { patchViteConfig, VitePatchKind } from './vite-config.js';
11
- import { viteManual, htmlManual, NEXT_LAYOUT_MANUAL, nextReticleDevFile, NEXT_RETICLE_DEV_PATH, nextConfigManual, reticleConfigContent, svelteKitHooksFile, SVELTEKIT_HOOKS_PATH, } from './snippets.js';
11
+ import { viteSteps, nextSteps, svelteKitSteps, VITE_PLUGIN_DETAIL } from './plan-framework.js';
12
+ import { htmlManual, reticleConfigContent, unverifiedUiLibraryNote, astroManual, } from './snippets.js';
12
13
  // An app dev installs exactly the audience-scoped browser-side dependencies — never the retired
13
14
  // `@reticlehq/core` umbrella (which dragged the Node MCP server + ws into every app). The kit is the
14
15
  // framework adapter (it re-exports the browser sensor), paired with that framework's dev-only build
@@ -16,6 +17,20 @@ import { viteManual, htmlManual, NEXT_LAYOUT_MANUAL, nextReticleDevFile, NEXT_RE
16
17
  const RETICLE_REACT_KIT = '@reticlehq/react';
17
18
  const RETICLE_VITE_PLUGIN = '@reticlehq/vite-plugin';
18
19
  const RETICLE_NEXT_PLUGIN = '@reticlehq/next';
20
+ /**
21
+ * Pin the SDK to the CLI's own version.
22
+ *
23
+ * `pnpm add -D @reticlehq/react` installed **2.2.1** in one project while npm and yarn took 2.3.0 in
24
+ * the next — a stale registry metadata cache, invisible to the user and to us. A version-skewed SDK
25
+ * talking to a newer daemon is the `-32000` failure path: the app connects, the protocol disagrees,
26
+ * and nothing on either side names a version. Asking for the CLI's exact version makes the cache
27
+ * irrelevant, and a skewed pair impossible to install by accident.
28
+ */
29
+ export function pinnedPackages(packages, version) {
30
+ if (version === undefined || version.length === 0)
31
+ return packages;
32
+ return packages.map((p) => `${p}@${version}`);
33
+ }
19
34
  /** The dev-dependencies `reticle init` installs for a given framework — kit first, build plugin next. */
20
35
  export function frameworkPackages(framework) {
21
36
  switch (framework) {
@@ -25,18 +40,32 @@ export function frameworkPackages(framework) {
25
40
  case Framework.SVELTEKIT:
26
41
  // SvelteKit builds on Vite; until a dedicated Svelte kit exists it uses the Vite build plugin.
27
42
  return [RETICLE_REACT_KIT, RETICLE_VITE_PLUGIN];
43
+ case Framework.ASTRO:
44
+ // Astro owns its own Vite instance and renders its own HTML, so there is no config for the
45
+ // plugin to attach to — the kit alone, connected from a page <script> (see astroManual).
46
+ return [RETICLE_REACT_KIT];
28
47
  case Framework.HTML:
29
48
  // No bundler plugin to install — just the kit; connect is wired by hand (see htmlManual).
30
49
  return [RETICLE_REACT_KIT];
31
50
  }
32
51
  }
33
- const MCP_TARGET = 'global (claude user scope)';
52
+ /** Exported so the init telemetry can tell an MCP-registration failure from a dependency install. */
53
+ export const MCP_TARGET = 'global (claude user scope)';
54
+ /** The step that runs the package manager — the other thing that commonly fails on a user's machine. */
55
+ export const DEPS_TARGET = 'package.json';
34
56
  const RETICLE_CONFIG_FILE = '.reticle.json';
35
57
  export const StepStatus = {
36
58
  APPLY: 'apply',
37
59
  MANUAL: 'manual',
38
60
  ALREADY: 'already',
39
61
  SKIP: 'skip',
62
+ /**
63
+ * Something the user should KNOW, not something they must DO. The UNVERIFIED lines are the case:
64
+ * a Preact or SvelteKit app is wired and working, it just isn't covered by a gate. Reporting those
65
+ * as `manual` made "steps left to do" a number that could never reach zero, and made a release gate
66
+ * read two regressions that were not regressions.
67
+ */
68
+ NOTICE: 'notice',
40
69
  };
41
70
  const CLAUDE_MCP_TITLE = 'MCP server (Claude, global)';
42
71
  const CURSOR_MCP_TITLE = 'MCP server (Cursor, global)';
@@ -113,6 +142,37 @@ function mcpSteps(input) {
113
142
  },
114
143
  ];
115
144
  }
145
+ const SLASH_COMMAND_TITLE = 'The /reticle command';
146
+ /**
147
+ * `/reticle` — the entry point SKILL.md promises in three places and nothing ever created, so it
148
+ * silently did nothing in every tool. One file per agent that supports custom commands.
149
+ */
150
+ function slashCommandSteps(input) {
151
+ const targets = [
152
+ { path: CLAUDE_COMMAND_PATH, when: input.claudeCli, exists: input.claudeCommandExists === true },
153
+ {
154
+ path: CURSOR_COMMAND_PATH,
155
+ when: input.cursorProjectPresent === true || (input.cursorPresent && !input.claudeCli),
156
+ exists: input.cursorCommandExists === true,
157
+ },
158
+ ];
159
+ return targets
160
+ .filter((t) => t.when)
161
+ .map((t) => t.exists
162
+ ? {
163
+ title: SLASH_COMMAND_TITLE,
164
+ target: t.path,
165
+ status: StepStatus.ALREADY,
166
+ detail: 'command already exists',
167
+ }
168
+ : {
169
+ title: SLASH_COMMAND_TITLE,
170
+ target: t.path,
171
+ status: StepStatus.APPLY,
172
+ detail: 'type /reticle to verify one flow in the browser',
173
+ write: { path: t.path, content: SLASH_COMMAND_BODY },
174
+ });
175
+ }
116
176
  const AGENT_RULE_TITLE = 'Agent verification rule';
117
177
  const AGENT_RULE_DETAIL = 'teach the agent to verify features with Reticle after building them';
118
178
  function claudeRuleStep(input) {
@@ -135,9 +195,17 @@ function claudeRuleStep(input) {
135
195
  write: { path: CLAUDE_MD_PATH, content: r.content },
136
196
  };
137
197
  }
198
+ /**
199
+ * The Cursor rule is a PROJECT file, so it is written only when Cursor plausibly works on THIS
200
+ * project — the repo has a `.cursor/` dir, or Cursor is the only agent found. `~/.cursor` merely
201
+ * existing on the machine meant every Claude Code user got an unexplained `.cursor/rules/reticle.mdc`
202
+ * committed into their repo. (Global MCP registration is different: it is global, and stays.)
203
+ */
138
204
  function cursorRuleStep(input) {
139
205
  if (!input.cursorPresent)
140
206
  return null;
207
+ if (input.cursorProjectPresent !== true && input.claudeCli)
208
+ return null;
141
209
  if (input.cursorRuleExists === true) {
142
210
  return {
143
211
  title: AGENT_RULE_TITLE,
@@ -183,9 +251,28 @@ function agentRuleSteps(input) {
183
251
  },
184
252
  ];
185
253
  }
254
+ /**
255
+ * What to say when the install command fails.
256
+ *
257
+ * pnpm's `minimumReleaseAge` refuses any release younger than the configured window — a deliberate
258
+ * supply-chain policy, not a bug — with `ERR_PNPM_NO_MATURE_MATCHING_VERSION`. Unpinned it silently
259
+ * resolves to an OLDER version instead, which is how an app ends up running a 2.2.1 SDK against a
260
+ * 2.3.0 daemon: the connection succeeds, the protocol disagrees, and the failure surfaces as -32000
261
+ * with nothing naming a version. Pinning turns that into this loud failure, which is the better
262
+ * trade — but only if the message says what to do about it.
263
+ */
264
+ function installFailureHint(pm) {
265
+ if (pm !== PackageManager.PNPM)
266
+ return 'If the version was refused, install the SDK yourself.';
267
+ return ('If pnpm reported ERR_PNPM_NO_MATURE_MATCHING_VERSION, its minimumReleaseAge setting is holding ' +
268
+ 'this release back. Either wait out the window, or allow these packages explicitly:\n' +
269
+ ' pnpm config set minimumReleaseAgeExclude "@reticlehq/*"\n' +
270
+ 'Do NOT drop the version pin — unpinned, pnpm installs an older SDK against a newer daemon, and ' +
271
+ 'that mismatch surfaces as a -32000 with nothing naming a version.');
272
+ }
186
273
  function installStep(input) {
187
274
  const pm = input.detection.packageManager;
188
- const packages = frameworkPackages(input.detection.framework);
275
+ const packages = pinnedPackages(frameworkPackages(input.detection.framework), input.options.sdkVersion);
189
276
  const command = installCommand(pm, packages);
190
277
  if (!input.options.install) {
191
278
  return {
@@ -201,113 +288,12 @@ function installStep(input) {
201
288
  target: 'package.json',
202
289
  status: StepStatus.APPLY,
203
290
  detail: command,
204
- exec: { command: parts.command, args: parts.args, fallback: command },
205
- };
206
- }
207
- function viteSteps(input) {
208
- const cfg = input.viteConfig;
209
- const port = input.options.port;
210
- if (cfg === null) {
211
- return [
212
- {
213
- title: 'Vite plugin',
214
- target: 'vite.config',
215
- status: StepStatus.MANUAL,
216
- detail: viteManual(port),
217
- },
218
- ];
219
- }
220
- const patch = patchViteConfig(cfg.source, port);
221
- if (patch.kind === VitePatchKind.ALREADY) {
222
- return [
223
- {
224
- title: 'Vite plugin',
225
- target: cfg.path,
226
- status: StepStatus.ALREADY,
227
- detail: 'reticle() already in plugins',
228
- },
229
- ];
230
- }
231
- if (patch.kind === VitePatchKind.MANUAL) {
232
- return [
233
- {
234
- title: 'Vite plugin',
235
- target: cfg.path,
236
- status: StepStatus.MANUAL,
237
- detail: `${patch.reason}\n\n${viteManual(port)}`,
238
- },
239
- ];
240
- }
241
- return [
242
- {
243
- title: 'Vite plugin',
244
- target: cfg.path,
245
- status: StepStatus.APPLY,
246
- detail: 'add reticle() to plugins (also injects connect())',
247
- write: { path: cfg.path, content: patch.code },
248
- },
249
- ];
250
- }
251
- function nextSteps(input) {
252
- const configFile = input.nextConfigFile ?? 'next.config.mjs';
253
- const devFile = input.nextReticleDevExists
254
- ? {
255
- title: 'ReticleDev component',
256
- target: NEXT_RETICLE_DEV_PATH,
257
- status: StepStatus.ALREADY,
258
- detail: 'file exists',
259
- }
260
- : {
261
- title: 'ReticleDev component',
262
- target: NEXT_RETICLE_DEV_PATH,
263
- status: StepStatus.APPLY,
264
- detail: 'create dev-only connect component',
265
- write: {
266
- path: NEXT_RETICLE_DEV_PATH,
267
- content: nextReticleDevFile(input.options.port, input.options.projectId),
268
- },
269
- };
270
- return [
271
- devFile,
272
- {
273
- title: 'Next config (withReticle)',
274
- target: configFile,
275
- status: StepStatus.MANUAL,
276
- detail: nextConfigManual(configFile),
277
- },
278
- {
279
- title: 'Mount ReticleDev',
280
- target: 'app/layout.tsx',
281
- status: StepStatus.MANUAL,
282
- detail: NEXT_LAYOUT_MANUAL,
283
- },
284
- ];
285
- }
286
- function svelteKitSteps(input) {
287
- // SvelteKit can't use the Vite-plugin injection (renders via app.html) — wire a client hook that
288
- // SvelteKit runs on startup. This is verified to register a session where the plugin does not.
289
- if (input.svelteKitHooksExists === true) {
290
- return [
291
- {
292
- title: 'Reticle client hook',
293
- target: SVELTEKIT_HOOKS_PATH,
294
- status: StepStatus.ALREADY,
295
- detail: 'file exists',
296
- },
297
- ];
298
- }
299
- return [
300
- {
301
- title: 'Reticle client hook',
302
- target: SVELTEKIT_HOOKS_PATH,
303
- status: StepStatus.APPLY,
304
- detail: 'create dev-only client connect (SvelteKit renders via app.html)',
305
- write: {
306
- path: SVELTEKIT_HOOKS_PATH,
307
- content: svelteKitHooksFile(input.options.port, input.options.projectId),
308
- },
291
+ exec: {
292
+ command: parts.command,
293
+ args: parts.args,
294
+ fallback: `${command}\n\n${installFailureHint(pm)}`,
309
295
  },
310
- ];
296
+ };
311
297
  }
312
298
  function reticleConfigStep(input) {
313
299
  if (input.reticleConfigExists === true) {
@@ -327,10 +313,31 @@ function reticleConfigStep(input) {
327
313
  write: { path: RETICLE_CONFIG_FILE, content },
328
314
  };
329
315
  }
316
+ /**
317
+ * A step that says out loud when the app isn't React. SvelteKit already carries its own unverified
318
+ * note, so it isn't doubled up here.
319
+ */
320
+ function uiLibraryStep(input) {
321
+ const lib = input.detection.uiLibrary;
322
+ if (lib === UiLibrary.REACT || input.detection.framework === Framework.SVELTEKIT)
323
+ return [];
324
+ if (lib === UiLibrary.UNKNOWN)
325
+ return [];
326
+ return [
327
+ {
328
+ title: `${lib} is UNVERIFIED`,
329
+ target: 'package.json',
330
+ status: StepStatus.NOTICE,
331
+ detail: unverifiedUiLibraryNote(lib),
332
+ },
333
+ ];
334
+ }
330
335
  export function buildPlan(input) {
331
336
  const steps = [
332
337
  ...mcpSteps(input),
333
338
  ...agentRuleSteps(input),
339
+ ...slashCommandSteps(input),
340
+ ...uiLibraryStep(input),
334
341
  installStep(input),
335
342
  reticleConfigStep(input),
336
343
  ];
@@ -340,8 +347,20 @@ export function buildPlan(input) {
340
347
  else if (input.detection.framework === Framework.NEXT) {
341
348
  steps.push(...nextSteps(input));
342
349
  }
350
+ else if (input.detection.framework === Framework.ASTRO) {
351
+ steps.push({
352
+ title: 'Connect snippet (Astro)',
353
+ target: 'astro.config + layout',
354
+ status: StepStatus.MANUAL,
355
+ detail: astroManual(input.options.port, input.options.projectId),
356
+ });
357
+ }
343
358
  else if (input.detection.framework === Framework.SVELTEKIT) {
344
359
  steps.push(...svelteKitSteps(input));
360
+ // The Vite plugin as well as the client hook. `init` already INSTALLS @reticlehq/vite-plugin for
361
+ // SvelteKit and then never wired it into the config, so it sat in package.json doing nothing —
362
+ // which is why a SvelteKit app connected fine and every verdict came back with no file:line.
363
+ steps.push(...viteSteps(input, VITE_PLUGIN_DETAIL.SVELTEKIT));
345
364
  }
346
365
  else {
347
366
  steps.push({
@@ -353,4 +372,3 @@ export function buildPlan(input) {
353
372
  }
354
373
  return { framework: input.detection.framework, steps };
355
374
  }
356
- //# sourceMappingURL=plan.js.map
@@ -14,4 +14,3 @@ export declare function shortHash(input: string): string;
14
14
  export declare function deriveProjectId(pkgName: string | undefined, rootPath: string): string;
15
15
  /** Pull a string `name` out of an already-parsed package.json object, or undefined. */
16
16
  export declare function packageName(pkg: unknown): string | undefined;
17
- //# sourceMappingURL=project-id.d.ts.map
@@ -35,4 +35,3 @@ export function packageName(pkg) {
35
35
  }
36
36
  return undefined;
37
37
  }
38
- //# sourceMappingURL=project-id.js.map
@@ -15,6 +15,8 @@ export interface InitOptions {
15
15
  mcp: boolean;
16
16
  dryRun: boolean;
17
17
  install: boolean;
18
+ /** Set on the recursive call after a workspace redirect, so the search happens at most once. */
19
+ redirected?: boolean;
18
20
  }
19
21
  export interface InitIo {
20
22
  /** Returns file content or null if it does not exist. Path is project-relative or absolute. */
@@ -26,6 +28,12 @@ export interface InitIo {
26
28
  homeDir(): string;
27
29
  /** Basenames present in the project root. */
28
30
  rootFiles(): readonly string[];
31
+ /** Subdirectory names inside a project-relative directory; empty when it isn't one. */
32
+ listDirs(relPath: string): readonly string[];
33
+ /** File (non-directory) basenames inside a project-relative directory, including dotfiles. */
34
+ listFiles(relPath: string): readonly string[];
35
+ /** The same IO re-rooted at a project-relative subdirectory (used for the workspace redirect). */
36
+ scoped(relPath: string): InitIo;
29
37
  /** Runs a subprocess to completion (inherits stdio); returns true on exit code 0. */
30
38
  exec(command: string, args: readonly string[]): boolean;
31
39
  /** Runs a subprocess quietly (no stdio) for a yes/no check; returns true on exit code 0. */
@@ -37,6 +45,14 @@ interface InitResult {
37
45
  applied: number;
38
46
  manual: number;
39
47
  }
48
+ /**
49
+ * App directories under a workspace root.
50
+ *
51
+ * Running `reticle init` at the repo root is what people actually do, and in a monorepo the app is a
52
+ * directory down — so init detected "no framework", printed a wall of manual HTML instructions, and
53
+ * would have installed the SDK into the ROOT package.json. It already walks UP for the lockfile, so
54
+ * it knows it is in a workspace; this is the matching walk DOWN.
55
+ */
56
+ export declare function findWorkspaceApps(io: Pick<InitIo, 'exists' | 'readFile' | 'listDirs'>): string[];
40
57
  export declare function runInit(options: InitOptions, io: InitIo): InitResult;
41
58
  export {};
42
- //# sourceMappingURL=run.d.ts.map