@relayflows/sdk 2.0.42 → 2.0.44

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 (374) hide show
  1. package/dist/adapters/base.d.ts +12 -1
  2. package/dist/adapters/base.d.ts.map +1 -1
  3. package/dist/adapters/base.js +11 -1
  4. package/dist/adapters/base.js.map +1 -1
  5. package/dist/adapters/claude.d.ts.map +1 -1
  6. package/dist/adapters/claude.js +8 -4
  7. package/dist/adapters/claude.js.map +1 -1
  8. package/dist/adapters/codex.d.ts.map +1 -1
  9. package/dist/adapters/codex.js +15 -6
  10. package/dist/adapters/codex.js.map +1 -1
  11. package/dist/agent-resume.d.ts +8 -0
  12. package/dist/agent-resume.d.ts.map +1 -0
  13. package/dist/agent-resume.js +37 -0
  14. package/dist/agent-resume.js.map +1 -0
  15. package/dist/agent-transcript.d.ts.map +1 -1
  16. package/dist/agent-transcript.js +5 -3
  17. package/dist/agent-transcript.js.map +1 -1
  18. package/dist/authored-flow-error.d.ts +10 -2
  19. package/dist/authored-flow-error.d.ts.map +1 -1
  20. package/dist/authored-flow-error.js.map +1 -1
  21. package/dist/authored-flow-executor.d.ts.map +1 -1
  22. package/dist/authored-flow-executor.js +16 -2
  23. package/dist/authored-flow-executor.js.map +1 -1
  24. package/dist/authored-flow-loader.d.ts +6 -0
  25. package/dist/authored-flow-loader.d.ts.map +1 -1
  26. package/dist/authored-flow-loader.js +18 -6
  27. package/dist/authored-flow-loader.js.map +1 -1
  28. package/dist/authored-helper-effect.js +3 -2
  29. package/dist/authored-helper-effect.js.map +1 -1
  30. package/dist/authored-human.d.ts +2 -0
  31. package/dist/authored-human.d.ts.map +1 -1
  32. package/dist/authored-human.js +4 -0
  33. package/dist/authored-human.js.map +1 -1
  34. package/dist/authored-memory.d.ts +47 -2
  35. package/dist/authored-memory.d.ts.map +1 -1
  36. package/dist/authored-memory.js +394 -15
  37. package/dist/authored-memory.js.map +1 -1
  38. package/dist/authored-node-entry.js +6 -1
  39. package/dist/authored-node-entry.js.map +1 -1
  40. package/dist/authored-node-runner.d.ts +1 -1
  41. package/dist/authored-node-runner.d.ts.map +1 -1
  42. package/dist/authored-node-runner.js +6 -3
  43. package/dist/authored-node-runner.js.map +1 -1
  44. package/dist/authored-root-readback.d.ts +21 -0
  45. package/dist/authored-root-readback.d.ts.map +1 -0
  46. package/dist/authored-root-readback.js +90 -0
  47. package/dist/authored-root-readback.js.map +1 -0
  48. package/dist/authored-root.d.ts.map +1 -1
  49. package/dist/authored-root.js +53 -74
  50. package/dist/authored-root.js.map +1 -1
  51. package/dist/authored-step-output.d.ts +2 -0
  52. package/dist/authored-step-output.d.ts.map +1 -1
  53. package/dist/authored-step-output.js +1 -0
  54. package/dist/authored-step-output.js.map +1 -1
  55. package/dist/authored-worker-step.d.ts.map +1 -1
  56. package/dist/authored-worker-step.js +26 -4
  57. package/dist/authored-worker-step.js.map +1 -1
  58. package/dist/cli/check-helper-body.d.ts +2 -2
  59. package/dist/cli/check-helper-body.d.ts.map +1 -1
  60. package/dist/cli/check-helper-body.js +7 -2
  61. package/dist/cli/check-helper-body.js.map +1 -1
  62. package/dist/cli/check-helper-surface.d.ts +8 -0
  63. package/dist/cli/check-helper-surface.d.ts.map +1 -0
  64. package/dist/cli/check-helper-surface.js +37 -0
  65. package/dist/cli/check-helper-surface.js.map +1 -0
  66. package/dist/cli/check-triggers.d.ts +4 -3
  67. package/dist/cli/check-triggers.d.ts.map +1 -1
  68. package/dist/cli/check-triggers.js +7 -3
  69. package/dist/cli/check-triggers.js.map +1 -1
  70. package/dist/cli/check.d.ts +7 -1
  71. package/dist/cli/check.d.ts.map +1 -1
  72. package/dist/cli/check.js +35 -8
  73. package/dist/cli/check.js.map +1 -1
  74. package/dist/cli/cloud-answer.d.ts +9 -0
  75. package/dist/cli/cloud-answer.d.ts.map +1 -0
  76. package/dist/cli/cloud-answer.js +39 -0
  77. package/dist/cli/cloud-answer.js.map +1 -0
  78. package/dist/cli/cloud-connect-cli.d.ts +2 -1
  79. package/dist/cli/cloud-connect-cli.d.ts.map +1 -1
  80. package/dist/cli/cloud-connect-cli.js +10 -2
  81. package/dist/cli/cloud-connect-cli.js.map +1 -1
  82. package/dist/cli/cloud-human.d.ts +7 -0
  83. package/dist/cli/cloud-human.d.ts.map +1 -0
  84. package/dist/cli/cloud-human.js +22 -0
  85. package/dist/cli/cloud-human.js.map +1 -0
  86. package/dist/cli/cloud-live.d.ts +2 -2
  87. package/dist/cli/cloud-live.d.ts.map +1 -1
  88. package/dist/cli/cloud-live.js +9 -2
  89. package/dist/cli/cloud-live.js.map +1 -1
  90. package/dist/cli/cloud-mirror-session.d.ts.map +1 -1
  91. package/dist/cli/cloud-mirror-session.js +3 -2
  92. package/dist/cli/cloud-mirror-session.js.map +1 -1
  93. package/dist/cli/cloud-run.d.ts +1 -1
  94. package/dist/cli/cloud-run.d.ts.map +1 -1
  95. package/dist/cli/cloud-run.js +12 -0
  96. package/dist/cli/cloud-run.js.map +1 -1
  97. package/dist/cli/detached-record.d.ts +22 -0
  98. package/dist/cli/detached-record.d.ts.map +1 -0
  99. package/dist/cli/detached-record.js +57 -0
  100. package/dist/cli/detached-record.js.map +1 -0
  101. package/dist/cli/detached-run.d.ts +28 -0
  102. package/dist/cli/detached-run.d.ts.map +1 -0
  103. package/dist/cli/detached-run.js +122 -0
  104. package/dist/cli/detached-run.js.map +1 -0
  105. package/dist/cli/diagnostic-fold.d.ts +19 -0
  106. package/dist/cli/diagnostic-fold.d.ts.map +1 -0
  107. package/dist/cli/diagnostic-fold.js +19 -0
  108. package/dist/cli/diagnostic-fold.js.map +1 -0
  109. package/dist/cli/direct-run.d.ts.map +1 -1
  110. package/dist/cli/direct-run.js +16 -2
  111. package/dist/cli/direct-run.js.map +1 -1
  112. package/dist/cli/eval.d.ts +22 -0
  113. package/dist/cli/eval.d.ts.map +1 -0
  114. package/dist/cli/eval.js +131 -0
  115. package/dist/cli/eval.js.map +1 -0
  116. package/dist/cli/journal-timeout.d.ts +12 -0
  117. package/dist/cli/journal-timeout.d.ts.map +1 -0
  118. package/dist/cli/journal-timeout.js +42 -0
  119. package/dist/cli/journal-timeout.js.map +1 -0
  120. package/dist/cli/local-agent-remedy.d.ts.map +1 -1
  121. package/dist/cli/local-agent-remedy.js +5 -4
  122. package/dist/cli/local-agent-remedy.js.map +1 -1
  123. package/dist/cli/observer-session.d.ts +1 -0
  124. package/dist/cli/observer-session.d.ts.map +1 -1
  125. package/dist/cli/observer-session.js +8 -1
  126. package/dist/cli/observer-session.js.map +1 -1
  127. package/dist/cli/reuse.d.ts +8 -0
  128. package/dist/cli/reuse.d.ts.map +1 -1
  129. package/dist/cli/reuse.js +24 -0
  130. package/dist/cli/reuse.js.map +1 -1
  131. package/dist/cli/run.d.ts +8 -2
  132. package/dist/cli/run.d.ts.map +1 -1
  133. package/dist/cli/run.js +72 -56
  134. package/dist/cli/run.js.map +1 -1
  135. package/dist/cli/running-step.d.ts +9 -0
  136. package/dist/cli/running-step.d.ts.map +1 -0
  137. package/dist/cli/running-step.js +156 -0
  138. package/dist/cli/running-step.js.map +1 -0
  139. package/dist/cli/status.d.ts.map +1 -1
  140. package/dist/cli/status.js +12 -8
  141. package/dist/cli/status.js.map +1 -1
  142. package/dist/cli-adapter.d.ts +3 -1
  143. package/dist/cli-adapter.d.ts.map +1 -1
  144. package/dist/cli-adapter.js +6 -2
  145. package/dist/cli-adapter.js.map +1 -1
  146. package/dist/cli-commands.d.ts +77 -11
  147. package/dist/cli-commands.d.ts.map +1 -1
  148. package/dist/cli-commands.js +41 -7
  149. package/dist/cli-commands.js.map +1 -1
  150. package/dist/cli-watch.d.ts +6 -2
  151. package/dist/cli-watch.d.ts.map +1 -1
  152. package/dist/cli-watch.js +7 -6
  153. package/dist/cli-watch.js.map +1 -1
  154. package/dist/cli.d.ts +22 -1
  155. package/dist/cli.d.ts.map +1 -1
  156. package/dist/cli.js +154 -50
  157. package/dist/cli.js.map +1 -1
  158. package/dist/cloud-answer.d.ts +35 -0
  159. package/dist/cloud-answer.d.ts.map +1 -0
  160. package/dist/cloud-answer.js +194 -0
  161. package/dist/cloud-answer.js.map +1 -0
  162. package/dist/cloud-auth-store.d.ts +46 -0
  163. package/dist/cloud-auth-store.d.ts.map +1 -0
  164. package/dist/cloud-auth-store.js +171 -0
  165. package/dist/cloud-auth-store.js.map +1 -0
  166. package/dist/cloud-http.d.ts +7 -16
  167. package/dist/cloud-http.d.ts.map +1 -1
  168. package/dist/cloud-http.js +59 -40
  169. package/dist/cloud-http.js.map +1 -1
  170. package/dist/cloud-human-wait.d.ts +10 -0
  171. package/dist/cloud-human-wait.d.ts.map +1 -0
  172. package/dist/cloud-human-wait.js +17 -0
  173. package/dist/cloud-human-wait.js.map +1 -0
  174. package/dist/cloud-mirror-transport.d.ts.map +1 -1
  175. package/dist/cloud-mirror-transport.js +1 -0
  176. package/dist/cloud-mirror-transport.js.map +1 -1
  177. package/dist/cloud-run-record.d.ts +7 -2
  178. package/dist/cloud-run-record.d.ts.map +1 -1
  179. package/dist/cloud-run-record.js +13 -5
  180. package/dist/cloud-run-record.js.map +1 -1
  181. package/dist/cloud-run.d.ts +9 -0
  182. package/dist/cloud-run.d.ts.map +1 -1
  183. package/dist/cloud-run.js +36 -2
  184. package/dist/cloud-run.js.map +1 -1
  185. package/dist/communication/local.d.ts.map +1 -1
  186. package/dist/communication/local.js +6 -1
  187. package/dist/communication/local.js.map +1 -1
  188. package/dist/communication/worker.d.ts.map +1 -1
  189. package/dist/communication/worker.js +12 -2
  190. package/dist/communication/worker.js.map +1 -1
  191. package/dist/compile.d.ts.map +1 -1
  192. package/dist/compile.js +5 -3
  193. package/dist/compile.js.map +1 -1
  194. package/dist/daemon-spec-validation.d.ts +31 -0
  195. package/dist/daemon-spec-validation.d.ts.map +1 -0
  196. package/dist/daemon-spec-validation.js +115 -0
  197. package/dist/daemon-spec-validation.js.map +1 -0
  198. package/dist/failure-kinds.d.ts +6 -4
  199. package/dist/failure-kinds.d.ts.map +1 -1
  200. package/dist/failure-kinds.js +17 -1
  201. package/dist/failure-kinds.js.map +1 -1
  202. package/dist/flow-eval-cloud.d.ts +25 -0
  203. package/dist/flow-eval-cloud.d.ts.map +1 -0
  204. package/dist/flow-eval-cloud.js +108 -0
  205. package/dist/flow-eval-cloud.js.map +1 -0
  206. package/dist/flow-eval-error.d.ts +7 -0
  207. package/dist/flow-eval-error.d.ts.map +1 -0
  208. package/dist/flow-eval-error.js +10 -0
  209. package/dist/flow-eval-error.js.map +1 -0
  210. package/dist/flow-eval-gate.d.ts +15 -0
  211. package/dist/flow-eval-gate.d.ts.map +1 -0
  212. package/dist/flow-eval-gate.js +102 -0
  213. package/dist/flow-eval-gate.js.map +1 -0
  214. package/dist/flow-eval-local.d.ts +54 -0
  215. package/dist/flow-eval-local.d.ts.map +1 -0
  216. package/dist/flow-eval-local.js +220 -0
  217. package/dist/flow-eval-local.js.map +1 -0
  218. package/dist/flow-eval-outcome.d.ts +22 -0
  219. package/dist/flow-eval-outcome.d.ts.map +1 -0
  220. package/dist/flow-eval-outcome.js +37 -0
  221. package/dist/flow-eval-outcome.js.map +1 -0
  222. package/dist/flow-eval-report.d.ts +106 -0
  223. package/dist/flow-eval-report.d.ts.map +1 -0
  224. package/dist/flow-eval-report.js +4 -0
  225. package/dist/flow-eval-report.js.map +1 -0
  226. package/dist/flow-eval-suite.d.ts +46 -0
  227. package/dist/flow-eval-suite.d.ts.map +1 -0
  228. package/dist/flow-eval-suite.js +144 -0
  229. package/dist/flow-eval-suite.js.map +1 -0
  230. package/dist/flow-eval-version.d.ts +59 -0
  231. package/dist/flow-eval-version.d.ts.map +1 -0
  232. package/dist/flow-eval-version.js +303 -0
  233. package/dist/flow-eval-version.js.map +1 -0
  234. package/dist/flow-eval.d.ts +41 -0
  235. package/dist/flow-eval.d.ts.map +1 -0
  236. package/dist/flow-eval.js +201 -0
  237. package/dist/flow-eval.js.map +1 -0
  238. package/dist/helper-operation-use.d.ts +18 -0
  239. package/dist/helper-operation-use.d.ts.map +1 -0
  240. package/dist/helper-operation-use.js +336 -0
  241. package/dist/helper-operation-use.js.map +1 -0
  242. package/dist/helper-preflight.d.ts.map +1 -1
  243. package/dist/helper-preflight.js +16 -2
  244. package/dist/helper-preflight.js.map +1 -1
  245. package/dist/helper-reference.d.ts +33 -0
  246. package/dist/helper-reference.d.ts.map +1 -1
  247. package/dist/helper-reference.js +5 -5
  248. package/dist/helper-reference.js.map +1 -1
  249. package/dist/index.d.ts +6 -1
  250. package/dist/index.d.ts.map +1 -1
  251. package/dist/index.js +5 -1
  252. package/dist/index.js.map +1 -1
  253. package/dist/journal-budgeted-reads.d.ts +41 -0
  254. package/dist/journal-budgeted-reads.d.ts.map +1 -0
  255. package/dist/journal-budgeted-reads.js +142 -0
  256. package/dist/journal-budgeted-reads.js.map +1 -0
  257. package/dist/journal-client.d.ts +34 -29
  258. package/dist/journal-client.d.ts.map +1 -1
  259. package/dist/journal-client.js +45 -151
  260. package/dist/journal-client.js.map +1 -1
  261. package/dist/journal-connection.d.ts +42 -0
  262. package/dist/journal-connection.d.ts.map +1 -0
  263. package/dist/journal-connection.js +209 -0
  264. package/dist/journal-connection.js.map +1 -0
  265. package/dist/journal-read-policy.d.ts +38 -0
  266. package/dist/journal-read-policy.d.ts.map +1 -0
  267. package/dist/journal-read-policy.js +126 -0
  268. package/dist/journal-read-policy.js.map +1 -0
  269. package/dist/named-gate-lowering.d.ts.map +1 -1
  270. package/dist/named-gate-lowering.js +2 -6
  271. package/dist/named-gate-lowering.js.map +1 -1
  272. package/dist/re2js-embedded.d.ts +3 -0
  273. package/dist/re2js-embedded.d.ts.map +1 -0
  274. package/dist/re2js-embedded.js +4 -0
  275. package/dist/re2js-embedded.js.map +1 -0
  276. package/dist/spec.d.ts +10 -0
  277. package/dist/spec.d.ts.map +1 -1
  278. package/dist/spec.js.map +1 -1
  279. package/dist/step-fields.d.ts +1 -1
  280. package/dist/step-fields.js +1 -1
  281. package/dist/step-fields.js.map +1 -1
  282. package/dist/validate.d.ts.map +1 -1
  283. package/dist/validate.js +15 -0
  284. package/dist/validate.js.map +1 -1
  285. package/dist/worker-cli.d.ts +3 -1
  286. package/dist/worker-cli.d.ts.map +1 -1
  287. package/dist/worker-cli.js +15 -5
  288. package/dist/worker-cli.js.map +1 -1
  289. package/dist/worker-lease.d.ts.map +1 -1
  290. package/dist/worker-lease.js +11 -3
  291. package/dist/worker-lease.js.map +1 -1
  292. package/dist/worker.js +1 -1
  293. package/dist/worker.js.map +1 -1
  294. package/package.json +5 -3
  295. package/src/adapters/base.ts +16 -1
  296. package/src/adapters/claude.ts +8 -4
  297. package/src/adapters/codex.ts +15 -6
  298. package/src/agent-resume.ts +36 -0
  299. package/src/agent-transcript.ts +5 -3
  300. package/src/authored-flow-error.ts +9 -0
  301. package/src/authored-flow-executor.ts +18 -1
  302. package/src/authored-flow-loader.ts +27 -10
  303. package/src/authored-helper-effect.ts +3 -2
  304. package/src/authored-human.ts +5 -0
  305. package/src/authored-memory.ts +445 -15
  306. package/src/authored-node-entry.ts +6 -1
  307. package/src/authored-node-runner.ts +6 -3
  308. package/src/authored-root-readback.ts +100 -0
  309. package/src/authored-root.ts +58 -85
  310. package/src/authored-step-output.ts +3 -0
  311. package/src/authored-worker-step.ts +29 -4
  312. package/src/cli/check-helper-body.ts +9 -3
  313. package/src/cli/check-helper-surface.ts +43 -0
  314. package/src/cli/check-triggers.ts +9 -4
  315. package/src/cli/check.ts +37 -7
  316. package/src/cli/cloud-answer.ts +40 -0
  317. package/src/cli/cloud-connect-cli.ts +9 -2
  318. package/src/cli/cloud-human.ts +24 -0
  319. package/src/cli/cloud-live.ts +10 -5
  320. package/src/cli/cloud-mirror-session.ts +3 -2
  321. package/src/cli/cloud-run.ts +10 -1
  322. package/src/cli/detached-record.ts +71 -0
  323. package/src/cli/detached-run.ts +131 -0
  324. package/src/cli/diagnostic-fold.ts +28 -0
  325. package/src/cli/direct-run.ts +14 -1
  326. package/src/cli/eval.ts +141 -0
  327. package/src/cli/journal-timeout.ts +49 -0
  328. package/src/cli/local-agent-remedy.ts +6 -4
  329. package/src/cli/observer-session.ts +7 -1
  330. package/src/cli/reuse.ts +25 -0
  331. package/src/cli/run.ts +75 -67
  332. package/src/cli/running-step.ts +140 -0
  333. package/src/cli/status.ts +19 -13
  334. package/src/cli-adapter.ts +7 -1
  335. package/src/cli-commands.ts +43 -7
  336. package/src/cli-watch.ts +8 -5
  337. package/src/cli.ts +158 -51
  338. package/src/cloud-answer.ts +202 -0
  339. package/src/cloud-auth-store.ts +185 -0
  340. package/src/cloud-http.ts +61 -50
  341. package/src/cloud-human-wait.ts +23 -0
  342. package/src/cloud-mirror-transport.ts +1 -0
  343. package/src/cloud-run-record.ts +14 -5
  344. package/src/cloud-run.ts +46 -2
  345. package/src/communication/local.ts +6 -1
  346. package/src/communication/worker.ts +11 -3
  347. package/src/compile.ts +5 -3
  348. package/src/daemon-spec-validation.ts +126 -0
  349. package/src/failure-kinds.ts +17 -1
  350. package/src/flow-eval-cloud.ts +114 -0
  351. package/src/flow-eval-error.ts +10 -0
  352. package/src/flow-eval-gate.ts +114 -0
  353. package/src/flow-eval-local.ts +236 -0
  354. package/src/flow-eval-outcome.ts +43 -0
  355. package/src/flow-eval-report.ts +102 -0
  356. package/src/flow-eval-suite.ts +169 -0
  357. package/src/flow-eval-version.ts +316 -0
  358. package/src/flow-eval.ts +234 -0
  359. package/src/helper-operation-use.ts +285 -0
  360. package/src/helper-preflight.ts +17 -2
  361. package/src/helper-reference.ts +6 -6
  362. package/src/index.ts +15 -1
  363. package/src/journal-budgeted-reads.ts +134 -0
  364. package/src/journal-client.ts +59 -166
  365. package/src/journal-connection.ts +222 -0
  366. package/src/journal-read-policy.ts +123 -0
  367. package/src/named-gate-lowering.ts +2 -6
  368. package/src/re2js-embedded.ts +3 -0
  369. package/src/spec.ts +10 -0
  370. package/src/step-fields.ts +1 -1
  371. package/src/validate.ts +14 -0
  372. package/src/worker-cli.ts +14 -3
  373. package/src/worker-lease.ts +11 -3
  374. package/src/worker.ts +1 -1
