@jevitate/cli 0.14.1 → 0.15.1
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/dist/author-journey-cli.js +67 -7
- package/dist/author-journey-cli.js.map +1 -1
- package/dist/bin.js +7141 -6313
- package/dist/build-info.generated.d.ts +1 -0
- package/dist/build-info.generated.js +3 -2
- package/dist/build-info.generated.js.map +1 -1
- package/dist/check-execute.js +2 -1
- package/dist/check-execute.js.map +1 -1
- package/dist/demo-capture.d.ts +15 -1
- package/dist/demo-capture.js +102 -21
- package/dist/demo-capture.js.map +1 -1
- package/dist/engine.d.ts +13 -0
- package/dist/engine.js +24 -1
- package/dist/engine.js.map +1 -1
- package/dist/environments.d.ts +4 -0
- package/dist/environments.js +13 -0
- package/dist/environments.js.map +1 -1
- package/dist/exit-codes.js +1 -0
- package/dist/exit-codes.js.map +1 -1
- package/dist/explore-author.d.ts +22 -0
- package/dist/explore-author.js +92 -31
- package/dist/explore-author.js.map +1 -1
- package/dist/explore-cli/goal-strategy.js +12 -1
- package/dist/explore-cli/goal-strategy.js.map +1 -1
- package/dist/explore-cli/options.js +9 -18
- package/dist/explore-cli/options.js.map +1 -1
- package/dist/explore-cli/run.js +12 -39
- package/dist/explore-cli/run.js.map +1 -1
- package/dist/explore-cli/shared.d.ts +21 -0
- package/dist/explore-cli/shared.js +34 -0
- package/dist/explore-cli/shared.js.map +1 -1
- package/dist/explore-goal.js +7 -0
- package/dist/explore-goal.js.map +1 -1
- package/dist/explore-specs.d.ts +8 -1
- package/dist/explore-specs.js +103 -1
- package/dist/explore-specs.js.map +1 -1
- package/dist/goal-run-flags.d.ts +4 -0
- package/dist/goal-run-flags.js +2 -0
- package/dist/goal-run-flags.js.map +1 -1
- package/dist/http-probe.d.ts +40 -0
- package/dist/http-probe.js +128 -0
- package/dist/http-probe.js.map +1 -0
- package/dist/journey-annotate-cli.js +9 -2
- package/dist/journey-annotate-cli.js.map +1 -1
- package/dist/journey-api.d.ts +17 -1
- package/dist/journey-api.js +27 -4
- package/dist/journey-api.js.map +1 -1
- package/dist/journey-cli/run.js +22 -9
- package/dist/journey-cli/run.js.map +1 -1
- package/dist/journey-cli/verify.js +19 -7
- package/dist/journey-cli/verify.js.map +1 -1
- package/dist/journey-fixtures.d.ts +44 -0
- package/dist/journey-fixtures.js +58 -0
- package/dist/journey-fixtures.js.map +1 -0
- package/dist/journey-lint-sarif.js +3 -0
- package/dist/journey-lint-sarif.js.map +1 -1
- package/dist/journey-network-checks.d.ts +5 -1
- package/dist/journey-network-checks.js +16 -2
- package/dist/journey-network-checks.js.map +1 -1
- package/dist/journey-verify.d.ts +10 -0
- package/dist/journey-verify.js +18 -16
- package/dist/journey-verify.js.map +1 -1
- package/dist/load-api.js +8 -2
- package/dist/load-api.js.map +1 -1
- package/dist/mask-video-frames.testkit.d.ts +40 -0
- package/dist/mask-video-frames.testkit.js +77 -0
- package/dist/mask-video-frames.testkit.js.map +1 -0
- package/dist/mcp-cli-tools.js +16 -1
- package/dist/mcp-cli-tools.js.map +1 -1
- package/dist/mission-fixtures.d.ts +2 -0
- package/dist/mission-fixtures.js +5 -1
- package/dist/mission-fixtures.js.map +1 -1
- package/dist/program.js +3 -6
- package/dist/program.js.map +1 -1
- package/dist/server-log-flags.d.ts +7 -0
- package/dist/server-log-flags.js +23 -0
- package/dist/server-log-flags.js.map +1 -0
- package/dist/source-run-api.js +7 -2
- package/dist/source-run-api.js.map +1 -1
- package/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journey-lint-sarif.js","sourceRoot":"","sources":["../src/journey-lint-sarif.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"journey-lint-sarif.js","sourceRoot":"","sources":["../src/journey-lint-sarif.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ import { type Journey } from "@jevitate/journey";
|
|
|
14
14
|
import type { JourneyRunResult } from "@jevitate/runtime";
|
|
15
15
|
import type { Actor } from "@jevitate/screenplay";
|
|
16
16
|
import { type StepObserver } from "@jevitate/interpreter";
|
|
17
|
-
import { type SlowStepFinding } from "@jevitate/explore";
|
|
17
|
+
import { type HttpCheckRefResolver, type HttpProbe, type SlowStepFinding } from "@jevitate/explore";
|
|
18
18
|
/** #486/L2: the largest `--step-response-timeout` / `stepResponseTimeoutMs` accepted (5 minutes): a step never waits longer. */
|
|
19
19
|
export declare const MAX_STEP_RESPONSE_TIMEOUT_MS = 300000;
|
|
20
20
|
/**
|
|
@@ -49,6 +49,10 @@ export declare class JourneyOutcomeChecks {
|
|
|
49
49
|
constructor(page: Page, journey: Journey | undefined, opts?: {
|
|
50
50
|
readonly secrets?: readonly string[];
|
|
51
51
|
readonly stepResponseTimeoutMs?: number;
|
|
52
|
+
/** #543: makes the end state's `http` checks' requests; absent, they fail closed (unevaluable). */
|
|
53
|
+
readonly httpProbe?: HttpProbe;
|
|
54
|
+
/** #543: resolves an `http` check's `${name}` (a param, `setup.x`); a secret one is refused. */
|
|
55
|
+
readonly resolveRef?: HttpCheckRefResolver;
|
|
52
56
|
});
|
|
53
57
|
get active(): boolean;
|
|
54
58
|
/** #486: advisory `slow-step` findings of the last `run` (empty when every response came promptly). */
|
|
@@ -13,11 +13,15 @@ export class JourneyOutcomeChecks {
|
|
|
13
13
|
#steps;
|
|
14
14
|
#secrets;
|
|
15
15
|
#responseTimeoutMs;
|
|
16
|
+
#httpProbe;
|
|
17
|
+
#resolveRef;
|
|
16
18
|
#lastFailures = [];
|
|
17
19
|
#slowSteps = [];
|
|
18
20
|
/** `journey` undefined (an anchored prefix run): nothing is judged. */
|
|
19
21
|
constructor(page, journey, opts = {}) {
|
|
20
22
|
this.#page = page;
|
|
23
|
+
this.#httpProbe = opts.httpProbe;
|
|
24
|
+
this.#resolveRef = opts.resolveRef;
|
|
21
25
|
this.#responseTimeoutMs = opts.stepResponseTimeoutMs ?? DEFAULT_STEP_RESPONSE_TIMEOUT_MS;
|
|
22
26
|
this.#secrets = opts.secrets ?? [];
|
|
23
27
|
this.#end = journey === undefined ? [] : journeyEndState(journey);
|
|
@@ -170,7 +174,15 @@ export class JourneyOutcomeChecks {
|
|
|
170
174
|
let end = [];
|
|
171
175
|
if (this.#end.length > 0) {
|
|
172
176
|
try {
|
|
173
|
-
end = await evaluateOutcomeChecks(this.#end, {
|
|
177
|
+
end = await evaluateOutcomeChecks(this.#end, {
|
|
178
|
+
actor,
|
|
179
|
+
page: this.#page,
|
|
180
|
+
capture,
|
|
181
|
+
secrets: this.#secrets,
|
|
182
|
+
settleMs: SETTLE_CEILING_MS,
|
|
183
|
+
...(this.#httpProbe === undefined ? {} : { httpProbe: this.#httpProbe }),
|
|
184
|
+
...(this.#resolveRef === undefined ? {} : { resolveRef: this.#resolveRef }),
|
|
185
|
+
});
|
|
174
186
|
}
|
|
175
187
|
catch (e) {
|
|
176
188
|
// A check that cannot be evaluated (an unusable target) is never a pass.
|
|
@@ -181,7 +193,9 @@ export class JourneyOutcomeChecks {
|
|
|
181
193
|
}
|
|
182
194
|
// `evaluateOutcomeChecks` keeps the checks' order, which is `journeyEndState`: `endState` then
|
|
183
195
|
// legacy `networkChecks` — so an index here is that list's own position.
|
|
184
|
-
|
|
196
|
+
// #543: a check that could not be judged at all (an `http` check's transport error) is
|
|
197
|
+
// `unevaluable` — never proof a mutation broke it (the mutation proof reads it as a cascade).
|
|
198
|
+
const endFailureSites = end.flatMap((r, index) => r.passed ? [] : r.unevaluable === true ? [{ where: "unevaluable", detail: `${r.check} — ${r.detail}` }] : [{ where: "end-state", index, detail: `${r.check} — ${r.detail}` }]);
|
|
185
199
|
this.#lastFailures = [...stepFailureSites, ...endFailureSites];
|
|
186
200
|
const endFailures = endFailureSites.map((f) => f.detail);
|
|
187
201
|
const reasons = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journey-network-checks.js","sourceRoot":"","sources":["../src/journey-network-checks.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,eAAe,EAAgB,MAAM,mBAAmB,CAAC;AAIlE,OAAO,EAAE,oBAAoB,EAAqB,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,gCAAgC,EAAE,4BAA4B,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"journey-network-checks.js","sourceRoot":"","sources":["../src/journey-network-checks.ts"],"names":[],"mappings":"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"}
|
package/dist/journey-verify.d.ts
CHANGED
|
@@ -26,6 +26,16 @@ export interface JourneyVerifyMutation {
|
|
|
26
26
|
readonly blockedWrites?: readonly string[];
|
|
27
27
|
/** Why the replay failed, was not applied, or errored. */
|
|
28
28
|
readonly reason?: string;
|
|
29
|
+
/**
|
|
30
|
+
* #554 — the same mutation replayed with the mutated step's own postcondition relaxed, present
|
|
31
|
+
* only when the first replay failed at that postcondition and a later site is paired with it.
|
|
32
|
+
*/
|
|
33
|
+
readonly relaxed?: {
|
|
34
|
+
readonly outcome: MutationRunResult["outcome"];
|
|
35
|
+
readonly failedSites: readonly MutationFailedSite[];
|
|
36
|
+
readonly blockedWrites?: readonly string[];
|
|
37
|
+
readonly reason?: string;
|
|
38
|
+
};
|
|
29
39
|
}
|
|
30
40
|
export interface JourneyVerifyAssertion {
|
|
31
41
|
readonly site: string;
|
package/dist/journey-verify.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* environment as `journey run`. Mutations never send, fabricate or answer a request: they leave a
|
|
10
10
|
* step's action out, ABORT the app's own writes in one step's window, or type `""`.
|
|
11
11
|
*/
|
|
12
|
-
import { FsJourneyStore, JourneyRegistry, assertionSiteKey, journeyAssertions, journeyProofHash, judgeAssertions, mutationProofVerdict, mutationReplay, planJourneyMutations, } from "@jevitate/journey";
|
|
12
|
+
import { FsJourneyStore, JourneyRegistry, assertionSiteKey, journeyAssertions, journeyProofHash, judgeAssertions, mutationProofVerdict, mutationReplay, needsRelaxedReplay, planJourneyMutations, relaxedMutationReplay, } from "@jevitate/journey";
|
|
13
13
|
import { describeCheck } from "@jevitate/explore";
|
|
14
14
|
import { clock } from "@jevitate/domain";
|
|
15
15
|
import { journeyContentHash } from "./journey-annotate-api.js";
|
|
@@ -65,43 +65,45 @@ export async function verifyJourneyMutations(opts, run = runJourneyProgrammatica
|
|
|
65
65
|
const plan = planJourneyMutations(journey, { ...lintOpts, params: opts.params });
|
|
66
66
|
const mutations = [];
|
|
67
67
|
if (base.outcome === "ok") {
|
|
68
|
-
|
|
69
|
-
const how =
|
|
70
|
-
const fields = { kind: m.kind, step: m.step, id: m.id };
|
|
68
|
+
const replay = async (m, describe) => {
|
|
69
|
+
const how = describe(journey, m, lintOpts);
|
|
71
70
|
try {
|
|
72
71
|
const r = await run(runOpts, {
|
|
73
72
|
structuredFailures: true,
|
|
74
|
-
...(how.journey === journey ? {} : { mutateJourney: (j) =>
|
|
73
|
+
...(how.journey === journey ? {} : { mutateJourney: (j) => describe(j, m, lintOpts).journey }),
|
|
75
74
|
...(how.skipIndex === undefined ? {} : { skipStep: (i) => i === how.skipIndex }),
|
|
76
75
|
...(how.blockIndex === undefined ? {} : { blockWritesAtStep: how.blockIndex }),
|
|
77
76
|
});
|
|
78
77
|
const blocked = r.blockedWrites ?? [];
|
|
79
78
|
const blockedFields = how.blockIndex === undefined ? {} : { blockedWrites: blocked.map((b) => `${b.method} ${b.path}`) };
|
|
80
79
|
if (how.blockIndex !== undefined && !blockedOwnWrite(how.blockRequests ?? [], blocked)) {
|
|
81
|
-
|
|
82
|
-
...fields,
|
|
80
|
+
return {
|
|
83
81
|
outcome: "not-applied",
|
|
84
82
|
failedSites: [],
|
|
85
83
|
...blockedFields,
|
|
86
84
|
reason: `step ${m.step}'s own write was not blocked${(how.blockRequests ?? []).length === 0 ? "" : ` (recorded: ${(how.blockRequests ?? []).join(", ")})`}`,
|
|
87
|
-
}
|
|
88
|
-
continue;
|
|
85
|
+
};
|
|
89
86
|
}
|
|
90
|
-
|
|
91
|
-
mutations.push({
|
|
92
|
-
...fields,
|
|
87
|
+
return {
|
|
93
88
|
outcome: r.outcome === "quarantined" ? "failed" : "passed",
|
|
94
|
-
failedSites,
|
|
89
|
+
failedSites: failedSitesOf(r, r.outcomeFailures ?? []),
|
|
95
90
|
...blockedFields,
|
|
96
91
|
...(r.outcome === "quarantined" ? { reason: r.reason } : {}),
|
|
97
|
-
}
|
|
92
|
+
};
|
|
98
93
|
}
|
|
99
94
|
catch (err) {
|
|
100
|
-
|
|
95
|
+
return { outcome: "error", failedSites: [], reason: err instanceof Error ? err.message : String(err) };
|
|
101
96
|
}
|
|
97
|
+
};
|
|
98
|
+
for (const m of plan.mutations) {
|
|
99
|
+
const first = await replay(m, mutationReplay);
|
|
100
|
+
// #554: a first failure at the mutated step's own postcondition hides the LATER paired sites
|
|
101
|
+
// behind it; one relaxed replay (same action, the step's own expect/waitFor left out) judges them.
|
|
102
|
+
const relaxed = needsRelaxedReplay(plan, m, first) ? await replay(m, relaxedMutationReplay) : undefined;
|
|
103
|
+
mutations.push({ kind: m.kind, step: m.step, id: m.id, ...first, ...(relaxed === undefined ? {} : { relaxed }) });
|
|
102
104
|
}
|
|
103
105
|
}
|
|
104
|
-
const results = new Map(mutations.map((m) => [m.id, { outcome: m.outcome, failedSites: m.failedSites }]));
|
|
106
|
+
const results = new Map(mutations.map((m) => [m.id, { outcome: m.outcome, failedSites: m.failedSites, ...(m.relaxed === undefined ? {} : { relaxed: m.relaxed }) }]));
|
|
105
107
|
// Base failed: nothing ran, so every paired assertion is an `error` (no proof either way).
|
|
106
108
|
const judged = judgeAssertions(journey, plan, results);
|
|
107
109
|
const assertions = judged.map((a) => ({ site: a.site, check: checkOf.get(a.site) ?? a.site, verdict: a.verdict, ...(a.provedBy === undefined ? {} : { provedBy: a.provedBy }) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journey-verify.js","sourceRoot":"","sources":["../src/journey-verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,oBAAoB,
|
|
1
|
+
{"version":3,"file":"journey-verify.js","sourceRoot":"","sources":["../src/journey-verify.ts"],"names":[],"mappings":"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"}
|
package/dist/load-api.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { FsJourneyStore, JourneyRegistry, deriveParamSchema, secretParamValues, validateParams } from "@jevitate/journey";
|
|
1
|
+
import { FsJourneyStore, JourneyRegistry, deriveParamSchema, secretParamNames, secretParamValues, validateParams } from "@jevitate/journey";
|
|
2
|
+
import { createHttpProbe, httpCheckRefs } from "./http-probe.js";
|
|
2
3
|
import { gateJourney } from "./site-gate-cli.js";
|
|
3
4
|
import { safeRunPolicy } from "@jevitate/domain";
|
|
4
5
|
import { PlaywrightBrowserPort } from "@jevitate/playwright";
|
|
@@ -66,7 +67,12 @@ export async function runJourneyLoadTest(opts) {
|
|
|
66
67
|
const actor = CastActor.named(`load-actor-${actorIndex}`).whoCan(new BrowseTheWeb(session, allowedOrigins), ...gate.abilities);
|
|
67
68
|
// #400: a load iteration means the same as a `journey run` — the Journey's end state and
|
|
68
69
|
// each step's `expectRequests` are judged, so a replay whose checks fail is not an ok run.
|
|
69
|
-
const outcomeChecks = new JourneyOutcomeChecks(session.page, journey, {
|
|
70
|
+
const outcomeChecks = new JourneyOutcomeChecks(session.page, journey, {
|
|
71
|
+
secrets: secretParamValues(journey, opts.params),
|
|
72
|
+
// #543: http end-state checks request only origins in this run's allowlist.
|
|
73
|
+
httpProbe: createHttpProbe({ allowlist: allowedOrigins }),
|
|
74
|
+
resolveRef: httpCheckRefs({ params: opts.params, secretParams: secretParamNames(journey, opts.params) }),
|
|
75
|
+
});
|
|
70
76
|
const observer = outcomeChecks.observer();
|
|
71
77
|
const interpreter = observer === undefined ? new RecordingInterpreter({ fixtureBaseDir }) : new RecordingInterpreter({ observer, fixtureBaseDir });
|
|
72
78
|
const runner = new JourneyRunner(actor, interpreter);
|
package/dist/load-api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-api.js","sourceRoot":"","sources":["../src/load-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"load-api.js","sourceRoot":"","sources":["../src/load-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { Page } from "playwright";
|
|
2
|
+
/**
|
|
3
|
+
* TEST SUPPORT (#540, #547): decodes a recorded WebM in a real browser page and samples EVERY frame
|
|
4
|
+
* over the given rects, so a pixel-mask test can prove no frame showed a secret unmasked. Shared by
|
|
5
|
+
* the served pixel-mask suites; not used by the product.
|
|
6
|
+
*/
|
|
7
|
+
export type FrameRect = {
|
|
8
|
+
readonly x: number;
|
|
9
|
+
readonly y: number;
|
|
10
|
+
readonly width: number;
|
|
11
|
+
readonly height: number;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* One rect in one frame: the share of mask-coloured (magenta) pixels, near-white (unpainted page)
|
|
15
|
+
* pixels, near-black pixels (the encoder's pre-roll before the first screencast frame) and anything
|
|
16
|
+
* else (page content — possibly the secret), so a failure says WHAT the frame showed.
|
|
17
|
+
*/
|
|
18
|
+
export interface FrameSample {
|
|
19
|
+
readonly t: number;
|
|
20
|
+
readonly end: number;
|
|
21
|
+
readonly mask: number;
|
|
22
|
+
readonly blank: number;
|
|
23
|
+
readonly dark: number;
|
|
24
|
+
readonly other: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Every frame (25 fps, mid-frame seeks) of the video at `videoPath`, per rect. `reader` is any open
|
|
28
|
+
* page (it decodes the video; a page of the served origin is enough); `viewport` is the recorded
|
|
29
|
+
* page's CSS viewport, which the rects are in.
|
|
30
|
+
*/
|
|
31
|
+
export declare function sampleVideoFrames(reader: Page, videoPath: string, rects: readonly FrameRect[], viewport?: {
|
|
32
|
+
readonly width: number;
|
|
33
|
+
readonly height: number;
|
|
34
|
+
}): Promise<FrameSample[][]>;
|
|
35
|
+
/** A readable description of one sample (never the pixels themselves). */
|
|
36
|
+
export declare function describeSample(i: number, s: FrameSample): string;
|
|
37
|
+
/** A sample is safe when it is the mask colour, or not painted yet (page white, or the encoder's black pre-roll). */
|
|
38
|
+
export declare function sampleIsSafe(s: FrameSample): boolean;
|
|
39
|
+
/** Every unsafe sample of every frame, described — empty when no frame showed page content over a rect. */
|
|
40
|
+
export declare function unmaskedSamples(frames: readonly (readonly FrameSample[])[]): string[];
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
/**
|
|
3
|
+
* Every frame (25 fps, mid-frame seeks) of the video at `videoPath`, per rect. `reader` is any open
|
|
4
|
+
* page (it decodes the video; a page of the served origin is enough); `viewport` is the recorded
|
|
5
|
+
* page's CSS viewport, which the rects are in.
|
|
6
|
+
*/
|
|
7
|
+
export async function sampleVideoFrames(reader, videoPath, rects, viewport = { width: 800, height: 600 }) {
|
|
8
|
+
const webm = readFileSync(videoPath).toString("base64");
|
|
9
|
+
return reader.evaluate(async ({ src, rects, vw, vh }) => {
|
|
10
|
+
const v = document.createElement("video");
|
|
11
|
+
v.muted = true;
|
|
12
|
+
v.src = src;
|
|
13
|
+
await new Promise((r, j) => {
|
|
14
|
+
v.onloadeddata = r;
|
|
15
|
+
v.onerror = () => j(new Error("video decode failed"));
|
|
16
|
+
});
|
|
17
|
+
// WebM from a screencast may report Infinity duration until scanned to the end.
|
|
18
|
+
if (!Number.isFinite(v.duration)) {
|
|
19
|
+
v.currentTime = 1e6;
|
|
20
|
+
await new Promise((r) => (v.ontimeupdate = r));
|
|
21
|
+
}
|
|
22
|
+
const end = v.duration;
|
|
23
|
+
const c = document.createElement("canvas");
|
|
24
|
+
c.width = v.videoWidth;
|
|
25
|
+
c.height = v.videoHeight;
|
|
26
|
+
const g = c.getContext("2d", { willReadFrequently: true });
|
|
27
|
+
const sx = v.videoWidth / vw;
|
|
28
|
+
const sy = v.videoHeight / vh;
|
|
29
|
+
const out = [];
|
|
30
|
+
// Mid-frame times (a 25 fps frame lasts 0.04 s), so each seek lands inside one frame.
|
|
31
|
+
for (let t = 0.02; t < end; t += 0.04) {
|
|
32
|
+
v.currentTime = t;
|
|
33
|
+
await new Promise((r) => (v.onseeked = r));
|
|
34
|
+
g.drawImage(v, 0, 0);
|
|
35
|
+
out.push(rects.map((r) => {
|
|
36
|
+
// The rect's interior (compression softens a box's edges).
|
|
37
|
+
const x = Math.floor(r.x * sx) + 2;
|
|
38
|
+
const y = Math.floor(r.y * sy) + 2;
|
|
39
|
+
const w = Math.max(1, Math.floor(r.width * sx) - 4);
|
|
40
|
+
const h = Math.max(1, Math.floor(r.height * sy) - 4);
|
|
41
|
+
const d = g.getImageData(x, y, w, h).data;
|
|
42
|
+
let mask = 0;
|
|
43
|
+
let blank = 0;
|
|
44
|
+
let dark = 0;
|
|
45
|
+
for (let i = 0; i < d.length; i += 4) {
|
|
46
|
+
if (d[i] > 180 && d[i + 1] < 90 && d[i + 2] > 180)
|
|
47
|
+
mask++;
|
|
48
|
+
else if (d[i] > 235 && d[i + 1] > 235 && d[i + 2] > 235)
|
|
49
|
+
blank++;
|
|
50
|
+
else if (d[i] < 20 && d[i + 1] < 20 && d[i + 2] < 20)
|
|
51
|
+
dark++;
|
|
52
|
+
}
|
|
53
|
+
const n = d.length / 4;
|
|
54
|
+
return { t: v.currentTime, end, mask: mask / n, blank: blank / n, dark: dark / n, other: (n - mask - blank - dark) / n };
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
return out;
|
|
58
|
+
}, { src: `data:video/webm;base64,${webm}`, rects: rects.map((r) => ({ x: r.x, y: r.y, width: r.width, height: r.height })), vw: viewport.width, vh: viewport.height });
|
|
59
|
+
}
|
|
60
|
+
/** A readable description of one sample (never the pixels themselves). */
|
|
61
|
+
export function describeSample(i, s) {
|
|
62
|
+
return `rect ${i} at t=${s.t.toFixed(2)}s of ${s.end.toFixed(2)}s: mask ${s.mask.toFixed(2)}, blank ${s.blank.toFixed(2)}, dark ${s.dark.toFixed(2)}, other ${s.other.toFixed(2)} (other = page content, possibly the secret)`;
|
|
63
|
+
}
|
|
64
|
+
/** A sample is safe when it is the mask colour, or not painted yet (page white, or the encoder's black pre-roll). */
|
|
65
|
+
export function sampleIsSafe(s) {
|
|
66
|
+
return s.mask > 0.9 || s.blank > 0.95 || s.dark > 0.95;
|
|
67
|
+
}
|
|
68
|
+
/** Every unsafe sample of every frame, described — empty when no frame showed page content over a rect. */
|
|
69
|
+
export function unmaskedSamples(frames) {
|
|
70
|
+
const out = [];
|
|
71
|
+
for (const frame of frames)
|
|
72
|
+
for (const [i, s] of frame.entries())
|
|
73
|
+
if (!sampleIsSafe(s))
|
|
74
|
+
out.push(describeSample(i, s));
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=mask-video-frames.testkit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mask-video-frames.testkit.js","sourceRoot":"","sources":["../src/mask-video-frames.testkit.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp-cli-tools.js
CHANGED
|
@@ -272,7 +272,7 @@ export const CLI_TOOL_SPECS = [
|
|
|
272
272
|
fixtureIdentity: FIXTURE_IDENTITY,
|
|
273
273
|
...ENVIRONMENT,
|
|
274
274
|
},
|
|
275
|
-
omitted: { "--dir": OMIT.storeDir, ...HOOK_FLAGS, ...BROWSER_FLAGS, ...JSON_FLAG },
|
|
275
|
+
omitted: { "--dir": OMIT.storeDir, "--allow": OMIT.mcpOrigins, ...HOOK_FLAGS, ...BROWSER_FLAGS, ...JSON_FLAG },
|
|
276
276
|
},
|
|
277
277
|
},
|
|
278
278
|
{
|
|
@@ -569,6 +569,7 @@ export const CLI_TOOL_SPECS = [
|
|
|
569
569
|
paid: many("--paid"),
|
|
570
570
|
allowControl: many("--allow-control"),
|
|
571
571
|
allowDestructive: b("--allow-destructive"),
|
|
572
|
+
allowWrites: b("--allow-writes"),
|
|
572
573
|
dialogs: s("--dialogs", { enum: ["dismiss", "accept"] }),
|
|
573
574
|
readRpc: many("--read-rpc"),
|
|
574
575
|
hangReplays: n("--hang-replays"),
|
|
@@ -576,12 +577,16 @@ export const CLI_TOOL_SPECS = [
|
|
|
576
577
|
longPollMs: n("--long-poll-ms"),
|
|
577
578
|
apiPrefix: many("--api-prefix"),
|
|
578
579
|
ignoreNoProgress: many("--ignore-no-progress"),
|
|
580
|
+
// #544: mission fixtures set up before / restored after every take; the Journey records the file.
|
|
581
|
+
fixtures: path("--fixtures"),
|
|
582
|
+
fixtureIdentity: FIXTURE_IDENTITY,
|
|
579
583
|
screenshots: { kind: "screenshots", flag: "--screenshots" },
|
|
580
584
|
...EMULATION,
|
|
581
585
|
...JEV_AI,
|
|
582
586
|
},
|
|
583
587
|
omitted: {
|
|
584
588
|
"--journeys-dir": OMIT.storeDir,
|
|
589
|
+
...HOOK_FLAGS,
|
|
585
590
|
...BROWSER_FLAGS,
|
|
586
591
|
...JSON_FLAG,
|
|
587
592
|
"--secret": OMIT.envSecret,
|
|
@@ -589,6 +594,16 @@ export const CLI_TOOL_SPECS = [
|
|
|
589
594
|
"--totp": OMIT.envSecret,
|
|
590
595
|
"--allow-secret-cmd": OMIT.envSecret,
|
|
591
596
|
"--secret-cmd-attempts": OMIT.envSecret,
|
|
597
|
+
"--allow-log-cmd": OMIT.logCmd,
|
|
598
|
+
"--log-source": OMIT.logCmd,
|
|
599
|
+
"--log-defect": OMIT.logCmd,
|
|
600
|
+
"--log-ignore": OMIT.logCmd,
|
|
601
|
+
"--log-scope": OMIT.logCmd,
|
|
602
|
+
"--log-correlation-header": OMIT.logCmd,
|
|
603
|
+
"--log-id-pattern": OMIT.logCmd,
|
|
604
|
+
"--log-quiet-ok": OMIT.logCmd,
|
|
605
|
+
"--server-log-drain-ms": OMIT.logCmd,
|
|
606
|
+
"--log-triage": OMIT.logTriage,
|
|
592
607
|
},
|
|
593
608
|
},
|
|
594
609
|
},
|