@jevitate/cli 0.1.0 → 0.2.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 (375) hide show
  1. package/README.md +23 -0
  2. package/dist/ai-cli.js +40 -30
  3. package/dist/ai-cli.js.map +1 -1
  4. package/dist/author-journey-cli.d.ts +4 -0
  5. package/dist/author-journey-cli.js +109 -0
  6. package/dist/author-journey-cli.js.map +1 -0
  7. package/dist/bin.js +58077 -22454
  8. package/dist/bin.js.map +1 -1
  9. package/dist/browser-run-options.d.ts +58 -0
  10. package/dist/browser-run-options.js +106 -0
  11. package/dist/browser-run-options.js.map +1 -0
  12. package/dist/build-info.generated.d.ts +2 -0
  13. package/dist/build-info.generated.js +10 -0
  14. package/dist/build-info.generated.js.map +1 -0
  15. package/dist/check-api.d.ts +5 -0
  16. package/dist/check-api.js +233 -0
  17. package/dist/check-api.js.map +1 -0
  18. package/dist/check-budget.d.ts +26 -0
  19. package/dist/check-budget.js +89 -0
  20. package/dist/check-budget.js.map +1 -0
  21. package/dist/check-cli.d.ts +31 -0
  22. package/dist/check-cli.js +109 -0
  23. package/dist/check-cli.js.map +1 -0
  24. package/dist/check-execute.d.ts +25 -0
  25. package/dist/check-execute.js +385 -0
  26. package/dist/check-execute.js.map +1 -0
  27. package/dist/check-plan.d.ts +113 -0
  28. package/dist/check-plan.js +448 -0
  29. package/dist/check-plan.js.map +1 -0
  30. package/dist/check-suite.d.ts +171 -0
  31. package/dist/check-suite.js +515 -0
  32. package/dist/check-suite.js.map +1 -0
  33. package/dist/check-types.d.ts +181 -0
  34. package/dist/check-types.js +35 -0
  35. package/dist/check-types.js.map +1 -0
  36. package/dist/cli-args.d.ts +26 -0
  37. package/dist/cli-args.js +50 -0
  38. package/dist/cli-args.js.map +1 -0
  39. package/dist/cli-output.d.ts +102 -0
  40. package/dist/cli-output.js +516 -0
  41. package/dist/cli-output.js.map +1 -0
  42. package/dist/cli-reference.d.ts +3 -0
  43. package/dist/cli-reference.js +81 -0
  44. package/dist/cli-reference.js.map +1 -0
  45. package/dist/cli-refusal.d.ts +12 -0
  46. package/dist/cli-refusal.js +52 -0
  47. package/dist/cli-refusal.js.map +1 -0
  48. package/dist/cli-shared.d.ts +330 -0
  49. package/dist/cli-shared.js +492 -0
  50. package/dist/cli-shared.js.map +1 -0
  51. package/dist/cli-surface.d.ts +33 -0
  52. package/dist/cli-surface.js +48 -0
  53. package/dist/cli-surface.js.map +1 -0
  54. package/dist/conversation-options.d.ts +15 -0
  55. package/dist/conversation-options.js +10 -0
  56. package/dist/conversation-options.js.map +1 -0
  57. package/dist/credentials-file.d.ts +15 -0
  58. package/dist/credentials-file.js +56 -0
  59. package/dist/credentials-file.js.map +1 -0
  60. package/dist/data-dir.d.ts +1 -1
  61. package/dist/data-dir.js +1 -1
  62. package/dist/defect-evidence.d.ts +141 -0
  63. package/dist/defect-evidence.js +502 -0
  64. package/dist/defect-evidence.js.map +1 -0
  65. package/dist/demo-aspect-api.d.ts +209 -0
  66. package/dist/demo-aspect-api.js +397 -0
  67. package/dist/demo-aspect-api.js.map +1 -0
  68. package/dist/demo-aspect-cli.d.ts +3 -0
  69. package/dist/demo-aspect-cli.js +241 -0
  70. package/dist/demo-aspect-cli.js.map +1 -0
  71. package/dist/demo-capture.d.ts +108 -0
  72. package/dist/demo-capture.js +438 -0
  73. package/dist/demo-capture.js.map +1 -0
  74. package/dist/engine.d.ts +35 -0
  75. package/dist/engine.js +25 -0
  76. package/dist/engine.js.map +1 -0
  77. package/dist/environments.d.ts +155 -0
  78. package/dist/environments.js +364 -0
  79. package/dist/environments.js.map +1 -0
  80. package/dist/exit-codes.d.ts +46 -0
  81. package/dist/exit-codes.js +91 -0
  82. package/dist/exit-codes.js.map +1 -0
  83. package/dist/explore-adversarial.d.ts +137 -0
  84. package/dist/explore-adversarial.js +218 -0
  85. package/dist/explore-adversarial.js.map +1 -0
  86. package/dist/explore-api.d.ts +7 -187
  87. package/dist/explore-api.js +7 -301
  88. package/dist/explore-api.js.map +1 -1
  89. package/dist/explore-author.d.ts +79 -0
  90. package/dist/explore-author.js +86 -0
  91. package/dist/explore-author.js.map +1 -0
  92. package/dist/explore-cli.d.ts +7 -0
  93. package/dist/explore-cli.js +963 -0
  94. package/dist/explore-cli.js.map +1 -0
  95. package/dist/explore-coverage.d.ts +158 -0
  96. package/dist/explore-coverage.js +240 -0
  97. package/dist/explore-coverage.js.map +1 -0
  98. package/dist/explore-feature.d.ts +127 -0
  99. package/dist/explore-feature.js +220 -0
  100. package/dist/explore-feature.js.map +1 -0
  101. package/dist/explore-goal.d.ts +253 -0
  102. package/dist/explore-goal.js +374 -0
  103. package/dist/explore-goal.js.map +1 -0
  104. package/dist/explore-shared.d.ts +152 -0
  105. package/dist/explore-shared.js +129 -0
  106. package/dist/explore-shared.js.map +1 -0
  107. package/dist/explore-specs.d.ts +53 -0
  108. package/dist/explore-specs.js +333 -0
  109. package/dist/explore-specs.js.map +1 -0
  110. package/dist/findings-filing.d.ts +64 -0
  111. package/dist/findings-filing.js +108 -0
  112. package/dist/findings-filing.js.map +1 -0
  113. package/dist/fixture-auth.d.ts +52 -0
  114. package/dist/fixture-auth.js +82 -0
  115. package/dist/fixture-auth.js.map +1 -0
  116. package/dist/fixture-cli.d.ts +70 -0
  117. package/dist/fixture-cli.js +178 -0
  118. package/dist/fixture-cli.js.map +1 -0
  119. package/dist/github-issue-filer.d.ts +62 -0
  120. package/dist/github-issue-filer.js +188 -0
  121. package/dist/github-issue-filer.js.map +1 -0
  122. package/dist/host-health-run.d.ts +24 -0
  123. package/dist/host-health-run.js +27 -0
  124. package/dist/host-health-run.js.map +1 -0
  125. package/dist/http-5xx-outcome.d.ts +6 -0
  126. package/dist/http-5xx-outcome.js +39 -0
  127. package/dist/http-5xx-outcome.js.map +1 -0
  128. package/dist/inbox-cli.d.ts +7 -0
  129. package/dist/inbox-cli.js +197 -0
  130. package/dist/inbox-cli.js.map +1 -0
  131. package/dist/index.d.ts +1 -0
  132. package/dist/index.js +1 -0
  133. package/dist/index.js.map +1 -1
  134. package/dist/init-cli.d.ts +4 -0
  135. package/dist/init-cli.js +127 -0
  136. package/dist/init-cli.js.map +1 -0
  137. package/dist/init-keys.d.ts +19 -2
  138. package/dist/init-keys.js +15 -4
  139. package/dist/init-keys.js.map +1 -1
  140. package/dist/init-next-steps.d.ts +35 -0
  141. package/dist/init-next-steps.js +79 -0
  142. package/dist/init-next-steps.js.map +1 -0
  143. package/dist/invariants-file.d.ts +34 -0
  144. package/dist/invariants-file.js +68 -0
  145. package/dist/invariants-file.js.map +1 -0
  146. package/dist/invariants-validate.d.ts +30 -0
  147. package/dist/invariants-validate.js +105 -0
  148. package/dist/invariants-validate.js.map +1 -0
  149. package/dist/journey-annotate-api.d.ts +76 -0
  150. package/dist/journey-annotate-api.js +256 -0
  151. package/dist/journey-annotate-api.js.map +1 -0
  152. package/dist/journey-annotate-cli.d.ts +9 -0
  153. package/dist/journey-annotate-cli.js +179 -0
  154. package/dist/journey-annotate-cli.js.map +1 -0
  155. package/dist/journey-api.d.ts +79 -2
  156. package/dist/journey-api.js +136 -19
  157. package/dist/journey-api.js.map +1 -1
  158. package/dist/journey-cli.d.ts +4 -0
  159. package/dist/journey-cli.js +370 -0
  160. package/dist/journey-cli.js.map +1 -0
  161. package/dist/journey-demo-api.d.ts +112 -0
  162. package/dist/journey-demo-api.js +392 -0
  163. package/dist/journey-demo-api.js.map +1 -0
  164. package/dist/journey-demo-cli.d.ts +10 -0
  165. package/dist/journey-demo-cli.js +155 -0
  166. package/dist/journey-demo-cli.js.map +1 -0
  167. package/dist/kill-signal.d.ts +193 -0
  168. package/dist/kill-signal.js +284 -0
  169. package/dist/kill-signal.js.map +1 -0
  170. package/dist/launch-armed.d.ts +37 -0
  171. package/dist/launch-armed.js +31 -0
  172. package/dist/launch-armed.js.map +1 -0
  173. package/dist/ledger-api.d.ts +106 -0
  174. package/dist/ledger-api.js +237 -0
  175. package/dist/ledger-api.js.map +1 -0
  176. package/dist/ledger-cli.d.ts +18 -0
  177. package/dist/ledger-cli.js +107 -0
  178. package/dist/ledger-cli.js.map +1 -0
  179. package/dist/load-api.d.ts +29 -11
  180. package/dist/load-api.js +23 -15
  181. package/dist/load-api.js.map +1 -1
  182. package/dist/load-cli.d.ts +4 -0
  183. package/dist/load-cli.js +97 -0
  184. package/dist/load-cli.js.map +1 -0
  185. package/dist/log-correlation.d.ts +147 -0
  186. package/dist/log-correlation.js +325 -0
  187. package/dist/log-correlation.js.map +1 -0
  188. package/dist/log-lines.d.ts +131 -0
  189. package/dist/log-lines.js +389 -0
  190. package/dist/log-lines.js.map +1 -0
  191. package/dist/log-sources.d.ts +71 -0
  192. package/dist/log-sources.js +235 -0
  193. package/dist/log-sources.js.map +1 -0
  194. package/dist/logs-cli.d.ts +3 -0
  195. package/dist/logs-cli.js +51 -0
  196. package/dist/logs-cli.js.map +1 -0
  197. package/dist/logs-retention.d.ts +28 -0
  198. package/dist/logs-retention.js +84 -0
  199. package/dist/logs-retention.js.map +1 -0
  200. package/dist/mcp-api.d.ts +89 -1
  201. package/dist/mcp-api.js +472 -18
  202. package/dist/mcp-api.js.map +1 -1
  203. package/dist/mcp-args.d.ts +38 -0
  204. package/dist/mcp-args.js +131 -0
  205. package/dist/mcp-args.js.map +1 -0
  206. package/dist/mcp-cli-bridge.d.ts +34 -0
  207. package/dist/mcp-cli-bridge.js +62 -0
  208. package/dist/mcp-cli-bridge.js.map +1 -0
  209. package/dist/mcp-cli-runner.d.ts +29 -0
  210. package/dist/mcp-cli-runner.js +44 -0
  211. package/dist/mcp-cli-runner.js.map +1 -0
  212. package/dist/mcp-cli-tools.d.ts +125 -0
  213. package/dist/mcp-cli-tools.js +680 -0
  214. package/dist/mcp-cli-tools.js.map +1 -0
  215. package/dist/mcp-paths.d.ts +28 -0
  216. package/dist/mcp-paths.js +76 -0
  217. package/dist/mcp-paths.js.map +1 -0
  218. package/dist/mission-actors.d.ts +40 -0
  219. package/dist/mission-actors.js +72 -0
  220. package/dist/mission-actors.js.map +1 -0
  221. package/dist/mission-api.d.ts +35 -0
  222. package/dist/mission-api.js +58 -2
  223. package/dist/mission-api.js.map +1 -1
  224. package/dist/mission-cli.d.ts +4 -0
  225. package/dist/mission-cli.js +247 -0
  226. package/dist/mission-cli.js.map +1 -0
  227. package/dist/mission-exit.d.ts +22 -0
  228. package/dist/mission-exit.js +26 -0
  229. package/dist/mission-exit.js.map +1 -0
  230. package/dist/mission-fixtures.d.ts +225 -0
  231. package/dist/mission-fixtures.js +828 -0
  232. package/dist/mission-fixtures.js.map +1 -0
  233. package/dist/mission-journal.d.ts +60 -0
  234. package/dist/mission-journal.js +115 -0
  235. package/dist/mission-journal.js.map +1 -0
  236. package/dist/mission-queue-cli.d.ts +10 -0
  237. package/dist/mission-queue-cli.js +198 -0
  238. package/dist/mission-queue-cli.js.map +1 -0
  239. package/dist/mission-queue-runner.d.ts +126 -0
  240. package/dist/mission-queue-runner.js +397 -0
  241. package/dist/mission-queue-runner.js.map +1 -0
  242. package/dist/multi-run-cli.d.ts +37 -0
  243. package/dist/multi-run-cli.js +110 -0
  244. package/dist/multi-run-cli.js.map +1 -0
  245. package/dist/multi-run.d.ts +339 -0
  246. package/dist/multi-run.js +619 -0
  247. package/dist/multi-run.js.map +1 -0
  248. package/dist/openrouter-call.d.ts +22 -0
  249. package/dist/openrouter-call.js +63 -0
  250. package/dist/openrouter-call.js.map +1 -0
  251. package/dist/profile-cli.d.ts +4 -0
  252. package/dist/profile-cli.js +57 -0
  253. package/dist/profile-cli.js.map +1 -0
  254. package/dist/program.d.ts +3 -75
  255. package/dist/program.js +119 -1921
  256. package/dist/program.js.map +1 -1
  257. package/dist/project-dir.d.ts +96 -0
  258. package/dist/project-dir.js +220 -0
  259. package/dist/project-dir.js.map +1 -0
  260. package/dist/record-api.d.ts +10 -6
  261. package/dist/record-api.js +39 -28
  262. package/dist/record-api.js.map +1 -1
  263. package/dist/record-cli.d.ts +4 -0
  264. package/dist/record-cli.js +64 -0
  265. package/dist/record-cli.js.map +1 -0
  266. package/dist/recording-cli.d.ts +4 -0
  267. package/dist/recording-cli.js +248 -0
  268. package/dist/recording-cli.js.map +1 -0
  269. package/dist/regression-api.d.ts +101 -0
  270. package/dist/regression-api.js +384 -5
  271. package/dist/regression-api.js.map +1 -1
  272. package/dist/regression-cli.d.ts +4 -0
  273. package/dist/regression-cli.js +232 -0
  274. package/dist/regression-cli.js.map +1 -0
  275. package/dist/report-api.d.ts +146 -0
  276. package/dist/report-api.js +430 -0
  277. package/dist/report-api.js.map +1 -0
  278. package/dist/report-cli.d.ts +12 -0
  279. package/dist/report-cli.js +147 -0
  280. package/dist/report-cli.js.map +1 -0
  281. package/dist/result-schema.d.ts +22 -0
  282. package/dist/result-schema.js +28 -0
  283. package/dist/result-schema.js.map +1 -0
  284. package/dist/run-index.d.ts +29 -0
  285. package/dist/run-index.js +70 -0
  286. package/dist/run-index.js.map +1 -0
  287. package/dist/run-screenshots.d.ts +123 -0
  288. package/dist/run-screenshots.js +229 -0
  289. package/dist/run-screenshots.js.map +1 -0
  290. package/dist/runtime-env.d.ts +8 -0
  291. package/dist/runtime-env.js +22 -0
  292. package/dist/runtime-env.js.map +1 -0
  293. package/dist/secret-args.d.ts +23 -0
  294. package/dist/secret-args.js +45 -0
  295. package/dist/secret-args.js.map +1 -0
  296. package/dist/serve-cli.d.ts +4 -0
  297. package/dist/serve-cli.js +95 -0
  298. package/dist/serve-cli.js.map +1 -0
  299. package/dist/server-log-verify.d.ts +34 -0
  300. package/dist/server-log-verify.js +115 -0
  301. package/dist/server-log-verify.js.map +1 -0
  302. package/dist/session-check.d.ts +14 -0
  303. package/dist/session-check.js +44 -0
  304. package/dist/session-check.js.map +1 -0
  305. package/dist/site-cli.d.ts +4 -0
  306. package/dist/site-cli.js +127 -0
  307. package/dist/site-cli.js.map +1 -0
  308. package/dist/site-gate-cli.d.ts +28 -0
  309. package/dist/site-gate-cli.js +58 -0
  310. package/dist/site-gate-cli.js.map +1 -0
  311. package/dist/source-api.js +18 -3
  312. package/dist/source-api.js.map +1 -1
  313. package/dist/source-cli.d.ts +4 -0
  314. package/dist/source-cli.js +284 -0
  315. package/dist/source-cli.js.map +1 -0
  316. package/dist/source-run-api.d.ts +27 -1
  317. package/dist/source-run-api.js +22 -11
  318. package/dist/source-run-api.js.map +1 -1
  319. package/dist/storage-state-snapshot.d.ts +50 -0
  320. package/dist/storage-state-snapshot.js +87 -0
  321. package/dist/storage-state-snapshot.js.map +1 -0
  322. package/dist/suite-explore-options.d.ts +289 -0
  323. package/dist/suite-explore-options.js +140 -0
  324. package/dist/suite-explore-options.js.map +1 -0
  325. package/dist/target-config.d.ts +109 -0
  326. package/dist/target-config.js +216 -0
  327. package/dist/target-config.js.map +1 -0
  328. package/dist/transcript-file.d.ts +12 -0
  329. package/dist/transcript-file.js +23 -0
  330. package/dist/transcript-file.js.map +1 -0
  331. package/dist/ui-api.d.ts +3 -0
  332. package/dist/ui-api.js +7 -1
  333. package/dist/ui-api.js.map +1 -1
  334. package/dist/usability-capture.d.ts +43 -0
  335. package/dist/usability-capture.js +326 -0
  336. package/dist/usability-capture.js.map +1 -0
  337. package/dist/usage-config.d.ts +36 -0
  338. package/dist/usage-config.js +114 -0
  339. package/dist/usage-config.js.map +1 -0
  340. package/dist/ux-api.d.ts +3 -75
  341. package/dist/ux-api.js +3 -220
  342. package/dist/ux-api.js.map +1 -1
  343. package/dist/ux-cli.d.ts +4 -0
  344. package/dist/ux-cli.js +102 -0
  345. package/dist/ux-cli.js.map +1 -0
  346. package/dist/ux-config.d.ts +29 -0
  347. package/dist/ux-config.js +103 -0
  348. package/dist/ux-config.js.map +1 -0
  349. package/dist/ux-evidence.d.ts +54 -0
  350. package/dist/ux-evidence.js +197 -0
  351. package/dist/ux-evidence.js.map +1 -0
  352. package/dist/ux-review.d.ts +112 -0
  353. package/dist/ux-review.js +151 -0
  354. package/dist/ux-review.js.map +1 -0
  355. package/dist/ux-usability.d.ts +238 -0
  356. package/dist/ux-usability.js +494 -0
  357. package/dist/ux-usability.js.map +1 -0
  358. package/dist/verify-fix-api.d.ts +173 -0
  359. package/dist/verify-fix-api.js +454 -0
  360. package/dist/verify-fix-api.js.map +1 -0
  361. package/dist/verify-fix-cli.d.ts +4 -0
  362. package/dist/verify-fix-cli.js +110 -0
  363. package/dist/verify-fix-cli.js.map +1 -0
  364. package/package.json +19 -14
  365. package/skills/jevitate-ci-check/SKILL.md +77 -0
  366. package/skills/jevitate-demo/SKILL.md +61 -0
  367. package/skills/jevitate-explore/SKILL.md +88 -87
  368. package/skills/jevitate-getting-started/SKILL.md +88 -0
  369. package/skills/jevitate-load-test/SKILL.md +11 -2
  370. package/skills/jevitate-mission-scope/SKILL.md +19 -11
  371. package/skills/jevitate-record/SKILL.md +23 -5
  372. package/skills/jevitate-run-journey/SKILL.md +61 -17
  373. package/skills/jevitate-sources/SKILL.md +57 -14
  374. package/skills/jevitate-ux-review/SKILL.md +106 -16
  375. package/skills/jevitate-verify-fix/SKILL.md +76 -0
