@riddledc/riddle-proof 0.7.128 → 0.7.130
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/{chunk-TO3FVF5S.js → chunk-ZJNM3YAB.js} +224 -21
- package/dist/cli.cjs +224 -21
- package/dist/cli.js +1 -1
- package/dist/index.cjs +224 -21
- package/dist/index.js +1 -1
- package/dist/profile.cjs +224 -21
- package/dist/profile.d.cts +2 -0
- package/dist/profile.d.ts +2 -0
- package/dist/profile.js +1 -1
- package/dist/proof-run-engine.d.cts +3 -3
- package/dist/proof-run-engine.d.ts +3 -3
- package/package.json +1 -1
package/dist/profile.cjs
CHANGED
|
@@ -654,6 +654,17 @@ function normalizeSetupActionCoordinateMode(value, index) {
|
|
|
654
654
|
if (normalized === "ratio" || normalized === "relative" || normalized === "fraction") return "ratio";
|
|
655
655
|
throw new Error(`target.setup_actions[${index}].coordinate_mode ${String(value)} is not supported. Supported coordinate modes: pixels, ratio.`);
|
|
656
656
|
}
|
|
657
|
+
function normalizeSetupActionPointerType(value, type, index) {
|
|
658
|
+
if (value === void 0 || value === null || value === "") return void 0;
|
|
659
|
+
if (type !== "drag") {
|
|
660
|
+
throw new Error(`target.setup_actions[${index}].pointer_type is only supported for drag actions.`);
|
|
661
|
+
}
|
|
662
|
+
const normalized = String(value).trim().replace(/-/g, "_").toLowerCase();
|
|
663
|
+
if (normalized === "mouse") return "mouse";
|
|
664
|
+
if (normalized === "touch" || normalized === "finger") return "touch";
|
|
665
|
+
if (normalized === "pen" || normalized === "stylus") return "pen";
|
|
666
|
+
throw new Error(`target.setup_actions[${index}].pointer_type ${String(value)} is not supported. Supported pointer types: mouse, touch, pen.`);
|
|
667
|
+
}
|
|
657
668
|
function normalizeSetupAction(input, index) {
|
|
658
669
|
if (!isRecord(input)) throw new Error(`target.setup_actions[${index}] must be an object.`);
|
|
659
670
|
const type = normalizeSetupActionType(stringValue(input.type), index);
|
|
@@ -672,6 +683,7 @@ function normalizeSetupAction(input, index) {
|
|
|
672
683
|
const toX = numberValue(valueFromOwn(input, "to_x", "toX", "end_x", "endX", "x2"));
|
|
673
684
|
const toY = numberValue(valueFromOwn(input, "to_y", "toY", "end_y", "endY", "y2"));
|
|
674
685
|
const coordinateMode = normalizeSetupActionCoordinateMode(valueFromOwn(input, "coordinate_mode", "coordinateMode", "coords", "units"), index);
|
|
686
|
+
const pointerType = normalizeSetupActionPointerType(valueFromOwn(input, "pointer_type", "pointerType", "input_type", "inputType"), type, index);
|
|
675
687
|
if (type === "drag") {
|
|
676
688
|
if (fromX === void 0 || fromY === void 0 || toX === void 0 || toY === void 0) {
|
|
677
689
|
throw new Error(`target.setup_actions[${index}] drag requires from_x, from_y, to_x, and to_y.`);
|
|
@@ -756,6 +768,7 @@ function normalizeSetupAction(input, index) {
|
|
|
756
768
|
force: type === "click" && (input.force === true || input.force_click === true || input.forceClick === true),
|
|
757
769
|
click_count: normalizeSetupActionClickCount(input, type, index),
|
|
758
770
|
coordinate_mode: coordinateMode,
|
|
771
|
+
pointer_type: pointerType,
|
|
759
772
|
from_x: fromX,
|
|
760
773
|
from_y: fromY,
|
|
761
774
|
to_x: toX,
|
|
@@ -1901,6 +1914,49 @@ function matchText(sample, check) {
|
|
|
1901
1914
|
}
|
|
1902
1915
|
return sample.includes(check.text || "");
|
|
1903
1916
|
}
|
|
1917
|
+
function compactTextEvidenceSample(value) {
|
|
1918
|
+
return String(value || "").replace(/\s+/g, " ").trim();
|
|
1919
|
+
}
|
|
1920
|
+
function textSampleAroundMatch(sample, index, length) {
|
|
1921
|
+
if (index < 0) return void 0;
|
|
1922
|
+
const source = String(sample || "");
|
|
1923
|
+
const context = 120;
|
|
1924
|
+
const start = Math.max(0, index - context);
|
|
1925
|
+
const end = Math.min(source.length, index + Math.max(length, 1) + context);
|
|
1926
|
+
const prefix = start > 0 ? "..." : "";
|
|
1927
|
+
const suffix = end < source.length ? "..." : "";
|
|
1928
|
+
const compacted = compactTextEvidenceSample(`${prefix}${source.slice(start, end)}${suffix}`);
|
|
1929
|
+
return compacted ? compacted.slice(0, 240) : void 0;
|
|
1930
|
+
}
|
|
1931
|
+
function textMatchSamples(sample, check) {
|
|
1932
|
+
const source = String(sample || "");
|
|
1933
|
+
if (!source) return [];
|
|
1934
|
+
if (check.pattern) {
|
|
1935
|
+
try {
|
|
1936
|
+
const flags = Array.from(new Set(String(check.flags || "").replace(/[gy]/g, "").split(""))).join("");
|
|
1937
|
+
const match = new RegExp(check.pattern, flags).exec(source);
|
|
1938
|
+
const sampleText2 = match ? textSampleAroundMatch(source, match.index, match[0]?.length || 1) : void 0;
|
|
1939
|
+
return sampleText2 ? [sampleText2] : [];
|
|
1940
|
+
} catch {
|
|
1941
|
+
return [];
|
|
1942
|
+
}
|
|
1943
|
+
}
|
|
1944
|
+
const text = check.text || "";
|
|
1945
|
+
if (!text) return [];
|
|
1946
|
+
const index = source.indexOf(text);
|
|
1947
|
+
const sampleText = textSampleAroundMatch(source, index, text.length);
|
|
1948
|
+
return sampleText ? [sampleText] : [];
|
|
1949
|
+
}
|
|
1950
|
+
function textCheckFailureSamples(viewport, check) {
|
|
1951
|
+
const key = textKey(check);
|
|
1952
|
+
const captured = viewport.text_match_samples?.[key] || [];
|
|
1953
|
+
const capturedSamples = captured.map((sample) => compactTextEvidenceSample(sample).slice(0, 240)).filter(Boolean);
|
|
1954
|
+
if (capturedSamples.length) return capturedSamples.slice(0, 3);
|
|
1955
|
+
const matchedSamples = textMatchSamples(viewport.body_text_sample || "", check);
|
|
1956
|
+
if (matchedSamples.length) return matchedSamples.slice(0, 3);
|
|
1957
|
+
const fallback = compactTextEvidenceSample(viewport.body_text_sample || "").slice(0, 240);
|
|
1958
|
+
return fallback ? [fallback] : [];
|
|
1959
|
+
}
|
|
1904
1960
|
function allowedMessageSample(input) {
|
|
1905
1961
|
if (!isRecord(input)) return String(input || "");
|
|
1906
1962
|
const parts = [
|
|
@@ -2345,10 +2401,17 @@ function assessCheckFromEvidence(check, evidence) {
|
|
|
2345
2401
|
if (check.type === "text_visible" || check.type === "text_absent") {
|
|
2346
2402
|
const key = textKey(check);
|
|
2347
2403
|
const expectedVisible = check.type === "text_visible";
|
|
2348
|
-
const
|
|
2404
|
+
const results = viewports.map((viewport) => {
|
|
2349
2405
|
const fromEvidence = viewport.text_matches?.[key];
|
|
2350
|
-
|
|
2406
|
+
const matched = typeof fromEvidence === "boolean" ? fromEvidence : matchText(viewport.body_text_sample || "", check);
|
|
2407
|
+
const failedAgainstExpectation = matched !== expectedVisible;
|
|
2408
|
+
return {
|
|
2409
|
+
viewport: viewport.name,
|
|
2410
|
+
matched,
|
|
2411
|
+
samples: failedAgainstExpectation ? textCheckFailureSamples(viewport, check) : []
|
|
2412
|
+
};
|
|
2351
2413
|
});
|
|
2414
|
+
const matches = results.map((result) => result.matched);
|
|
2352
2415
|
const failed = matches.filter((matched) => matched !== expectedVisible).length;
|
|
2353
2416
|
return {
|
|
2354
2417
|
type: check.type,
|
|
@@ -2357,7 +2420,8 @@ function assessCheckFromEvidence(check, evidence) {
|
|
|
2357
2420
|
evidence: {
|
|
2358
2421
|
text: check.text || null,
|
|
2359
2422
|
pattern: check.pattern || null,
|
|
2360
|
-
matches
|
|
2423
|
+
matches,
|
|
2424
|
+
viewports: results.map((result) => toJsonValue(result))
|
|
2361
2425
|
},
|
|
2362
2426
|
message: failed ? `Text assertion failed in ${failed} viewport(s).` : void 0
|
|
2363
2427
|
};
|
|
@@ -2944,6 +3008,48 @@ function textMatches(sample, check) {
|
|
|
2944
3008
|
}
|
|
2945
3009
|
return String(sample || "").includes(check.text || "");
|
|
2946
3010
|
}
|
|
3011
|
+
function compactTextEvidenceSample(value) {
|
|
3012
|
+
return String(value || "").replace(/\s+/g, " ").trim();
|
|
3013
|
+
}
|
|
3014
|
+
function textSampleAroundMatch(sample, index, length) {
|
|
3015
|
+
if (index < 0) return undefined;
|
|
3016
|
+
const source = String(sample || "");
|
|
3017
|
+
const context = 120;
|
|
3018
|
+
const start = Math.max(0, index - context);
|
|
3019
|
+
const end = Math.min(source.length, index + Math.max(length, 1) + context);
|
|
3020
|
+
const prefix = start > 0 ? "..." : "";
|
|
3021
|
+
const suffix = end < source.length ? "..." : "";
|
|
3022
|
+
const compacted = compactTextEvidenceSample(prefix + source.slice(start, end) + suffix);
|
|
3023
|
+
return compacted ? compacted.slice(0, 240) : undefined;
|
|
3024
|
+
}
|
|
3025
|
+
function textMatchSamples(sample, check) {
|
|
3026
|
+
const source = String(sample || "");
|
|
3027
|
+
if (!source) return [];
|
|
3028
|
+
if (check.pattern) {
|
|
3029
|
+
try {
|
|
3030
|
+
const flags = Array.from(new Set(String(check.flags || "").replace(/[gy]/g, "").split(""))).join("");
|
|
3031
|
+
const match = new RegExp(check.pattern, flags).exec(source);
|
|
3032
|
+
const sampleText = match ? textSampleAroundMatch(source, match.index, match[0] ? match[0].length : 1) : undefined;
|
|
3033
|
+
return sampleText ? [sampleText] : [];
|
|
3034
|
+
} catch { return []; }
|
|
3035
|
+
}
|
|
3036
|
+
const text = check.text || "";
|
|
3037
|
+
if (!text) return [];
|
|
3038
|
+
const sampleText = textSampleAroundMatch(source, source.indexOf(text), text.length);
|
|
3039
|
+
return sampleText ? [sampleText] : [];
|
|
3040
|
+
}
|
|
3041
|
+
function textCheckFailureSamples(viewport, check) {
|
|
3042
|
+
const key = check.pattern ? "pattern:" + check.pattern + "/" + (check.flags || "") : "text:" + (check.text || "");
|
|
3043
|
+
const captured = viewport && viewport.text_match_samples && Array.isArray(viewport.text_match_samples[key]) ? viewport.text_match_samples[key] : [];
|
|
3044
|
+
const capturedSamples = captured
|
|
3045
|
+
.map((sample) => compactTextEvidenceSample(sample).slice(0, 240))
|
|
3046
|
+
.filter(Boolean);
|
|
3047
|
+
if (capturedSamples.length) return capturedSamples.slice(0, 3);
|
|
3048
|
+
const matchedSamples = textMatchSamples(viewport && viewport.body_text_sample || "", check);
|
|
3049
|
+
if (matchedSamples.length) return matchedSamples.slice(0, 3);
|
|
3050
|
+
const fallback = compactTextEvidenceSample(viewport && viewport.body_text_sample || "").slice(0, 240);
|
|
3051
|
+
return fallback ? [fallback] : [];
|
|
3052
|
+
}
|
|
2947
3053
|
function allowedMessageSample(input) {
|
|
2948
3054
|
if (!input || typeof input !== "object" || Array.isArray(input)) return String(input || "");
|
|
2949
3055
|
const parts = [
|
|
@@ -4021,13 +4127,22 @@ function assessProfile(profile, evidence) {
|
|
|
4021
4127
|
if (check.type === "text_visible" || check.type === "text_absent") {
|
|
4022
4128
|
const key = check.pattern ? "pattern:" + check.pattern + "/" + (check.flags || "") : "text:" + (check.text || "");
|
|
4023
4129
|
const expectedVisible = check.type === "text_visible";
|
|
4024
|
-
const
|
|
4130
|
+
const results = checkViewports.map((viewport) => {
|
|
4131
|
+
const matched = viewport.text_matches && typeof viewport.text_matches[key] === "boolean" ? viewport.text_matches[key] : textMatches(viewport.body_text_sample || "", check);
|
|
4132
|
+
const failedAgainstExpectation = matched !== expectedVisible;
|
|
4133
|
+
return {
|
|
4134
|
+
viewport: viewport.name,
|
|
4135
|
+
matched,
|
|
4136
|
+
samples: failedAgainstExpectation ? textCheckFailureSamples(viewport, check) : [],
|
|
4137
|
+
};
|
|
4138
|
+
});
|
|
4139
|
+
const matches = results.map((result) => result.matched);
|
|
4025
4140
|
const failed = matches.filter((matched) => matched !== expectedVisible).length;
|
|
4026
4141
|
checks.push({
|
|
4027
4142
|
type: check.type,
|
|
4028
4143
|
label: check.label || check.type,
|
|
4029
4144
|
status: failed ? "failed" : "passed",
|
|
4030
|
-
evidence: { text: check.text, pattern: check.pattern, matches },
|
|
4145
|
+
evidence: { text: check.text, pattern: check.pattern, matches, viewports: results },
|
|
4031
4146
|
message: failed ? "Text assertion failed in " + failed + " viewport(s)." : undefined,
|
|
4032
4147
|
});
|
|
4033
4148
|
continue;
|
|
@@ -4347,6 +4462,36 @@ function textMatches(sample, check) {
|
|
|
4347
4462
|
}
|
|
4348
4463
|
return String(sample || "").includes(check.text || "");
|
|
4349
4464
|
}
|
|
4465
|
+
function compactTextEvidenceSample(value) {
|
|
4466
|
+
return String(value || "").replace(/\s+/g, " ").trim();
|
|
4467
|
+
}
|
|
4468
|
+
function textSampleAroundMatch(sample, index, length) {
|
|
4469
|
+
if (index < 0) return undefined;
|
|
4470
|
+
const source = String(sample || "");
|
|
4471
|
+
const context = 120;
|
|
4472
|
+
const start = Math.max(0, index - context);
|
|
4473
|
+
const end = Math.min(source.length, index + Math.max(length, 1) + context);
|
|
4474
|
+
const prefix = start > 0 ? "..." : "";
|
|
4475
|
+
const suffix = end < source.length ? "..." : "";
|
|
4476
|
+
const compacted = compactTextEvidenceSample(prefix + source.slice(start, end) + suffix);
|
|
4477
|
+
return compacted ? compacted.slice(0, 240) : undefined;
|
|
4478
|
+
}
|
|
4479
|
+
function textMatchSamples(sample, check) {
|
|
4480
|
+
const source = String(sample || "");
|
|
4481
|
+
if (!source) return [];
|
|
4482
|
+
if (check.pattern) {
|
|
4483
|
+
try {
|
|
4484
|
+
const flags = Array.from(new Set(String(check.flags || "").replace(/[gy]/g, "").split(""))).join("");
|
|
4485
|
+
const match = new RegExp(check.pattern, flags).exec(source);
|
|
4486
|
+
const sampleText = match ? textSampleAroundMatch(source, match.index, match[0] ? match[0].length : 1) : undefined;
|
|
4487
|
+
return sampleText ? [sampleText] : [];
|
|
4488
|
+
} catch { return []; }
|
|
4489
|
+
}
|
|
4490
|
+
const text = check.text || "";
|
|
4491
|
+
if (!text) return [];
|
|
4492
|
+
const sampleText = textSampleAroundMatch(source, source.indexOf(text), text.length);
|
|
4493
|
+
return sampleText ? [sampleText] : [];
|
|
4494
|
+
}
|
|
4350
4495
|
function profileCheckAppliesToViewport(check, viewport) {
|
|
4351
4496
|
if (!Array.isArray(check.viewports) || !check.viewports.length) return true;
|
|
4352
4497
|
return Boolean(viewport && viewport.name && check.viewports.includes(viewport.name));
|
|
@@ -4824,23 +4969,75 @@ async function executeSetupAction(action, ordinal, viewport) {
|
|
|
4824
4969
|
const requestedSteps = setupNumber(action.steps, 8);
|
|
4825
4970
|
const steps = Math.min(100, Math.max(1, Math.floor(requestedSteps || 8)));
|
|
4826
4971
|
const durationMs = setupNumber(action.duration_ms ?? action.durationMs, 0);
|
|
4827
|
-
|
|
4828
|
-
|
|
4829
|
-
|
|
4830
|
-
|
|
4831
|
-
|
|
4832
|
-
|
|
4833
|
-
|
|
4834
|
-
|
|
4835
|
-
|
|
4836
|
-
|
|
4837
|
-
|
|
4972
|
+
const pointerType = String(action.pointer_type || action.pointerType || "mouse").trim().toLowerCase();
|
|
4973
|
+
if (pointerType === "touch" || pointerType === "pen") {
|
|
4974
|
+
const localStart = {
|
|
4975
|
+
x: coordinate(fromX, box.width),
|
|
4976
|
+
y: coordinate(fromY, box.height),
|
|
4977
|
+
};
|
|
4978
|
+
const localEnd = {
|
|
4979
|
+
x: coordinate(toX, box.width),
|
|
4980
|
+
y: coordinate(toY, box.height),
|
|
4981
|
+
};
|
|
4982
|
+
await target.evaluate(async (element, payload) => {
|
|
4983
|
+
const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
4984
|
+
const rect = element.getBoundingClientRect();
|
|
4985
|
+
const pointerId = payload.pointerType === "touch" ? 11 : 12;
|
|
4986
|
+
const point = (progress) => ({
|
|
4987
|
+
clientX: rect.left + payload.start.x + (payload.end.x - payload.start.x) * progress,
|
|
4988
|
+
clientY: rect.top + payload.start.y + (payload.end.y - payload.start.y) * progress,
|
|
4989
|
+
});
|
|
4990
|
+
const dispatch = (type, progress) => {
|
|
4991
|
+
const coords = point(progress);
|
|
4992
|
+
element.dispatchEvent(new PointerEvent(type, {
|
|
4993
|
+
bubbles: true,
|
|
4994
|
+
cancelable: true,
|
|
4995
|
+
composed: true,
|
|
4996
|
+
pointerId,
|
|
4997
|
+
pointerType: payload.pointerType,
|
|
4998
|
+
isPrimary: true,
|
|
4999
|
+
buttons: type === "pointerup" ? 0 : 1,
|
|
5000
|
+
button: type === "pointerup" ? 0 : 0,
|
|
5001
|
+
clientX: coords.clientX,
|
|
5002
|
+
clientY: coords.clientY,
|
|
5003
|
+
}));
|
|
5004
|
+
};
|
|
5005
|
+
dispatch("pointerover", 0);
|
|
5006
|
+
dispatch("pointerenter", 0);
|
|
5007
|
+
dispatch("pointerdown", 0);
|
|
5008
|
+
for (let step = 1; step <= payload.steps; step += 1) {
|
|
5009
|
+
dispatch("pointermove", step / payload.steps);
|
|
5010
|
+
if (payload.durationMs && payload.steps > 1) await wait(payload.durationMs / payload.steps);
|
|
4838
5011
|
}
|
|
4839
|
-
|
|
4840
|
-
|
|
5012
|
+
dispatch("pointerup", 1);
|
|
5013
|
+
dispatch("pointerout", 1);
|
|
5014
|
+
dispatch("pointerleave", 1);
|
|
5015
|
+
}, {
|
|
5016
|
+
pointerType,
|
|
5017
|
+
start: localStart,
|
|
5018
|
+
end: localEnd,
|
|
5019
|
+
steps,
|
|
5020
|
+
durationMs,
|
|
5021
|
+
});
|
|
5022
|
+
} else {
|
|
5023
|
+
await page.mouse.move(start.x, start.y);
|
|
5024
|
+
await page.mouse.down();
|
|
5025
|
+
try {
|
|
5026
|
+
if (durationMs && steps > 1) {
|
|
5027
|
+
for (let step = 1; step <= steps; step += 1) {
|
|
5028
|
+
const progress = step / steps;
|
|
5029
|
+
await page.mouse.move(
|
|
5030
|
+
start.x + (end.x - start.x) * progress,
|
|
5031
|
+
start.y + (end.y - start.y) * progress,
|
|
5032
|
+
);
|
|
5033
|
+
await page.waitForTimeout(durationMs / steps);
|
|
5034
|
+
}
|
|
5035
|
+
} else {
|
|
5036
|
+
await page.mouse.move(end.x, end.y, { steps });
|
|
5037
|
+
}
|
|
5038
|
+
} finally {
|
|
5039
|
+
await page.mouse.up().catch(() => {});
|
|
4841
5040
|
}
|
|
4842
|
-
} finally {
|
|
4843
|
-
await page.mouse.up().catch(() => {});
|
|
4844
5041
|
}
|
|
4845
5042
|
return {
|
|
4846
5043
|
...base,
|
|
@@ -4853,6 +5050,7 @@ async function executeSetupAction(action, ordinal, viewport) {
|
|
|
4853
5050
|
from_y: fromY,
|
|
4854
5051
|
to_x: toX,
|
|
4855
5052
|
to_y: toY,
|
|
5053
|
+
pointer_type: pointerType,
|
|
4856
5054
|
steps,
|
|
4857
5055
|
duration_ms: durationMs || undefined,
|
|
4858
5056
|
};
|
|
@@ -6298,6 +6496,7 @@ async function captureViewport(viewport) {
|
|
|
6298
6496
|
const frames = {};
|
|
6299
6497
|
const text_sequences = {};
|
|
6300
6498
|
const text_matches = {};
|
|
6499
|
+
const text_match_samples = {};
|
|
6301
6500
|
const http_statuses = {};
|
|
6302
6501
|
const link_statuses = {};
|
|
6303
6502
|
for (const check of profile.checks || []) {
|
|
@@ -6319,7 +6518,10 @@ async function captureViewport(viewport) {
|
|
|
6319
6518
|
text_sequences[check.selector] = await selectorTextSequence(check.selector);
|
|
6320
6519
|
}
|
|
6321
6520
|
if ((check.type === "text_visible" || check.type === "text_absent") && (check.text || check.pattern)) {
|
|
6322
|
-
|
|
6521
|
+
const key = textKey(check);
|
|
6522
|
+
const sample = dom.body_text || dom.body_text_sample || "";
|
|
6523
|
+
text_matches[key] = textMatches(sample, check);
|
|
6524
|
+
text_match_samples[key] = textMatchSamples(sample, check);
|
|
6323
6525
|
}
|
|
6324
6526
|
if ((check.type === "frame_text_visible" || check.type === "frame_url_equals" || check.type === "frame_url_matches" || check.type === "frame_no_horizontal_overflow") && check.selector) {
|
|
6325
6527
|
selectors[check.selector] = selectors[check.selector] || await selectorStats(check.selector);
|
|
@@ -6396,6 +6598,7 @@ async function captureViewport(viewport) {
|
|
|
6396
6598
|
frames,
|
|
6397
6599
|
text_sequences,
|
|
6398
6600
|
text_matches,
|
|
6601
|
+
text_match_samples,
|
|
6399
6602
|
http_statuses,
|
|
6400
6603
|
link_statuses,
|
|
6401
6604
|
route_inventory: routeInventory,
|
package/dist/profile.d.cts
CHANGED
|
@@ -115,6 +115,7 @@ interface RiddleProofProfileSetupAction {
|
|
|
115
115
|
force?: boolean;
|
|
116
116
|
click_count?: number;
|
|
117
117
|
coordinate_mode?: "pixels" | "ratio";
|
|
118
|
+
pointer_type?: "mouse" | "touch" | "pen";
|
|
118
119
|
from_x?: number;
|
|
119
120
|
from_y?: number;
|
|
120
121
|
to_x?: number;
|
|
@@ -307,6 +308,7 @@ interface RiddleProofProfileViewportEvidence {
|
|
|
307
308
|
frames?: Record<string, Record<string, JsonValue>>;
|
|
308
309
|
text_sequences?: Record<string, Record<string, JsonValue>>;
|
|
309
310
|
text_matches?: Record<string, boolean>;
|
|
311
|
+
text_match_samples?: Record<string, string[]>;
|
|
310
312
|
http_statuses?: Record<string, Record<string, JsonValue>>;
|
|
311
313
|
link_statuses?: Record<string, Record<string, JsonValue>>;
|
|
312
314
|
route_inventory?: Record<string, JsonValue>;
|
package/dist/profile.d.ts
CHANGED
|
@@ -115,6 +115,7 @@ interface RiddleProofProfileSetupAction {
|
|
|
115
115
|
force?: boolean;
|
|
116
116
|
click_count?: number;
|
|
117
117
|
coordinate_mode?: "pixels" | "ratio";
|
|
118
|
+
pointer_type?: "mouse" | "touch" | "pen";
|
|
118
119
|
from_x?: number;
|
|
119
120
|
from_y?: number;
|
|
120
121
|
to_x?: number;
|
|
@@ -307,6 +308,7 @@ interface RiddleProofProfileViewportEvidence {
|
|
|
307
308
|
frames?: Record<string, Record<string, JsonValue>>;
|
|
308
309
|
text_sequences?: Record<string, Record<string, JsonValue>>;
|
|
309
310
|
text_matches?: Record<string, boolean>;
|
|
311
|
+
text_match_samples?: Record<string, string[]>;
|
|
310
312
|
http_statuses?: Record<string, Record<string, JsonValue>>;
|
|
311
313
|
link_statuses?: Record<string, Record<string, JsonValue>>;
|
|
312
314
|
route_inventory?: Record<string, JsonValue>;
|
package/dist/profile.js
CHANGED
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
resolveRiddleProofProfileTimeoutSec,
|
|
24
24
|
slugifyRiddleProofProfileName,
|
|
25
25
|
summarizeRiddleProofProfileResult
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-ZJNM3YAB.js";
|
|
27
27
|
export {
|
|
28
28
|
RIDDLE_PROOF_PROFILE_CHECK_TYPES,
|
|
29
29
|
RIDDLE_PROOF_PROFILE_EVIDENCE_VERSION,
|
|
@@ -292,7 +292,7 @@ declare function executeWorkflow(params: WorkflowParams, pluginConfig: any, reso
|
|
|
292
292
|
blocking?: boolean;
|
|
293
293
|
details?: Record<string, unknown>;
|
|
294
294
|
ok: boolean;
|
|
295
|
-
action: "
|
|
295
|
+
action: "setup" | "recon" | "author" | "implement" | "verify" | "ship" | "run";
|
|
296
296
|
state_path: string;
|
|
297
297
|
stage: any;
|
|
298
298
|
summary: string;
|
|
@@ -382,7 +382,7 @@ declare function executeWorkflow(params: WorkflowParams, pluginConfig: any, reso
|
|
|
382
382
|
continueWithStage?: WorkflowStage | null;
|
|
383
383
|
blocking?: boolean;
|
|
384
384
|
details?: Record<string, unknown>;
|
|
385
|
-
action: "
|
|
385
|
+
action: "setup" | "recon" | "author" | "implement" | "verify" | "ship" | "run";
|
|
386
386
|
state_path: string;
|
|
387
387
|
stage: any;
|
|
388
388
|
checkpoint: string;
|
|
@@ -659,7 +659,7 @@ declare function executeWorkflow(params: WorkflowParams, pluginConfig: any, reso
|
|
|
659
659
|
error?: undefined;
|
|
660
660
|
} | {
|
|
661
661
|
ok: boolean;
|
|
662
|
-
action: "
|
|
662
|
+
action: "setup" | "recon" | "author" | "implement" | "verify" | "ship" | "run";
|
|
663
663
|
state_path: string;
|
|
664
664
|
stage: any;
|
|
665
665
|
summary: string;
|
|
@@ -292,7 +292,7 @@ declare function executeWorkflow(params: WorkflowParams, pluginConfig: any, reso
|
|
|
292
292
|
blocking?: boolean;
|
|
293
293
|
details?: Record<string, unknown>;
|
|
294
294
|
ok: boolean;
|
|
295
|
-
action: "
|
|
295
|
+
action: "setup" | "recon" | "author" | "implement" | "verify" | "ship" | "run";
|
|
296
296
|
state_path: string;
|
|
297
297
|
stage: any;
|
|
298
298
|
summary: string;
|
|
@@ -382,7 +382,7 @@ declare function executeWorkflow(params: WorkflowParams, pluginConfig: any, reso
|
|
|
382
382
|
continueWithStage?: WorkflowStage | null;
|
|
383
383
|
blocking?: boolean;
|
|
384
384
|
details?: Record<string, unknown>;
|
|
385
|
-
action: "
|
|
385
|
+
action: "setup" | "recon" | "author" | "implement" | "verify" | "ship" | "run";
|
|
386
386
|
state_path: string;
|
|
387
387
|
stage: any;
|
|
388
388
|
checkpoint: string;
|
|
@@ -659,7 +659,7 @@ declare function executeWorkflow(params: WorkflowParams, pluginConfig: any, reso
|
|
|
659
659
|
error?: undefined;
|
|
660
660
|
} | {
|
|
661
661
|
ok: boolean;
|
|
662
|
-
action: "
|
|
662
|
+
action: "setup" | "recon" | "author" | "implement" | "verify" | "ship" | "run";
|
|
663
663
|
state_path: string;
|
|
664
664
|
stage: any;
|
|
665
665
|
summary: string;
|