@riddledc/riddle-proof 0.7.207 → 0.7.209

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 : [];
@@ -17172,6 +17178,7 @@ function profilePackReceiptStatus(result, metadata, receipt) {
17172
17178
  ...setupActionValueReceipts
17173
17179
  ].filter((item) => item.ok !== false);
17174
17180
  const clickCount = setupViewports.reduce((sum, viewport) => sum + (cliFiniteNumber(viewport.clicked_total) || 0), 0) + profileSetupReceiptTotal(setupViewports, "click") + profileSetupReceiptTotal(setupViewports, "click_count");
17181
+ const clickSequenceCount = setupViewports.reduce((sum, viewport) => sum + (cliFiniteNumber(viewport.click_sequence_total) || 0), 0);
17175
17182
  const clickFallbackTapKeys = /* @__PURE__ */ new Set();
17176
17183
  [
17177
17184
  ...setupViewports.flatMap((viewport) => setupReceiptArray(viewport, "clicked")),
@@ -17191,7 +17198,19 @@ function profilePackReceiptStatus(result, metadata, receipt) {
17191
17198
  const visibleCleanupActionCount = profileVisibleCleanupActionCount(setupViewports);
17192
17199
  const setupFailureCount = profileSetupFailureCount(setupViewports);
17193
17200
  const setupObstructionCount = profileSetupObstructionCount(setupViewports);
17194
- const inputDispatchCount = profileSetupReceiptTotal(setupViewports, "drag") + profileSetupReceiptTotal(setupViewports, "tap") + tapUntilCount + profileSetupReceiptTotal(setupViewports, "press") + profileSetupReceiptTotal(setupViewports, "keyboard_sequence");
17201
+ const keyboardReceipts = setupViewports.flatMap((viewport) => setupReceiptArray(viewport, "keyboard")).filter((item) => item.ok !== false);
17202
+ const keyboardReceiptDispatchCount = keyboardReceipts.length;
17203
+ const keyboardActionDispatchCount = ["press", "key_down", "key_up", "keyboard_sequence"].reduce((sum, action) => sum + profileSetupActionCount(setupViewports, action), 0);
17204
+ const keyboardDispatchCount = keyboardReceiptDispatchCount > 0 ? keyboardReceiptDispatchCount : keyboardActionDispatchCount;
17205
+ const keyboardKeyMatches = (item, expected) => {
17206
+ const key = (cliString(item.key) || cliString(item.code) || "").toLowerCase();
17207
+ return key === expected || key.includes(expected);
17208
+ };
17209
+ const hasKeyboardKeyDownReceipt = keyboardReceipts.some((item) => cliString(item.action) === "key_down") || profileSetupActionCount(setupViewports, "key_down") > 0;
17210
+ const hasKeyboardKeyUpReceipt = keyboardReceipts.some((item) => cliString(item.action) === "key_up") || profileSetupActionCount(setupViewports, "key_up") > 0;
17211
+ const hasShiftKeyDownReceipt = keyboardReceipts.some((item) => cliString(item.action) === "key_down" && keyboardKeyMatches(item, "shift"));
17212
+ const hasShiftKeyUpReceipt = keyboardReceipts.some((item) => cliString(item.action) === "key_up" && keyboardKeyMatches(item, "shift"));
17213
+ const inputDispatchCount = profileSetupReceiptTotal(setupViewports, "drag") + profileSetupReceiptTotal(setupViewports, "tap") + tapUntilCount + clickCount + clickSequenceCount + profileSetupReceiptTotal(setupViewports, "press") + profileSetupReceiptTotal(setupViewports, "keyboard_sequence") + keyboardDispatchCount;
17195
17214
  const canvasReceipts = setupViewports.flatMap((viewport) => setupReceiptArray(viewport, "canvas_signature"));
17196
17215
  const hasCanvasChange = canvasReceipts.some((item) => item.ok !== false && item.changed === true);
17197
17216
  const canvasSignatureHashes = canvasReceipts.filter((item) => item.ok !== false).map((item) => cliString(item.hash)).filter(Boolean);
@@ -17222,7 +17241,54 @@ function profilePackReceiptStatus(result, metadata, receipt) {
17222
17241
  const hasSetupReceipts = setupResultCount > 0 || Boolean(setupSummary);
17223
17242
  const hasTextVisibility = profileHasPassedCheck(result, ["text_visible", "selector_text_visible", "selector_visible"]);
17224
17243
  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);
17244
+ const measuredStateMetricNames = [
17245
+ "delta",
17246
+ "stateDelta",
17247
+ "positionDelta",
17248
+ "movementDelta",
17249
+ "speedDelta",
17250
+ "velocityDelta",
17251
+ "distanceDelta",
17252
+ "distanceGain",
17253
+ "scoreDelta",
17254
+ "scoreGain",
17255
+ "energyDelta",
17256
+ "energyDrop",
17257
+ "energyRecovered",
17258
+ "progressDelta",
17259
+ "progressGain"
17260
+ ];
17261
+ const hasMeasuredStateMetric = valueReceipts.some((item) => measuredStateMetricNames.some((name) => {
17262
+ const value = cliFiniteNumber(setupReturnSummaryValue(item, [name]));
17263
+ return value !== void 0 && Math.abs(value) > 0;
17264
+ }));
17265
+ const measuredAbsoluteStateMetricNames = [
17266
+ "coins",
17267
+ "totalCoins",
17268
+ "totalEarned",
17269
+ "totalClicks",
17270
+ "saveCoins",
17271
+ "saveTotalCoins",
17272
+ "saveTotalClicks",
17273
+ "perClick",
17274
+ "perSecond",
17275
+ "measuredCps",
17276
+ "clickPowerLevel",
17277
+ "autoClickerLevel",
17278
+ "level",
17279
+ "score",
17280
+ "count",
17281
+ "itemCount",
17282
+ "progress"
17283
+ ];
17284
+ const hasMeasuredAbsoluteStateChange = measuredAbsoluteStateMetricNames.some((name) => {
17285
+ const values = valueReceipts.map((item) => cliFiniteNumber(setupReturnSummaryValue(item, [name]))).filter((value) => value !== void 0 && Number.isFinite(value));
17286
+ if (values.length < 2) return false;
17287
+ return Math.max(...values) > Math.min(...values);
17288
+ });
17289
+ const hasMeasuredStateChange = hasNaturalInput || hasCanvasChange || valueReceipts.some((item) => setupReturnSummaryValue(item, ["changed"]) === true || setupReturnSummaryValue(item, ["nonWhiteDelta", "darkDelta", "pixelDelta", "movementDelta"]) !== void 0) || hasMeasuredStateMetric || hasMeasuredAbsoluteStateChange;
17290
+ const hasStorageStabilityReceipt = valueReceipts.some((item) => setupReturnSummaryValue(item, ["storageStable", "storage_stable", "saveStable", "save_stable", "persistenceStable", "persistence_stable"]) === true);
17291
+ const hasPersistedReturnStateReceipt = valueReceipts.some((item) => setupReturnSummaryValue(item, ["persistedFromHome", "persisted_from_home", "persistenceRestored", "persistence_restored", "restoredFromStorage", "restored_from_storage"]) === true || setupReturnSummaryValue(item, ["persisted", "restored", "reloaded"]) === true && (setupReturnSummaryValue(item, ["saveCoins", "saveTotalCoins", "saveTotalClicks", "saveTotal", "level", "coins"]) !== void 0 || cliString(item.return_stored_to)?.toLowerCase().includes("return")));
17226
17292
  const hasMovingPlayabilityReceipt = valueReceipts.some((item) => {
17227
17293
  const started = setupReturnSummaryValue(item, ["started", "runStarted", "playStarted"]) === true;
17228
17294
  const distance = cliFiniteNumber(setupReturnSummaryValue(item, ["distance", "distanceMeters", "travelDistance"]));
@@ -17373,6 +17439,20 @@ function profilePackReceiptStatus(result, metadata, receipt) {
17373
17439
  "route continuation receipt missing"
17374
17440
  );
17375
17441
  }
17442
+ if (text.includes("storage-stability") || text.includes("storage stability") || text.includes("storage-stable") || text.includes("storage stable") || (text.includes("storage") || text.includes("save data")) && text.includes("stable") || text.includes("passive income") && text.includes("unmounted")) {
17443
+ return profileReceiptSignalStatus(
17444
+ hasStorageStabilityReceipt,
17445
+ "storage-stability receipt present",
17446
+ "storage-stability receipt missing"
17447
+ );
17448
+ }
17449
+ if (text.includes("persisted return-state") || text.includes("persisted return state") || text.includes("return-state") || text.includes("return state") || (text.includes("persisted") || text.includes("persistence")) && (text.includes("return") || text.includes("reload") || text.includes("restored"))) {
17450
+ return profileReceiptSignalStatus(
17451
+ hasPersistedReturnStateReceipt,
17452
+ "persisted return-state receipt present",
17453
+ "persisted return-state receipt missing"
17454
+ );
17455
+ }
17376
17456
  if (text.includes("cleanup") && text.includes("action") && (text.includes("visible ui") || text.includes("visible"))) {
17377
17457
  return profileReceiptSignalStatus(
17378
17458
  visibleCleanupActionCount > 0,
@@ -17468,6 +17548,14 @@ function profilePackReceiptStatus(result, metadata, receipt) {
17468
17548
  );
17469
17549
  }
17470
17550
  if (text.includes("input dispatch") || text.includes("pointer") || text.includes("touch") || text.includes("key event") || text.includes("trusted-event")) {
17551
+ if (text.includes("key_down") || text.includes("key down") || text.includes("key-up") || text.includes("key_up")) {
17552
+ const hasSpecificKeyboardDispatch = text.includes("shift") ? hasShiftKeyDownReceipt && hasShiftKeyUpReceipt : hasKeyboardKeyDownReceipt && hasKeyboardKeyUpReceipt;
17553
+ return profileReceiptSignalStatus(
17554
+ hasSpecificKeyboardDispatch,
17555
+ "keyboard key_down/key_up dispatch evidence present",
17556
+ "keyboard key_down/key_up dispatch evidence missing"
17557
+ );
17558
+ }
17471
17559
  return profileReceiptSignalStatus(inputDispatchCount > 0 || hasNaturalInput, "input dispatch evidence present", "input dispatch evidence missing");
17472
17560
  }
17473
17561
  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 : [];
@@ -997,6 +1003,7 @@ function profilePackReceiptStatus(result, metadata, receipt) {
997
1003
  ...setupActionValueReceipts
998
1004
  ].filter((item) => item.ok !== false);
999
1005
  const clickCount = setupViewports.reduce((sum, viewport) => sum + (cliFiniteNumber(viewport.clicked_total) || 0), 0) + profileSetupReceiptTotal(setupViewports, "click") + profileSetupReceiptTotal(setupViewports, "click_count");
1006
+ const clickSequenceCount = setupViewports.reduce((sum, viewport) => sum + (cliFiniteNumber(viewport.click_sequence_total) || 0), 0);
1000
1007
  const clickFallbackTapKeys = /* @__PURE__ */ new Set();
1001
1008
  [
1002
1009
  ...setupViewports.flatMap((viewport) => setupReceiptArray(viewport, "clicked")),
@@ -1016,7 +1023,19 @@ function profilePackReceiptStatus(result, metadata, receipt) {
1016
1023
  const visibleCleanupActionCount = profileVisibleCleanupActionCount(setupViewports);
1017
1024
  const setupFailureCount = profileSetupFailureCount(setupViewports);
1018
1025
  const setupObstructionCount = profileSetupObstructionCount(setupViewports);
1019
- const inputDispatchCount = profileSetupReceiptTotal(setupViewports, "drag") + profileSetupReceiptTotal(setupViewports, "tap") + tapUntilCount + profileSetupReceiptTotal(setupViewports, "press") + profileSetupReceiptTotal(setupViewports, "keyboard_sequence");
1026
+ const keyboardReceipts = setupViewports.flatMap((viewport) => setupReceiptArray(viewport, "keyboard")).filter((item) => item.ok !== false);
1027
+ const keyboardReceiptDispatchCount = keyboardReceipts.length;
1028
+ const keyboardActionDispatchCount = ["press", "key_down", "key_up", "keyboard_sequence"].reduce((sum, action) => sum + profileSetupActionCount(setupViewports, action), 0);
1029
+ const keyboardDispatchCount = keyboardReceiptDispatchCount > 0 ? keyboardReceiptDispatchCount : keyboardActionDispatchCount;
1030
+ const keyboardKeyMatches = (item, expected) => {
1031
+ const key = (cliString(item.key) || cliString(item.code) || "").toLowerCase();
1032
+ return key === expected || key.includes(expected);
1033
+ };
1034
+ const hasKeyboardKeyDownReceipt = keyboardReceipts.some((item) => cliString(item.action) === "key_down") || profileSetupActionCount(setupViewports, "key_down") > 0;
1035
+ const hasKeyboardKeyUpReceipt = keyboardReceipts.some((item) => cliString(item.action) === "key_up") || profileSetupActionCount(setupViewports, "key_up") > 0;
1036
+ const hasShiftKeyDownReceipt = keyboardReceipts.some((item) => cliString(item.action) === "key_down" && keyboardKeyMatches(item, "shift"));
1037
+ const hasShiftKeyUpReceipt = keyboardReceipts.some((item) => cliString(item.action) === "key_up" && keyboardKeyMatches(item, "shift"));
1038
+ const inputDispatchCount = profileSetupReceiptTotal(setupViewports, "drag") + profileSetupReceiptTotal(setupViewports, "tap") + tapUntilCount + clickCount + clickSequenceCount + profileSetupReceiptTotal(setupViewports, "press") + profileSetupReceiptTotal(setupViewports, "keyboard_sequence") + keyboardDispatchCount;
1020
1039
  const canvasReceipts = setupViewports.flatMap((viewport) => setupReceiptArray(viewport, "canvas_signature"));
1021
1040
  const hasCanvasChange = canvasReceipts.some((item) => item.ok !== false && item.changed === true);
1022
1041
  const canvasSignatureHashes = canvasReceipts.filter((item) => item.ok !== false).map((item) => cliString(item.hash)).filter(Boolean);
@@ -1047,7 +1066,54 @@ function profilePackReceiptStatus(result, metadata, receipt) {
1047
1066
  const hasSetupReceipts = setupResultCount > 0 || Boolean(setupSummary);
1048
1067
  const hasTextVisibility = profileHasPassedCheck(result, ["text_visible", "selector_text_visible", "selector_visible"]);
1049
1068
  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);
1069
+ const measuredStateMetricNames = [
1070
+ "delta",
1071
+ "stateDelta",
1072
+ "positionDelta",
1073
+ "movementDelta",
1074
+ "speedDelta",
1075
+ "velocityDelta",
1076
+ "distanceDelta",
1077
+ "distanceGain",
1078
+ "scoreDelta",
1079
+ "scoreGain",
1080
+ "energyDelta",
1081
+ "energyDrop",
1082
+ "energyRecovered",
1083
+ "progressDelta",
1084
+ "progressGain"
1085
+ ];
1086
+ const hasMeasuredStateMetric = valueReceipts.some((item) => measuredStateMetricNames.some((name) => {
1087
+ const value = cliFiniteNumber(setupReturnSummaryValue(item, [name]));
1088
+ return value !== void 0 && Math.abs(value) > 0;
1089
+ }));
1090
+ const measuredAbsoluteStateMetricNames = [
1091
+ "coins",
1092
+ "totalCoins",
1093
+ "totalEarned",
1094
+ "totalClicks",
1095
+ "saveCoins",
1096
+ "saveTotalCoins",
1097
+ "saveTotalClicks",
1098
+ "perClick",
1099
+ "perSecond",
1100
+ "measuredCps",
1101
+ "clickPowerLevel",
1102
+ "autoClickerLevel",
1103
+ "level",
1104
+ "score",
1105
+ "count",
1106
+ "itemCount",
1107
+ "progress"
1108
+ ];
1109
+ const hasMeasuredAbsoluteStateChange = measuredAbsoluteStateMetricNames.some((name) => {
1110
+ const values = valueReceipts.map((item) => cliFiniteNumber(setupReturnSummaryValue(item, [name]))).filter((value) => value !== void 0 && Number.isFinite(value));
1111
+ if (values.length < 2) return false;
1112
+ return Math.max(...values) > Math.min(...values);
1113
+ });
1114
+ const hasMeasuredStateChange = hasNaturalInput || hasCanvasChange || valueReceipts.some((item) => setupReturnSummaryValue(item, ["changed"]) === true || setupReturnSummaryValue(item, ["nonWhiteDelta", "darkDelta", "pixelDelta", "movementDelta"]) !== void 0) || hasMeasuredStateMetric || hasMeasuredAbsoluteStateChange;
1115
+ const hasStorageStabilityReceipt = valueReceipts.some((item) => setupReturnSummaryValue(item, ["storageStable", "storage_stable", "saveStable", "save_stable", "persistenceStable", "persistence_stable"]) === true);
1116
+ const hasPersistedReturnStateReceipt = valueReceipts.some((item) => setupReturnSummaryValue(item, ["persistedFromHome", "persisted_from_home", "persistenceRestored", "persistence_restored", "restoredFromStorage", "restored_from_storage"]) === true || setupReturnSummaryValue(item, ["persisted", "restored", "reloaded"]) === true && (setupReturnSummaryValue(item, ["saveCoins", "saveTotalCoins", "saveTotalClicks", "saveTotal", "level", "coins"]) !== void 0 || cliString(item.return_stored_to)?.toLowerCase().includes("return")));
1051
1117
  const hasMovingPlayabilityReceipt = valueReceipts.some((item) => {
1052
1118
  const started = setupReturnSummaryValue(item, ["started", "runStarted", "playStarted"]) === true;
1053
1119
  const distance = cliFiniteNumber(setupReturnSummaryValue(item, ["distance", "distanceMeters", "travelDistance"]));
@@ -1198,6 +1264,20 @@ function profilePackReceiptStatus(result, metadata, receipt) {
1198
1264
  "route continuation receipt missing"
1199
1265
  );
1200
1266
  }
1267
+ if (text.includes("storage-stability") || text.includes("storage stability") || text.includes("storage-stable") || text.includes("storage stable") || (text.includes("storage") || text.includes("save data")) && text.includes("stable") || text.includes("passive income") && text.includes("unmounted")) {
1268
+ return profileReceiptSignalStatus(
1269
+ hasStorageStabilityReceipt,
1270
+ "storage-stability receipt present",
1271
+ "storage-stability receipt missing"
1272
+ );
1273
+ }
1274
+ if (text.includes("persisted return-state") || text.includes("persisted return state") || text.includes("return-state") || text.includes("return state") || (text.includes("persisted") || text.includes("persistence")) && (text.includes("return") || text.includes("reload") || text.includes("restored"))) {
1275
+ return profileReceiptSignalStatus(
1276
+ hasPersistedReturnStateReceipt,
1277
+ "persisted return-state receipt present",
1278
+ "persisted return-state receipt missing"
1279
+ );
1280
+ }
1201
1281
  if (text.includes("cleanup") && text.includes("action") && (text.includes("visible ui") || text.includes("visible"))) {
1202
1282
  return profileReceiptSignalStatus(
1203
1283
  visibleCleanupActionCount > 0,
@@ -1293,6 +1373,14 @@ function profilePackReceiptStatus(result, metadata, receipt) {
1293
1373
  );
1294
1374
  }
1295
1375
  if (text.includes("input dispatch") || text.includes("pointer") || text.includes("touch") || text.includes("key event") || text.includes("trusted-event")) {
1376
+ if (text.includes("key_down") || text.includes("key down") || text.includes("key-up") || text.includes("key_up")) {
1377
+ const hasSpecificKeyboardDispatch = text.includes("shift") ? hasShiftKeyDownReceipt && hasShiftKeyUpReceipt : hasKeyboardKeyDownReceipt && hasKeyboardKeyUpReceipt;
1378
+ return profileReceiptSignalStatus(
1379
+ hasSpecificKeyboardDispatch,
1380
+ "keyboard key_down/key_up dispatch evidence present",
1381
+ "keyboard key_down/key_up dispatch evidence missing"
1382
+ );
1383
+ }
1296
1384
  return profileReceiptSignalStatus(inputDispatchCount > 0 || hasNaturalInput, "input dispatch evidence present", "input dispatch evidence missing");
1297
1385
  }
1298
1386
  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.209",
4
4
  "description": "Reusable Riddle Proof contracts and helpers for evidence-backed agent changes.",
5
5
  "license": "MIT",
6
6
  "author": "RiddleDC",