@@ -1,16 +1,395 @@
1
+ import { safeChildPath } from "@jevitate/domain";
2
+ import { existsSync } from "node:fs";
1
3
  import { readFile } from "node:fs/promises";
4
+ import { BrowseTheWebToken } from "@jevitate/screenplay";
2
5
  import { RecordingSchema } from "@jevitate/recording";
3
- import { reproduceFailure } from "@jevitate/regression";
4
- import { minimizeRecording, makeSingleShotReproduces } from "@jevitate/regression";
5
- import { commitRegression } from "@jevitate/regression";
6
+ import { RecordingInterpreter } from "@jevitate/interpreter";
7
+ import { reproduceFailure, reproduceFailureAt, NeverFailedError, minimizeRecording, makeSingleShotReproduces, commitRegression, replayRegression, deriveOracleFromTranscript, oracleFromAssertion, appendOracleStep, fingerprintFailure, } from "@jevitate/regression";
8
+ import { parseSuccessSpec } from "./explore-api.js";
9
+ import { assertAuthorizedExploreTarget, monitorFor, evaluateNetworkCheck, describeCheck, verifyFix } from "@jevitate/explore";
10
+ import { rebaseRecording } from "./environments.js";
11
+ import { parsePersistedMission, findFinding } from "./verify-fix-api.js";
12
+ /** #213: `--id <id>` already names a committed regression — refused unless `--force`, checked
13
+ * BEFORE any reproduce/minimize attempt runs (never a browser-driven overwrite the caller didn't ask for). */
14
+ export class RegressionExistsError extends Error {
15
+ code = "E_REGRESSION_EXISTS";
16
+ constructor(id, dir) {
17
+ super(`regression '${id}' already exists in ${dir} — pass --force to overwrite it`);
18
+ this.name = "RegressionExistsError";
19
+ }
20
+ }
21
+ /**
22
+ * The clear, actionable refusal #81 requires: a Recording with no failure to
23
+ * reproduce is refused rather than "minimized" into a vacuous artifact that
24
+ * can only ever pass.
25
+ */
26
+ export class NoFailureToReproduceError extends Error {
27
+ code = "E_REGRESSION_NO_FAILURE";
28
+ constructor(message) {
29
+ super(message ??
30
+ "this Recording contains no failure to reproduce; pass --result <result.json> --fingerprint <fp> or a Recording whose final step's expect fails");
31
+ this.name = "NoFailureToReproduceError";
32
+ }
33
+ }
34
+ /** `--result` was given but carries no usable oracle at all: no failed `--success` check (of ANY
35
+ * kind — page/reloadThen/requestMade/responseStatus), no matching declared-invariant defect, and no
36
+ * APP-caused failed-action step (jevitate's own engine refusals — #92's repeated-side-effect guard,
37
+ * a budget/fail-closed cutoff, … — are never a valid oracle; #119/#129). */
38
+ export class NoOracleInResultError extends Error {
39
+ code = "E_REGRESSION_NO_ORACLE";
40
+ constructor(resultPath, detail) {
41
+ super(`--result ${resultPath} has no usable oracle: ${detail}`);
42
+ this.name = "NoOracleInResultError";
43
+ }
44
+ }
45
+ /**
46
+ * #213: `--fingerprint` names one of the mission's OWN findings, but a hard-signal one (http-5xx,
47
+ * hang, server-log, adversarial-misuse, … — everything but `invariant`, which `captureInvariantRegression`
48
+ * already handles). Its oracle is the signal itself, never a page/success-check assertion —
49
+ * `deriveOracle` (transcript/checks only) can never express it, so falling through to it just
50
+ * produces a generic "no usable oracle" that reads as the `--result` file being unusable, when the
51
+ * real answer is: this isn't the tool for it. Points at the route that IS: `ledger add` (repro
52
+ * material for `ledger verify` / `verify-fix`).
53
+ */
54
+ export class RegressionHardSignalOracleError extends Error {
55
+ code = "E_REGRESSION_HARD_SIGNAL";
56
+ constructor(resultPath, finding) {
57
+ super(`--fingerprint ${finding.fingerprint} is a ${finding.kind} defect in ${resultPath} — a hard signal with its own oracle, ` +
58
+ `which 'regression capture' cannot turn into a page/success-check regression. Keep its repro material with ` +
59
+ `'jevitate ledger add ${resultPath} ${finding.fingerprint}', then re-check it with 'jevitate ledger verify' or ` +
60
+ `'jevitate verify-fix ${finding.fingerprint}'.`);
61
+ this.name = "RegressionHardSignalOracleError";
62
+ }
63
+ }
64
+ /** An explicit `--fingerprint` disagrees with the oracle derived from `--result`. */
65
+ export class FingerprintMismatchError extends Error {
66
+ code = "E_REGRESSION_FINGERPRINT_MISMATCH";
67
+ constructor(given, derived) {
68
+ super(`--fingerprint '${given}' does not match the oracle derived from --result ('${derived}'), and is not a defect/invariant fingerprint in that result either`);
69
+ this.name = "FingerprintMismatchError";
70
+ }
71
+ }
72
+ /** An invariant defect matched by `--fingerprint`, but `verify-fix`'s own replay says it does not
73
+ * currently reproduce (fixed, or inconclusive) — never fabricated into a regression. */
74
+ export class InvariantNotReproducingError extends Error {
75
+ code = "E_REGRESSION_INVARIANT_NOT_REPRODUCING";
76
+ constructor(invariantId, verdict, reason) {
77
+ super(`invariant '${invariantId}' does not currently reproduce (verify-fix verdict: ${verdict}): ${reason}`);
78
+ this.name = "InvariantNotReproducingError";
79
+ }
80
+ }
81
+ /**
82
+ * Derives a failure oracle from a mission result (#81 item 2, extended by #119/#129): the mission's
83
+ * own last APP-CAUSED failed action (preferred — concrete, page-actionable, and replayable
84
+ * regardless of what the mission's success check even was; jevitate's own engine refusals are
85
+ * excluded by `deriveOracleFromTranscript` itself), or its first failed `--success` check, of ANY
86
+ * kind: `page`/`reloadThen` become a Recording `Assertion`; `requestMade`/`responseStatus` become a
87
+ * network-check oracle (no `Assertion` exists for network traffic, so it is never turned into a
88
+ * Recording step). `undefined` when neither is available.
89
+ */
90
+ function deriveOracle(missionResult) {
91
+ const body = missionResult.result ?? missionResult;
92
+ const fromTranscript = deriveOracleFromTranscript(body.transcript ?? []);
93
+ if (fromTranscript)
94
+ return fromTranscript;
95
+ for (const check of body.checks ?? []) {
96
+ if (check.passed)
97
+ continue;
98
+ let parsed;
99
+ try {
100
+ parsed = parseSuccessSpec(check.check);
101
+ }
102
+ catch {
103
+ continue;
104
+ }
105
+ if (parsed.kind === "page" || parsed.kind === "reloadThen")
106
+ return oracleFromAssertion(parsed.assertion);
107
+ if (parsed.kind === "requestMade") {
108
+ return { source: "network-check", check: { kind: "requestMade", method: parsed.method, pathGlob: parsed.pathGlob } };
109
+ }
110
+ if (parsed.kind === "responseStatus") {
111
+ return { source: "network-check", check: { kind: "responseStatus", method: parsed.method, pathGlob: parsed.pathGlob, status: parsed.status } };
112
+ }
113
+ }
114
+ return undefined;
115
+ }
116
+ /** Explains, accurately, why `deriveOracle` found nothing — named so #119's misleading refusal
117
+ * ("has no failed success check" when one WAS present, just engine-refused/unusable) cannot recur. */
118
+ function describeNoOracle(missionResult) {
119
+ const body = missionResult.result ?? missionResult;
120
+ const transcript = body.transcript ?? [];
121
+ const checks = body.checks ?? [];
122
+ const failedChecks = checks.filter((c) => !c.passed);
123
+ const failedActions = transcript.filter((t) => !t.actOk && t.descriptor !== undefined);
124
+ const onlyEngineRefusals = failedActions.length > 0 && failedActions.every((t) => t.origin === "engine" || /refused|fail-closed|budget exhausted/.test(t.reason ?? ""));
125
+ const parts = [];
126
+ parts.push(failedChecks.length === 0 ? "no --success check failed" : `${failedChecks.length} failed check(s) could not be parsed into an oracle`);
127
+ parts.push(onlyEngineRefusals
128
+ ? "the transcript's only failed step(s) were jevitate's own engine refusal(s) (never a valid oracle)"
129
+ : "no app-caused failed-action step in the transcript");
130
+ return parts.join("; ");
131
+ }
6
132
  export async function runRegressionCapture(opts) {
133
+ // #221: the id names the committed files — one safe segment inside the regressions dir, never a path.
134
+ const recordingPath = safeChildPath(opts.regressionsDir, opts.id, { what: "regression id", suffix: ".recording.json" });
135
+ // #213: an existing id is refused (fail closed) BEFORE any reproduce/minimize attempt runs —
136
+ // never a browser-driven overwrite the caller did not ask for. --force opts in.
137
+ if (opts.force !== true && existsSync(recordingPath)) {
138
+ throw new RegressionExistsError(opts.id, opts.regressionsDir);
139
+ }
7
140
  const raw = JSON.parse(await readFile(opts.failingRecordingPath, "utf8"));
8
141
  const recording = RecordingSchema.parse(raw);
9
- const report = await reproduceFailure(recording, opts.makeActor, opts.attempts ?? 3);
142
+ const attempts = opts.attempts ?? 3;
143
+ let missionResult;
144
+ let persistedMission;
145
+ if (opts.resultPath) {
146
+ const rawResult = JSON.parse(await readFile(opts.resultPath, "utf8"));
147
+ missionResult = rawResult;
148
+ try {
149
+ persistedMission = parsePersistedMission(rawResult);
150
+ }
151
+ catch {
152
+ // Not every --result file matches verify-fix's typed mission shape (e.g. a hand-authored test
153
+ // fixture with only `{ transcript, checks }`) — the transcript/checks view still works below.
154
+ persistedMission = undefined;
155
+ }
156
+ }
157
+ // An explicit --fingerprint matching one of the mission's OWN declared-invariant defects
158
+ // (#119/#129): re-checked the same way `verify-fix` does (reusing its defect lookup,
159
+ // `findFinding`), never turned into a Recording step — an invariant is not a page `Assertion`.
160
+ if (opts.fingerprint !== undefined && persistedMission !== undefined) {
161
+ const finding = findFinding(persistedMission, opts.fingerprint);
162
+ if (finding !== undefined && finding.kind === "invariant" && finding.invariantId !== undefined && persistedMission.invariantSpec !== undefined) {
163
+ return captureInvariantRegression(opts, recording, persistedMission, finding, attempts);
164
+ }
165
+ // #213: a hard-signal defect (http-5xx, hang, server-log, adversarial-misuse, …) has its own
166
+ // oracle — never a page/success-check assertion `deriveOracle` could derive. Refuse up front
167
+ // with the route that DOES work (the ledger), before falling through to a generic "no usable
168
+ // oracle" that reads as the --result file being unusable.
169
+ if (finding !== undefined && finding.kind !== "invariant") {
170
+ throw new RegressionHardSignalOracleError(opts.resultPath, finding);
171
+ }
172
+ }
173
+ let working = recording;
174
+ let requiredFingerprint;
175
+ let networkOracle;
176
+ if (missionResult !== undefined) {
177
+ const oracle = deriveOracle(missionResult);
178
+ if (!oracle)
179
+ throw new NoOracleInResultError(opts.resultPath, describeNoOracle(missionResult));
180
+ if (oracle.source === "network-check") {
181
+ networkOracle = oracle.check;
182
+ const derivedSig = `network:${describeCheck(asSuccessCheck(oracle.check))}`;
183
+ if (opts.fingerprint !== undefined && opts.fingerprint !== derivedSig) {
184
+ throw new FingerprintMismatchError(opts.fingerprint, derivedSig);
185
+ }
186
+ }
187
+ else {
188
+ const { augmented, flatIndex } = appendOracleStep(working, oracle);
189
+ working = augmented;
190
+ requiredFingerprint = fingerprintFailure(working, flatIndex);
191
+ if (opts.fingerprint !== undefined && opts.fingerprint !== requiredFingerprint.stepSignature) {
192
+ throw new FingerprintMismatchError(opts.fingerprint, requiredFingerprint.stepSignature);
193
+ }
194
+ }
195
+ }
196
+ else if (opts.fingerprint !== undefined) {
197
+ requiredFingerprint = { stepSignature: opts.fingerprint };
198
+ }
199
+ if (networkOracle !== undefined) {
200
+ return captureNetworkCheckRegression(opts, working, networkOracle, attempts);
201
+ }
202
+ let report;
203
+ try {
204
+ report = requiredFingerprint
205
+ ? await reproduceFailureAt(working, opts.makeActor, requiredFingerprint, attempts)
206
+ : await reproduceFailure(working, opts.makeActor, attempts);
207
+ }
208
+ catch (cause) {
209
+ if (cause instanceof NeverFailedError)
210
+ throw new NoFailureToReproduceError();
211
+ throw cause;
212
+ }
10
213
  if (report.label === "flaky")
11
214
  return { skipped: "flaky", rate: report.rate };
12
215
  const reproduces = makeSingleShotReproduces(opts.makeActor, report.fingerprint);
13
- const minimized = await minimizeRecording(recording, reproduces);
216
+ const minimized = await minimizeRecording(working, reproduces);
14
217
  return commitRegression(opts.regressionsDir, opts.id, minimized, report, opts.bugSummary);
15
218
  }
