@riddledc/riddle-proof 0.7.207 → 0.7.208

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/cli.cjs CHANGED
@@ -16791,6 +16791,12 @@ function profileSetupScreenshotCount(viewports) {
16791
16791
  function profileSetupReceiptTotal(viewports, key) {
16792
16792
  return viewports.reduce((sum, viewport) => sum + setupReceiptArray(viewport, key).filter((receipt) => receipt.ok !== false).length, 0);
16793
16793
  }
16794
+ function profileSetupActionCount(viewports, action) {
16795
+ return viewports.reduce((sum, viewport) => {
16796
+ const actionCounts = cliRecord(viewport.action_counts);
16797
+ return sum + (cliFiniteNumber(actionCounts?.[action]) || 0);
16798
+ }, 0);
16799
+ }
16794
16800
  function profileSetupFailureCount(viewports) {
16795
16801
  return viewports.reduce((sum, viewport) => {
16796
16802
  const failed = Array.isArray(viewport.failed) ? viewport.failed : [];
@@ -17191,7 +17197,19 @@ function profilePackReceiptStatus(result, metadata, receipt) {
17191
17197
  const visibleCleanupActionCount = profileVisibleCleanupActionCount(setupViewports);
17192
17198
  const setupFailureCount = profileSetupFailureCount(setupViewports);
17193
17199
  const setupObstructionCount = profileSetupObstructionCount(setupViewports);
17194
- const inputDispatchCount = profileSetupReceiptTotal(setupViewports, "drag") + profileSetupReceiptTotal(setupViewports, "tap") + tapUntilCount + profileSetupReceiptTotal(setupViewports, "press") + profileSetupReceiptTotal(setupViewports, "keyboard_sequence");
17200
+ const keyboardReceipts = setupViewports.flatMap((viewport) => setupReceiptArray(viewport, "keyboard")).filter((item) => item.ok !== false);
17201
+ const keyboardReceiptDispatchCount = keyboardReceipts.length;
17202
+ const keyboardActionDispatchCount = ["press", "key_down", "key_up", "keyboard_sequence"].reduce((sum, action) => sum + profileSetupActionCount(setupViewports, action), 0);
17203
+ const keyboardDispatchCount = keyboardReceiptDispatchCount > 0 ? keyboardReceiptDispatchCount : keyboardActionDispatchCount;
17204
+ const keyboardKeyMatches = (item, expected) => {
17205
+ const key = (cliString(item.key) || cliString(item.code) || "").toLowerCase();
17206
+ return key === expected || key.includes(expected);
17207
+ };
17208
+ const hasKeyboardKeyDownReceipt = keyboardReceipts.some((item) => cliString(item.action) === "key_down") || profileSetupActionCount(setupViewports, "key_down") > 0;
17209
+ const hasKeyboardKeyUpReceipt = keyboardReceipts.some((item) => cliString(item.action) === "key_up") || profileSetupActionCount(setupViewports, "key_up") > 0;
17210
+ const hasShiftKeyDownReceipt = keyboardReceipts.some((item) => cliString(item.action) === "key_down" && keyboardKeyMatches(item, "shift"));
17211
+ const hasShiftKeyUpReceipt = keyboardReceipts.some((item) => cliString(item.action) === "key_up" && keyboardKeyMatches(item, "shift"));
17212
+ const inputDispatchCount = profileSetupReceiptTotal(setupViewports, "drag") + profileSetupReceiptTotal(setupViewports, "tap") + tapUntilCount + profileSetupReceiptTotal(setupViewports, "press") + profileSetupReceiptTotal(setupViewports, "keyboard_sequence") + keyboardDispatchCount;
17195
17213
  const canvasReceipts = setupViewports.flatMap((viewport) => setupReceiptArray(viewport, "canvas_signature"));
17196
17214
  const hasCanvasChange = canvasReceipts.some((item) => item.ok !== false && item.changed === true);
17197
17215
  const canvasSignatureHashes = canvasReceipts.filter((item) => item.ok !== false).map((item) => cliString(item.hash)).filter(Boolean);
@@ -17222,7 +17240,28 @@ function profilePackReceiptStatus(result, metadata, receipt) {
17222
17240
  const hasSetupReceipts = setupResultCount > 0 || Boolean(setupSummary);
17223
17241
  const hasTextVisibility = profileHasPassedCheck(result, ["text_visible", "selector_text_visible", "selector_visible"]);
17224
17242
  const hasTextAbsence = profileHasPassedCheck(result, ["text_absent", "selector_text_absent"]);
17225
- const hasMeasuredStateChange = hasNaturalInput || hasCanvasChange || valueReceipts.some((item) => setupReturnSummaryValue(item, ["changed"]) === true || setupReturnSummaryValue(item, ["nonWhiteDelta", "darkDelta", "pixelDelta", "movementDelta"]) !== void 0);
17243
+ const measuredStateMetricNames = [
17244
+ "delta",
17245
+ "stateDelta",
17246
+ "positionDelta",
17247
+ "movementDelta",
17248
+ "speedDelta",
17249
+ "velocityDelta",
17250
+ "distanceDelta",
17251
+ "distanceGain",
17252
+ "scoreDelta",
17253
+ "scoreGain",
17254
+ "energyDelta",
17255
+ "energyDrop",
17256
+ "energyRecovered",
17257
+ "progressDelta",
17258
+ "progressGain"
17259
+ ];
17260
+ const hasMeasuredStateMetric = valueReceipts.some((item) => measuredStateMetricNames.some((name) => {
17261
+ const value = cliFiniteNumber(setupReturnSummaryValue(item, [name]));
17262
+ return value !== void 0 && Math.abs(value) > 0;
17263
+ }));
17264
+ const hasMeasuredStateChange = hasNaturalInput || hasCanvasChange || valueReceipts.some((item) => setupReturnSummaryValue(item, ["changed"]) === true || setupReturnSummaryValue(item, ["nonWhiteDelta", "darkDelta", "pixelDelta", "movementDelta"]) !== void 0) || hasMeasuredStateMetric;
17226
17265
  const hasMovingPlayabilityReceipt = valueReceipts.some((item) => {
17227
17266
  const started = setupReturnSummaryValue(item, ["started", "runStarted", "playStarted"]) === true;
17228
17267
  const distance = cliFiniteNumber(setupReturnSummaryValue(item, ["distance", "distanceMeters", "travelDistance"]));
@@ -17468,6 +17507,14 @@ function profilePackReceiptStatus(result, metadata, receipt) {
17468
17507
  );
17469
17508
  }
17470
17509
  if (text.includes("input dispatch") || text.includes("pointer") || text.includes("touch") || text.includes("key event") || text.includes("trusted-event")) {
17510
+ if (text.includes("key_down") || text.includes("key down") || text.includes("key-up") || text.includes("key_up")) {
17511
+ const hasSpecificKeyboardDispatch = text.includes("shift") ? hasShiftKeyDownReceipt && hasShiftKeyUpReceipt : hasKeyboardKeyDownReceipt && hasKeyboardKeyUpReceipt;
17512
+ return profileReceiptSignalStatus(
17513
+ hasSpecificKeyboardDispatch,
17514
+ "keyboard key_down/key_up dispatch evidence present",
17515
+ "keyboard key_down/key_up dispatch evidence missing"
17516
+ );
17517
+ }
17471
17518
  return profileReceiptSignalStatus(inputDispatchCount > 0 || hasNaturalInput, "input dispatch evidence present", "input dispatch evidence missing");
17472
17519
  }
17473
17520
  if (text.includes("offline audio") || text.includes("audio") && text.includes("metric")) {
package/dist/cli.js CHANGED
@@ -616,6 +616,12 @@ function profileSetupScreenshotCount(viewports) {
616
616
  function profileSetupReceiptTotal(viewports, key) {
617
617
  return viewports.reduce((sum, viewport) => sum + setupReceiptArray(viewport, key).filter((receipt) => receipt.ok !== false).length, 0);
618
618
  }
619
+ function profileSetupActionCount(viewports, action) {
620
+ return viewports.reduce((sum, viewport) => {
621
+ const actionCounts = cliRecord(viewport.action_counts);
622
+ return sum + (cliFiniteNumber(actionCounts?.[action]) || 0);
623
+ }, 0);
624
+ }
619
625
  function profileSetupFailureCount(viewports) {
620
626
  return viewports.reduce((sum, viewport) => {
621
627
  const failed = Array.isArray(viewport.failed) ? viewport.failed : [];
@@ -1016,7 +1022,19 @@ function profilePackReceiptStatus(result, metadata, receipt) {
1016
1022
  const visibleCleanupActionCount = profileVisibleCleanupActionCount(setupViewports);
1017
1023
  const setupFailureCount = profileSetupFailureCount(setupViewports);
1018
1024
  const setupObstructionCount = profileSetupObstructionCount(setupViewports);
1019
- const inputDispatchCount = profileSetupReceiptTotal(setupViewports, "drag") + profileSetupReceiptTotal(setupViewports, "tap") + tapUntilCount + profileSetupReceiptTotal(setupViewports, "press") + profileSetupReceiptTotal(setupViewports, "keyboard_sequence");
1025
+ const keyboardReceipts = setupViewports.flatMap((viewport) => setupReceiptArray(viewport, "keyboard")).filter((item) => item.ok !== false);
1026
+ const keyboardReceiptDispatchCount = keyboardReceipts.length;
1027
+ const keyboardActionDispatchCount = ["press", "key_down", "key_up", "keyboard_sequence"].reduce((sum, action) => sum + profileSetupActionCount(setupViewports, action), 0);
1028
+ const keyboardDispatchCount = keyboardReceiptDispatchCount > 0 ? keyboardReceiptDispatchCount : keyboardActionDispatchCount;
1029
+ const keyboardKeyMatches = (item, expected) => {
1030
+ const key = (cliString(item.key) || cliString(item.code) || "").toLowerCase();
1031
+ return key === expected || key.includes(expected);
1032
+ };
1033
+ const hasKeyboardKeyDownReceipt = keyboardReceipts.some((item) => cliString(item.action) === "key_down") || profileSetupActionCount(setupViewports, "key_down") > 0;
1034
+ const hasKeyboardKeyUpReceipt = keyboardReceipts.some((item) => cliString(item.action) === "key_up") || profileSetupActionCount(setupViewports, "key_up") > 0;
1035
+ const hasShiftKeyDownReceipt = keyboardReceipts.some((item) => cliString(item.action) === "key_down" && keyboardKeyMatches(item, "shift"));
1036
+ const hasShiftKeyUpReceipt = keyboardReceipts.some((item) => cliString(item.action) === "key_up" && keyboardKeyMatches(item, "shift"));
1037
+ const inputDispatchCount = profileSetupReceiptTotal(setupViewports, "drag") + profileSetupReceiptTotal(setupViewports, "tap") + tapUntilCount + profileSetupReceiptTotal(setupViewports, "press") + profileSetupReceiptTotal(setupViewports, "keyboard_sequence") + keyboardDispatchCount;
1020
1038
  const canvasReceipts = setupViewports.flatMap((viewport) => setupReceiptArray(viewport, "canvas_signature"));
1021
1039
  const hasCanvasChange = canvasReceipts.some((item) => item.ok !== false && item.changed === true);
1022
1040
  const canvasSignatureHashes = canvasReceipts.filter((item) => item.ok !== false).map((item) => cliString(item.hash)).filter(Boolean);
@@ -1047,7 +1065,28 @@ function profilePackReceiptStatus(result, metadata, receipt) {
1047
1065
  const hasSetupReceipts = setupResultCount > 0 || Boolean(setupSummary);
1048
1066
  const hasTextVisibility = profileHasPassedCheck(result, ["text_visible", "selector_text_visible", "selector_visible"]);
1049
1067
  const hasTextAbsence = profileHasPassedCheck(result, ["text_absent", "selector_text_absent"]);
1050
- const hasMeasuredStateChange = hasNaturalInput || hasCanvasChange || valueReceipts.some((item) => setupReturnSummaryValue(item, ["changed"]) === true || setupReturnSummaryValue(item, ["nonWhiteDelta", "darkDelta", "pixelDelta", "movementDelta"]) !== void 0);
1068
+ const measuredStateMetricNames = [
1069
+ "delta",
1070
+ "stateDelta",
1071
+ "positionDelta",
1072
+ "movementDelta",
1073
+ "speedDelta",
1074
+ "velocityDelta",
1075
+ "distanceDelta",
1076
+ "distanceGain",
1077
+ "scoreDelta",
1078
+ "scoreGain",
1079
+ "energyDelta",
1080
+ "energyDrop",
1081
+ "energyRecovered",
1082
+ "progressDelta",
1083
+ "progressGain"
1084
+ ];
1085
+ const hasMeasuredStateMetric = valueReceipts.some((item) => measuredStateMetricNames.some((name) => {
1086
+ const value = cliFiniteNumber(setupReturnSummaryValue(item, [name]));
1087
+ return value !== void 0 && Math.abs(value) > 0;
1088
+ }));
1089
+ const hasMeasuredStateChange = hasNaturalInput || hasCanvasChange || valueReceipts.some((item) => setupReturnSummaryValue(item, ["changed"]) === true || setupReturnSummaryValue(item, ["nonWhiteDelta", "darkDelta", "pixelDelta", "movementDelta"]) !== void 0) || hasMeasuredStateMetric;
1051
1090
  const hasMovingPlayabilityReceipt = valueReceipts.some((item) => {
1052
1091
  const started = setupReturnSummaryValue(item, ["started", "runStarted", "playStarted"]) === true;
1053
1092
  const distance = cliFiniteNumber(setupReturnSummaryValue(item, ["distance", "distanceMeters", "travelDistance"]));
@@ -1293,6 +1332,14 @@ function profilePackReceiptStatus(result, metadata, receipt) {
1293
1332
  );
1294
1333
  }
1295
1334
  if (text.includes("input dispatch") || text.includes("pointer") || text.includes("touch") || text.includes("key event") || text.includes("trusted-event")) {
1335
+ if (text.includes("key_down") || text.includes("key down") || text.includes("key-up") || text.includes("key_up")) {
1336
+ const hasSpecificKeyboardDispatch = text.includes("shift") ? hasShiftKeyDownReceipt && hasShiftKeyUpReceipt : hasKeyboardKeyDownReceipt && hasKeyboardKeyUpReceipt;
1337
+ return profileReceiptSignalStatus(
1338
+ hasSpecificKeyboardDispatch,
1339
+ "keyboard key_down/key_up dispatch evidence present",
1340
+ "keyboard key_down/key_up dispatch evidence missing"
1341
+ );
1342
+ }
1296
1343
  return profileReceiptSignalStatus(inputDispatchCount > 0 || hasNaturalInput, "input dispatch evidence present", "input dispatch evidence missing");
1297
1344
  }
1298
1345
  if (text.includes("offline audio") || text.includes("audio") && text.includes("metric")) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riddledc/riddle-proof",
3
- "version": "0.7.207",
3
+ "version": "0.7.208",
4
4
  "description": "Reusable Riddle Proof contracts and helpers for evidence-backed agent changes.",
5
5
  "license": "MIT",
6
6
  "author": "RiddleDC",