@@ -0,0 +1,201 @@
1
+ // Re-run evaluation: execute one exact flow version against a frozen set of
2
+ // input cases and score the result, so a deploy can be gated on it.
3
+ //
4
+ // `flows replay` reads a finished run's journal and never executes anything.
5
+ // This module is the other thing: it RE-EXECUTES the flow, once per case,
6
+ // through an executor (local daemon, Cloud, or one the caller supplies), and
7
+ // returns a report whose `gate.pass` is the deploy decision.
8
+ //
9
+ // It is a library first. `evaluateFlow` is what a step calls — from a
10
+ // deterministic step's script or an authored body — and `flows eval` is a thin
11
+ // CLI over it whose exit code is the same verdict (0 pass, 1 fail, 2 refused).
12
+ //
13
+ // Two things are frozen and recorded in every report, so a verdict names
14
+ // exactly what it judged: the flow version (flow-eval-version.ts) and the suite
15
+ // (flow-eval-suite.ts). Every case executes its own fresh, read-only copy
16
+ // written from the very bytes the version hashes, never the working tree, so
17
+ // neither an edit during the evaluation nor an earlier case can change what
18
+ // runs under the judged version.
19
+ // Aggregation and the verdict itself live in flow-eval-gate.ts.
20
+ import { FlowEvalError } from './flow-eval-error.js';
21
+ import { decideFlowEvalGate, parseFlowEvalBaseline, summarizeFlowEval } from './flow-eval-gate.js';
22
+ import { FLOW_EVAL_REPORT_SCHEMA_VERSION, } from './flow-eval-report.js';
23
+ import { flowEvalSuiteSha256, parseFlowEvalSuite } from './flow-eval-suite.js';
24
+ import { isPathTarget, sealFlowEvalSnapshot } from './flow-eval-version.js';
25
+ export { FlowEvalError } from './flow-eval-error.js';
26
+ export { parseFlowEvalBaseline } from './flow-eval-gate.js';
27
+ export * from './flow-eval-report.js';
28
+ export { MAX_FLOW_EVAL_CASES, flowEvalSuiteSha256, loadFlowEvalSuite, parseFlowEvalSuite, } from './flow-eval-suite.js';
29
+ export { MAX_FLOW_EVAL_SOURCES, flowEvalSources, flowEvalVersion, sealFlowEvalSnapshot, } from './flow-eval-version.js';
30
+ /**
31
+ * Re-execute `flow` once per suite case and score the results.
32
+ *
33
+ * Never throws for a case that fails or errors: those are verdicts, recorded
34
+ * in the report. Throws `FlowEvalError` only when the evaluation itself is
35
+ * invalid (bad suite, baseline or options, or a pinned version/suite that does
36
+ * not match), and rethrows an abort.
37
+ */
38
+ export async function evaluateFlow(options) {
39
+ const now = options.now ?? Date.now;
40
+ const suite = parseFlowEvalSuite(options.suite);
41
+ const concurrency = options.concurrency ?? 1;
42
+ if (!Number.isSafeInteger(concurrency) || concurrency < 1 || concurrency > 64) {
43
+ throw new FlowEvalError('invalid_options', 'concurrency must be an integer from 1 to 64.');
44
+ }
45
+ const names = new Set();
46
+ for (const scorer of options.scorers ?? []) {
47
+ if (typeof scorer.name !== 'string' || scorer.name === '' || names.has(scorer.name)) {
48
+ throw new FlowEvalError('invalid_options', 'Each scorer needs a unique, nonempty name.');
49
+ }
50
+ names.add(scorer.name);
51
+ }
52
+ const suiteSha256 = flowEvalSuiteSha256(suite);
53
+ if (options.expectSuiteSha256 !== undefined && options.expectSuiteSha256 !== suiteSha256) {
54
+ throw new FlowEvalError('suite_mismatch', `Suite hashes to ${suiteSha256}; expected ${options.expectSuiteSha256}.`);
55
+ }
56
+ const baseline = options.baseline === undefined ? undefined : parseFlowEvalBaseline(options.baseline);
57
+ if (baseline !== undefined && baseline.suiteSha256 !== suiteSha256) {
58
+ throw new FlowEvalError('suite_mismatch', 'The baseline report was produced from a different suite; regressions would not be comparable.');
59
+ }
60
+ if (baseline !== undefined) {
61
+ // The hash is a claim; the cases are the evidence. A baseline missing a
62
+ // case would silently skip that case's regression check.
63
+ const ids = new Set(suite.cases.map(c => c.id));
64
+ const extra = [...baseline.outcomes.keys()].filter(id => !ids.has(id));
65
+ const absent = [...ids].filter(id => !baseline.outcomes.has(id));
66
+ if (extra.length > 0 || absent.length > 0) {
67
+ throw new FlowEvalError('invalid_baseline', 'The baseline report does not cover exactly this suite\'s cases'
68
+ + (absent.length > 0 ? `; missing ${absent.join(', ')}` : '') + (extra.length > 0 ? `; unknown ${extra.join(', ')}` : '') + '.');
69
+ }
70
+ }
71
+ const snapshot = await sealFlowEvalSnapshot(options.flow);
72
+ const { version } = snapshot;
73
+ if (options.expectVersion !== undefined && options.expectVersion !== version) {
74
+ throw new FlowEvalError('version_mismatch', `Flow version is ${version}; expected ${options.expectVersion}.`);
75
+ }
76
+ const startedAt = now();
77
+ const results = new Array(suite.cases.length);
78
+ let next = 0;
79
+ const worker = async () => {
80
+ for (;;) {
81
+ options.signal?.throwIfAborted();
82
+ const index = next++;
83
+ if (index >= suite.cases.length)
84
+ return;
85
+ results[index] = await runCase(suite.cases[index], options, now, snapshot);
86
+ }
87
+ };
88
+ await Promise.all(Array.from({ length: Math.min(concurrency, suite.cases.length) }, worker));
89
+ options.signal?.throwIfAborted();
90
+ const summary = summarizeFlowEval(results);
91
+ const gate = decideFlowEvalGate(suite, results, summary, baseline);
92
+ return {
93
+ schemaVersion: FLOW_EVAL_REPORT_SCHEMA_VERSION,
94
+ kind: 'flows.eval.report',
95
+ flow: { ...(isPathTarget(options.flow) ? { path: options.flow.path } : {}), version, files: snapshot.files },
96
+ suite: { name: suite.name, sha256: suiteSha256, cases: suite.cases.length },
97
+ executor: options.executorName ?? 'custom',
98
+ startedAt: new Date(startedAt).toISOString(),
99
+ finishedAt: new Date(now()).toISOString(),
100
+ cases: results,
101
+ summary,
102
+ gate,
103
+ };
104
+ }
105
+ async function runCase(testCase, options, now, snapshot) {
106
+ const copy = await snapshot.materialize();
107
+ try {
108
+ return await scoreCase(testCase, options, now, copy.flow);
109
+ }
110
+ finally {
111
+ await copy.dispose();
112
+ }
113
+ }
114
+ async function scoreCase(testCase, options, now, sealed) {
115
+ const started = now();
116
+ let run;
117
+ try {
118
+ run = await options.executor({
119
+ flow: sealed, caseId: testCase.id,
120
+ ...(testCase.input === undefined ? {} : { input: testCase.input }),
121
+ ...(options.signal === undefined ? {} : { signal: options.signal }),
122
+ });
123
+ }
124
+ catch (error) {
125
+ // An abort is the caller stopping the evaluation, not this case's verdict.
126
+ if (options.signal?.aborted)
127
+ throw options.signal.reason ?? error;
128
+ return {
129
+ id: testCase.id, outcome: 'error', latencyMs: Math.max(0, now() - started),
130
+ costUsd: null, tokensIn: null, tokensOut: null, metrics: {},
131
+ failures: [`executor failed: ${error instanceof Error ? error.message : String(error)}`],
132
+ };
133
+ }
134
+ const latencyMs = Math.max(0, now() - started);
135
+ const costUsd = finiteOrNull(run.costUsd);
136
+ const failures = [];
137
+ const expect = testCase.expect ?? {};
138
+ const wantReason = expect.completionReason ?? 'success';
139
+ if (run.completionReason !== wantReason) {
140
+ failures.push(`completionReason was ${run.completionReason}; expected ${wantReason}`
141
+ + (run.completionDetail ? ` (${truncate(run.completionDetail)})` : ''));
142
+ }
143
+ const detail = run.completionDetail ?? '';
144
+ for (const fragment of expect.detailIncludes ?? []) {
145
+ if (!detail.includes(fragment))
146
+ failures.push(`completion detail does not include ${JSON.stringify(fragment)}`);
147
+ }
148
+ if (expect.detailMatches !== undefined && !new RegExp(expect.detailMatches, 'u').test(detail)) {
149
+ failures.push(`completion detail does not match /${expect.detailMatches}/`);
150
+ }
151
+ if (expect.maxLatencyMs !== undefined && latencyMs > expect.maxLatencyMs) {
152
+ failures.push(`latency ${latencyMs}ms exceeds ${expect.maxLatencyMs}ms`);
153
+ }
154
+ if (expect.maxCostUsd !== undefined) {
155
+ if (costUsd === null)
156
+ failures.push(`cost is unknown; the case caps it at $${expect.maxCostUsd}`);
157
+ else if (costUsd > expect.maxCostUsd)
158
+ failures.push(`cost $${costUsd} exceeds $${expect.maxCostUsd}`);
159
+ }
160
+ const metrics = {};
161
+ for (const [name, value] of Object.entries(run.metrics ?? {})) {
162
+ if (Number.isFinite(value))
163
+ metrics[name] = value;
164
+ }
165
+ let errored = false;
166
+ for (const scorer of options.scorers ?? []) {
167
+ try {
168
+ const score = await scorer.score(run, testCase);
169
+ if (score.value !== undefined && Number.isFinite(score.value))
170
+ metrics[scorer.name] = score.value;
171
+ if (score.pass === false)
172
+ failures.push(`scorer ${scorer.name} failed` + (score.detail ? `: ${score.detail}` : ''));
173
+ }
174
+ catch (error) {
175
+ errored = true;
176
+ failures.push(`scorer ${scorer.name} threw: ${error instanceof Error ? error.message : String(error)}`);
177
+ }
178
+ }
179
+ return {
180
+ id: testCase.id,
181
+ outcome: errored ? 'error' : failures.length === 0 ? 'pass' : 'fail',
182
+ ...(run.runId === undefined ? {} : { runId: run.runId }),
183
+ completionReason: run.completionReason,
184
+ latencyMs,
185
+ costUsd,
186
+ tokensIn: finiteOrNull(run.tokensIn),
187
+ tokensOut: finiteOrNull(run.tokensOut),
188
+ metrics,
189
+ ...(run.steps === undefined ? {} : { steps: run.steps }),
190
+ failures,
191
+ };
192
+ }
193
+ /** A negative or non-finite figure is malformed; as unknown it fails every ceiling instead of offsetting other cases. */
194
+ function finiteOrNull(value) {
195
+ return typeof value === 'number' && Number.isFinite(value) && value >= 0 ? value : null;
196
+ }
197
+ function truncate(text) {
198
+ const line = text.replace(/\s+/gu, ' ').trim();
199
+ return line.length > 200 ? `${line.slice(0, 197)}...` : line;
200
+ }
201
+ //# sourceMappingURL=flow-eval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-eval.js","sourceRoot":"","sources":["../src/flow-eval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Whether a flow body calls `f.<namespace>.<method>`.
3
+ *
4
+ * - `called`: a direct, named call such as `f.notion.appendBlock(...)`.
5
+ * - `absent`: the namespace is only ever used directly — `f.notion.x(...)` with
6
+ * named methods — or read (`if (f.notion)`, `typeof`, comparisons, a discarded
7
+ * `f.notion && ...`), so the call provably does not occur.
8
+ * - `unprovable`: the namespace or the whole context leaves direct use — an
9
+ * alias, destructuring, an argument, a return, a property, a computed member
10
+ * or namespace. Its later calls cannot be attributed statically, so callers
11
+ * that must fail closed treat this as the call.
12
+ *
13
+ * Same scoped parse as `helperNamespacesUsed`: strings and comments naming the
14
+ * call are not uses, and a nested binding of the context name is not the context.
15
+ * An unparseable body falls back to the text, permissively.
16
+ */
17
+ export declare function helperOperationUse(body: string, root: string, namespace: string, method: string): 'called' | 'absent' | 'unprovable';
18
+ //# sourceMappingURL=helper-operation-use.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper-operation-use.d.ts","sourceRoot":"","sources":["../src/helper-operation-use.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAwDpI"}
@@ -0,0 +1,336 @@
1
+ import { isFunction, isNode, memberName, parseFlowBody, walkReferences } from './helper-reference.js';
2
+ /**
3
+ * Whether a flow body calls `f.<namespace>.<method>`.
4
+ *
5
+ * - `called`: a direct, named call such as `f.notion.appendBlock(...)`.
6
+ * - `absent`: the namespace is only ever used directly — `f.notion.x(...)` with
7
+ * named methods — or read (`if (f.notion)`, `typeof`, comparisons, a discarded
8
+ * `f.notion && ...`), so the call provably does not occur.
9
+ * - `unprovable`: the namespace or the whole context leaves direct use — an
10
+ * alias, destructuring, an argument, a return, a property, a computed member
11
+ * or namespace. Its later calls cannot be attributed statically, so callers
12
+ * that must fail closed treat this as the call.
13
+ *
14
+ * Same scoped parse as `helperNamespacesUsed`: strings and comments naming the
15
+ * call are not uses, and a nested binding of the context name is not the context.
16
+ * An unparseable body falls back to the text, permissively.
17
+ */
18
+ export function helperOperationUse(body, root, namespace, method) {
19
+ const program = parseFlowBody(body);
20
+ if (program === null)
21
+ return new RegExp(`\\.\\s*${method}\\b`).test(body) ? 'unprovable' : 'absent';
22
+ const parents = new WeakMap();
23
+ const all = [];
24
+ const link = (node) => {
25
+ all.push(node);
26
+ for (const key of Object.keys(node)) {
27
+ if (key === 'type' || key === 'start' || key === 'end' || key === 'loc')
28
+ continue;
29
+ const child = node[key];
30
+ for (const entry of Array.isArray(child) ? child : [child]) {
31
+ if (isNode(entry)) {
32
+ parents.set(entry, node);
33
+ link(entry);
34
+ }
35
+ }
36
+ }
37
+ };
38
+ link(program);
39
+ let result = 'absent';
40
+ const mark = (found) => { if (result !== 'unprovable')
41
+ result = found; };
42
+ // Body-wide, whatever scope binds the context name: code that rewrites the
43
+ // prototypes helpers inherit from (or runs source text) can intercept the
44
+ // helper anywhere, so nothing is attributable once it is present.
45
+ if (all.some(node => reachesMachinery(node, parents)))
46
+ return 'unprovable';
47
+ walkReferences(program, root, false, { rootFunctionFound: false }, (node) => {
48
+ // `arguments[0]` is the context in a non-arrow root body without naming it.
49
+ if (node.type === 'Identifier' && node.name === 'arguments' && rootArguments(node, parents))
50
+ return mark('unprovable');
51
+ if (node.type !== 'Identifier' || node.name !== root)
52
+ return;
53
+ const parent = parents.get(node);
54
+ if (parent === undefined || declares(parent, node))
55
+ return;
56
+ if (parent.type === 'MemberExpression' && parent.object === node) {
57
+ const name = memberName(parent);
58
+ if (name === undefined)
59
+ return mark('unprovable'); // f[expr]
60
+ if (name !== namespace)
61
+ return;
62
+ const grand = parents.get(parent);
63
+ if (grand?.type === 'MemberExpression' && grand.object === parent) {
64
+ const operation = memberName(grand);
65
+ if (operation === undefined)
66
+ mark('unprovable'); // f.notion[expr]
67
+ else if (operation === method) {
68
+ // Calling it is the operation; a read (typeof, comparison) is not;
69
+ // anything else hands the function on.
70
+ // Any use but a pure read reaches the operation: a call, however
71
+ // wrapped (parentheses, comma, ||, ?:, new), or the function handed on.
72
+ if (!readOrCall(grand, parents, false))
73
+ mark('called');
74
+ }
75
+ // Inherited object members (valueOf, constructor, toString, ...) can hand
76
+ // the helper back — directly, or through a prototype the body replaced —
77
+ // so none is attributable; helper methods return steps.
78
+ else if (operation === '__proto__' || Object.prototype.hasOwnProperty.call(Object.prototype, operation))
79
+ mark('unprovable');
80
+ return;
81
+ }
82
+ if (!readOrCall(parent, parents))
83
+ mark('unprovable');
84
+ return;
85
+ }
86
+ // The whole context used as a value (`const { notion } = f`, `use(f)`).
87
+ if (!readOrCall(node, parents))
88
+ mark('unprovable');
89
+ });
90
+ return result;
91
+ }
92
+ /** Every name a binding pattern introduces. */
93
+ function patternNames(pattern, into) {
94
+ if (!pattern)
95
+ return;
96
+ if (pattern.type === 'Identifier')
97
+ into.add(pattern.name);
98
+ else if (pattern.type === 'AssignmentPattern')
99
+ patternNames(pattern.left, into);
100
+ else if (pattern.type === 'RestElement')
101
+ patternNames(pattern.argument, into);
102
+ else if (pattern.type === 'ArrayPattern')
103
+ for (const element of pattern.elements)
104
+ patternNames(element, into);
105
+ else if (pattern.type === 'ObjectPattern') {
106
+ for (const property of pattern.properties)
107
+ patternNames((property.type === 'Property' ? property.value : property.argument), into);
108
+ }
109
+ }
110
+ /** The names one scope node binds directly: its parameters, function name, catch parameter, or declarations. */
111
+ function scopeBindings(scope) {
112
+ const names = new Set();
113
+ if (isFunction(scope)) {
114
+ if (scope.type === 'FunctionExpression')
115
+ patternNames(scope.id, names);
116
+ for (const param of scope.params ?? [])
117
+ patternNames(param, names);
118
+ }
119
+ if (scope.type === 'CatchClause')
120
+ patternNames(scope.param, names);
121
+ const statements = scope.type === 'BlockStatement' || scope.type === 'Program' ? scope.body
122
+ : ['ForStatement', 'ForInStatement', 'ForOfStatement'].includes(scope.type) ? [(scope.init ?? scope.left)] : [];
123
+ for (const statement of statements ?? []) {
124
+ if (statement?.type === 'VariableDeclaration') {
125
+ for (const declarator of statement.declarations)
126
+ patternNames(declarator.id, names);
127
+ }
128
+ else if (statement?.type === 'FunctionDeclaration' || statement?.type === 'ClassDeclaration') {
129
+ patternNames(statement.id, names);
130
+ }
131
+ }
132
+ return names;
133
+ }
134
+ /** Whether `node`, a use of `name`, resolves to a binding in an enclosing scope rather than the global. */
135
+ function boundLocally(node, name, parents) {
136
+ for (let at = parents.get(node); at !== undefined; at = parents.get(at)) {
137
+ if (scopeBindings(at).has(name))
138
+ return true;
139
+ }
140
+ return false;
141
+ }
142
+ /** Prototype machinery, eval or Function: anything that lets the body intercept or hide a helper use. */
143
+ function reachesMachinery(node, parents) {
144
+ // memberName also reads string-literal computed keys (Object['prototype']).
145
+ if (node.type === 'MemberExpression' && PROTOTYPE_MACHINERY.has(memberName(node) ?? '')) {
146
+ // A class or function the body defines has its own prototype, which cannot
147
+ // reach the helper: Local.prototype.flag = true is not machinery.
148
+ const object = node.object;
149
+ return !(memberName(node) === 'prototype' && object?.type === 'Identifier' && ownConstructor(object, parents));
150
+ }
151
+ // A prototype-bearing global is safe only as the object of a static,
152
+ // non-machinery member (Object.keys, Symbol.iterator). Aliasing it, passing
153
+ // it, destructuring it or indexing it with a runtime key can reach the
154
+ // machinery under another name.
155
+ if (node.type === 'Identifier' && (MACHINERY_GLOBALS.has(node.name) || GLOBAL_ROOTS.has(node.name))) {
156
+ const parent = parents.get(node);
157
+ if (parent !== undefined && declares(parent, node))
158
+ return false;
159
+ if (parent?.type === 'VariableDeclarator' && parent.id === node)
160
+ return false;
161
+ if (boundLocally(node, node.name, parents))
162
+ return false;
163
+ if (!GLOBAL_ROOTS.has(node.name))
164
+ return onlyStaticSafeMember(node, parents);
165
+ // A global root (globalThis, global, window, self) reaches every global:
166
+ // follow root-to-root chains, then judge a named prototype-bearing global
167
+ // like the bare one. Any other use of a root can reach them by any name.
168
+ let value = node;
169
+ for (let up = parents.get(value); up?.type === 'MemberExpression' && up.object === value
170
+ && GLOBAL_ROOTS.has(memberName(up) ?? ''); up = parents.get(value))
171
+ value = up;
172
+ const up = parents.get(value);
173
+ const named = up?.type === 'MemberExpression' && up.object === value ? memberName(up) : undefined;
174
+ if (named !== undefined && MACHINERY_GLOBALS.has(named))
175
+ return onlyStaticSafeMember(up, parents);
176
+ return named === undefined || PROTOTYPE_MACHINERY.has(named);
177
+ }
178
+ // Destructuring a prototype-bearing global at all (computed keys, rest)
179
+ // can pick out any of its machinery.
180
+ if ((node.type === 'VariableDeclarator' && node.id.type === 'ObjectPattern')
181
+ || (node.type === 'AssignmentExpression' && node.left.type === 'ObjectPattern')) {
182
+ const source = (node.type === 'VariableDeclarator' ? node.init : node.right);
183
+ if (source?.type === 'Identifier' && MACHINERY_GLOBALS.has(source.name) && !boundLocally(source, source.name, parents))
184
+ return true;
185
+ }
186
+ // Destructuring reads the same members: const { prototype: p } = Object.
187
+ if (node.type === 'Property' && parents.get(node)?.type === 'ObjectPattern') {
188
+ const key = node.key;
189
+ const name = key?.type === 'Identifier' && node.computed !== true ? key.name
190
+ : key?.type === 'Literal' && typeof key.value === 'string' ? key.value : undefined;
191
+ if (name !== undefined && PROTOTYPE_MACHINERY.has(name))
192
+ return true;
193
+ }
194
+ if (node.type === 'Identifier' && ['Reflect', 'Proxy', 'eval', 'Function'].includes(node.name)) {
195
+ const parent = parents.get(node);
196
+ if (parent !== undefined && declares(parent, node))
197
+ return false;
198
+ if (parent?.type === 'VariableDeclarator' && parent.id === node)
199
+ return false;
200
+ // eval and Function matter only when called; a use resolving to a local
201
+ // binding (scope by scope, not body-wide) is not the global.
202
+ // Any use of eval (indirect call, alias) runs source text the scan never
203
+ // sees; Function is judged with the other prototype-bearing globals.
204
+ return !boundLocally(node, node.name, parents);
205
+ }
206
+ return false;
207
+ }
208
+ /** Whether `node` names a class or function the body itself defines, in an enclosing scope. */
209
+ function ownConstructor(node, parents) {
210
+ const name = node.name;
211
+ // Class and function bindings are reassignable; one that is reassigned
212
+ // anywhere could hold any constructor.
213
+ let program = node;
214
+ for (let at = parents.get(node); at !== undefined; at = parents.get(at))
215
+ program = at;
216
+ if (reassigns(program, name))
217
+ return false;
218
+ const constructs = (value) => value?.type === 'ClassExpression' || value?.type === 'FunctionExpression';
219
+ for (let scope = parents.get(node); scope !== undefined; scope = parents.get(scope)) {
220
+ const statements = scope.type === 'BlockStatement' || scope.type === 'Program' ? scope.body : [];
221
+ for (const statement of statements) {
222
+ if ((statement.type === 'ClassDeclaration' || statement.type === 'FunctionDeclaration')
223
+ && statement.id?.name === name)
224
+ return true;
225
+ if (statement.type === 'VariableDeclaration' && statement.kind === 'const') {
226
+ for (const declarator of statement.declarations) {
227
+ if (declarator.id.type === 'Identifier' && declarator.id.name === name)
228
+ return constructs(declarator.init);
229
+ }
230
+ }
231
+ }
232
+ if (scopeBindings(scope).has(name))
233
+ return false; // bound here to something else
234
+ }
235
+ return false;
236
+ }
237
+ /** Whether any assignment or update anywhere under `node` targets the identifier `name`. */
238
+ function reassigns(node, name) {
239
+ if ((node.type === 'AssignmentExpression' && node.left.type === 'Identifier' && node.left.name === name)
240
+ || (node.type === 'UpdateExpression' && node.argument.type === 'Identifier' && node.argument.name === name))
241
+ return true;
242
+ for (const key of Object.keys(node)) {
243
+ if (key === 'type' || key === 'start' || key === 'end' || key === 'loc')
244
+ continue;
245
+ const child = node[key];
246
+ for (const entry of Array.isArray(child) ? child : [child])
247
+ if (isNode(entry) && reassigns(entry, name))
248
+ return true;
249
+ }
250
+ return false;
251
+ }
252
+ /**
253
+ * For a value that is a prototype-bearing global: true (machinery reached)
254
+ * unless it is only the object of a static, non-machinery member.
255
+ */
256
+ function onlyStaticSafeMember(value, parents) {
257
+ const parent = parents.get(value);
258
+ const member = parent?.type === 'MemberExpression' && parent.object === value ? memberName(parent) : undefined;
259
+ return member === undefined || PROTOTYPE_MACHINERY.has(member);
260
+ }
261
+ /** Globals whose members include the prototype machinery. */
262
+ const MACHINERY_GLOBALS = new Set(['Object', 'Symbol', 'Reflect', 'Function', 'Proxy']);
263
+ /** Names for the global object itself, through which every global is reachable. */
264
+ const GLOBAL_ROOTS = new Set(['globalThis', 'global', 'window', 'self']);
265
+ /** Members through which a body can reach or rewrite the prototypes every helper inherits from. */
266
+ const PROTOTYPE_MACHINERY = new Set(['prototype', '__proto__', 'defineProperty', 'defineProperties',
267
+ 'setPrototypeOf', 'getPrototypeOf', 'toPrimitive', '__defineGetter__', '__defineSetter__',
268
+ '__lookupGetter__', '__lookupSetter__',
269
+ // Any function's (or global's) constructor chain reaches Function, which compiles source text,
270
+ // and eval (globalThis.eval, ...) runs it directly.
271
+ 'constructor', 'eval']);
272
+ /**
273
+ * A use that cannot hand the value on: a discarded value or a read, and —
274
+ * when `allowCall` — a direct call of it.
275
+ */
276
+ function readOrCall(value, parents, allowCall = true) {
277
+ let current = value;
278
+ let parent = parents.get(current);
279
+ // Wrappers that pass their operand's value through unchanged.
280
+ while (parent !== undefined && ['ChainExpression', 'ParenthesizedExpression', 'AwaitExpression',
281
+ 'LogicalExpression', 'ConditionalExpression', 'SequenceExpression'].includes(parent.type)
282
+ && !(parent.type === 'ConditionalExpression' && parent.test === current)) {
283
+ // Only a sequence's last operand is its value; earlier ones are discarded reads.
284
+ if (parent.type === 'SequenceExpression' && parent.expressions.at(-1) !== current)
285
+ return true;
286
+ current = parent;
287
+ parent = parents.get(current);
288
+ }
289
+ if (parent === undefined)
290
+ return false;
291
+ if ((parent.type === 'CallExpression' || parent.type === 'NewExpression') && parent.callee === current)
292
+ return allowCall;
293
+ // `instanceof` hands its left operand to the right side's Symbol.hasInstance.
294
+ if (parent.type === 'BinaryExpression')
295
+ return parent.operator !== 'instanceof';
296
+ if (['ExpressionStatement', 'UnaryExpression'].includes(parent.type))
297
+ return true;
298
+ // `${f.notion}` coerces to a string; a tagged template hands the value to its tag.
299
+ if (parent.type === 'TemplateLiteral')
300
+ return parents.get(parent)?.type !== 'TaggedTemplateExpression';
301
+ return ['IfStatement', 'WhileStatement', 'DoWhileStatement', 'ForStatement', 'ConditionalExpression'].includes(parent.type)
302
+ && parent.test === current;
303
+ }
304
+ /**
305
+ * `arguments` used (not named) inside the root flow function itself — the
306
+ * outermost non-arrow function, whatever shape its context parameter has — not
307
+ * inside a nested non-arrow function with its own `arguments`.
308
+ */
309
+ function rootArguments(node, parents) {
310
+ const parent = parents.get(node);
311
+ if (parent !== undefined && declares(parent, node))
312
+ return false;
313
+ let owner;
314
+ for (let at = parents.get(node); at !== undefined; at = parents.get(at)) {
315
+ if (at.type === 'FunctionDeclaration' || at.type === 'FunctionExpression') {
316
+ owner = at;
317
+ break;
318
+ }
319
+ }
320
+ if (owner === undefined)
321
+ return false;
322
+ for (let at = parents.get(owner); at !== undefined; at = parents.get(at)) {
323
+ if (at.type === 'FunctionDeclaration' || at.type === 'FunctionExpression' || at.type === 'ArrowFunctionExpression')
324
+ return false;
325
+ }
326
+ return true;
327
+ }
328
+ /** The identifier is a name being declared or a property name, not a use of the context. */
329
+ function declares(parent, node) {
330
+ if (isFunction(parent))
331
+ return (parent.params ?? []).includes(node);
332
+ if (parent.type === 'Property')
333
+ return parent.key === node && parent.computed !== true && parent.shorthand !== true;
334
+ return parent.type === 'MemberExpression' && parent.property === node && parent.computed !== true;
335
+ }
336
+ //# sourceMappingURL=helper-operation-use.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper-operation-use.js","sourceRoot":"","sources":["../src/helper-operation-use.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"helper-preflight.d.ts","sourceRoot":"","sources":["../src/helper-preflight.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,gBAAgB,CAAC;AAG3E,0FAA0F;AAC1F,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE;IAAE,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAAE,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;CAAE,EACvF,KAAK,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IACtE,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;CAAE,GAC1F,eAAe,CA+BjB"}
1
+ {"version":3,"file":"helper-preflight.d.ts","sourceRoot":"","sources":["../src/helper-preflight.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,gBAAgB,CAAC;AAI3E,0FAA0F;AAC1F,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE;IAAE,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAAE,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;CAAE,EACvF,KAAK,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IACtE,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;CAAE,GAC1F,eAAe,CA6CjB"}