@reticlehq/server 2.0.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 (483) hide show
  1. package/LICENSE +105 -0
  2. package/README.md +17 -0
  3. package/dist/bridge-security.d.ts +23 -0
  4. package/dist/bridge-security.d.ts.map +1 -0
  5. package/dist/bridge-security.js +44 -0
  6. package/dist/bridge-security.js.map +1 -0
  7. package/dist/bridge.d.ts +42 -0
  8. package/dist/bridge.d.ts.map +1 -0
  9. package/dist/bridge.js +281 -0
  10. package/dist/bridge.js.map +1 -0
  11. package/dist/bridge.test-harness.d.ts +42 -0
  12. package/dist/bridge.test-harness.d.ts.map +1 -0
  13. package/dist/bridge.test-harness.js +192 -0
  14. package/dist/bridge.test-harness.js.map +1 -0
  15. package/dist/cli-launch.d.ts +53 -0
  16. package/dist/cli-launch.d.ts.map +1 -0
  17. package/dist/cli-launch.js +109 -0
  18. package/dist/cli-launch.js.map +1 -0
  19. package/dist/cli-parse.d.ts +74 -0
  20. package/dist/cli-parse.d.ts.map +1 -0
  21. package/dist/cli-parse.js +321 -0
  22. package/dist/cli-parse.js.map +1 -0
  23. package/dist/cli-port.d.ts +26 -0
  24. package/dist/cli-port.d.ts.map +1 -0
  25. package/dist/cli-port.js +57 -0
  26. package/dist/cli-port.js.map +1 -0
  27. package/dist/cli-verify.d.ts +46 -0
  28. package/dist/cli-verify.d.ts.map +1 -0
  29. package/dist/cli-verify.js +181 -0
  30. package/dist/cli-verify.js.map +1 -0
  31. package/dist/cli.d.ts +6 -0
  32. package/dist/cli.d.ts.map +1 -0
  33. package/dist/cli.js +337 -0
  34. package/dist/cli.js.map +1 -0
  35. package/dist/cloud/cloud-sync.d.ts +50 -0
  36. package/dist/cloud/cloud-sync.d.ts.map +1 -0
  37. package/dist/cloud/cloud-sync.js +47 -0
  38. package/dist/cloud/cloud-sync.js.map +1 -0
  39. package/dist/crawl/crawl-tools.d.ts +8 -0
  40. package/dist/crawl/crawl-tools.d.ts.map +1 -0
  41. package/dist/crawl/crawl-tools.js +61 -0
  42. package/dist/crawl/crawl-tools.js.map +1 -0
  43. package/dist/crawl/crawl.d.ts +45 -0
  44. package/dist/crawl/crawl.d.ts.map +1 -0
  45. package/dist/crawl/crawl.js +106 -0
  46. package/dist/crawl/crawl.js.map +1 -0
  47. package/dist/daemon-resilience.d.ts +17 -0
  48. package/dist/daemon-resilience.d.ts.map +1 -0
  49. package/dist/daemon-resilience.js +23 -0
  50. package/dist/daemon-resilience.js.map +1 -0
  51. package/dist/daemon.d.ts +26 -0
  52. package/dist/daemon.d.ts.map +1 -0
  53. package/dist/daemon.js +122 -0
  54. package/dist/daemon.js.map +1 -0
  55. package/dist/domain/domain-model.d.ts +64 -0
  56. package/dist/domain/domain-model.d.ts.map +1 -0
  57. package/dist/domain/domain-model.js +127 -0
  58. package/dist/domain/domain-model.js.map +1 -0
  59. package/dist/domain/domain-tools.d.ts +9 -0
  60. package/dist/domain/domain-tools.d.ts.map +1 -0
  61. package/dist/domain/domain-tools.js +66 -0
  62. package/dist/domain/domain-tools.js.map +1 -0
  63. package/dist/domain/flow-risk.d.ts +34 -0
  64. package/dist/domain/flow-risk.d.ts.map +1 -0
  65. package/dist/domain/flow-risk.js +81 -0
  66. package/dist/domain/flow-risk.js.map +1 -0
  67. package/dist/ee/audit-log.d.ts +15 -0
  68. package/dist/ee/audit-log.d.ts.map +1 -0
  69. package/dist/ee/audit-log.js +12 -0
  70. package/dist/ee/audit-log.js.map +1 -0
  71. package/dist/events/event-filters.d.ts +65 -0
  72. package/dist/events/event-filters.d.ts.map +1 -0
  73. package/dist/events/event-filters.js +98 -0
  74. package/dist/events/event-filters.js.map +1 -0
  75. package/dist/events/predicate-eval.d.ts +91 -0
  76. package/dist/events/predicate-eval.d.ts.map +1 -0
  77. package/dist/events/predicate-eval.js +299 -0
  78. package/dist/events/predicate-eval.js.map +1 -0
  79. package/dist/events/predicate.d.ts +19 -0
  80. package/dist/events/predicate.d.ts.map +1 -0
  81. package/dist/events/predicate.js +188 -0
  82. package/dist/events/predicate.js.map +1 -0
  83. package/dist/events/reaction.d.ts +34 -0
  84. package/dist/events/reaction.d.ts.map +1 -0
  85. package/dist/events/reaction.js +60 -0
  86. package/dist/events/reaction.js.map +1 -0
  87. package/dist/events/ring-buffer.d.ts +32 -0
  88. package/dist/events/ring-buffer.d.ts.map +1 -0
  89. package/dist/events/ring-buffer.js +75 -0
  90. package/dist/events/ring-buffer.js.map +1 -0
  91. package/dist/flows/annotate-tools.d.ts +16 -0
  92. package/dist/flows/annotate-tools.d.ts.map +1 -0
  93. package/dist/flows/annotate-tools.js +136 -0
  94. package/dist/flows/annotate-tools.js.map +1 -0
  95. package/dist/flows/annotate.d.ts +22 -0
  96. package/dist/flows/annotate.d.ts.map +1 -0
  97. package/dist/flows/annotate.js +134 -0
  98. package/dist/flows/annotate.js.map +1 -0
  99. package/dist/flows/annotation-store.d.ts +23 -0
  100. package/dist/flows/annotation-store.d.ts.map +1 -0
  101. package/dist/flows/annotation-store.js +51 -0
  102. package/dist/flows/annotation-store.js.map +1 -0
  103. package/dist/flows/decision.d.ts +13 -0
  104. package/dist/flows/decision.d.ts.map +1 -0
  105. package/dist/flows/decision.js +111 -0
  106. package/dist/flows/decision.js.map +1 -0
  107. package/dist/flows/flow-classify.d.ts +52 -0
  108. package/dist/flows/flow-classify.d.ts.map +1 -0
  109. package/dist/flows/flow-classify.js +99 -0
  110. package/dist/flows/flow-classify.js.map +1 -0
  111. package/dist/flows/flow-replay-run.d.ts +15 -0
  112. package/dist/flows/flow-replay-run.d.ts.map +1 -0
  113. package/dist/flows/flow-replay-run.js +120 -0
  114. package/dist/flows/flow-replay-run.js.map +1 -0
  115. package/dist/flows/flow-replay.d.ts +49 -0
  116. package/dist/flows/flow-replay.d.ts.map +1 -0
  117. package/dist/flows/flow-replay.js +391 -0
  118. package/dist/flows/flow-replay.js.map +1 -0
  119. package/dist/flows/flow-report.d.ts +23 -0
  120. package/dist/flows/flow-report.d.ts.map +1 -0
  121. package/dist/flows/flow-report.js +106 -0
  122. package/dist/flows/flow-report.js.map +1 -0
  123. package/dist/flows/flow-scope.d.ts +25 -0
  124. package/dist/flows/flow-scope.d.ts.map +1 -0
  125. package/dist/flows/flow-scope.js +32 -0
  126. package/dist/flows/flow-scope.js.map +1 -0
  127. package/dist/flows/flow-success.d.ts +33 -0
  128. package/dist/flows/flow-success.d.ts.map +1 -0
  129. package/dist/flows/flow-success.js +131 -0
  130. package/dist/flows/flow-success.js.map +1 -0
  131. package/dist/flows/flow-tools.d.ts +4 -0
  132. package/dist/flows/flow-tools.d.ts.map +1 -0
  133. package/dist/flows/flow-tools.js +460 -0
  134. package/dist/flows/flow-tools.js.map +1 -0
  135. package/dist/flows/flows.d.ts +86 -0
  136. package/dist/flows/flows.d.ts.map +1 -0
  137. package/dist/flows/flows.js +319 -0
  138. package/dist/flows/flows.js.map +1 -0
  139. package/dist/flows/heal.d.ts +43 -0
  140. package/dist/flows/heal.d.ts.map +1 -0
  141. package/dist/flows/heal.js +98 -0
  142. package/dist/flows/heal.js.map +1 -0
  143. package/dist/flows/recordings.d.ts +46 -0
  144. package/dist/flows/recordings.d.ts.map +1 -0
  145. package/dist/flows/recordings.js +43 -0
  146. package/dist/flows/recordings.js.map +1 -0
  147. package/dist/flows/replay.d.ts +23 -0
  148. package/dist/flows/replay.d.ts.map +1 -0
  149. package/dist/flows/replay.js +160 -0
  150. package/dist/flows/replay.js.map +1 -0
  151. package/dist/http-server.d.ts +39 -0
  152. package/dist/http-server.d.ts.map +1 -0
  153. package/dist/http-server.js +145 -0
  154. package/dist/http-server.js.map +1 -0
  155. package/dist/idle-shutdown.d.ts +34 -0
  156. package/dist/idle-shutdown.d.ts.map +1 -0
  157. package/dist/idle-shutdown.js +68 -0
  158. package/dist/idle-shutdown.js.map +1 -0
  159. package/dist/index.d.ts +135 -0
  160. package/dist/index.d.ts.map +1 -0
  161. package/dist/index.js +371 -0
  162. package/dist/index.js.map +1 -0
  163. package/dist/init/cursor.d.ts +25 -0
  164. package/dist/init/cursor.d.ts.map +1 -0
  165. package/dist/init/cursor.js +49 -0
  166. package/dist/init/cursor.js.map +1 -0
  167. package/dist/init/detect.d.ts +49 -0
  168. package/dist/init/detect.d.ts.map +1 -0
  169. package/dist/init/detect.js +84 -0
  170. package/dist/init/detect.js.map +1 -0
  171. package/dist/init/mcp.d.ts +40 -0
  172. package/dist/init/mcp.d.ts.map +1 -0
  173. package/dist/init/mcp.js +55 -0
  174. package/dist/init/mcp.js.map +1 -0
  175. package/dist/init/node-io.d.ts +8 -0
  176. package/dist/init/node-io.d.ts.map +1 -0
  177. package/dist/init/node-io.js +57 -0
  178. package/dist/init/node-io.js.map +1 -0
  179. package/dist/init/plan.d.ts +72 -0
  180. package/dist/init/plan.d.ts.map +1 -0
  181. package/dist/init/plan.js +280 -0
  182. package/dist/init/plan.js.map +1 -0
  183. package/dist/init/project-id.d.ts +17 -0
  184. package/dist/init/project-id.d.ts.map +1 -0
  185. package/dist/init/project-id.js +38 -0
  186. package/dist/init/project-id.js.map +1 -0
  187. package/dist/init/run.d.ts +42 -0
  188. package/dist/init/run.d.ts.map +1 -0
  189. package/dist/init/run.js +171 -0
  190. package/dist/init/run.js.map +1 -0
  191. package/dist/init/snippets.d.ts +33 -0
  192. package/dist/init/snippets.d.ts.map +1 -0
  193. package/dist/init/snippets.js +117 -0
  194. package/dist/init/snippets.js.map +1 -0
  195. package/dist/init/vite-config.d.ts +25 -0
  196. package/dist/init/vite-config.d.ts.map +1 -0
  197. package/dist/init/vite-config.js +45 -0
  198. package/dist/init/vite-config.js.map +1 -0
  199. package/dist/input/network-mock-tools.d.ts +3 -0
  200. package/dist/input/network-mock-tools.d.ts.map +1 -0
  201. package/dist/input/network-mock-tools.js +94 -0
  202. package/dist/input/network-mock-tools.js.map +1 -0
  203. package/dist/input/network-mock.d.ts +55 -0
  204. package/dist/input/network-mock.d.ts.map +1 -0
  205. package/dist/input/network-mock.js +62 -0
  206. package/dist/input/network-mock.js.map +1 -0
  207. package/dist/input/real-input.d.ts +174 -0
  208. package/dist/input/real-input.d.ts.map +1 -0
  209. package/dist/input/real-input.js +289 -0
  210. package/dist/input/real-input.js.map +1 -0
  211. package/dist/input/scroll-find.d.ts +41 -0
  212. package/dist/input/scroll-find.d.ts.map +1 -0
  213. package/dist/input/scroll-find.js +59 -0
  214. package/dist/input/scroll-find.js.map +1 -0
  215. package/dist/input/scroll-tools.d.ts +8 -0
  216. package/dist/input/scroll-tools.d.ts.map +1 -0
  217. package/dist/input/scroll-tools.js +68 -0
  218. package/dist/input/scroll-tools.js.map +1 -0
  219. package/dist/input/viewport-tools.d.ts +3 -0
  220. package/dist/input/viewport-tools.d.ts.map +1 -0
  221. package/dist/input/viewport-tools.js +65 -0
  222. package/dist/input/viewport-tools.js.map +1 -0
  223. package/dist/license/license.d.ts +108 -0
  224. package/dist/license/license.d.ts.map +1 -0
  225. package/dist/license/license.js +203 -0
  226. package/dist/license/license.js.map +1 -0
  227. package/dist/log.d.ts +6 -0
  228. package/dist/log.d.ts.map +1 -0
  229. package/dist/log.js +9 -0
  230. package/dist/log.js.map +1 -0
  231. package/dist/mcp-proxy.d.ts +16 -0
  232. package/dist/mcp-proxy.d.ts.map +1 -0
  233. package/dist/mcp-proxy.js +168 -0
  234. package/dist/mcp-proxy.js.map +1 -0
  235. package/dist/mcp.d.ts +14 -0
  236. package/dist/mcp.d.ts.map +1 -0
  237. package/dist/mcp.js +101 -0
  238. package/dist/mcp.js.map +1 -0
  239. package/dist/pairing-token.d.ts +28 -0
  240. package/dist/pairing-token.d.ts.map +1 -0
  241. package/dist/pairing-token.js +62 -0
  242. package/dist/pairing-token.js.map +1 -0
  243. package/dist/pool/browser-pool.d.ts +90 -0
  244. package/dist/pool/browser-pool.d.ts.map +1 -0
  245. package/dist/pool/browser-pool.js +221 -0
  246. package/dist/pool/browser-pool.js.map +1 -0
  247. package/dist/pool/lease-reaper.d.ts +16 -0
  248. package/dist/pool/lease-reaper.d.ts.map +1 -0
  249. package/dist/pool/lease-reaper.js +41 -0
  250. package/dist/pool/lease-reaper.js.map +1 -0
  251. package/dist/pool/playwright-launcher.d.ts +19 -0
  252. package/dist/pool/playwright-launcher.d.ts.map +1 -0
  253. package/dist/pool/playwright-launcher.js +51 -0
  254. package/dist/pool/playwright-launcher.js.map +1 -0
  255. package/dist/project/baselines.d.ts +22 -0
  256. package/dist/project/baselines.d.ts.map +1 -0
  257. package/dist/project/baselines.js +45 -0
  258. package/dist/project/baselines.js.map +1 -0
  259. package/dist/project/fs-port.d.ts +27 -0
  260. package/dist/project/fs-port.d.ts.map +1 -0
  261. package/dist/project/fs-port.js +32 -0
  262. package/dist/project/fs-port.js.map +1 -0
  263. package/dist/project/project-store.d.ts +32 -0
  264. package/dist/project/project-store.d.ts.map +1 -0
  265. package/dist/project/project-store.js +127 -0
  266. package/dist/project/project-store.js.map +1 -0
  267. package/dist/project/project-tools.d.ts +9 -0
  268. package/dist/project/project-tools.d.ts.map +1 -0
  269. package/dist/project/project-tools.js +118 -0
  270. package/dist/project/project-tools.js.map +1 -0
  271. package/dist/project/reticle-dir.d.ts +61 -0
  272. package/dist/project/reticle-dir.d.ts.map +1 -0
  273. package/dist/project/reticle-dir.js +144 -0
  274. package/dist/project/reticle-dir.js.map +1 -0
  275. package/dist/runs/build-verification-run.d.ts +30 -0
  276. package/dist/runs/build-verification-run.d.ts.map +1 -0
  277. package/dist/runs/build-verification-run.js +71 -0
  278. package/dist/runs/build-verification-run.js.map +1 -0
  279. package/dist/runs/profile-redact.d.ts +16 -0
  280. package/dist/runs/profile-redact.d.ts.map +1 -0
  281. package/dist/runs/profile-redact.js +32 -0
  282. package/dist/runs/profile-redact.js.map +1 -0
  283. package/dist/runs/render-report.d.ts +9 -0
  284. package/dist/runs/render-report.d.ts.map +1 -0
  285. package/dist/runs/render-report.js +70 -0
  286. package/dist/runs/render-report.js.map +1 -0
  287. package/dist/runs/repair-prompt.d.ts +15 -0
  288. package/dist/runs/repair-prompt.d.ts.map +1 -0
  289. package/dist/runs/repair-prompt.js +59 -0
  290. package/dist/runs/repair-prompt.js.map +1 -0
  291. package/dist/runs/replay-mapping.d.ts +12 -0
  292. package/dist/runs/replay-mapping.d.ts.map +1 -0
  293. package/dist/runs/replay-mapping.js +35 -0
  294. package/dist/runs/replay-mapping.js.map +1 -0
  295. package/dist/runs/reticle-runner.d.ts +48 -0
  296. package/dist/runs/reticle-runner.d.ts.map +1 -0
  297. package/dist/runs/reticle-runner.js +56 -0
  298. package/dist/runs/reticle-runner.js.map +1 -0
  299. package/dist/runs/risk-classify.d.ts +27 -0
  300. package/dist/runs/risk-classify.d.ts.map +1 -0
  301. package/dist/runs/risk-classify.js +76 -0
  302. package/dist/runs/risk-classify.js.map +1 -0
  303. package/dist/runs/run-store.d.ts +40 -0
  304. package/dist/runs/run-store.d.ts.map +1 -0
  305. package/dist/runs/run-store.js +118 -0
  306. package/dist/runs/run-store.js.map +1 -0
  307. package/dist/runs/run-tools.d.ts +10 -0
  308. package/dist/runs/run-tools.d.ts.map +1 -0
  309. package/dist/runs/run-tools.js +69 -0
  310. package/dist/runs/run-tools.js.map +1 -0
  311. package/dist/runs/runner-port.d.ts +14 -0
  312. package/dist/runs/runner-port.d.ts.map +1 -0
  313. package/dist/runs/runner-port.js +23 -0
  314. package/dist/runs/runner-port.js.map +1 -0
  315. package/dist/runs/verify-http.d.ts +34 -0
  316. package/dist/runs/verify-http.d.ts.map +1 -0
  317. package/dist/runs/verify-http.js +102 -0
  318. package/dist/runs/verify-http.js.map +1 -0
  319. package/dist/runs/verify-server.d.ts +26 -0
  320. package/dist/runs/verify-server.d.ts.map +1 -0
  321. package/dist/runs/verify-server.js +99 -0
  322. package/dist/runs/verify-server.js.map +1 -0
  323. package/dist/server-version.d.ts +3 -0
  324. package/dist/server-version.d.ts.map +1 -0
  325. package/dist/server-version.js +5 -0
  326. package/dist/server-version.js.map +1 -0
  327. package/dist/session/control-envelope.d.ts +49 -0
  328. package/dist/session/control-envelope.d.ts.map +1 -0
  329. package/dist/session/control-envelope.js +44 -0
  330. package/dist/session/control-envelope.js.map +1 -0
  331. package/dist/session/live-control-tools.d.ts +16 -0
  332. package/dist/session/live-control-tools.d.ts.map +1 -0
  333. package/dist/session/live-control-tools.js +204 -0
  334. package/dist/session/live-control-tools.js.map +1 -0
  335. package/dist/session/output-budget.d.ts +41 -0
  336. package/dist/session/output-budget.d.ts.map +1 -0
  337. package/dist/session/output-budget.js +54 -0
  338. package/dist/session/output-budget.js.map +1 -0
  339. package/dist/session/presenter-args.d.ts +8 -0
  340. package/dist/session/presenter-args.d.ts.map +1 -0
  341. package/dist/session/presenter-args.js +15 -0
  342. package/dist/session/presenter-args.js.map +1 -0
  343. package/dist/session/review-store.d.ts +40 -0
  344. package/dist/session/review-store.d.ts.map +1 -0
  345. package/dist/session/review-store.js +61 -0
  346. package/dist/session/review-store.js.map +1 -0
  347. package/dist/session/session-health.d.ts +22 -0
  348. package/dist/session/session-health.d.ts.map +1 -0
  349. package/dist/session/session-health.js +26 -0
  350. package/dist/session/session-health.js.map +1 -0
  351. package/dist/session/session-manager.d.ts +43 -0
  352. package/dist/session/session-manager.d.ts.map +1 -0
  353. package/dist/session/session-manager.js +155 -0
  354. package/dist/session/session-manager.js.map +1 -0
  355. package/dist/session/session-readiness.d.ts +35 -0
  356. package/dist/session/session-readiness.d.ts.map +1 -0
  357. package/dist/session/session-readiness.js +32 -0
  358. package/dist/session/session-readiness.js.map +1 -0
  359. package/dist/session/session-reaper.d.ts +37 -0
  360. package/dist/session/session-reaper.d.ts.map +1 -0
  361. package/dist/session/session-reaper.js +94 -0
  362. package/dist/session/session-reaper.js.map +1 -0
  363. package/dist/session/session-recommendation.d.ts +18 -0
  364. package/dist/session/session-recommendation.d.ts.map +1 -0
  365. package/dist/session/session-recommendation.js +14 -0
  366. package/dist/session/session-recommendation.js.map +1 -0
  367. package/dist/session/session-tools.d.ts +9 -0
  368. package/dist/session/session-tools.d.ts.map +1 -0
  369. package/dist/session/session-tools.js +43 -0
  370. package/dist/session/session-tools.js.map +1 -0
  371. package/dist/session/session.d.ts +166 -0
  372. package/dist/session/session.d.ts.map +1 -0
  373. package/dist/session/session.js +408 -0
  374. package/dist/session/session.js.map +1 -0
  375. package/dist/session/state-select.d.ts +8 -0
  376. package/dist/session/state-select.d.ts.map +1 -0
  377. package/dist/session/state-select.js +8 -0
  378. package/dist/session/state-select.js.map +1 -0
  379. package/dist/token-auth.d.ts +24 -0
  380. package/dist/token-auth.d.ts.map +1 -0
  381. package/dist/token-auth.js +71 -0
  382. package/dist/token-auth.js.map +1 -0
  383. package/dist/tools/act-tools.d.ts +3 -0
  384. package/dist/tools/act-tools.d.ts.map +1 -0
  385. package/dist/tools/act-tools.js +327 -0
  386. package/dist/tools/act-tools.js.map +1 -0
  387. package/dist/tools/act-view.d.ts +19 -0
  388. package/dist/tools/act-view.d.ts.map +1 -0
  389. package/dist/tools/act-view.js +46 -0
  390. package/dist/tools/act-view.js.map +1 -0
  391. package/dist/tools/assert-grade.d.ts +21 -0
  392. package/dist/tools/assert-grade.d.ts.map +1 -0
  393. package/dist/tools/assert-grade.js +52 -0
  394. package/dist/tools/assert-grade.js.map +1 -0
  395. package/dist/tools/browser-tools.d.ts +3 -0
  396. package/dist/tools/browser-tools.d.ts.map +1 -0
  397. package/dist/tools/browser-tools.js +52 -0
  398. package/dist/tools/browser-tools.js.map +1 -0
  399. package/dist/tools/contract-tools.d.ts +8 -0
  400. package/dist/tools/contract-tools.d.ts.map +1 -0
  401. package/dist/tools/contract-tools.js +62 -0
  402. package/dist/tools/contract-tools.js.map +1 -0
  403. package/dist/tools/dynamic-tools.d.ts +7 -0
  404. package/dist/tools/dynamic-tools.d.ts.map +1 -0
  405. package/dist/tools/dynamic-tools.js +103 -0
  406. package/dist/tools/dynamic-tools.js.map +1 -0
  407. package/dist/tools/error-recovery.d.ts +31 -0
  408. package/dist/tools/error-recovery.d.ts.map +1 -0
  409. package/dist/tools/error-recovery.js +52 -0
  410. package/dist/tools/error-recovery.js.map +1 -0
  411. package/dist/tools/invoke-tool.d.ts +23 -0
  412. package/dist/tools/invoke-tool.d.ts.map +1 -0
  413. package/dist/tools/invoke-tool.js +99 -0
  414. package/dist/tools/invoke-tool.js.map +1 -0
  415. package/dist/tools/lease-tools.d.ts +31 -0
  416. package/dist/tools/lease-tools.d.ts.map +1 -0
  417. package/dist/tools/lease-tools.js +164 -0
  418. package/dist/tools/lease-tools.js.map +1 -0
  419. package/dist/tools/observe-tools.d.ts +3 -0
  420. package/dist/tools/observe-tools.d.ts.map +1 -0
  421. package/dist/tools/observe-tools.js +259 -0
  422. package/dist/tools/observe-tools.js.map +1 -0
  423. package/dist/tools/profiles.d.ts +33 -0
  424. package/dist/tools/profiles.d.ts.map +1 -0
  425. package/dist/tools/profiles.js +105 -0
  426. package/dist/tools/profiles.js.map +1 -0
  427. package/dist/tools/query-paginate.d.ts +15 -0
  428. package/dist/tools/query-paginate.d.ts.map +1 -0
  429. package/dist/tools/query-paginate.js +31 -0
  430. package/dist/tools/query-paginate.js.map +1 -0
  431. package/dist/tools/read-tools.d.ts +3 -0
  432. package/dist/tools/read-tools.d.ts.map +1 -0
  433. package/dist/tools/read-tools.js +329 -0
  434. package/dist/tools/read-tools.js.map +1 -0
  435. package/dist/tools/snapshot-delta.d.ts +59 -0
  436. package/dist/tools/snapshot-delta.d.ts.map +1 -0
  437. package/dist/tools/snapshot-delta.js +0 -0
  438. package/dist/tools/snapshot-delta.js.map +1 -0
  439. package/dist/tools/tool-invoker.d.ts +15 -0
  440. package/dist/tools/tool-invoker.d.ts.map +1 -0
  441. package/dist/tools/tool-invoker.js +20 -0
  442. package/dist/tools/tool-invoker.js.map +1 -0
  443. package/dist/tools/tool-kit.d.ts +60 -0
  444. package/dist/tools/tool-kit.d.ts.map +1 -0
  445. package/dist/tools/tool-kit.js +33 -0
  446. package/dist/tools/tool-kit.js.map +1 -0
  447. package/dist/tools/tool-names.d.ts +89 -0
  448. package/dist/tools/tool-names.d.ts.map +1 -0
  449. package/dist/tools/tool-names.js +88 -0
  450. package/dist/tools/tool-names.js.map +1 -0
  451. package/dist/tools/tools-helpers.d.ts +12 -0
  452. package/dist/tools/tools-helpers.d.ts.map +1 -0
  453. package/dist/tools/tools-helpers.js +22 -0
  454. package/dist/tools/tools-helpers.js.map +1 -0
  455. package/dist/tools/tools.d.ts +4 -0
  456. package/dist/tools/tools.d.ts.map +1 -0
  457. package/dist/tools/tools.js +268 -0
  458. package/dist/tools/tools.js.map +1 -0
  459. package/dist/update/update-checker.d.ts +20 -0
  460. package/dist/update/update-checker.d.ts.map +1 -0
  461. package/dist/update/update-checker.js +94 -0
  462. package/dist/update/update-checker.js.map +1 -0
  463. package/dist/update/update-tools.d.ts +3 -0
  464. package/dist/update/update-tools.d.ts.map +1 -0
  465. package/dist/update/update-tools.js +94 -0
  466. package/dist/update/update-tools.js.map +1 -0
  467. package/dist/update/updater.d.ts +31 -0
  468. package/dist/update/updater.d.ts.map +1 -0
  469. package/dist/update/updater.js +120 -0
  470. package/dist/update/updater.js.map +1 -0
  471. package/dist/visual/visual-diff.d.ts +46 -0
  472. package/dist/visual/visual-diff.d.ts.map +1 -0
  473. package/dist/visual/visual-diff.js +100 -0
  474. package/dist/visual/visual-diff.js.map +1 -0
  475. package/dist/visual/visual-store.d.ts +22 -0
  476. package/dist/visual/visual-store.d.ts.map +1 -0
  477. package/dist/visual/visual-store.js +60 -0
  478. package/dist/visual/visual-store.js.map +1 -0
  479. package/dist/visual/visual-tools.d.ts +9 -0
  480. package/dist/visual/visual-tools.d.ts.map +1 -0
  481. package/dist/visual/visual-tools.js +182 -0
  482. package/dist/visual/visual-tools.js.map +1 -0
  483. package/package.json +68 -0
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Risk-rank flows so an agent tests the riskiest first. Risk combines two signals:
3
+ * - run history (.reticle/project.json): a flow whose last run errored/drifted, or passed but with
4
+ * console/network errors, is riskier than one that passed clean; a never-run flow is unknown.
5
+ * - assertion quality (flow-classify): a flow that asserts no consequence is risky EVEN when it
6
+ * "passes" — a green assertion-free flow is false confidence (Fowler/Dodds), so it can't be
7
+ * trusted to catch a regression.
8
+ *
9
+ * Taking the worse of the two means "passed clean last time" never hides "but it asserts nothing".
10
+ * Pure: no IO, no clock.
11
+ */
12
+ import { RunStatus, type RunRecord } from '@reticlehq/core';
13
+ export declare const RiskLevel: {
14
+ readonly HIGH: "high";
15
+ readonly MEDIUM: "medium";
16
+ readonly LOW: "low";
17
+ readonly UNKNOWN: "unknown";
18
+ };
19
+ export type RiskLevel = (typeof RiskLevel)[keyof typeof RiskLevel];
20
+ export interface FlowRisk {
21
+ level: RiskLevel;
22
+ reason: string;
23
+ lastStatus?: RunStatus;
24
+ }
25
+ /** Most recent run for a flow name (by `at`), or undefined if it has never been recorded. */
26
+ export declare function latestRun(name: string, runs: readonly RunRecord[]): RunRecord | undefined;
27
+ /** The worse of run-history risk and assertion-quality risk. */
28
+ export declare function flowRisk(grade: string, run: RunRecord | undefined): FlowRisk;
29
+ /** Order flow names worst-risk first (HIGH→UNKNOWN), ties broken by name for stable output. */
30
+ export declare function rankByRisk(entries: {
31
+ name: string;
32
+ risk: FlowRisk;
33
+ }[]): string[];
34
+ //# sourceMappingURL=flow-risk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-risk.d.ts","sourceRoot":"","sources":["../../src/domain/flow-risk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5D,eAAO,MAAM,SAAS;;;;;CAKZ,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAWnE,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED,6FAA6F;AAC7F,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,GAAG,SAAS,CAMzF;AA+BD,gEAAgE;AAChE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAO5E;AAED,+FAA+F;AAC/F,wBAAgB,UAAU,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,EAAE,GAAG,MAAM,EAAE,CAIhF"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Risk-rank flows so an agent tests the riskiest first. Risk combines two signals:
3
+ * - run history (.reticle/project.json): a flow whose last run errored/drifted, or passed but with
4
+ * console/network errors, is riskier than one that passed clean; a never-run flow is unknown.
5
+ * - assertion quality (flow-classify): a flow that asserts no consequence is risky EVEN when it
6
+ * "passes" — a green assertion-free flow is false confidence (Fowler/Dodds), so it can't be
7
+ * trusted to catch a regression.
8
+ *
9
+ * Taking the worse of the two means "passed clean last time" never hides "but it asserts nothing".
10
+ * Pure: no IO, no clock.
11
+ */
12
+ import { RunStatus } from '@reticlehq/core';
13
+ import { FlowAssertionGrade } from '../flows/flow-classify.js';
14
+ export const RiskLevel = {
15
+ HIGH: 'high',
16
+ MEDIUM: 'medium',
17
+ LOW: 'low',
18
+ UNKNOWN: 'unknown',
19
+ };
20
+ // Test-priority order: a known failure first, then a known weakness, then a NEVER-RUN flow
21
+ // (unvalidated — worth running before a known-clean one), then a clean low-risk flow last.
22
+ const RANK = {
23
+ [RiskLevel.HIGH]: 3,
24
+ [RiskLevel.MEDIUM]: 2,
25
+ [RiskLevel.UNKNOWN]: 1,
26
+ [RiskLevel.LOW]: 0,
27
+ };
28
+ /** Most recent run for a flow name (by `at`), or undefined if it has never been recorded. */
29
+ export function latestRun(name, runs) {
30
+ let best;
31
+ for (const run of runs) {
32
+ if (run.name === name && (best === undefined || run.at > best.at))
33
+ best = run;
34
+ }
35
+ return best;
36
+ }
37
+ function runRisk(run) {
38
+ if (run === undefined)
39
+ return { level: RiskLevel.UNKNOWN, reason: 'never run' };
40
+ if (run.status === RunStatus.ERROR || run.status === RunStatus.FAIL) {
41
+ return { level: RiskLevel.HIGH, reason: 'last run failed' };
42
+ }
43
+ if (run.status === RunStatus.DRIFT)
44
+ return { level: RiskLevel.HIGH, reason: 'last run drifted' };
45
+ const errors = (run.evidence?.consoleErrors ?? 0) + (run.evidence?.networkErrors ?? 0);
46
+ if (errors > 0) {
47
+ return {
48
+ level: RiskLevel.MEDIUM,
49
+ reason: `last run passed but logged ${String(errors)} error(s)`,
50
+ };
51
+ }
52
+ return { level: RiskLevel.LOW, reason: 'last run passed clean' };
53
+ }
54
+ function gradeRisk(grade) {
55
+ if (grade === FlowAssertionGrade.ASSERTION_FREE) {
56
+ return {
57
+ level: RiskLevel.MEDIUM,
58
+ reason: 'asserts no consequence — a green run proves little',
59
+ };
60
+ }
61
+ if (grade === FlowAssertionGrade.PRESENCE_ONLY) {
62
+ return { level: RiskLevel.LOW, reason: 'presence-only assertion' };
63
+ }
64
+ return { level: RiskLevel.LOW, reason: 'asserts a consequence' };
65
+ }
66
+ /** The worse of run-history risk and assertion-quality risk. */
67
+ export function flowRisk(grade, run) {
68
+ const r = runRisk(run);
69
+ const g = gradeRisk(grade);
70
+ const top = RANK[r.level] >= RANK[g.level] ? r : g;
71
+ return run === undefined
72
+ ? { level: top.level, reason: top.reason }
73
+ : { level: top.level, reason: top.reason, lastStatus: run.status };
74
+ }
75
+ /** Order flow names worst-risk first (HIGH→UNKNOWN), ties broken by name for stable output. */
76
+ export function rankByRisk(entries) {
77
+ return [...entries]
78
+ .sort((a, b) => RANK[b.risk.level] - RANK[a.risk.level] || a.name.localeCompare(b.name))
79
+ .map((e) => e.name);
80
+ }
81
+ //# sourceMappingURL=flow-risk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-risk.js","sourceRoot":"","sources":["../../src/domain/flow-risk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Example enterprise feature (Reticle Enterprise License — see ./LICENSE). Demonstrates the pattern every
3
+ * ee feature follows: call assertEnterprise(...) first, then do the privileged work. The body here is a
4
+ * stub — the real audit sink is the hosted control plane. It exists now to prove the gate.
5
+ */
6
+ import { type GateContext } from '../license/license.js';
7
+ interface AuditEvent {
8
+ actor: string;
9
+ action: string;
10
+ at: number;
11
+ }
12
+ /** Record an audit event — gated. Throws EnterpriseLicenseError in production without a valid license. */
13
+ export declare function recordAuditEvent(event: AuditEvent, ctx: GateContext): AuditEvent;
14
+ export {};
15
+ //# sourceMappingURL=audit-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-log.d.ts","sourceRoot":"","sources":["../../src/ee/audit-log.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAE3E,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,0GAA0G;AAC1G,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,GAAG,UAAU,CAGhF"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Example enterprise feature (Reticle Enterprise License — see ./LICENSE). Demonstrates the pattern every
3
+ * ee feature follows: call assertEnterprise(...) first, then do the privileged work. The body here is a
4
+ * stub — the real audit sink is the hosted control plane. It exists now to prove the gate.
5
+ */
6
+ import { assertEnterprise } from '../license/license.js';
7
+ /** Record an audit event — gated. Throws EnterpriseLicenseError in production without a valid license. */
8
+ export function recordAuditEvent(event, ctx) {
9
+ assertEnterprise('audit-log', ctx);
10
+ return event; // stub: a real implementation persists to the enterprise audit store
11
+ }
12
+ //# sourceMappingURL=audit-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-log.js","sourceRoot":"","sources":["../../src/ee/audit-log.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAoB,MAAM,uBAAuB,CAAC;AAQ3E,0GAA0G;AAC1G,MAAM,UAAU,gBAAgB,CAAC,KAAiB,EAAE,GAAgB;IAClE,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,CAAC,qEAAqE;AACrF,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { type ReticleEvent } from '@reticlehq/core';
2
+ /** Match a net.request event against optional method/url/status filters (reticle_network). */
3
+ export declare function matchNet(e: ReticleEvent, method: string | undefined, urlContains: string | undefined, status: number | undefined): boolean;
4
+ /**
5
+ * Reconcile network events into completed calls + still-in-flight calls. A NET_PENDING whose
6
+ * `id` never gets a matching NET_REQUEST is an unresolved/hung request — the case
7
+ * completion-only logging is blind to. Pending events are annotated `{ status: 'pending',
8
+ * pending: true }` so a numeric `status` filter excludes them but `urlContains`/`method` match.
9
+ */
10
+ export declare function reconcileNet(events: ReticleEvent[]): ReticleEvent[];
11
+ /** Compact network-call summary for reticle_network output — drops event plumbing (t, type,
12
+ * sessionId, ref, id, initiator, ok) the agent never needs, keeping only method/url/status/ms.
13
+ * This is the bulk of the token cost: raw ReticleEvent objects are ~5x larger than this. */
14
+ interface NetCallView {
15
+ method: string;
16
+ url: string;
17
+ status?: number | string;
18
+ ms?: number;
19
+ }
20
+ export declare function projectNetCall(e: ReticleEvent): NetCallView;
21
+ /** Compact console-log summary for reticle_console output — { level, text } only. */
22
+ interface ConsoleLogView {
23
+ level: string;
24
+ text: string;
25
+ }
26
+ export declare function projectConsoleLog(e: ReticleEvent): ConsoleLogView;
27
+ /** True for any console.* / uncaught-error event (the reticle_console universe). */
28
+ export declare function isConsoleEvent(e: ReticleEvent): boolean;
29
+ /** Match a console/error event against an optional level filter (reticle_console). */
30
+ export declare function matchConsole(e: ReticleEvent, level: string | undefined): boolean;
31
+ /** One present network call summarized for a zero-match hint. */
32
+ interface NetCallSummary {
33
+ method: string;
34
+ url: string;
35
+ status?: number;
36
+ }
37
+ /**
38
+ * Near-miss for reticle_network: when a filter matched zero calls, describe what DID fire so the
39
+ * agent self-corrects ("POST /x 200 matched nothing, but these 3 requests happened") instead of
40
+ * reading a bare []. `allNet` is every net.request in the window (pre-filter).
41
+ */
42
+ interface NetEmptyHint {
43
+ totalInWindow: number;
44
+ /** Up to HINT_SAMPLE_MAX present calls (most-recent first). */
45
+ present: NetCallSummary[];
46
+ }
47
+ export declare function netEmptyHint(allNet: ReticleEvent[]): NetEmptyHint;
48
+ /** Per-level console counts in the window — the body of a zero-match console hint. */
49
+ interface ConsoleLevelCounts {
50
+ log: number;
51
+ warn: number;
52
+ error: number;
53
+ }
54
+ /**
55
+ * Near-miss for reticle_console: when a level filter matched zero logs, report what levels ARE
56
+ * present so the agent knows the page isn't silent ("0 errors, but 3 warns + 5 logs"). `allConsole`
57
+ * is every console/error event in the window (pre-filter).
58
+ */
59
+ interface ConsoleEmptyHint {
60
+ totalInWindow: number;
61
+ byLevel: ConsoleLevelCounts;
62
+ }
63
+ export declare function consoleEmptyHint(allConsole: ReticleEvent[]): ConsoleEmptyHint;
64
+ export {};
65
+ //# sourceMappingURL=event-filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-filters.d.ts","sourceRoot":"","sources":["../../src/events/event-filters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAU/D,8FAA8F;AAC9F,wBAAgB,QAAQ,CACtB,CAAC,EAAE,YAAY,EACf,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAUT;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAanE;AAED;;4FAE4F;AAC5F,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AACD,wBAAgB,cAAc,CAAC,CAAC,EAAE,YAAY,GAAG,WAAW,CAU3D;AAED,qFAAqF;AACrF,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AACD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,YAAY,GAAG,cAAc,CAGjE;AAED,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,CAAC,EAAE,YAAY,GAAG,OAAO,CAOvD;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAMhF;AAKD,iEAAiE;AACjE,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,UAAU,YAAY;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,CAUjE;AAED,sFAAsF;AACtF,UAAU,kBAAkB;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,UAAU,gBAAgB;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,gBAAgB,CAU7E"}
@@ -0,0 +1,98 @@
1
+ import { EventType } from '@reticlehq/core';
2
+ function asString(value) {
3
+ return typeof value === 'string' ? value : undefined;
4
+ }
5
+ function asNumber(value) {
6
+ return typeof value === 'number' ? value : undefined;
7
+ }
8
+ /** Match a net.request event against optional method/url/status filters (reticle_network). */
9
+ export function matchNet(e, method, urlContains, status) {
10
+ const d = e.data;
11
+ if (method !== undefined && asString(d['method'])?.toUpperCase() !== method.toUpperCase()) {
12
+ return false;
13
+ }
14
+ if (urlContains !== undefined && !(asString(d['url']) ?? '').includes(urlContains)) {
15
+ return false;
16
+ }
17
+ if (status !== undefined && asNumber(d['status']) !== status)
18
+ return false;
19
+ return true;
20
+ }
21
+ /**
22
+ * Reconcile network events into completed calls + still-in-flight calls. A NET_PENDING whose
23
+ * `id` never gets a matching NET_REQUEST is an unresolved/hung request — the case
24
+ * completion-only logging is blind to. Pending events are annotated `{ status: 'pending',
25
+ * pending: true }` so a numeric `status` filter excludes them but `urlContains`/`method` match.
26
+ */
27
+ export function reconcileNet(events) {
28
+ const completed = events.filter((e) => e.type === EventType.NET_REQUEST);
29
+ const doneIds = new Set(completed.map((e) => asString(e.data['id'])).filter((id) => id !== undefined));
30
+ const unresolved = events
31
+ .filter((e) => {
32
+ if (e.type !== EventType.NET_PENDING)
33
+ return false;
34
+ const id = asString(e.data['id']);
35
+ return id === undefined || !doneIds.has(id);
36
+ })
37
+ .map((e) => ({ ...e, data: { ...e.data, status: 'pending', pending: true } }));
38
+ return [...completed, ...unresolved].sort((a, b) => a.t - b.t);
39
+ }
40
+ export function projectNetCall(e) {
41
+ const status = e.data['status'];
42
+ const ms = asNumber(e.data['durationMs']);
43
+ const view = {
44
+ method: asString(e.data['method']) ?? '',
45
+ url: asString(e.data['url']) ?? '',
46
+ };
47
+ if (typeof status === 'number' || typeof status === 'string')
48
+ view.status = status;
49
+ if (ms !== undefined)
50
+ view.ms = ms;
51
+ return view;
52
+ }
53
+ export function projectConsoleLog(e) {
54
+ const level = e.type === EventType.ERROR_UNCAUGHT ? 'error' : e.type.replace('console.', '');
55
+ return { level, text: asString(e.data['message']) ?? '' };
56
+ }
57
+ /** True for any console.* / uncaught-error event (the reticle_console universe). */
58
+ export function isConsoleEvent(e) {
59
+ return (e.type === EventType.CONSOLE_LOG ||
60
+ e.type === EventType.CONSOLE_WARN ||
61
+ e.type === EventType.CONSOLE_ERROR ||
62
+ e.type === EventType.ERROR_UNCAUGHT);
63
+ }
64
+ /** Match a console/error event against an optional level filter (reticle_console). */
65
+ export function matchConsole(e, level) {
66
+ if (!isConsoleEvent(e))
67
+ return false;
68
+ if (level === undefined)
69
+ return true;
70
+ return (e.type === `console.${level}` || (level === 'error' && e.type === EventType.ERROR_UNCAUGHT));
71
+ }
72
+ /** How many present calls/levels a zero-match hint samples before truncating. */
73
+ const HINT_SAMPLE_MAX = 5;
74
+ export function netEmptyHint(allNet) {
75
+ const present = allNet
76
+ .slice(-HINT_SAMPLE_MAX)
77
+ .reverse()
78
+ .map((e) => {
79
+ const status = asNumber(e.data['status']);
80
+ const base = { method: asString(e.data['method']) ?? '', url: asString(e.data['url']) ?? '' };
81
+ return status === undefined ? base : { ...base, status };
82
+ });
83
+ return { totalInWindow: allNet.length, present };
84
+ }
85
+ export function consoleEmptyHint(allConsole) {
86
+ const byLevel = { log: 0, warn: 0, error: 0 };
87
+ for (const e of allConsole) {
88
+ if (e.type === EventType.CONSOLE_LOG)
89
+ byLevel.log += 1;
90
+ else if (e.type === EventType.CONSOLE_WARN)
91
+ byLevel.warn += 1;
92
+ else if (e.type === EventType.CONSOLE_ERROR || e.type === EventType.ERROR_UNCAUGHT) {
93
+ byLevel.error += 1;
94
+ }
95
+ }
96
+ return { totalInWindow: allConsole.length, byLevel };
97
+ }
98
+ //# sourceMappingURL=event-filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-filters.js","sourceRoot":"","sources":["../../src/events/event-filters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ import { ElementState, type ElementQuery, type ReticleEvent } from '@reticlehq/core';
2
+ import { z } from 'zod';
3
+ export type Predicate = {
4
+ kind: 'element';
5
+ query: ElementQuery;
6
+ state?: ElementState;
7
+ absent?: boolean;
8
+ } | {
9
+ kind: 'text';
10
+ contains: string;
11
+ visible?: boolean;
12
+ absent?: boolean;
13
+ } | {
14
+ kind: 'net';
15
+ method?: string;
16
+ urlContains?: string;
17
+ status?: number;
18
+ since?: number;
19
+ count?: number;
20
+ } | {
21
+ kind: 'route';
22
+ pathname?: string;
23
+ contains?: string;
24
+ } | {
25
+ kind: 'console';
26
+ level?: string;
27
+ absent?: boolean;
28
+ since?: number;
29
+ } | {
30
+ kind: 'animation';
31
+ name?: string;
32
+ target?: string;
33
+ completed?: boolean;
34
+ } | {
35
+ kind: 'signal';
36
+ name?: string;
37
+ dataMatches?: Record<string, unknown>;
38
+ } | {
39
+ kind: 'state';
40
+ store?: string;
41
+ path: string;
42
+ equals?: unknown;
43
+ } | {
44
+ kind: 'settled';
45
+ quietMs?: number;
46
+ } | {
47
+ kind: 'allOf';
48
+ predicates: Predicate[];
49
+ } | {
50
+ kind: 'anyOf';
51
+ predicates: Predicate[];
52
+ } | {
53
+ kind: 'not';
54
+ predicate: Predicate;
55
+ };
56
+ export declare const PredicateSchema: z.ZodType<Predicate>;
57
+ export interface EvalResult {
58
+ pass: boolean;
59
+ evidence?: unknown;
60
+ failureReason?: string;
61
+ }
62
+ /**
63
+ * Match one value against a pattern. Supports `*` (present), strict equality, and operators:
64
+ * `{$gte,$lte,$gt,$lt}` (numbers), `{$contains}` (array membership or substring), `{$length}`.
65
+ */
66
+ export declare function matchValue(got: unknown, want: unknown): boolean;
67
+ export declare function evalNet(events: ReticleEvent[], p: Extract<Predicate, {
68
+ kind: 'net';
69
+ }>): EvalResult;
70
+ export declare function evalRoute(events: ReticleEvent[], p: Extract<Predicate, {
71
+ kind: 'route';
72
+ }>): EvalResult;
73
+ export declare function evalConsole(events: ReticleEvent[], p: Extract<Predicate, {
74
+ kind: 'console';
75
+ }>): EvalResult;
76
+ export declare function evalAnimation(events: ReticleEvent[], p: Extract<Predicate, {
77
+ kind: 'animation';
78
+ }>): EvalResult;
79
+ export declare function evalSignal(events: ReticleEvent[], p: Extract<Predicate, {
80
+ kind: 'signal';
81
+ }>): EvalResult;
82
+ /**
83
+ * "The page has gone quiet": no network/DOM/animation activity for at least `quietMs`. Needs the
84
+ * wall-clock `now` (in the buffer's time base) because "no activity in the last N ms" is relative to
85
+ * now, not to any buffered event — so `now` is injected (CLAUDE.md rule 7), and the wait loop's
86
+ * poll interval is what eventually flips this to pass once activity stops.
87
+ */
88
+ export declare function evalSettled(events: ReticleEvent[], p: Extract<Predicate, {
89
+ kind: 'settled';
90
+ }>, now: number): EvalResult;
91
+ //# sourceMappingURL=predicate-eval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predicate-eval.d.ts","sourceRoot":"","sources":["../../src/events/predicate-eval.ts"],"names":[],"mappings":"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"}