219
+ /** `NetworkCheckOracle` (`@jevitate/regression`, duck-typed, no `Assertion`) as the concrete
220
+ * `SuccessCheck` `@jevitate/explore`'s network-check evaluator expects. */
221
+ function asSuccessCheck(check) {
222
+ return check.status === undefined
223
+ ? { kind: "requestMade", method: check.method, pathGlob: check.pathGlob }
224
+ : { kind: "responseStatus", method: check.method, pathGlob: check.pathGlob, status: check.status };
225
+ }
226
+ /**
227
+ * Replays `recording` once (a fresh session from `makeActor`), capturing every request the replay
228
+ * itself sends (`@jevitate/explore`'s page monitor — the SAME capture a live mission's own
229
+ * `requestMade`/`responseStatus` check reads), and re-evaluates `check` against exactly that
230
+ * traffic. Returns whether the check STILL FAILS (the defect reproduced) — never whether the
231
+ * Recording interpreter's own step outcomes succeeded, which is irrelevant to a network check.
232
+ */
233
+ async function replayAndCheckNetwork(makeActor, recording, check) {
234
+ const actor = await makeActor();
235
+ const page = actor.ability(BrowseTheWebToken).session.page;
236
+ const monitor = monitorFor(page);
237
+ await monitor.instrument().catch(() => undefined);
238
+ const capture = monitor.startCapture();
239
+ try {
240
+ await new RecordingInterpreter().run(actor, recording);
241
+ }
242
+ catch {
243
+ // A replay that throws (browser/automation error) still leaves whatever the app sent captured;
244
+ // the network check is evaluated over that, same as a replay that merely fails a later step.
245
+ }
246
+ // The interpreter's own postcondition can resolve before a write it triggered finishes (a click's
247
+ // `expect` is often already true pre-click, e.g. "the button stayed visible") — wait for the
248
+ // network to go idle before reading what was captured, or a fast write can be missed entirely.
249
+ await monitor.waitSettled({ ceilingMs: 5_000 }).catch(() => undefined);
250
+ monitor.stopCapture(capture);
251
+ const result = evaluateNetworkCheck(asSuccessCheck(check), capture.requests(), capture.truncated);
252
+ return !result.passed;
253
+ }
254
+ async function captureNetworkCheckRegression(opts, recording, check, attempts) {
255
+ let reproducedCount = 0;
256
+ for (let i = 0; i < attempts; i++) {
257
+ if (await replayAndCheckNetwork(opts.makeActor, recording, check))
258
+ reproducedCount++;
259
+ }
260
+ if (reproducedCount === 0)
261
+ throw new NoFailureToReproduceError();
262
+ const rate = reproducedCount / attempts;
263
+ if (rate !== 1)
264
+ return { skipped: "flaky", rate };
265
+ const report = {
266
+ attempts,
267
+ reproducedCount,
268
+ rate,
269
+ label: "reproducible",
270
+ // Synthetic — a network check has no Recording step, so this is a description, never a
271
+ // structural signature `matchesFingerprint` re-derives (`regression run` uses `meta.oracle`).
272
+ fingerprint: { stepSignature: `network:${describeCheck(asSuccessCheck(check))}` },
273
+ firstFailureAt: -1,
274
+ };
275
+ // No structural step to minimize against (#119/#129): commit the captured Recording as-is.
276
+ return commitRegression(opts.regressionsDir, opts.id, recording, report, opts.bugSummary, { kind: "network", check });
277
+ }
278
+ async function captureInvariantRegression(opts, fallbackRecording, mission, finding, attempts) {
279
+ const invariantSpec = mission.invariantSpec;
280
+ const invariantId = finding.invariantId;
281
+ const recording = finding.recording ?? mission.recording ?? fallbackRecording;
282
+ // Guardrail: the replay may only ever touch the mission's own authorized origins.
283
+ assertAuthorizedExploreTarget(mission.target.seedUrl, mission.target.allowlist);
284
+ const verifyResult = await verifyFix({
285
+ recording,
286
+ recordingStepIndex: finding.repro.recordingStepIndex,
287
+ fingerprint: finding.fingerprint,
288
+ defectKind: "invariant",
289
+ invariant: { spec: invariantSpec, id: invariantId, allowlist: mission.target.allowlist, baseUrl: mission.target.seedUrl },
290
+ replays: attempts,
291
+ openSession: async () => {
292
+ const actor = await opts.makeActor();
293
+ const page = actor.ability(BrowseTheWebToken).session.page;
294
+ // Session teardown is owned by the caller's `makeActor` (the CLI collects and closes every
295
+ // opened session after the whole capture command finishes — same convention the step-based
296
+ // path above already relies on via `@jevitate/regression`'s `makeActor` contract).
297
+ return { page, actor, close: async () => undefined };
298
+ },
299
+ });
300
+ if (verifyResult.verdict === "still-reproduces") {
301
+ const ran = verifyResult.attempts?.filter((a) => a.ran).length ?? attempts;
302
+ const report = {
303
+ attempts: ran,
304
+ reproducedCount: ran,
305
+ rate: 1,
306
+ label: "reproducible",
307
+ fingerprint: { stepSignature: `invariant:${invariantId}` },
308
+ firstFailureAt: finding.repro.recordingStepIndex,
309
+ };
310
+ return commitRegression(opts.regressionsDir, opts.id, recording, report, opts.bugSummary, {
311
+ kind: "invariant",
312
+ invariantId,
313
+ invariantSpec,
314
+ recordingStepIndex: finding.repro.recordingStepIndex,
315
+ allowlist: mission.target.allowlist,
316
+ baseUrl: mission.target.seedUrl,
317
+ defectFingerprint: finding.fingerprint,
318
+ });
319
+ }
320
+ if (verifyResult.verdict === "intermittent") {
321
+ const ran = verifyResult.attempts?.filter((a) => a.ran).length ?? attempts;
322
+ const fired = verifyResult.attempts?.filter((a) => a.ran && a.fired).length ?? 0;
323
+ return { skipped: "flaky", rate: ran === 0 ? 0 : fired / ran };
324
+ }
325
+ throw new InvariantNotReproducingError(invariantId, verifyResult.verdict, verifyResult.reason);
326
+ }
327
+ /** No committed `<id>.recording.json`/`<id>.meta.json` in the regressions directory. */
328
+ export class RegressionNotFoundError extends Error {
329
+ code = "E_REGRESSION_NOT_FOUND";
330
+ constructor(id, dir) {
331
+ super(`no regression '${id}' in ${dir}`);
332
+ this.name = "RegressionNotFoundError";
333
+ }
334
+ }
335
+ /**
336
+ * `regression run <id>` (#129 item 4): replays a committed regression and reports whether it still
337
+ * REPRODUCES or is now FIXED. Dispatches on `meta.oracle` — absent (the default/original) means the
338
+ * committed Recording's own trailing `assert` step IS the oracle, replayed by `@jevitate/regression`'s
339
+ * `replayRegression` (its `expect` failing/holding is the verdict, no different from any other
340
+ * `RecordingInterpreter` run); a `network`/`invariant` oracle is re-evaluated the SAME way capture
341
+ * established it (`replayAndCheckNetwork` / `verifyFix`'s invariant re-check) — never duplicated.
342
+ */
343
+ export async function runRegressionRun(opts) {
344
+ // #221: one safe segment inside the regressions dir, never a path.
345
+ const recordingPath = safeChildPath(opts.regressionsDir, opts.id, { what: "regression id", suffix: ".recording.json" });
346
+ const metaPath = safeChildPath(opts.regressionsDir, opts.id, { what: "regression id", suffix: ".meta.json" });
347
+ let recording;
348
+ let meta;
349
+ try {
350
+ recording = RecordingSchema.parse(JSON.parse(await readFile(recordingPath, "utf8")));
351
+ meta = JSON.parse(await readFile(metaPath, "utf8"));
352
+ }
353
+ catch {
354
+ throw new RegressionNotFoundError(opts.id, opts.regressionsDir);
355
+ }
356
+ const env = opts.environment;
357
+ if (env !== undefined)
358
+ recording = rebaseRecording(recording, env);
359
+ const stored = meta.oracle;
360
+ const oracle = env === undefined || stored?.kind !== "invariant"
361
+ ? stored
362
+ : { ...stored, baseUrl: `${env.baseUrl}${new URL(stored.baseUrl).pathname}`, allowlist: [...env.allowedOrigins] };
363
+ if (oracle === undefined) {
364
+ const actor = await opts.makeActor();
365
+ const outcome = await replayRegression(actor, recording);
366
+ return outcome === "failed"
367
+ ? { id: opts.id, verdict: "reproduces", reason: "the committed Recording's own oracle step failed again on replay" }
368
+ : { id: opts.id, verdict: "fixed", reason: "the committed Recording replayed clean; its oracle step held" };
369
+ }
370
+ if (oracle.kind === "network") {
371
+ const spec = describeCheck(asSuccessCheck(oracle.check));
372
+ const stillFails = await replayAndCheckNetwork(opts.makeActor, recording, oracle.check);
373
+ return stillFails
374
+ ? { id: opts.id, verdict: "reproduces", reason: `the network check (${spec}) still fails on replay` }
375
+ : { id: opts.id, verdict: "fixed", reason: `the network check (${spec}) now passes on replay` };
376
+ }
377
+ // oracle.kind === "invariant"
378
+ assertAuthorizedExploreTarget(oracle.baseUrl, oracle.allowlist);
379
+ const verifyResult = await verifyFix({
380
+ recording,
381
+ recordingStepIndex: oracle.recordingStepIndex,
382
+ fingerprint: oracle.defectFingerprint,
383
+ defectKind: "invariant",
384
+ invariant: { spec: oracle.invariantSpec, id: oracle.invariantId, allowlist: oracle.allowlist, baseUrl: oracle.baseUrl },
385
+ replays: opts.attempts ?? 3,
386
+ openSession: async () => {
387
+ const actor = await opts.makeActor();
388
+ const page = actor.ability(BrowseTheWebToken).session.page;
389
+ return { page, actor, close: async () => undefined };
390
+ },
391
+ });
392
+ const verdict = verifyResult.verdict === "still-reproduces" ? "reproduces" : verifyResult.verdict;
393
+ return { id: opts.id, verdict, reason: verifyResult.reason };
394
+ }
16
395
  //# sourceMappingURL=regression-api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"regression-api.js","sourceRoot":"","sources":["../src/regression-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAexD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAiC;IAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1E,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;IACrF,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAE7E,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAChF,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAEjE,OAAO,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5F,CAAC"}
1
+ {"version":3,"file":"regression-api.js","sourceRoot":"","sources":["../src/regression-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ import { type CliDeps } from "./cli-shared.js";
3
+ /** Registers `jevitate regression`: `capture` and `run`. */
4
+ export declare function registerRegressionCommands(program: Command, deps: CliDeps): void;