@jevitate/cli 0.28.1 → 0.29.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 +1 -1
- package/dist/approval-provenance.d.ts +9 -1
- package/dist/approval-provenance.js +12 -4
- package/dist/approval-provenance.js.map +1 -1
- package/dist/author-journey-cli.js +1 -1
- package/dist/author-journey-cli.js.map +1 -1
- package/dist/bin.js +12657 -8284
- package/dist/bin.js.map +1 -1
- package/dist/build-info.generated.js +3 -3
- package/dist/catalog-analysis.js +3 -2
- package/dist/catalog-analysis.js.map +1 -1
- package/dist/catalog-bundle.js +2 -2
- package/dist/catalog-bundle.js.map +1 -1
- package/dist/check-plan.js +12 -0
- package/dist/check-plan.js.map +1 -1
- package/dist/demo-aspect-cli.d.ts +10 -0
- package/dist/demo-aspect-cli.js +4 -1
- package/dist/demo-aspect-cli.js.map +1 -1
- package/dist/engine.d.ts +8 -1
- package/dist/engine.js +16 -2
- package/dist/engine.js.map +1 -1
- package/dist/explore-adversarial.js +4 -0
- package/dist/explore-adversarial.js.map +1 -1
- package/dist/explore-cli/feature-strategy.js +1 -0
- package/dist/explore-cli/feature-strategy.js.map +1 -1
- package/dist/explore-cli/run.js +7 -0
- package/dist/explore-cli/run.js.map +1 -1
- package/dist/explore-feature.d.ts +2 -0
- package/dist/explore-feature.js +15 -8
- package/dist/explore-feature.js.map +1 -1
- package/dist/explore-goal.js +12 -0
- package/dist/explore-goal.js.map +1 -1
- package/dist/explore-specs.js +2 -2
- package/dist/explore-specs.js.map +1 -1
- package/dist/heal-probe-guard.d.ts +7 -3
- package/dist/heal-probe-guard.js +8 -2
- package/dist/heal-probe-guard.js.map +1 -1
- package/dist/http-probe.js +2 -2
- package/dist/http-probe.js.map +1 -1
- package/dist/journey-annotate-api.d.ts +5 -0
- package/dist/journey-annotate-api.js +49 -24
- package/dist/journey-annotate-api.js.map +1 -1
- package/dist/journey-annotate-cli.js +4 -1
- package/dist/journey-annotate-cli.js.map +1 -1
- package/dist/journey-api.d.ts +46 -7
- package/dist/journey-api.js +111 -43
- package/dist/journey-api.js.map +1 -1
- package/dist/journey-chain.d.ts +0 -6
- package/dist/journey-chain.js +36 -5
- package/dist/journey-chain.js.map +1 -1
- package/dist/journey-cli/chain.js +6 -0
- package/dist/journey-cli/chain.js.map +1 -1
- package/dist/journey-cli/lint.js +10 -3
- package/dist/journey-cli/lint.js.map +1 -1
- package/dist/journey-cli/run.js +39 -4
- package/dist/journey-cli/run.js.map +1 -1
- package/dist/journey-cli/verify.d.ts +8 -1
- package/dist/journey-cli/verify.js +111 -14
- package/dist/journey-cli/verify.js.map +1 -1
- package/dist/journey-cli-readiness.js +2 -0
- package/dist/journey-cli-readiness.js.map +1 -1
- package/dist/journey-demo-cli.js +2 -0
- package/dist/journey-demo-cli.js.map +1 -1
- package/dist/journey-network-checks.d.ts +4 -0
- package/dist/journey-network-checks.js +6 -2
- package/dist/journey-network-checks.js.map +1 -1
- package/dist/journey-prefix.d.ts +2 -0
- package/dist/journey-prefix.js +20 -1
- package/dist/journey-prefix.js.map +1 -1
- package/dist/journey-proof-context.d.ts +7 -1
- package/dist/journey-proof-context.js +19 -1
- package/dist/journey-proof-context.js.map +1 -1
- package/dist/journey-proof-waiver-cli.js +6 -3
- package/dist/journey-proof-waiver-cli.js.map +1 -1
- package/dist/journey-readiness.js +4 -0
- package/dist/journey-readiness.js.map +1 -1
- package/dist/journey-review-api.js +23 -0
- package/dist/journey-review-api.js.map +1 -1
- package/dist/journey-review.d.ts +30 -10
- package/dist/journey-review.js +33 -39
- package/dist/journey-review.js.map +1 -1
- package/dist/journey-run-record.d.ts +91 -0
- package/dist/journey-run-record.js +239 -0
- package/dist/journey-run-record.js.map +1 -0
- package/dist/journey-stale-api.d.ts +7 -0
- package/dist/journey-stale-api.js +50 -6
- package/dist/journey-stale-api.js.map +1 -1
- package/dist/journey-verify-checkpoint.d.ts +656 -0
- package/dist/journey-verify-checkpoint.js +923 -0
- package/dist/journey-verify-checkpoint.js.map +1 -0
- package/dist/journey-verify.d.ts +84 -3
- package/dist/journey-verify.js +1387 -110
- package/dist/journey-verify.js.map +1 -1
- package/dist/kill-signal.d.ts +24 -2
- package/dist/kill-signal.js +39 -11
- package/dist/kill-signal.js.map +1 -1
- package/dist/load-api.js +31 -2
- package/dist/load-api.js.map +1 -1
- package/dist/load-cli.js +6 -0
- package/dist/load-cli.js.map +1 -1
- package/dist/logs-retention.js +28 -3
- package/dist/logs-retention.js.map +1 -1
- package/dist/mask-values.d.ts +5 -0
- package/dist/mask-values.js +12 -0
- package/dist/mask-values.js.map +1 -0
- package/dist/mcp-api.d.ts +2 -0
- package/dist/mcp-api.js +19 -3
- package/dist/mcp-api.js.map +1 -1
- package/dist/mcp-cli-runner.d.ts +7 -1
- package/dist/mcp-cli-runner.js +30 -3
- package/dist/mcp-cli-runner.js.map +1 -1
- package/dist/mcp-cli-tools.d.ts +9 -1
- package/dist/mcp-cli-tools.js +29 -4
- package/dist/mcp-cli-tools.js.map +1 -1
- package/dist/mcp-paths.js +11 -0
- package/dist/mcp-paths.js.map +1 -1
- package/dist/mcp-run-guard.d.ts +79 -0
- package/dist/mcp-run-guard.js +371 -0
- package/dist/mcp-run-guard.js.map +1 -0
- package/dist/mcp-tools/cli.js +1 -1
- package/dist/mcp-tools/cli.js.map +1 -1
- package/dist/mcp-tools/findings.js +12 -1
- package/dist/mcp-tools/findings.js.map +1 -1
- package/dist/mcp-tools/journey.js +25 -8
- package/dist/mcp-tools/journey.js.map +1 -1
- package/dist/mission-fixtures.d.ts +3 -1
- package/dist/mission-fixtures.js +23 -6
- package/dist/mission-fixtures.js.map +1 -1
- package/dist/mutation-proof-policy.d.ts +2 -0
- package/dist/mutation-proof-policy.js +2 -2
- package/dist/mutation-proof-policy.js.map +1 -1
- package/dist/program.d.ts +6 -0
- package/dist/program.js +6 -9
- package/dist/program.js.map +1 -1
- package/dist/project-dir.d.ts +5 -1
- package/dist/project-dir.js +54 -5
- package/dist/project-dir.js.map +1 -1
- package/dist/readiness.js +3 -1
- package/dist/readiness.js.map +1 -1
- package/dist/regression-api.d.ts +5 -0
- package/dist/regression-api.js +17 -10
- package/dist/regression-api.js.map +1 -1
- package/dist/regression-cli.js +14 -1
- package/dist/regression-cli.js.map +1 -1
- package/dist/report-api.js +6 -0
- package/dist/report-api.js.map +1 -1
- package/dist/resource-preflight.d.ts +2 -1
- package/dist/resource-preflight.js +2 -1
- package/dist/resource-preflight.js.map +1 -1
- package/dist/secret-params.d.ts +82 -0
- package/dist/secret-params.js +234 -0
- package/dist/secret-params.js.map +1 -0
- package/dist/self-heal-adapter.d.ts +2 -2
- package/dist/self-heal-adapter.js +7 -9
- package/dist/self-heal-adapter.js.map +1 -1
- package/dist/source-cli.js +3 -1
- package/dist/source-cli.js.map +1 -1
- package/dist/source-run-api.d.ts +2 -0
- package/dist/source-run-api.js +21 -2
- package/dist/source-run-api.js.map +1 -1
- package/dist/target-config.d.ts +39 -0
- package/dist/target-config.js +76 -1
- package/dist/target-config.js.map +1 -1
- package/dist/terminal-result.d.ts +181 -0
- package/dist/terminal-result.js +609 -0
- package/dist/terminal-result.js.map +1 -0
- package/dist/usability-capture.js +2 -2
- package/dist/usability-capture.js.map +1 -1
- package/dist/ux-usability/hang.js +2 -0
- package/dist/ux-usability/hang.js.map +1 -1
- package/dist/ux-usability.js +6 -0
- package/dist/ux-usability.js.map +1 -1
- package/dist/verify-fix-api.d.ts +43 -0
- package/dist/verify-fix-api.js +138 -10
- package/dist/verify-fix-api.js.map +1 -1
- package/dist/verify-fix-cli.d.ts +6 -1
- package/dist/verify-fix-cli.js +65 -11
- package/dist/verify-fix-cli.js.map +1 -1
- package/package.json +11 -11
- package/skills/jevitate-run-journey/SKILL.md +23 -3
package/dist/verify-fix-cli.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
+
import { runVerifyFix } from "./verify-fix-api.js";
|
|
3
|
+
import { type TerminalResultDeps } from "./terminal-result.js";
|
|
2
4
|
import { type CliDeps } from "./cli-shared.js";
|
|
3
5
|
/** Registers `jevitate verify-fix`. */
|
|
4
|
-
export declare function registerVerifyFixCommands(program: Command, deps: CliDeps
|
|
6
|
+
export declare function registerVerifyFixCommands(program: Command, deps: CliDeps, seams?: {
|
|
7
|
+
readonly runVerifyFix?: typeof runVerifyFix;
|
|
8
|
+
readonly terminalDeps?: TerminalResultDeps;
|
|
9
|
+
}): void;
|
package/dist/verify-fix-cli.js
CHANGED
|
@@ -2,7 +2,7 @@ import { TAG_FLAG, TAG_HELP, collectTag, taggedAction } from "./run-tags-cli.js"
|
|
|
2
2
|
import { parseScreenshotsArg } from "./run-screenshots.js";
|
|
3
3
|
import { UnauthorizedExploreTargetError } from "@jevitate/explore";
|
|
4
4
|
import { ok, fail } from "./envelope.js";
|
|
5
|
-
import { runVerifyFix, VerifyFixInputError } from "./verify-fix-api.js";
|
|
5
|
+
import { runVerifyFix, verifyFixArtifactPath, VerifyFixInputError } from "./verify-fix-api.js";
|
|
6
6
|
import { LedgerError, ledgerEntryFor } from "./ledger-api.js";
|
|
7
7
|
import { TargetConfigError, loadTargetsFile } from "./target-config.js";
|
|
8
8
|
import { withFixtureFlags } from "./fixture-cli.js";
|
|
@@ -10,9 +10,21 @@ import { LITERAL_SECRET_WARNING, SecretArgError, resolveSecretArgs } from "./sec
|
|
|
10
10
|
import { withEngine } from "./engine.js";
|
|
11
11
|
import { positiveIntArg } from "./cli-args.js";
|
|
12
12
|
import { formatVerifyFixHuman } from "./cli-output.js";
|
|
13
|
+
import { DEFAULT_ADMISSION_TIMEOUT_MS } from "@jevitate/playwright";
|
|
14
|
+
import { clock } from "@jevitate/domain";
|
|
15
|
+
import { artifactStamp } from "./mission-journal.js";
|
|
16
|
+
import { redactSensitiveText, registerTerminalResult } from "./terminal-result.js";
|
|
13
17
|
import { withBrowserLaunchFlags, browserRunFromFlags, withDemoFlags, withScreenshotsFlag, withEmulationFlags, emulationFromFlags, emitCommandResult, collectParam, environmentSeams, resolveDbPath, } from "./cli-shared.js";
|
|
18
|
+
const MIN_MASKED_PARAM_LENGTH = 6;
|
|
19
|
+
/**
|
|
20
|
+
* #767: how long one replay may run without a progress report. Progress comes only when a replay
|
|
21
|
+
* opens, so this has to outlast a long but legal replay of a many-step recording: it is a backstop
|
|
22
|
+
* for a run that has stopped, not a measure of a slow one. Added to the 300 s machine-slot admission
|
|
23
|
+
* bound, which can also fall between two `progress()` calls.
|
|
24
|
+
*/
|
|
25
|
+
const REPLAY_BOUND_MS = 30 * 60_000;
|
|
14
26
|
/** Registers `jevitate verify-fix`. */
|
|
15
|
-
export function registerVerifyFixCommands(program, deps) {
|
|
27
|
+
export function registerVerifyFixCommands(program, deps, seams = {}) {
|
|
16
28
|
// `verify-fix`: replays a finding's reproduction N times in FRESH browsers (#74) and reports
|
|
17
29
|
// whether its fingerprint still fires. Exit 0 fixed · 1 still reproduces · 2 inconclusive ·
|
|
18
30
|
// 4 intermittent (fired on some but not all replays — never reported as fixed) · 64 usage error.
|
|
@@ -60,6 +72,11 @@ export function registerVerifyFixCommands(program, deps) {
|
|
|
60
72
|
emitVerify(fail("E_VERIFY_FIX_ARGS", err.message));
|
|
61
73
|
return;
|
|
62
74
|
}
|
|
75
|
+
// `--secret` is the channel for a secret. A `--param` may still hold one by mistake, so it's masked
|
|
76
|
+
// too, unless it's too short to be one: masking "acme" or "1" everywhere ruins the diagnosis.
|
|
77
|
+
const secrets = [...o.secret, ...Object.values(o.param).filter((v) => v.length >= MIN_MASKED_PARAM_LENGTH)];
|
|
78
|
+
// What this run's own error messages mask: `secrets`, plus what the run learns as it goes.
|
|
79
|
+
const known = [...secrets];
|
|
63
80
|
let verifyFixEmulation;
|
|
64
81
|
// #245: demo mode, resolved (a headed run without a display refused) before any browser opens.
|
|
65
82
|
let browser;
|
|
@@ -76,24 +93,56 @@ export function registerVerifyFixCommands(program, deps) {
|
|
|
76
93
|
}
|
|
77
94
|
}
|
|
78
95
|
catch (err) {
|
|
79
|
-
emitVerify(fail("E_VERIFY_FIX_ARGS", err instanceof Error ? err.message : String(err)));
|
|
96
|
+
emitVerify(fail("E_VERIFY_FIX_ARGS", redactSensitiveText(err instanceof Error ? err.message : String(err), known)));
|
|
80
97
|
return;
|
|
81
98
|
}
|
|
99
|
+
// #195: without --result, the fingerprint's ledger entry is the repro material (the run's output may be long gone).
|
|
100
|
+
let resultPath;
|
|
82
101
|
try {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
102
|
+
resultPath = o.result ?? ledgerEntryFor(fingerprint, o.regressionsDir);
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
if (err instanceof LedgerError) {
|
|
106
|
+
emitVerify(fail(err.code, redactSensitiveText(err.message, known)));
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
emitVerify(fail("E_VERIFY_FIX", redactSensitiveText(String(err instanceof Error ? err.message : err), known)));
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
// #767: one stamped path, shared by the report writer and the terminal layer, so a signal or
|
|
113
|
+
// parent death overwrites the same artifact instead of leaving two.
|
|
114
|
+
const stamp = artifactStamp(clock.nowIso());
|
|
115
|
+
const vfArtifact = verifyFixArtifactPath(resultPath, stamp);
|
|
116
|
+
const handle = registerTerminalResult({
|
|
117
|
+
command: "verify-fix",
|
|
118
|
+
json: o.json === true,
|
|
119
|
+
secrets,
|
|
120
|
+
artifactPath: vfArtifact,
|
|
121
|
+
inactivityMs: DEFAULT_ADMISSION_TIMEOUT_MS + REPLAY_BOUND_MS,
|
|
122
|
+
progress: { phase: "replay" },
|
|
123
|
+
}, seams.terminalDeps);
|
|
124
|
+
// A property call, so surface-wiring.test.ts still sees this surface's call to the API.
|
|
125
|
+
const api = { runVerifyFix: seams.runVerifyFix ?? runVerifyFix };
|
|
126
|
+
try {
|
|
127
|
+
const report = await api.runVerifyFix({
|
|
86
128
|
targets: loadTargetsFile(deps.explore?.targetsConfigPath),
|
|
87
129
|
resultPath,
|
|
88
130
|
fingerprint,
|
|
131
|
+
resultArtifact: true,
|
|
132
|
+
resultStamp: stamp,
|
|
133
|
+
onReplay: (replay) => handle.progress({ replay }),
|
|
134
|
+
onSecrets: (values) => {
|
|
135
|
+
known.push(...values);
|
|
136
|
+
handle.addSecrets(values);
|
|
137
|
+
},
|
|
89
138
|
...(o.storageState !== undefined ? { storageState: o.storageState } : {}),
|
|
90
139
|
...(o.replays !== undefined ? { replays: Number(o.replays) } : {}),
|
|
91
140
|
...(o.invariants.length > 0 ? { invariantFiles: o.invariants } : {}),
|
|
92
141
|
...(o.allowLogCmd === undefined ? {} : { allowLogCmd: o.allowLogCmd }),
|
|
93
142
|
...(o.hangReplayWrites === true ? { hangReplayWrites: true } : {}),
|
|
94
143
|
fixtureFlags: o,
|
|
95
|
-
secrets
|
|
96
|
-
journeyPrefix: { params: o.param, dbPath: resolveDbPath(deps), environmentSeams: environmentSeams(deps) },
|
|
144
|
+
secrets,
|
|
145
|
+
journeyPrefix: { params: o.param, warn: (line) => program.configureOutput().writeErr?.(line), dbPath: resolveDbPath(deps), environmentSeams: environmentSeams(deps) },
|
|
97
146
|
browserPortFactory: deps.explore?.browserPortFactory,
|
|
98
147
|
browser,
|
|
99
148
|
...(screenshots === undefined ? {} : { screenshots }),
|
|
@@ -104,16 +153,21 @@ export function registerVerifyFixCommands(program, deps) {
|
|
|
104
153
|
...(o.allowEmulationOverride === undefined ? {} : { allowEmulationOverride: o.allowEmulationOverride }),
|
|
105
154
|
});
|
|
106
155
|
emitVerify(ok(withEngine(report)), report.exitCode);
|
|
156
|
+
handle.complete();
|
|
107
157
|
}
|
|
108
158
|
catch (err) {
|
|
109
159
|
if (err instanceof VerifyFixInputError || err instanceof TargetConfigError || err instanceof LedgerError) {
|
|
110
|
-
emitVerify(fail(err.code, err.message));
|
|
160
|
+
emitVerify(fail(err.code, redactSensitiveText(err.message, known)));
|
|
161
|
+
handle.complete();
|
|
111
162
|
}
|
|
112
163
|
else if (err instanceof UnauthorizedExploreTargetError) {
|
|
113
|
-
emitVerify(fail("E_UNAUTHORIZED_EXPLORE_TARGET", err.message));
|
|
164
|
+
emitVerify(fail("E_UNAUTHORIZED_EXPLORE_TARGET", redactSensitiveText(err.message, known)));
|
|
165
|
+
handle.complete();
|
|
114
166
|
}
|
|
115
167
|
else {
|
|
116
|
-
|
|
168
|
+
// #767: an internal error is the terminal layer's: it redacts, writes one artifact, emits
|
|
169
|
+
// one envelope and exits. (Typed input errors keep their own code and write no artifact.)
|
|
170
|
+
handle.fail(err);
|
|
117
171
|
}
|
|
118
172
|
}
|
|
119
173
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-fix-cli.js","sourceRoot":"","sources":["../src/verify-fix-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjF,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;
|
|
1
|
+
{"version":3,"file":"verify-fix-cli.js","sourceRoot":"","sources":["../src/verify-fix-cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jevitate/cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.29.0",
|
|
4
|
+
"description": "Browser automation and testing in one tool: parameterized Journeys that do real work in your app, and autonomous exploration that turns discovered bugs into deterministic regression tests.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -65,26 +65,26 @@
|
|
|
65
65
|
"zod": "^4.6.5",
|
|
66
66
|
"@jevitate/ai-core": "0.1.0",
|
|
67
67
|
"@jevitate/domain": "0.1.0",
|
|
68
|
+
"@jevitate/daemon": "0.1.0",
|
|
68
69
|
"@jevitate/example-site": "0.1.0",
|
|
69
70
|
"@jevitate/explore": "0.1.0",
|
|
70
71
|
"@jevitate/findings": "0.1.0",
|
|
71
|
-
"@jevitate/daemon": "0.1.0",
|
|
72
|
-
"@jevitate/interpreter": "0.1.0",
|
|
73
72
|
"@jevitate/inbox": "0.1.0",
|
|
74
|
-
"@jevitate/
|
|
73
|
+
"@jevitate/interpreter": "0.1.0",
|
|
75
74
|
"@jevitate/journey": "0.1.0",
|
|
76
|
-
"@jevitate/
|
|
75
|
+
"@jevitate/load": "0.1.0",
|
|
77
76
|
"@jevitate/mcp-facade": "0.1.0",
|
|
78
|
-
"@jevitate/
|
|
77
|
+
"@jevitate/playwright": "0.1.0",
|
|
79
78
|
"@jevitate/missions": "0.1.0",
|
|
79
|
+
"@jevitate/recorder": "0.1.0",
|
|
80
80
|
"@jevitate/recording": "0.1.0",
|
|
81
|
+
"@jevitate/screenplay": "0.1.0",
|
|
81
82
|
"@jevitate/regression": "0.1.0",
|
|
83
|
+
"@jevitate/skills": "0.1.0",
|
|
82
84
|
"@jevitate/runtime": "0.1.0",
|
|
83
|
-
"@jevitate/screenplay": "0.1.0",
|
|
84
85
|
"@jevitate/sources": "0.1.0",
|
|
85
|
-
"@jevitate/
|
|
86
|
-
"@jevitate/
|
|
87
|
-
"@jevitate/storage-sqlite": "0.1.0"
|
|
86
|
+
"@jevitate/storage-sqlite": "0.1.0",
|
|
87
|
+
"@jevitate/ux": "0.1.0"
|
|
88
88
|
},
|
|
89
89
|
"scripts": {
|
|
90
90
|
"build": "node scripts/generate-build-info.mjs && tsc --build",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jevitate-run-journey
|
|
3
|
-
description: Find and replay a promoted jevitate Journey (a saved, deterministic browser flow such as a login, checkout or form submission) by id with typed params, on any named environment (`--env`/`--base-url`), optionally with video and screenshots and self-heal. Runs via `jevitate journey find|run` or MCP `find_capabilities`/`run_journey`. Also covers promoting (
|
|
3
|
+
description: Find and replay a promoted jevitate Journey (a saved, deterministic browser flow such as a login, checkout or form submission) by id with typed params, on any named environment (`--env`/`--base-url`), optionally with video and screenshots and self-heal. Runs via `jevitate journey find|run` or MCP `find_capabilities`/`run_journey`. Also covers promoting (a person's act). Use when a known flow should be re-run or regression-checked, not explored or recorded fresh.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
You drive already-published, promoted Jevitate Journeys. You never write or invent
|
|
@@ -17,7 +17,7 @@ artifact; your job is to find the right one and run it with the right params.
|
|
|
17
17
|
- `jevitate journey list --json` shows ALL Journeys including unpromoted ones —
|
|
18
18
|
use this only for authoring/debugging with a human present, never to find
|
|
19
19
|
something to run autonomously (an unpromoted Journey is unpromoted for a
|
|
20
|
-
reason
|
|
20
|
+
reason). MCP `run_journey` refuses it; the CLI `journey run` does not (below).
|
|
21
21
|
|
|
22
22
|
## Run
|
|
23
23
|
|
|
@@ -28,6 +28,25 @@ artifact; your job is to find the right one and run it with the right params.
|
|
|
28
28
|
- MCP: `run_journey({ id, params, storageState? })` — same param-schema
|
|
29
29
|
validation, same refusal on an unknown id or params. It NEVER accepts inline
|
|
30
30
|
steps or a raw recording — a published id only.
|
|
31
|
+
- A secret parameter's value (a `secret: true` param, or one named like a
|
|
32
|
+
credential) never goes in an MCP request: `E_SECRET_PARAM_OVER_MCP`, by name.
|
|
33
|
+
Leave it out and pass `env` or `baseUrl` when `~/.jevitate/targets.json` binds
|
|
34
|
+
the field under `secretFields`. On the CLI use `--secret-field
|
|
35
|
+
'<label|testId|id|name>=<value>=env:<VAR>'`; `--param` works and warns.
|
|
36
|
+
- Promotion differs by surface. MCP `run_journey` and `chain_journeys` refuse a
|
|
37
|
+
Journey that is not promoted, or whose content changed since its approval,
|
|
38
|
+
before any browser opens: `{error: "refused", code: E_JOURNEY_NOT_PROMOTED |
|
|
39
|
+
E_JOURNEY_APPROVAL_STALE | E_JOURNEY_APPROVAL_UNKNOWN, fix}`. Do not retry;
|
|
40
|
+
ask the person to review and promote it (`journey review <id>`, then
|
|
41
|
+
`journey promote <id>`). The CLI `journey run` runs an unpromoted or stale
|
|
42
|
+
Journey anyway and prints a `warning:` line on stderr with the same code.
|
|
43
|
+
- MCP runs also refuse, with `outcome: "refused"` and `retryable: false`, a click
|
|
44
|
+
on a session-ending, destructive or paid control (`E_RUN_REFUSED_DESTRUCTIVE`),
|
|
45
|
+
a write to an origin outside the run's allowlist
|
|
46
|
+
(`E_RUN_REFUSED_OFF_ALLOWLIST_WRITE`) and a `production: true` environment
|
|
47
|
+
(`E_RUN_REFUSED_PRODUCTION`). The result's `setting` names what lifts it, in the
|
|
48
|
+
target's `mcpRun` section of `~/.jevitate/targets.json`. Only a person edits
|
|
49
|
+
that; never try to work around it. The CLI applies none of these refusals.
|
|
31
50
|
- Read the JSON envelope's `outcome` field (MCP: also `exitCode`). Only `"ok"`
|
|
32
51
|
(exit 0) is a pass. `"healed-pending-review"` (exit 5) is NOT a pass: a
|
|
33
52
|
self-heal retargeted steps and proposed a Journey revision a person must
|
|
@@ -143,7 +162,8 @@ artifact; your job is to find the right one and run it with the right params.
|
|
|
143
162
|
fails — it never counts as the person's sign-off. Every authored/recorded Journey starts
|
|
144
163
|
`metadata.promoted: false` (`explore-author-journey`, `jevitate record` +
|
|
145
164
|
`recording postdoc`); only a promoted Journey is discoverable via `journey
|
|
146
|
-
find`/`find_capabilities` and runnable
|
|
165
|
+
find`/`find_capabilities` and runnable over MCP (`run_journey`); the CLI
|
|
166
|
+
`journey run` also runs an unpromoted one, with a warning.
|
|
147
167
|
There is still no "raw Recording -> promoted Journey in one step" command —
|
|
148
168
|
a Recording becomes a Journey first (through an authoring path, or the
|
|
149
169
|
`JourneyRegistry` API), then `journey promote <id>` promotes it.
|