@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.
- package/README.md +23 -0
- package/dist/ai-cli.js +40 -30
- package/dist/ai-cli.js.map +1 -1
- package/dist/author-journey-cli.d.ts +4 -0
- package/dist/author-journey-cli.js +109 -0
- package/dist/author-journey-cli.js.map +1 -0
- package/dist/bin.js +58077 -22454
- package/dist/bin.js.map +1 -1
- package/dist/browser-run-options.d.ts +58 -0
- package/dist/browser-run-options.js +106 -0
- package/dist/browser-run-options.js.map +1 -0
- package/dist/build-info.generated.d.ts +2 -0
- package/dist/build-info.generated.js +10 -0
- package/dist/build-info.generated.js.map +1 -0
- package/dist/check-api.d.ts +5 -0
- package/dist/check-api.js +233 -0
- package/dist/check-api.js.map +1 -0
- package/dist/check-budget.d.ts +26 -0
- package/dist/check-budget.js +89 -0
- package/dist/check-budget.js.map +1 -0
- package/dist/check-cli.d.ts +31 -0
- package/dist/check-cli.js +109 -0
- package/dist/check-cli.js.map +1 -0
- package/dist/check-execute.d.ts +25 -0
- package/dist/check-execute.js +385 -0
- package/dist/check-execute.js.map +1 -0
- package/dist/check-plan.d.ts +113 -0
- package/dist/check-plan.js +448 -0
- package/dist/check-plan.js.map +1 -0
- package/dist/check-suite.d.ts +171 -0
- package/dist/check-suite.js +515 -0
- package/dist/check-suite.js.map +1 -0
- package/dist/check-types.d.ts +181 -0
- package/dist/check-types.js +35 -0
- package/dist/check-types.js.map +1 -0
- package/dist/cli-args.d.ts +26 -0
- package/dist/cli-args.js +50 -0
- package/dist/cli-args.js.map +1 -0
- package/dist/cli-output.d.ts +102 -0
- package/dist/cli-output.js +516 -0
- package/dist/cli-output.js.map +1 -0
- package/dist/cli-reference.d.ts +3 -0
- package/dist/cli-reference.js +81 -0
- package/dist/cli-reference.js.map +1 -0
- package/dist/cli-refusal.d.ts +12 -0
- package/dist/cli-refusal.js +52 -0
- package/dist/cli-refusal.js.map +1 -0
- package/dist/cli-shared.d.ts +330 -0
- package/dist/cli-shared.js +492 -0
- package/dist/cli-shared.js.map +1 -0
- package/dist/cli-surface.d.ts +33 -0
- package/dist/cli-surface.js +48 -0
- package/dist/cli-surface.js.map +1 -0
- package/dist/conversation-options.d.ts +15 -0
- package/dist/conversation-options.js +10 -0
- package/dist/conversation-options.js.map +1 -0
- package/dist/credentials-file.d.ts +15 -0
- package/dist/credentials-file.js +56 -0
- package/dist/credentials-file.js.map +1 -0
- package/dist/data-dir.d.ts +1 -1
- package/dist/data-dir.js +1 -1
- package/dist/defect-evidence.d.ts +141 -0
- package/dist/defect-evidence.js +502 -0
- package/dist/defect-evidence.js.map +1 -0
- package/dist/demo-aspect-api.d.ts +209 -0
- package/dist/demo-aspect-api.js +397 -0
- package/dist/demo-aspect-api.js.map +1 -0
- package/dist/demo-aspect-cli.d.ts +3 -0
- package/dist/demo-aspect-cli.js +241 -0
- package/dist/demo-aspect-cli.js.map +1 -0
- package/dist/demo-capture.d.ts +108 -0
- package/dist/demo-capture.js +438 -0
- package/dist/demo-capture.js.map +1 -0
- package/dist/engine.d.ts +35 -0
- package/dist/engine.js +25 -0
- package/dist/engine.js.map +1 -0
- package/dist/environments.d.ts +155 -0
- package/dist/environments.js +364 -0
- package/dist/environments.js.map +1 -0
- package/dist/exit-codes.d.ts +46 -0
- package/dist/exit-codes.js +91 -0
- package/dist/exit-codes.js.map +1 -0
- package/dist/explore-adversarial.d.ts +137 -0
- package/dist/explore-adversarial.js +218 -0
- package/dist/explore-adversarial.js.map +1 -0
- package/dist/explore-api.d.ts +7 -187
- package/dist/explore-api.js +7 -301
- package/dist/explore-api.js.map +1 -1
- package/dist/explore-author.d.ts +79 -0
- package/dist/explore-author.js +86 -0
- package/dist/explore-author.js.map +1 -0
- package/dist/explore-cli.d.ts +7 -0
- package/dist/explore-cli.js +963 -0
- package/dist/explore-cli.js.map +1 -0
- package/dist/explore-coverage.d.ts +158 -0
- package/dist/explore-coverage.js +240 -0
- package/dist/explore-coverage.js.map +1 -0
- package/dist/explore-feature.d.ts +127 -0
- package/dist/explore-feature.js +220 -0
- package/dist/explore-feature.js.map +1 -0
- package/dist/explore-goal.d.ts +253 -0
- package/dist/explore-goal.js +374 -0
- package/dist/explore-goal.js.map +1 -0
- package/dist/explore-shared.d.ts +152 -0
- package/dist/explore-shared.js +129 -0
- package/dist/explore-shared.js.map +1 -0
- package/dist/explore-specs.d.ts +53 -0
- package/dist/explore-specs.js +333 -0
- package/dist/explore-specs.js.map +1 -0
- package/dist/findings-filing.d.ts +64 -0
- package/dist/findings-filing.js +108 -0
- package/dist/findings-filing.js.map +1 -0
- package/dist/fixture-auth.d.ts +52 -0
- package/dist/fixture-auth.js +82 -0
- package/dist/fixture-auth.js.map +1 -0
- package/dist/fixture-cli.d.ts +70 -0
- package/dist/fixture-cli.js +178 -0
- package/dist/fixture-cli.js.map +1 -0
- package/dist/github-issue-filer.d.ts +62 -0
- package/dist/github-issue-filer.js +188 -0
- package/dist/github-issue-filer.js.map +1 -0
- package/dist/host-health-run.d.ts +24 -0
- package/dist/host-health-run.js +27 -0
- package/dist/host-health-run.js.map +1 -0
- package/dist/http-5xx-outcome.d.ts +6 -0
- package/dist/http-5xx-outcome.js +39 -0
- package/dist/http-5xx-outcome.js.map +1 -0
- package/dist/inbox-cli.d.ts +7 -0
- package/dist/inbox-cli.js +197 -0
- package/dist/inbox-cli.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/init-cli.d.ts +4 -0
- package/dist/init-cli.js +127 -0
- package/dist/init-cli.js.map +1 -0
- package/dist/init-keys.d.ts +19 -2
- package/dist/init-keys.js +15 -4
- package/dist/init-keys.js.map +1 -1
- package/dist/init-next-steps.d.ts +35 -0
- package/dist/init-next-steps.js +79 -0
- package/dist/init-next-steps.js.map +1 -0
- package/dist/invariants-file.d.ts +34 -0
- package/dist/invariants-file.js +68 -0
- package/dist/invariants-file.js.map +1 -0
- package/dist/invariants-validate.d.ts +30 -0
- package/dist/invariants-validate.js +105 -0
- package/dist/invariants-validate.js.map +1 -0
- package/dist/journey-annotate-api.d.ts +76 -0
- package/dist/journey-annotate-api.js +256 -0
- package/dist/journey-annotate-api.js.map +1 -0
- package/dist/journey-annotate-cli.d.ts +9 -0
- package/dist/journey-annotate-cli.js +179 -0
- package/dist/journey-annotate-cli.js.map +1 -0
- package/dist/journey-api.d.ts +79 -2
- package/dist/journey-api.js +136 -19
- package/dist/journey-api.js.map +1 -1
- package/dist/journey-cli.d.ts +4 -0
- package/dist/journey-cli.js +370 -0
- package/dist/journey-cli.js.map +1 -0
- package/dist/journey-demo-api.d.ts +112 -0
- package/dist/journey-demo-api.js +392 -0
- package/dist/journey-demo-api.js.map +1 -0
- package/dist/journey-demo-cli.d.ts +10 -0
- package/dist/journey-demo-cli.js +155 -0
- package/dist/journey-demo-cli.js.map +1 -0
- package/dist/kill-signal.d.ts +193 -0
- package/dist/kill-signal.js +284 -0
- package/dist/kill-signal.js.map +1 -0
- package/dist/launch-armed.d.ts +37 -0
- package/dist/launch-armed.js +31 -0
- package/dist/launch-armed.js.map +1 -0
- package/dist/ledger-api.d.ts +106 -0
- package/dist/ledger-api.js +237 -0
- package/dist/ledger-api.js.map +1 -0
- package/dist/ledger-cli.d.ts +18 -0
- package/dist/ledger-cli.js +107 -0
- package/dist/ledger-cli.js.map +1 -0
- package/dist/load-api.d.ts +29 -11
- package/dist/load-api.js +23 -15
- package/dist/load-api.js.map +1 -1
- package/dist/load-cli.d.ts +4 -0
- package/dist/load-cli.js +97 -0
- package/dist/load-cli.js.map +1 -0
- package/dist/log-correlation.d.ts +147 -0
- package/dist/log-correlation.js +325 -0
- package/dist/log-correlation.js.map +1 -0
- package/dist/log-lines.d.ts +131 -0
- package/dist/log-lines.js +389 -0
- package/dist/log-lines.js.map +1 -0
- package/dist/log-sources.d.ts +71 -0
- package/dist/log-sources.js +235 -0
- package/dist/log-sources.js.map +1 -0
- package/dist/logs-cli.d.ts +3 -0
- package/dist/logs-cli.js +51 -0
- package/dist/logs-cli.js.map +1 -0
- package/dist/logs-retention.d.ts +28 -0
- package/dist/logs-retention.js +84 -0
- package/dist/logs-retention.js.map +1 -0
- package/dist/mcp-api.d.ts +89 -1
- package/dist/mcp-api.js +472 -18
- package/dist/mcp-api.js.map +1 -1
- package/dist/mcp-args.d.ts +38 -0
- package/dist/mcp-args.js +131 -0
- package/dist/mcp-args.js.map +1 -0
- package/dist/mcp-cli-bridge.d.ts +34 -0
- package/dist/mcp-cli-bridge.js +62 -0
- package/dist/mcp-cli-bridge.js.map +1 -0
- package/dist/mcp-cli-runner.d.ts +29 -0
- package/dist/mcp-cli-runner.js +44 -0
- package/dist/mcp-cli-runner.js.map +1 -0
- package/dist/mcp-cli-tools.d.ts +125 -0
- package/dist/mcp-cli-tools.js +680 -0
- package/dist/mcp-cli-tools.js.map +1 -0
- package/dist/mcp-paths.d.ts +28 -0
- package/dist/mcp-paths.js +76 -0
- package/dist/mcp-paths.js.map +1 -0
- package/dist/mission-actors.d.ts +40 -0
- package/dist/mission-actors.js +72 -0
- package/dist/mission-actors.js.map +1 -0
- package/dist/mission-api.d.ts +35 -0
- package/dist/mission-api.js +58 -2
- package/dist/mission-api.js.map +1 -1
- package/dist/mission-cli.d.ts +4 -0
- package/dist/mission-cli.js +247 -0
- package/dist/mission-cli.js.map +1 -0
- package/dist/mission-exit.d.ts +22 -0
- package/dist/mission-exit.js +26 -0
- package/dist/mission-exit.js.map +1 -0
- package/dist/mission-fixtures.d.ts +225 -0
- package/dist/mission-fixtures.js +828 -0
- package/dist/mission-fixtures.js.map +1 -0
- package/dist/mission-journal.d.ts +60 -0
- package/dist/mission-journal.js +115 -0
- package/dist/mission-journal.js.map +1 -0
- package/dist/mission-queue-cli.d.ts +10 -0
- package/dist/mission-queue-cli.js +198 -0
- package/dist/mission-queue-cli.js.map +1 -0
- package/dist/mission-queue-runner.d.ts +126 -0
- package/dist/mission-queue-runner.js +397 -0
- package/dist/mission-queue-runner.js.map +1 -0
- package/dist/multi-run-cli.d.ts +37 -0
- package/dist/multi-run-cli.js +110 -0
- package/dist/multi-run-cli.js.map +1 -0
- package/dist/multi-run.d.ts +339 -0
- package/dist/multi-run.js +619 -0
- package/dist/multi-run.js.map +1 -0
- package/dist/openrouter-call.d.ts +22 -0
- package/dist/openrouter-call.js +63 -0
- package/dist/openrouter-call.js.map +1 -0
- package/dist/profile-cli.d.ts +4 -0
- package/dist/profile-cli.js +57 -0
- package/dist/profile-cli.js.map +1 -0
- package/dist/program.d.ts +3 -75
- package/dist/program.js +119 -1921
- package/dist/program.js.map +1 -1
- package/dist/project-dir.d.ts +96 -0
- package/dist/project-dir.js +220 -0
- package/dist/project-dir.js.map +1 -0
- package/dist/record-api.d.ts +10 -6
- package/dist/record-api.js +39 -28
- package/dist/record-api.js.map +1 -1
- package/dist/record-cli.d.ts +4 -0
- package/dist/record-cli.js +64 -0
- package/dist/record-cli.js.map +1 -0
- package/dist/recording-cli.d.ts +4 -0
- package/dist/recording-cli.js +248 -0
- package/dist/recording-cli.js.map +1 -0
- package/dist/regression-api.d.ts +101 -0
- package/dist/regression-api.js +384 -5
- package/dist/regression-api.js.map +1 -1
- package/dist/regression-cli.d.ts +4 -0
- package/dist/regression-cli.js +232 -0
- package/dist/regression-cli.js.map +1 -0
- package/dist/report-api.d.ts +146 -0
- package/dist/report-api.js +430 -0
- package/dist/report-api.js.map +1 -0
- package/dist/report-cli.d.ts +12 -0
- package/dist/report-cli.js +147 -0
- package/dist/report-cli.js.map +1 -0
- package/dist/result-schema.d.ts +22 -0
- package/dist/result-schema.js +28 -0
- package/dist/result-schema.js.map +1 -0
- package/dist/run-index.d.ts +29 -0
- package/dist/run-index.js +70 -0
- package/dist/run-index.js.map +1 -0
- package/dist/run-screenshots.d.ts +123 -0
- package/dist/run-screenshots.js +229 -0
- package/dist/run-screenshots.js.map +1 -0
- package/dist/runtime-env.d.ts +8 -0
- package/dist/runtime-env.js +22 -0
- package/dist/runtime-env.js.map +1 -0
- package/dist/secret-args.d.ts +23 -0
- package/dist/secret-args.js +45 -0
- package/dist/secret-args.js.map +1 -0
- package/dist/serve-cli.d.ts +4 -0
- package/dist/serve-cli.js +95 -0
- package/dist/serve-cli.js.map +1 -0
- package/dist/server-log-verify.d.ts +34 -0
- package/dist/server-log-verify.js +115 -0
- package/dist/server-log-verify.js.map +1 -0
- package/dist/session-check.d.ts +14 -0
- package/dist/session-check.js +44 -0
- package/dist/session-check.js.map +1 -0
- package/dist/site-cli.d.ts +4 -0
- package/dist/site-cli.js +127 -0
- package/dist/site-cli.js.map +1 -0
- package/dist/site-gate-cli.d.ts +28 -0
- package/dist/site-gate-cli.js +58 -0
- package/dist/site-gate-cli.js.map +1 -0
- package/dist/source-api.js +18 -3
- package/dist/source-api.js.map +1 -1
- package/dist/source-cli.d.ts +4 -0
- package/dist/source-cli.js +284 -0
- package/dist/source-cli.js.map +1 -0
- package/dist/source-run-api.d.ts +27 -1
- package/dist/source-run-api.js +22 -11
- package/dist/source-run-api.js.map +1 -1
- package/dist/storage-state-snapshot.d.ts +50 -0
- package/dist/storage-state-snapshot.js +87 -0
- package/dist/storage-state-snapshot.js.map +1 -0
- package/dist/suite-explore-options.d.ts +289 -0
- package/dist/suite-explore-options.js +140 -0
- package/dist/suite-explore-options.js.map +1 -0
- package/dist/target-config.d.ts +109 -0
- package/dist/target-config.js +216 -0
- package/dist/target-config.js.map +1 -0
- package/dist/transcript-file.d.ts +12 -0
- package/dist/transcript-file.js +23 -0
- package/dist/transcript-file.js.map +1 -0
- package/dist/ui-api.d.ts +3 -0
- package/dist/ui-api.js +7 -1
- package/dist/ui-api.js.map +1 -1
- package/dist/usability-capture.d.ts +43 -0
- package/dist/usability-capture.js +326 -0
- package/dist/usability-capture.js.map +1 -0
- package/dist/usage-config.d.ts +36 -0
- package/dist/usage-config.js +114 -0
- package/dist/usage-config.js.map +1 -0
- package/dist/ux-api.d.ts +3 -75
- package/dist/ux-api.js +3 -220
- package/dist/ux-api.js.map +1 -1
- package/dist/ux-cli.d.ts +4 -0
- package/dist/ux-cli.js +102 -0
- package/dist/ux-cli.js.map +1 -0
- package/dist/ux-config.d.ts +29 -0
- package/dist/ux-config.js +103 -0
- package/dist/ux-config.js.map +1 -0
- package/dist/ux-evidence.d.ts +54 -0
- package/dist/ux-evidence.js +197 -0
- package/dist/ux-evidence.js.map +1 -0
- package/dist/ux-review.d.ts +112 -0
- package/dist/ux-review.js +151 -0
- package/dist/ux-review.js.map +1 -0
- package/dist/ux-usability.d.ts +238 -0
- package/dist/ux-usability.js +494 -0
- package/dist/ux-usability.js.map +1 -0
- package/dist/verify-fix-api.d.ts +173 -0
- package/dist/verify-fix-api.js +454 -0
- package/dist/verify-fix-api.js.map +1 -0
- package/dist/verify-fix-cli.d.ts +4 -0
- package/dist/verify-fix-cli.js +110 -0
- package/dist/verify-fix-cli.js.map +1 -0
- package/package.json +19 -14
- package/skills/jevitate-ci-check/SKILL.md +77 -0
- package/skills/jevitate-demo/SKILL.md +61 -0
- package/skills/jevitate-explore/SKILL.md +88 -87
- package/skills/jevitate-getting-started/SKILL.md +88 -0
- package/skills/jevitate-load-test/SKILL.md +11 -2
- package/skills/jevitate-mission-scope/SKILL.md +19 -11
- package/skills/jevitate-record/SKILL.md +23 -5
- package/skills/jevitate-run-journey/SKILL.md +61 -17
- package/skills/jevitate-sources/SKILL.md +57 -14
- package/skills/jevitate-ux-review/SKILL.md +106 -16
- package/skills/jevitate-verify-fix/SKILL.md +76 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-fix-api.js","sourceRoot":"","sources":["../src/verify-fix-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { parseScreenshotsArg } from "./run-screenshots.js";
|
|
2
|
+
import { UnauthorizedExploreTargetError } from "@jevitate/explore";
|
|
3
|
+
import { ok, fail } from "./envelope.js";
|
|
4
|
+
import { runVerifyFix, VerifyFixInputError } from "./verify-fix-api.js";
|
|
5
|
+
import { LedgerError, ledgerEntryFor } from "./ledger-api.js";
|
|
6
|
+
import { TargetConfigError, loadTargetsFile } from "./target-config.js";
|
|
7
|
+
import { withFixtureFlags } from "./fixture-cli.js";
|
|
8
|
+
import { LITERAL_SECRET_WARNING, SecretArgError, resolveSecretArgs } from "./secret-args.js";
|
|
9
|
+
import { withEngine } from "./engine.js";
|
|
10
|
+
import { positiveIntArg } from "./cli-args.js";
|
|
11
|
+
import { formatVerifyFixHuman } from "./cli-output.js";
|
|
12
|
+
import { withBrowserLaunchFlags, browserRunFromFlags, withDemoFlags, withScreenshotsFlag, withEmulationFlags, emulationFromFlags, emitCommandResult, } from "./cli-shared.js";
|
|
13
|
+
/** Registers `jevitate verify-fix`. */
|
|
14
|
+
export function registerVerifyFixCommands(program, deps) {
|
|
15
|
+
// `verify-fix`: replays a finding's reproduction N times in FRESH browsers (#74) and reports
|
|
16
|
+
// whether its fingerprint still fires. Exit 0 fixed · 1 still reproduces · 2 inconclusive ·
|
|
17
|
+
// 4 intermittent (fired on some but not all replays — never reported as fixed) · 64 usage error.
|
|
18
|
+
withScreenshotsFlag(withEmulationFlags(withFixtureFlags(withDemoFlags(withBrowserLaunchFlags(program
|
|
19
|
+
.command("verify-fix")
|
|
20
|
+
.description("replay a defect's repro from a mission result (or the ledger); passes only if the defect signal is absent on every replay")), { recordVideo: true }))))
|
|
21
|
+
.argument("[fingerprint]", "the defect/hang fingerprint to verify (same as --fingerprint)")
|
|
22
|
+
.option("--result <path>", "the mission's <stem>.result.json (written next to its Recording); default: the fingerprint's ledger entry (#195)")
|
|
23
|
+
.option("--fingerprint <fp>", "the defect/hang fingerprint to verify")
|
|
24
|
+
.option("--regressions-dir <path>", "regressions directory whose ledger/ is searched when --result is omitted (default: .jevitate/regressions)")
|
|
25
|
+
.option("--storage-state <file>", "override the storageState the mission ran with")
|
|
26
|
+
.option("--replays <n>", "fresh-context replays that confirm a fix (default 3)", positiveIntArg)
|
|
27
|
+
.option("--allow-emulation-override", "replay at --viewport/--device even though it differs from the finding's recorded emulation (#149); default: refused (fails closed)")
|
|
28
|
+
.option("--invariants <file>", "re-check a declared-invariant defect with these invariant files (repeatable) instead of the spec saved with the mission", (v, prev) => [...prev, v], [])
|
|
29
|
+
.option("--allow-log-cmd", "re-checking a server-log defect whose --log-source includes cmd:<command> needs this too (operator-declared only)", false)
|
|
30
|
+
.option("--hang-replay-writes", "let a hang's replay re-send a paid/destructive write the run sent (default: the verdict is inconclusive, never replayed)")
|
|
31
|
+
.option("--secret <value|env:VAR>", "REDACTION ONLY: a value kept out of the fixture log (repeatable), e.g. one a --before hook prints; env:VAR reads it from the environment", (v, prev) => [...prev, v], [])
|
|
32
|
+
.option("--json", "emit the JSON envelope (default: a human summary)")
|
|
33
|
+
.action(async function (positional) {
|
|
34
|
+
const o = this.opts();
|
|
35
|
+
// #230: the re-check hint carries the same --result the user passed (never the ledger
|
|
36
|
+
// fallback's own path, which formatVerifyFixHuman never sees).
|
|
37
|
+
const emitVerify = (envelope, exitCode) => emitCommandResult(program, envelope, {
|
|
38
|
+
json: o.json === true,
|
|
39
|
+
command: "verify-fix",
|
|
40
|
+
human: (data) => formatVerifyFixHuman(data, { result: o.result }),
|
|
41
|
+
...(exitCode === undefined ? {} : { exitCode }),
|
|
42
|
+
});
|
|
43
|
+
// #195: `--secret env:VAR`, as on explore.
|
|
44
|
+
try {
|
|
45
|
+
const resolved = resolveSecretArgs(o.secret, process.env, "--secret");
|
|
46
|
+
if (resolved.literals > 0)
|
|
47
|
+
program.configureOutput().writeErr?.(LITERAL_SECRET_WARNING);
|
|
48
|
+
o.secret = resolved.secrets;
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
if (!(err instanceof SecretArgError))
|
|
52
|
+
throw err;
|
|
53
|
+
emitVerify(fail("E_VERIFY_FIX_ARGS", err.message));
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
let verifyFixEmulation;
|
|
57
|
+
// #245: demo mode, resolved (a headed run without a display refused) before any browser opens.
|
|
58
|
+
let browser;
|
|
59
|
+
const fingerprint = o.fingerprint ?? positional;
|
|
60
|
+
let screenshots;
|
|
61
|
+
try {
|
|
62
|
+
screenshots = parseScreenshotsArg(o.screenshots);
|
|
63
|
+
browser = browserRunFromFlags(o, deps.explore?.env ?? process.env);
|
|
64
|
+
verifyFixEmulation = emulationFromFlags(o);
|
|
65
|
+
if (fingerprint === undefined)
|
|
66
|
+
throw new Error("a fingerprint is required: verify-fix <fp> or --fingerprint <fp>");
|
|
67
|
+
if (o.fingerprint !== undefined && positional !== undefined && o.fingerprint !== positional) {
|
|
68
|
+
throw new Error(`two different fingerprints given (${positional} and --fingerprint ${o.fingerprint})`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
emitVerify(fail("E_VERIFY_FIX_ARGS", err instanceof Error ? err.message : String(err)));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
// #195: without --result, the fingerprint's ledger entry is the repro material (the run's output may be long gone).
|
|
77
|
+
const resultPath = o.result ?? ledgerEntryFor(fingerprint, o.regressionsDir);
|
|
78
|
+
const report = await runVerifyFix({
|
|
79
|
+
targets: loadTargetsFile(deps.explore?.targetsConfigPath),
|
|
80
|
+
resultPath,
|
|
81
|
+
fingerprint,
|
|
82
|
+
...(o.storageState !== undefined ? { storageState: o.storageState } : {}),
|
|
83
|
+
...(o.replays !== undefined ? { replays: Number(o.replays) } : {}),
|
|
84
|
+
...(o.invariants.length > 0 ? { invariantFiles: o.invariants } : {}),
|
|
85
|
+
...(o.allowLogCmd === undefined ? {} : { allowLogCmd: o.allowLogCmd }),
|
|
86
|
+
...(o.hangReplayWrites === true ? { hangReplayWrites: true } : {}),
|
|
87
|
+
fixtureFlags: o,
|
|
88
|
+
secrets: o.secret,
|
|
89
|
+
browserPortFactory: deps.explore?.browserPortFactory,
|
|
90
|
+
browser,
|
|
91
|
+
...(screenshots === undefined ? {} : { screenshots }),
|
|
92
|
+
...(verifyFixEmulation === undefined ? {} : { emulation: verifyFixEmulation }),
|
|
93
|
+
...(o.allowEmulationOverride === undefined ? {} : { allowEmulationOverride: o.allowEmulationOverride }),
|
|
94
|
+
});
|
|
95
|
+
emitVerify(ok(withEngine(report)), report.exitCode);
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
if (err instanceof VerifyFixInputError || err instanceof TargetConfigError || err instanceof LedgerError) {
|
|
99
|
+
emitVerify(fail(err.code, err.message));
|
|
100
|
+
}
|
|
101
|
+
else if (err instanceof UnauthorizedExploreTargetError) {
|
|
102
|
+
emitVerify(fail("E_UNAUTHORIZED_EXPLORE_TARGET", err.message));
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
emitVerify(fail("E_VERIFY_FIX", String(err instanceof Error ? err.message : err)));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=verify-fix-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-fix-cli.js","sourceRoot":"","sources":["../src/verify-fix-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAwB,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAqB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAqB,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAGL,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EAInB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,uCAAuC;AACvC,MAAM,UAAU,yBAAyB,CAAC,OAAgB,EAAE,IAAa;IACvE,6FAA6F;IAC7F,4FAA4F;IAC5F,iGAAiG;IACjG,mBAAmB,CAAC,kBAAkB,CACpC,gBAAgB,CACd,aAAa,CACX,sBAAsB,CACpB,OAAO;SACJ,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,2HAA2H,CAAC,CAC5I,EACD,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB,CACF,CACF,CAAC;SACC,QAAQ,CAAC,eAAe,EAAE,+DAA+D,CAAC;SAC1F,MAAM,CAAC,iBAAiB,EAAE,kHAAkH,CAAC;SAC7I,MAAM,CAAC,oBAAoB,EAAE,uCAAuC,CAAC;SACrE,MAAM,CAAC,0BAA0B,EAAE,2GAA2G,CAAC;SAC/I,MAAM,CAAC,wBAAwB,EAAE,gDAAgD,CAAC;SAClF,MAAM,CAAC,eAAe,EAAE,sDAAsD,EAAE,cAAc,CAAC;SAC/F,MAAM,CACL,4BAA4B,EAC5B,oIAAoI,CACrI;SACA,MAAM,CACL,qBAAqB,EACrB,yHAAyH,EACzH,CAAC,CAAC,EAAE,IAAc,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EACnC,EAAc,CACf;SACA,MAAM,CACL,iBAAiB,EACjB,mHAAmH,EACnH,KAAK,CACN;SACA,MAAM,CACL,sBAAsB,EACtB,0HAA0H,CAC3H;SACA,MAAM,CACL,0BAA0B,EAC1B,0IAA0I,EAC1I,CAAC,CAAC,EAAE,IAAc,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EACnC,EAAc,CACf;SACA,MAAM,CAAC,QAAQ,EAAE,mDAAmD,CAAC;SACrE,MAAM,CAAC,KAAK,WAA0B,UAAmB;QACxD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAkBhB,CAAC;QACJ,sFAAsF;QACtF,+DAA+D;QAC/D,MAAM,UAAU,GAAG,CAAC,QAA+B,EAAE,QAAiB,EAAQ,EAAE,CAC9E,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;YACnC,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI;YACrB,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;YACjE,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;SAChD,CAAC,CAAC;QACL,2CAA2C;QAC3C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YACtE,IAAI,QAAQ,CAAC,QAAQ,GAAG,CAAC;gBAAE,OAAO,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC,sBAAsB,CAAC,CAAC;YACxF,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,CAAC,GAAG,YAAY,cAAc,CAAC;gBAAE,MAAM,GAAG,CAAC;YAChD,UAAU,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QACD,IAAI,kBAA6C,CAAC;QAClD,+FAA+F;QAC/F,IAAI,OAA+C,CAAC;QACpD,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,IAAI,UAAU,CAAC;QAChD,IAAI,WAAwC,CAAC;QAC7C,IAAI,CAAC;YACH,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YACjD,OAAO,GAAG,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;YACnE,kBAAkB,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,WAAW,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;YACnH,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,qCAAqC,UAAU,sBAAsB,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC;YACzG,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,UAAU,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxF,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,oHAAoH;YACpH,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,IAAI,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC;YAC7E,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;gBAChC,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC;gBACzD,UAAU;gBACV,WAAW;gBACX,GAAG,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzE,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBACtE,GAAG,CAAC,CAAC,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,YAAY,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC,CAAC,MAAM;gBACjB,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,kBAAkB;gBACpD,OAAO;gBACP,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;gBACrD,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;gBAC9E,GAAG,CAAC,CAAC,CAAC,sBAAsB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE,CAAC,CAAC,sBAAsB,EAAE,CAAC;aACxG,CAAC,CAAC;YACH,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,mBAAmB,IAAI,GAAG,YAAY,iBAAiB,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;gBACzG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1C,CAAC;iBAAM,IAAI,GAAG,YAAY,8BAA8B,EAAE,CAAC;gBACzD,UAAU,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jevitate/cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Autonomous browser testing that turns discovered bugs into deterministic regression tests: explore a web app in a real browser, confirm findings with evidence, and replay them as regressions in CI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -13,15 +13,19 @@
|
|
|
13
13
|
"bugs": "https://github.com/matt-cochran/jevitate/issues",
|
|
14
14
|
"author": "Matt Cochran",
|
|
15
15
|
"keywords": [
|
|
16
|
+
"browser-testing",
|
|
16
17
|
"browser-automation",
|
|
18
|
+
"autonomous-testing",
|
|
19
|
+
"regression-testing",
|
|
17
20
|
"testing",
|
|
21
|
+
"test-automation",
|
|
18
22
|
"e2e",
|
|
23
|
+
"e2e-testing",
|
|
19
24
|
"playwright",
|
|
20
|
-
"screenplay",
|
|
21
|
-
"journeys",
|
|
22
25
|
"exploration",
|
|
23
26
|
"usability",
|
|
24
27
|
"mcp",
|
|
28
|
+
"ai-agents",
|
|
25
29
|
"cli",
|
|
26
30
|
"jevitate"
|
|
27
31
|
],
|
|
@@ -58,28 +62,29 @@
|
|
|
58
62
|
"esbuild": "^0.28.2",
|
|
59
63
|
"@jevitate/ai-core": "0.1.0",
|
|
60
64
|
"@jevitate/daemon": "0.1.0",
|
|
61
|
-
"@jevitate/interpreter": "0.1.0",
|
|
62
|
-
"@jevitate/explore": "0.1.0",
|
|
63
65
|
"@jevitate/domain": "0.1.0",
|
|
64
|
-
"@jevitate/
|
|
65
|
-
"@jevitate/
|
|
66
|
+
"@jevitate/explore": "0.1.0",
|
|
67
|
+
"@jevitate/findings": "0.1.0",
|
|
66
68
|
"@jevitate/inbox": "0.1.0",
|
|
69
|
+
"@jevitate/journey": "0.1.0",
|
|
70
|
+
"@jevitate/load": "0.1.0",
|
|
71
|
+
"@jevitate/interpreter": "0.1.0",
|
|
67
72
|
"@jevitate/example-site": "0.1.0",
|
|
73
|
+
"@jevitate/missions": "0.1.0",
|
|
74
|
+
"@jevitate/playwright": "0.1.0",
|
|
68
75
|
"@jevitate/mcp-facade": "0.1.0",
|
|
69
76
|
"@jevitate/recording": "0.1.0",
|
|
70
|
-
"@jevitate/playwright": "0.1.0",
|
|
71
|
-
"@jevitate/journey": "0.1.0",
|
|
72
|
-
"@jevitate/runtime": "0.1.0",
|
|
73
77
|
"@jevitate/regression": "0.1.0",
|
|
78
|
+
"@jevitate/runtime": "0.1.0",
|
|
74
79
|
"@jevitate/recorder": "0.1.0",
|
|
75
|
-
"@jevitate/skills": "0.1.0",
|
|
76
|
-
"@jevitate/ux": "0.1.0",
|
|
77
80
|
"@jevitate/sources": "0.1.0",
|
|
78
81
|
"@jevitate/storage-sqlite": "0.1.0",
|
|
82
|
+
"@jevitate/ux": "0.1.0",
|
|
83
|
+
"@jevitate/skills": "0.1.0",
|
|
79
84
|
"@jevitate/screenplay": "0.1.0"
|
|
80
85
|
},
|
|
81
86
|
"scripts": {
|
|
82
|
-
"build": "tsc --build",
|
|
87
|
+
"build": "node scripts/generate-build-info.mjs && tsc --build",
|
|
83
88
|
"bundle": "node ./build.mjs"
|
|
84
89
|
}
|
|
85
90
|
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: jevitate-ci-check
|
|
3
|
+
description: Set up and read jevitate's CI regression gate. `jevitate check --suite <file>` runs promoted Journeys, invariants, goals, missions and verify-fix re-checks within a budget, writes JUnit + SARIF + JSON, and its exit code decides pass/fail. Also covers `--baseline`/`--changed-routes`, `jevitate report` (deduped defect list), `jevitate diff`, and `baseline tag`. Use when adding jevitate to CI, reading a failed check, or comparing runs.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
`jevitate check` is the gate. It runs a suite one item after another within a total budget and
|
|
7
|
+
decides pass or fail from independent code signals. Advisory findings (UX, model flags) never fail
|
|
8
|
+
it unless the suite sets `"gateAdvisory": true`.
|
|
9
|
+
|
|
10
|
+
## Write the suite
|
|
11
|
+
|
|
12
|
+
A JSON file. It's validated in full before any browser opens, and unknown fields are refused.
|
|
13
|
+
Relative paths resolve against the suite file.
|
|
14
|
+
|
|
15
|
+
```json
|
|
16
|
+
{
|
|
17
|
+
"version": 1,
|
|
18
|
+
"name": "app-ci",
|
|
19
|
+
"budget": { "maxActions": 400, "maxMinutes": 20, "maxUsd": 2 },
|
|
20
|
+
"ai": "real",
|
|
21
|
+
"targets": [{
|
|
22
|
+
"name": "app",
|
|
23
|
+
"url": "http://localhost:3000/",
|
|
24
|
+
"allow": ["http://localhost:3000"],
|
|
25
|
+
"journeys": ["login", { "id": "checkout", "env": "local", "params": { "sku": "A1" } }],
|
|
26
|
+
"goals": [{ "name": "export", "goal": "export the report as CSV", "success": ["requestMade:GET /api/export"] }],
|
|
27
|
+
"missions": [{ "strategy": "adversarial", "url": "http://localhost:3000/settings", "maxActions": 60 }],
|
|
28
|
+
"invariants": ["invariants/saved-means-stored.json"],
|
|
29
|
+
"verifyFix": [{ "result": "baseline/adversarial-2026-09-20T10-00-00-000Z.result.json", "fingerprint": "3fa2c1d09b7e4a55" }]
|
|
30
|
+
}]
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
- `journeys` must be promoted, and their origin must be on the target's allowlist. Journeys,
|
|
35
|
+
`feature` missions and `verifyFix` are model-free. Goals and `coverage`/`exploratory`/
|
|
36
|
+
`adversarial`/`usability` missions need `"ai": "real"` (or `--real`) and keys.
|
|
37
|
+
- `"ai": "fake"` (`--fake-ai`) is a pipeline smoke. It never gates a goal on the fake judge's
|
|
38
|
+
verdict (such an item is an error, exit 2), but hard signals still gate.
|
|
39
|
+
- `storageState` holds live cookies. Keep it outside the repo (under `~/.jevitate/`, or generate
|
|
40
|
+
it at CI runtime). Never commit one.
|
|
41
|
+
- Lint invariant files in an earlier, browser-free step:
|
|
42
|
+
`jevitate invariants validate invariants/*.json --url <target url>`.
|
|
43
|
+
|
|
44
|
+
## Run it
|
|
45
|
+
|
|
46
|
+
- `jevitate check --suite jevitate-suite.json [--out jevitate-check] [--target-build $GIT_SHA] --json`
|
|
47
|
+
(MCP `run_check`). Outputs go under `--out`: `junit.xml`, `jevitate.sarif` (SARIF 2.1.0, one
|
|
48
|
+
result per finding), `check.json`, `report.md` and `results/`. Publish the JUnit to the CI test
|
|
49
|
+
view and upload the SARIF to code scanning.
|
|
50
|
+
- `--changed-routes '/settings/**'` runs only the Journeys and goals that touch those routes.
|
|
51
|
+
Missions, invariant sweeps and verify-fix always run. Derive the routes from the diff (see
|
|
52
|
+
`jevitate-mission-scope`).
|
|
53
|
+
- `--baseline <run|tag|last>` gates only findings not in the baseline. Findings already known are
|
|
54
|
+
listed but don't gate. Tag a known-good run with `jevitate baseline tag <name> <runs...>`.
|
|
55
|
+
|
|
56
|
+
## Exit codes: gate on 1, and treat 2 and 64 as broken
|
|
57
|
+
|
|
58
|
+
`0` pass · `1` at least one gating finding (a Journey assertion, an invariant, a goal check, a
|
|
59
|
+
verify-fix that still reproduces or is intermittent, a hard-signal defect or hang) · `2` no
|
|
60
|
+
gating finding, but an item errored, was inconclusive, or the budget ran out · `64` the suite,
|
|
61
|
+
targets file or AI setup was refused, so nothing ran. Exit 2 or 64 is never "green". Report it as
|
|
62
|
+
a broken check, with the item and reason from `check.json`.
|
|
63
|
+
|
|
64
|
+
## Read and compare results
|
|
65
|
+
|
|
66
|
+
- `jevitate report [--target <origin|name>] [--since <run|date>] [--baseline <run|tag|last>] --json`
|
|
67
|
+
gives one deduped defect list across modes and runs (MCP `get_report`).
|
|
68
|
+
- `jevitate diff <runA> <runB> --json` classifies findings as new / resolved / still-present /
|
|
69
|
+
flaky / not-rerun (runA is the baseline; MCP `diff_runs`).
|
|
70
|
+
- For a failing finding, hand its fingerprint to `jevitate-verify-fix` to reproduce it, attach
|
|
71
|
+
evidence, or turn it into a committed regression.
|
|
72
|
+
|
|
73
|
+
## What you must never do
|
|
74
|
+
|
|
75
|
+
- Never loosen a suite (drop an item, raise a budget, add a baseline, set `gateAdvisory: false`)
|
|
76
|
+
just to make CI pass, unless the human asks for that change.
|
|
77
|
+
- Never report exit 2 as a pass or a flake to ignore.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: jevitate-demo
|
|
3
|
+
description: Make narrated product demos with jevitate. Covers one aspect from a one-line request (`jevitate demo "<aspect>" --env`, then the human's `demo approve`), an existing Journey replayed as a WebM video with .vtt subtitles and/or a Markdown guide with screenshots (`jevitate journey demo`), step intent drafts (`journey annotate`), and named environments (`--env`, .jevitate/environments.json). Use for a demo, walkthrough, onboarding video or how-to guide. Not for testing.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
A jevitate demo is a replayed Journey with an on-page overlay: a title card, a caption per step
|
|
7
|
+
(its `objective`), the step's target highlighted, and an outcome card. Secret values are redacted
|
|
8
|
+
in text and masked in pixels. Demos are rendered from deterministic replays, so they never show
|
|
9
|
+
something the app didn't do.
|
|
10
|
+
|
|
11
|
+
## Environments first
|
|
12
|
+
|
|
13
|
+
- Demos and Journey replays run against a named environment from the committed
|
|
14
|
+
`.jevitate/environments.json` (`jevitate init` writes an example with a `local` entry). Each
|
|
15
|
+
entry has `baseUrl` (an origin), an optional `allow` list, `fixtures` and `hooks`. Mark a live
|
|
16
|
+
site with `"production": true`. `demo` refuses one (`E_DEMO_PRODUCTION_ENV`, exit 64).
|
|
17
|
+
- The file never holds a secret or a session. Sessions and secret fields live in
|
|
18
|
+
`~/.jevitate/targets.json`, keyed by the environment's origin, with `personas` for named
|
|
19
|
+
sessions. Never write a session or password into the repo.
|
|
20
|
+
- `--base-url <origin>` is an ad-hoc environment (e.g. a preview deploy). An unknown `--env` exits
|
|
21
|
+
64 and lists the known ones.
|
|
22
|
+
|
|
23
|
+
## One aspect from a one-line request (needs keys)
|
|
24
|
+
|
|
25
|
+
- `jevitate demo "<aspect>" --env <name> --success "<check>" --real --json`, e.g.
|
|
26
|
+
`--success "textIncludes:testId=status|Saved"`. The `--success` check proves the aspect was
|
|
27
|
+
shown. Jev drives, and code decides. Useful options: `--start <path>` (where exploring begins),
|
|
28
|
+
`--persona <name>`, `--id <id>` (default `demo-<aspect slug>`), `--max-actions <n>`.
|
|
29
|
+
- Pipeline: explore toward the aspect → minimize to the essential steps (each drop is verified by
|
|
30
|
+
replay) → draft annotations → render a DRAFT video, `.vtt` and guide (watermarked) into `--out`
|
|
31
|
+
or a fresh logs folder. Exit 1 means the check wasn't reached or the path didn't replay, and
|
|
32
|
+
nothing was written. Exit 64 means no `--env`/`--success`, a production env, or an existing id
|
|
33
|
+
(`E_DEMO_EXISTS`).
|
|
34
|
+
- MCP: `create_demo({ aspect, env, success, real: true })`.
|
|
35
|
+
- Show the human the DRAFT (the video and guide paths from the result) and the drafted
|
|
36
|
+
annotations. `jevitate demo approve <id>` (MCP `approve_demo`) renders the final demo and
|
|
37
|
+
promotes the Journey. It's the human's approval, so only run it when they tell you to.
|
|
38
|
+
|
|
39
|
+
## An existing Journey as a demo
|
|
40
|
+
|
|
41
|
+
- Draft the step captions first when steps have no `objective` (`journey run` reports
|
|
42
|
+
`intent.withoutObjective`): `jevitate journey annotate <id> --env <name> --real --json` writes
|
|
43
|
+
`.jevitate/journeys/.drafts/<id>.annotations.json` and prints the diff. It never changes the
|
|
44
|
+
Journey. Exit 2 means the replay stopped early and only the reached steps were drafted.
|
|
45
|
+
- The human reviews or edits the draft, then approves with
|
|
46
|
+
`jevitate journey annotate <id> --approve`. It's refused if the Journey changed since the draft
|
|
47
|
+
(`E_JOURNEY_ANNOTATIONS_STALE`, 64). If so, draft it again.
|
|
48
|
+
- Render: `jevitate journey demo <id> --env <name> --video demos/<id>.webm --guide docs/<id>.md --json`
|
|
49
|
+
(or MCP `demo_journey`). With neither flag, both go to a fresh logs folder. `--pace <ms>` sets how
|
|
50
|
+
long each caption shows (default 1500). `--headed` presents it live (needs a display).
|
|
51
|
+
`--param k=v` and `--storage-state <file>` work as in `journey run`.
|
|
52
|
+
- Exit 1 means stale: the Journey no longer replays and nothing was written. Say which step
|
|
53
|
+
stopped (it's in the result). Don't re-record it silently. Exit 2 means an output couldn't be
|
|
54
|
+
produced.
|
|
55
|
+
- Playwright records WebM. Suggest ffmpeg if the human needs MP4.
|
|
56
|
+
|
|
57
|
+
## What you must never do
|
|
58
|
+
|
|
59
|
+
- Never demo against a production environment or an origin the human didn't name.
|
|
60
|
+
- Never approve a demo or annotations yourself, and never promote the Journey behind a demo.
|
|
61
|
+
- Never hand-edit a video, guide or caption to hide a failed step. A stale demo is a real signal.
|
|
@@ -1,108 +1,109 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jevitate-explore
|
|
3
|
-
description:
|
|
3
|
+
description: Run a bounded jevitate exploration of an authorized web app. Strategies: goal (reach an end state, checked by `--success`), find-out (answer a question), coverage/exploratory (state coverage), adversarial (try to break it), feature (model-free), and usability. Runs via `jevitate explore` or MCP `run_exploration`/`queue_exploration`; saves a verified path as a Journey (`explore-author-journey`). Use when there's no saved Journey for what needs testing, or the user wants bugs found.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
You scope an exploration mission
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
a goal-based mission actually succeeded. Your entire job is composing a good
|
|
6
|
+
You scope an exploration mission. You never drive the browser yourself. Jev (the judgment
|
|
7
|
+
gateway) makes each click, type and select decision inside the engine, a generative model writes
|
|
8
|
+
only form text, and an independent check decides whether a goal succeeded: the `--success`
|
|
9
|
+
assertion or a hard signal, never the model's own "done". Your whole job is composing a good
|
|
11
10
|
mission and reading the result honestly.
|
|
12
11
|
|
|
13
12
|
## Before you start
|
|
14
13
|
|
|
15
|
-
- The target must
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
- `--
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
- `--
|
|
30
|
-
|
|
14
|
+
- The target must be authorized. By default the allowlist is `--url`'s own origin. Any
|
|
15
|
+
`--allow <origin>` REPLACES that default, so include the URL's own origin if the mission still
|
|
16
|
+
needs it. An unauthorized target is refused (`E_UNAUTHORIZED_EXPLORE_TARGET`, 64). Exploration
|
|
17
|
+
is authoring/test plane only, never production. If you don't know whether a target is
|
|
18
|
+
authorized, ask.
|
|
19
|
+
- Model-driven strategies (goal, find-out, coverage, exploratory, usability) need a gateway:
|
|
20
|
+
`--real` (live, after the human ran `jevitate ai setup`) or `--fake-ai` (a deterministic pipeline
|
|
21
|
+
smoke that won't reach a real goal). Selecting neither fails closed (`E_AI_SETUP_REQUIRED`,
|
|
22
|
+
64). `adversarial` and `--feature` produce real findings without keys: use `--fake-ai` for
|
|
23
|
+
adversarial.
|
|
24
|
+
- Pick a strategy on purpose:
|
|
25
|
+
- `--goal "<end state>" --success <check>` (default strategy `goal`): reach a stated end state.
|
|
26
|
+
- `--goal "find out <question>; report the answer"` with no `--success`: a find-out run. It's
|
|
27
|
+
read-only unless `--allow-writes` is passed, and the grounded answer is the verdict.
|
|
28
|
+
- `--strategy coverage` / `--strategy exploratory`: state coverage with no goal. `coverage` is
|
|
29
|
+
breadth-first, and `exploratory` follows newly revealed controls. `--scope app` widens it to the
|
|
30
|
+
whole app, and `--stall-timeout <seconds>` (default 120) ends a stalled run.
|
|
31
|
+
- `--strategy adversarial`: bounded misuse ("try to break it"). A hard-signal oracle decides.
|
|
32
|
+
- `--feature <name> --route "<glob>"`: model-free testing of one capability.
|
|
33
|
+
- `--strategy usability --goal "<job>" --app-class <class>`: see `jevitate-ux-review`.
|
|
31
34
|
|
|
32
|
-
## Writing a goal
|
|
35
|
+
## Writing a goal
|
|
33
36
|
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
- Describe the end state in plain language, not clicks ("place an order for one widget and reach
|
|
38
|
+
the confirmation page", not "click .add-to-cart").
|
|
39
|
+
- Write `--success` so page or network state alone can check it, independent of what Jev
|
|
40
|
+
reports: `urlIncludes:/confirmation`, `textIncludes:testId=status|Saved`,
|
|
41
|
+
`requestMade:PUT /api/profile`, `responseStatus:POST /api/orders=2xx`. It's repeatable, and every
|
|
42
|
+
check must hold. If you can't state a checkable assertion, the goal is too vague, so narrow it.
|
|
43
|
+
- A check that already held before the first action is vacuous. The run fails as `inconclusive`
|
|
44
|
+
(`vacuous-check`) instead of passing.
|
|
42
45
|
|
|
43
46
|
## Running it
|
|
44
47
|
|
|
45
|
-
- Goal: `jevitate explore --url <authorized-url> --goal "<goal>" --success
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
not run inline). `target` must be a pre-registered mission target id, not a
|
|
64
|
-
raw URL.
|
|
48
|
+
- Goal: `jevitate explore --url <authorized-url> --goal "<goal>" --success "urlIncludes:/done"
|
|
49
|
+
[--allow <origin>] [--max-actions <n>] [--max-decisions <n>] --real --json`.
|
|
50
|
+
- Adversarial: `jevitate explore --strategy adversarial --url <authorized-url> --fake-ai --json`.
|
|
51
|
+
- Coverage: `jevitate explore --strategy coverage --url <authorized-url> --real --json`.
|
|
52
|
+
- Feature: `jevitate explore --feature checkout --route "/cart/**" --url <authorized-url> --json`.
|
|
53
|
+
- Behind a login: `--storage-state <file>` (a Playwright storageState path; `--save-storage-state
|
|
54
|
+
<file>` writes the rotated one back). Pass real secrets with `--secret env:VAR` or
|
|
55
|
+
`--secret-field 'label=Password=env:APP_PASSWORD'` so they stay out of every model call. Never
|
|
56
|
+
put a secret value in the command line yourself.
|
|
57
|
+
- App rules: `--invariants <file>` checks declared invariants around every action (e.g. "when the
|
|
58
|
+
page says Saved, the server has the value"). A violation is a code-decided defect.
|
|
59
|
+
- Evidence: `--evidence-video` (a captioned clip and before/at screenshots per defect),
|
|
60
|
+
`--record-video`, and `--screenshots [screens|steps]`. See `jevitate-verify-fix`.
|
|
61
|
+
- Viewport: `--viewport 375x812` or `--device "iPhone 13"`.
|
|
62
|
+
- Keep the path as a Journey: `jevitate explore-author-journey --url <authorized-url> --goal
|
|
63
|
+
"<goal>" --success <check> --id <journey-id> --name "<name>" [--storage-state <file>] --real
|
|
64
|
+
--json` writes an UNPROMOTED Journey whose last step asserts `--success`. Promotion
|
|
65
|
+
(`jevitate journey promote <id>`) is the human's decision.
|
|
65
66
|
|
|
66
|
-
##
|
|
67
|
+
## MCP
|
|
67
68
|
|
|
68
|
-
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
69
|
+
- `run_exploration({ url, strategy?, goal?, success?, ... })` runs `explore` directly, with every
|
|
70
|
+
strategy including `usability`, and returns the typed result. Arguments are the flags in
|
|
71
|
+
camelCase.
|
|
72
|
+
- For a PROMOTED mission target, queue instead: `queue_exploration({ target, strategy, goal?,
|
|
73
|
+
successAssertion?, feature?, route?, recordVideo?, evidenceVideo?, screenshots?, persona? })`
|
|
74
|
+
returns a `missionId` right away without running it. `run_queued_missions` (or
|
|
75
|
+
`jevitate mission run --once --real --json`) drains the queue, and `get_mission_result({ id })`
|
|
76
|
+
reports `queued`/`running` (`pending: true`, so poll again), the typed result, or `failed`.
|
|
77
|
+
Queueable strategies are `goal-based`, `coverage`, `exploratory`, `adversarial` and `feature`.
|
|
78
|
+
Registering and promoting targets is in `jevitate-mission-scope`.
|
|
76
79
|
|
|
77
|
-
##
|
|
80
|
+
## Reading the result
|
|
78
81
|
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
is
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
- Every result carries the canonical `missionOutcome` and its exit code: `clean` (0),
|
|
83
|
+
`defects-found` (1), `inconclusive`/`crashed` (2, proved nothing), `hang` (3), `intermittent` (4).
|
|
84
|
+
A goal run also carries `goalOutcome`: `succeeded`, `failed` (a check didn't hold), `exhausted`
|
|
85
|
+
(budget), or `blocked`. Report these values, with `reason`/`failure.message`, not an optimistic
|
|
86
|
+
gloss. A partial Recording from a `blocked` or `exhausted` run is a precise repro of how far Jev
|
|
87
|
+
got, not a success.
|
|
88
|
+
- `inconclusive` with `failure.kind` `insufficient-coverage`, `vacuous-check`,
|
|
89
|
+
`target-unresponsive` or `job-incomplete` means the run proved nothing. Say so and suggest a
|
|
90
|
+
fix: a bigger budget, a session, or a better check.
|
|
91
|
+
- Each defect has a `fingerprint`. To reproduce it, prove a fix, or keep it as a regression, go to
|
|
92
|
+
`jevitate-verify-fix`. Redacted issue drafts are written under `<run>.issues/`.
|
|
93
|
+
- Chat pages: messages are typed and sent, and each reply is awaited (`--reply-wait-ms`, default
|
|
94
|
+
60000) and recorded.
|
|
86
95
|
|
|
87
|
-
##
|
|
96
|
+
## What you must never do
|
|
88
97
|
|
|
89
|
-
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
-
|
|
94
|
-
|
|
95
|
-
`jevitate mission target promote <id>` (see `jevitate-mission-scope`). It
|
|
96
|
-
enqueues and returns a `missionId` immediately — it never runs inline.
|
|
98
|
+
- Never widen `--allow` or the target beyond what the human authorized, and never add
|
|
99
|
+
`--allow-destructive` or `--allow-writes` on your own.
|
|
100
|
+
- Never treat Jev's in-loop "done" as the verdict. Only the checks and hard signals decide.
|
|
101
|
+
- Never run exploration against production.
|
|
102
|
+
- Never fall back to a generic browser-automation tool if jevitate is unavailable or refuses.
|
|
103
|
+
That bypasses every guardrail.
|
|
97
104
|
|
|
98
|
-
##
|
|
105
|
+
## Further reading (in the jevitate repo)
|
|
99
106
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
- The MCP server also registers 8 inbox/command-queue tools
|
|
104
|
-
(`queue_retrieval`, `queue_action`, `get_command`, `list_incoming`,
|
|
105
|
-
`get_thread`, `approve_action`, `cancel_command`, `get_site_health`) that
|
|
106
|
-
currently return a typed `not_implemented` error — they are reserved surface,
|
|
107
|
-
not usable yet. The four wired tools are `find_capabilities`, `run_journey`,
|
|
108
|
-
`queue_exploration`, and `ai_generate_text`.
|
|
107
|
+
`docs/exploration.md` (strategies), `docs/fixtures.md` (`--fixtures`), `docs/invariants.md`,
|
|
108
|
+
`docs/multi-run.md` (`--repeat`, `--persona`, `--actor`), `docs/safety.md`,
|
|
109
|
+
`docs/backend-logs.md` (`--log-source`), `docs/outcomes.md` (every outcome value).
|