@riddledc/riddle-proof 0.7.139 → 0.7.140

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 CHANGED
@@ -486,7 +486,9 @@ Profile final viewport screenshots are full-page by default. Set
486
486
  `target.screenshot_full_page: false`, `target.screenshotFullPage: false`, or
487
487
  `target.screenshot_mode: "viewport"` when the automatic final screenshots
488
488
  should capture only the current viewport, for example when fixed or sticky
489
- headers make full-page captures misleading.
489
+ headers make full-page captures misleading. Compact profile summaries include
490
+ the final screenshot count and mode when a profile sets an explicit target
491
+ screenshot mode.
490
492
 
491
493
  Use `allowed_console_patterns` / `allowed_console_texts` on
492
494
  `no_fatal_console_errors` when a negative-path profile intentionally triggers a
@@ -494,12 +494,18 @@ function profileScreenshotLabels(viewports) {
494
494
  }
495
495
  return labels;
496
496
  }
497
- function profileSetupSummary(viewports, actionCount, expectedActionCountByViewport) {
497
+ function profileSetupSummary(viewports, actionCount, expectedActionCountByViewport, finalScreenshotFullPage) {
498
+ const normalizedFinalScreenshotFullPage = finalScreenshotFullPage === void 0 ? void 0 : finalScreenshotFullPage !== false;
499
+ const finalScreenshotCount = viewports.filter((viewport) => typeof viewport.screenshot_label === "string" && viewport.screenshot_label.trim()).length;
498
500
  return toJsonValue({
499
501
  viewport_count: viewports.length,
500
502
  action_count: actionCount ?? null,
503
+ final_screenshot_count: finalScreenshotCount,
504
+ final_screenshot_full_page: normalizedFinalScreenshotFullPage ?? null,
505
+ final_screenshot_mode: normalizedFinalScreenshotFullPage === void 0 ? null : normalizedFinalScreenshotFullPage ? "full_page" : "viewport",
501
506
  viewports: viewports.map((viewport) => {
502
507
  const expectedActionCount = expectedActionCountByViewport?.get(viewport.name) ?? actionCount;
508
+ const viewportFinalScreenshotFullPage = typeof viewport.screenshot_full_page === "boolean" ? viewport.screenshot_full_page : normalizedFinalScreenshotFullPage;
503
509
  const results = viewport.setup_action_results || [];
504
510
  const failed = results.filter((result) => result.ok === false && result.optional !== true);
505
511
  const optionalFailed = results.filter((result) => result.ok === false && result.optional === true);
@@ -539,6 +545,8 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountByViewpo
539
545
  action_counts: profileSetupActionCounts(results),
540
546
  frame_action_count: results.filter((result) => result.frame_selector).length,
541
547
  frame_urls: profileSetupFrameUrls(viewport),
548
+ final_screenshot: viewport.screenshot_label ?? null,
549
+ final_screenshot_full_page: viewportFinalScreenshotFullPage ?? null,
542
550
  setup_screenshots: profileSetupScreenshotLabels(results),
543
551
  clicked_total: clickedItems.length,
544
552
  clicked_truncated: clickedItems.length > clicked.length,
@@ -2783,7 +2791,7 @@ function assessSetupActionsFromEvidence(profile, evidence) {
2783
2791
  ok: (viewport.setup_action_results || []).length >= (expectedActionCountByViewport.get(viewport.name) ?? actionCount) && (viewport.setup_action_results || []).every((result) => result.ok !== false || result.optional === true),
2784
2792
  result_count: (viewport.setup_action_results || []).length
2785
2793
  })),
2786
- setup_summary: profileSetupSummary(viewports, actionCount, expectedActionCountByViewport),
2794
+ setup_summary: profileSetupSummary(viewports, actionCount, expectedActionCountByViewport, profile.target.screenshot_full_page),
2787
2795
  failed
2788
2796
  },
2789
2797
  message: failed.length ? `Setup actions failed in ${failed.length} viewport action(s).` : void 0
@@ -3803,14 +3811,28 @@ function profileScreenshotLabels(viewports) {
3803
3811
  }
3804
3812
  return labels;
3805
3813
  }
3806
- function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewport) {
3814
+ function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewport, finalScreenshotFullPage) {
3815
+ const normalizedFinalScreenshotFullPage = finalScreenshotFullPage === undefined
3816
+ ? undefined
3817
+ : finalScreenshotFullPage !== false;
3818
+ const finalScreenshotCount = (viewports || []).filter((viewport) => viewport && typeof viewport.screenshot_label === "string" && viewport.screenshot_label.trim()).length;
3807
3819
  return {
3808
3820
  viewport_count: (viewports || []).length,
3809
3821
  action_count: actionCount ?? null,
3822
+ final_screenshot_count: finalScreenshotCount,
3823
+ final_screenshot_full_page: normalizedFinalScreenshotFullPage ?? null,
3824
+ final_screenshot_mode: normalizedFinalScreenshotFullPage === undefined
3825
+ ? null
3826
+ : normalizedFinalScreenshotFullPage
3827
+ ? "full_page"
3828
+ : "viewport",
3810
3829
  viewports: (viewports || []).map((viewport) => {
3811
3830
  const expectedActionCount = expectedActionCountsByViewport && expectedActionCountsByViewport[viewport.name] !== undefined
3812
3831
  ? expectedActionCountsByViewport[viewport.name]
3813
3832
  : actionCount;
3833
+ const viewportFinalScreenshotFullPage = typeof viewport.screenshot_full_page === "boolean"
3834
+ ? viewport.screenshot_full_page
3835
+ : normalizedFinalScreenshotFullPage;
3814
3836
  const results = viewport.setup_action_results || [];
3815
3837
  const failed = results.filter((result) => result && result.ok === false && result.optional !== true);
3816
3838
  const optionalFailed = results.filter((result) => result && result.ok === false && result.optional === true);
@@ -3864,6 +3886,8 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewp
3864
3886
  action_counts: profileSetupActionCounts(results),
3865
3887
  frame_action_count: results.filter((result) => result && result.frame_selector).length,
3866
3888
  frame_urls: profileSetupFrameUrls(viewport),
3889
+ final_screenshot: viewport.screenshot_label || null,
3890
+ final_screenshot_full_page: viewportFinalScreenshotFullPage ?? null,
3867
3891
  setup_screenshots: profileSetupScreenshotLabels(results),
3868
3892
  clicked_total: clickedItems.length,
3869
3893
  clicked_truncated: clickedItems.length > clicked.length,
@@ -4048,7 +4072,7 @@ function assessProfile(profile, evidence) {
4048
4072
  && (viewport.setup_action_results || []).every((result) => !result || result.ok !== false || result.optional === true),
4049
4073
  result_count: (viewport.setup_action_results || []).length,
4050
4074
  })),
4051
- setup_summary: profileSetupSummary(viewports, actionCount, expectedActionCountsByViewport),
4075
+ setup_summary: profileSetupSummary(viewports, actionCount, expectedActionCountsByViewport, profile.target && profile.target.screenshot_full_page),
4052
4076
  failed,
4053
4077
  },
4054
4078
  message: failed.length ? "Setup actions failed in " + failed.length + " viewport action(s)." : undefined,
@@ -6926,9 +6950,13 @@ async function captureViewport(viewport) {
6926
6950
  }
6927
6951
  }
6928
6952
  const screenshotLabel = profileSlug + "-" + viewport.name;
6953
+ let screenshotFullPage = null;
6929
6954
  try {
6930
6955
  const screenshotOptions = {};
6931
- if (profile.target && profile.target.screenshot_full_page !== undefined) screenshotOptions.fullPage = profile.target.screenshot_full_page !== false;
6956
+ if (profile.target && profile.target.screenshot_full_page !== undefined) {
6957
+ screenshotFullPage = profile.target.screenshot_full_page !== false;
6958
+ screenshotOptions.fullPage = screenshotFullPage;
6959
+ }
6932
6960
  if (typeof saveScreenshot === "function") await saveScreenshot(screenshotLabel, screenshotOptions);
6933
6961
  } catch (error) {
6934
6962
  pageErrors.push({ message: "saveScreenshot failed: " + String(error && error.message ? error.message : error).slice(0, 500) });
@@ -6996,6 +7024,7 @@ async function captureViewport(viewport) {
6996
7024
  route_inventory: routeInventory,
6997
7025
  setup_action_results: setupActionResults,
6998
7026
  screenshot_label: screenshotLabel,
7027
+ screenshot_full_page: screenshotFullPage,
6999
7028
  navigation_error: navigationError,
7000
7029
  wait_error: waitError,
7001
7030
  };
package/dist/cli.cjs CHANGED
@@ -7431,12 +7431,18 @@ function profileScreenshotLabels(viewports) {
7431
7431
  }
7432
7432
  return labels;
7433
7433
  }
7434
- function profileSetupSummary(viewports, actionCount, expectedActionCountByViewport) {
7434
+ function profileSetupSummary(viewports, actionCount, expectedActionCountByViewport, finalScreenshotFullPage) {
7435
+ const normalizedFinalScreenshotFullPage = finalScreenshotFullPage === void 0 ? void 0 : finalScreenshotFullPage !== false;
7436
+ const finalScreenshotCount = viewports.filter((viewport) => typeof viewport.screenshot_label === "string" && viewport.screenshot_label.trim()).length;
7435
7437
  return toJsonValue({
7436
7438
  viewport_count: viewports.length,
7437
7439
  action_count: actionCount ?? null,
7440
+ final_screenshot_count: finalScreenshotCount,
7441
+ final_screenshot_full_page: normalizedFinalScreenshotFullPage ?? null,
7442
+ final_screenshot_mode: normalizedFinalScreenshotFullPage === void 0 ? null : normalizedFinalScreenshotFullPage ? "full_page" : "viewport",
7438
7443
  viewports: viewports.map((viewport) => {
7439
7444
  const expectedActionCount = expectedActionCountByViewport?.get(viewport.name) ?? actionCount;
7445
+ const viewportFinalScreenshotFullPage = typeof viewport.screenshot_full_page === "boolean" ? viewport.screenshot_full_page : normalizedFinalScreenshotFullPage;
7440
7446
  const results = viewport.setup_action_results || [];
7441
7447
  const failed = results.filter((result) => result.ok === false && result.optional !== true);
7442
7448
  const optionalFailed = results.filter((result) => result.ok === false && result.optional === true);
@@ -7476,6 +7482,8 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountByViewpo
7476
7482
  action_counts: profileSetupActionCounts(results),
7477
7483
  frame_action_count: results.filter((result) => result.frame_selector).length,
7478
7484
  frame_urls: profileSetupFrameUrls(viewport),
7485
+ final_screenshot: viewport.screenshot_label ?? null,
7486
+ final_screenshot_full_page: viewportFinalScreenshotFullPage ?? null,
7479
7487
  setup_screenshots: profileSetupScreenshotLabels(results),
7480
7488
  clicked_total: clickedItems.length,
7481
7489
  clicked_truncated: clickedItems.length > clicked.length,
@@ -9720,7 +9728,7 @@ function assessSetupActionsFromEvidence(profile, evidence) {
9720
9728
  ok: (viewport.setup_action_results || []).length >= (expectedActionCountByViewport.get(viewport.name) ?? actionCount) && (viewport.setup_action_results || []).every((result) => result.ok !== false || result.optional === true),
9721
9729
  result_count: (viewport.setup_action_results || []).length
9722
9730
  })),
9723
- setup_summary: profileSetupSummary(viewports, actionCount, expectedActionCountByViewport),
9731
+ setup_summary: profileSetupSummary(viewports, actionCount, expectedActionCountByViewport, profile.target.screenshot_full_page),
9724
9732
  failed
9725
9733
  },
9726
9734
  message: failed.length ? `Setup actions failed in ${failed.length} viewport action(s).` : void 0
@@ -10724,14 +10732,28 @@ function profileScreenshotLabels(viewports) {
10724
10732
  }
10725
10733
  return labels;
10726
10734
  }
10727
- function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewport) {
10735
+ function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewport, finalScreenshotFullPage) {
10736
+ const normalizedFinalScreenshotFullPage = finalScreenshotFullPage === undefined
10737
+ ? undefined
10738
+ : finalScreenshotFullPage !== false;
10739
+ const finalScreenshotCount = (viewports || []).filter((viewport) => viewport && typeof viewport.screenshot_label === "string" && viewport.screenshot_label.trim()).length;
10728
10740
  return {
10729
10741
  viewport_count: (viewports || []).length,
10730
10742
  action_count: actionCount ?? null,
10743
+ final_screenshot_count: finalScreenshotCount,
10744
+ final_screenshot_full_page: normalizedFinalScreenshotFullPage ?? null,
10745
+ final_screenshot_mode: normalizedFinalScreenshotFullPage === undefined
10746
+ ? null
10747
+ : normalizedFinalScreenshotFullPage
10748
+ ? "full_page"
10749
+ : "viewport",
10731
10750
  viewports: (viewports || []).map((viewport) => {
10732
10751
  const expectedActionCount = expectedActionCountsByViewport && expectedActionCountsByViewport[viewport.name] !== undefined
10733
10752
  ? expectedActionCountsByViewport[viewport.name]
10734
10753
  : actionCount;
10754
+ const viewportFinalScreenshotFullPage = typeof viewport.screenshot_full_page === "boolean"
10755
+ ? viewport.screenshot_full_page
10756
+ : normalizedFinalScreenshotFullPage;
10735
10757
  const results = viewport.setup_action_results || [];
10736
10758
  const failed = results.filter((result) => result && result.ok === false && result.optional !== true);
10737
10759
  const optionalFailed = results.filter((result) => result && result.ok === false && result.optional === true);
@@ -10785,6 +10807,8 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewp
10785
10807
  action_counts: profileSetupActionCounts(results),
10786
10808
  frame_action_count: results.filter((result) => result && result.frame_selector).length,
10787
10809
  frame_urls: profileSetupFrameUrls(viewport),
10810
+ final_screenshot: viewport.screenshot_label || null,
10811
+ final_screenshot_full_page: viewportFinalScreenshotFullPage ?? null,
10788
10812
  setup_screenshots: profileSetupScreenshotLabels(results),
10789
10813
  clicked_total: clickedItems.length,
10790
10814
  clicked_truncated: clickedItems.length > clicked.length,
@@ -10969,7 +10993,7 @@ function assessProfile(profile, evidence) {
10969
10993
  && (viewport.setup_action_results || []).every((result) => !result || result.ok !== false || result.optional === true),
10970
10994
  result_count: (viewport.setup_action_results || []).length,
10971
10995
  })),
10972
- setup_summary: profileSetupSummary(viewports, actionCount, expectedActionCountsByViewport),
10996
+ setup_summary: profileSetupSummary(viewports, actionCount, expectedActionCountsByViewport, profile.target && profile.target.screenshot_full_page),
10973
10997
  failed,
10974
10998
  },
10975
10999
  message: failed.length ? "Setup actions failed in " + failed.length + " viewport action(s)." : undefined,
@@ -13847,9 +13871,13 @@ async function captureViewport(viewport) {
13847
13871
  }
13848
13872
  }
13849
13873
  const screenshotLabel = profileSlug + "-" + viewport.name;
13874
+ let screenshotFullPage = null;
13850
13875
  try {
13851
13876
  const screenshotOptions = {};
13852
- if (profile.target && profile.target.screenshot_full_page !== undefined) screenshotOptions.fullPage = profile.target.screenshot_full_page !== false;
13877
+ if (profile.target && profile.target.screenshot_full_page !== undefined) {
13878
+ screenshotFullPage = profile.target.screenshot_full_page !== false;
13879
+ screenshotOptions.fullPage = screenshotFullPage;
13880
+ }
13853
13881
  if (typeof saveScreenshot === "function") await saveScreenshot(screenshotLabel, screenshotOptions);
13854
13882
  } catch (error) {
13855
13883
  pageErrors.push({ message: "saveScreenshot failed: " + String(error && error.message ? error.message : error).slice(0, 500) });
@@ -13917,6 +13945,7 @@ async function captureViewport(viewport) {
13917
13945
  route_inventory: routeInventory,
13918
13946
  setup_action_results: setupActionResults,
13919
13947
  screenshot_label: screenshotLabel,
13948
+ screenshot_full_page: screenshotFullPage,
13920
13949
  navigation_error: navigationError,
13921
13950
  wait_error: waitError,
13922
13951
  };
@@ -14673,6 +14702,8 @@ function profileSetupSummaryMarkdown(result) {
14673
14702
  if (!viewports.length) return [];
14674
14703
  const declaredActions = cliFiniteNumber(setupSummary.action_count);
14675
14704
  const totalResults = viewports.reduce((sum, viewport) => sum + (cliFiniteNumber(viewport.result_count) || 0), 0);
14705
+ const finalScreenshotCount = cliFiniteNumber(setupSummary.final_screenshot_count) ?? viewports.reduce((sum, viewport) => sum + (cliString(viewport.final_screenshot) || cliString(viewport.screenshot_label) ? 1 : 0), 0);
14706
+ const finalScreenshotMode = cliString(setupSummary.final_screenshot_mode);
14676
14707
  const setupScreenshots = viewports.reduce((sum, viewport) => {
14677
14708
  const labels = Array.isArray(viewport.setup_screenshots) ? viewport.setup_screenshots : [];
14678
14709
  return sum + labels.filter((label) => typeof label === "string" && label.trim()).length;
@@ -14688,6 +14719,7 @@ function profileSetupSummaryMarkdown(result) {
14688
14719
  const failedTotal = viewports.reduce((sum, viewport) => sum + (Array.isArray(viewport.failed) ? viewport.failed.length : 0), 0);
14689
14720
  const lines = [
14690
14721
  `- setup actions: ${declaredActions === void 0 ? "unknown" : declaredActions} declared, ${totalResults} recorded result(s) across ${viewports.length} viewport(s)`,
14722
+ ...finalScreenshotMode ? [`- final screenshots: ${finalScreenshotCount}, mode ${finalScreenshotMode}`] : [],
14691
14723
  `- setup screenshots: ${setupScreenshots}`,
14692
14724
  `- clicked targets: ${clickedTotal}${failedTotal ? `; failed setup actions: ${failedTotal}` : ""}`
14693
14725
  ];
package/dist/cli.js CHANGED
@@ -12,7 +12,7 @@ import {
12
12
  profileStatusExitCode,
13
13
  resolveRiddleProofProfileTargetUrl,
14
14
  resolveRiddleProofProfileTimeoutSec
15
- } from "./chunk-DB6J53V5.js";
15
+ } from "./chunk-6VXZ6V5M.js";
16
16
  import {
17
17
  createRiddleApiClient,
18
18
  parseRiddleViewport
@@ -589,6 +589,8 @@ function profileSetupSummaryMarkdown(result) {
589
589
  if (!viewports.length) return [];
590
590
  const declaredActions = cliFiniteNumber(setupSummary.action_count);
591
591
  const totalResults = viewports.reduce((sum, viewport) => sum + (cliFiniteNumber(viewport.result_count) || 0), 0);
592
+ const finalScreenshotCount = cliFiniteNumber(setupSummary.final_screenshot_count) ?? viewports.reduce((sum, viewport) => sum + (cliString(viewport.final_screenshot) || cliString(viewport.screenshot_label) ? 1 : 0), 0);
593
+ const finalScreenshotMode = cliString(setupSummary.final_screenshot_mode);
592
594
  const setupScreenshots = viewports.reduce((sum, viewport) => {
593
595
  const labels = Array.isArray(viewport.setup_screenshots) ? viewport.setup_screenshots : [];
594
596
  return sum + labels.filter((label) => typeof label === "string" && label.trim()).length;
@@ -604,6 +606,7 @@ function profileSetupSummaryMarkdown(result) {
604
606
  const failedTotal = viewports.reduce((sum, viewport) => sum + (Array.isArray(viewport.failed) ? viewport.failed.length : 0), 0);
605
607
  const lines = [
606
608
  `- setup actions: ${declaredActions === void 0 ? "unknown" : declaredActions} declared, ${totalResults} recorded result(s) across ${viewports.length} viewport(s)`,
609
+ ...finalScreenshotMode ? [`- final screenshots: ${finalScreenshotCount}, mode ${finalScreenshotMode}`] : [],
607
610
  `- setup screenshots: ${setupScreenshots}`,
608
611
  `- clicked targets: ${clickedTotal}${failedTotal ? `; failed setup actions: ${failedTotal}` : ""}`
609
612
  ];
package/dist/index.cjs CHANGED
@@ -9227,12 +9227,18 @@ function profileScreenshotLabels(viewports) {
9227
9227
  }
9228
9228
  return labels;
9229
9229
  }
9230
- function profileSetupSummary(viewports, actionCount, expectedActionCountByViewport) {
9230
+ function profileSetupSummary(viewports, actionCount, expectedActionCountByViewport, finalScreenshotFullPage) {
9231
+ const normalizedFinalScreenshotFullPage = finalScreenshotFullPage === void 0 ? void 0 : finalScreenshotFullPage !== false;
9232
+ const finalScreenshotCount = viewports.filter((viewport) => typeof viewport.screenshot_label === "string" && viewport.screenshot_label.trim()).length;
9231
9233
  return toJsonValue({
9232
9234
  viewport_count: viewports.length,
9233
9235
  action_count: actionCount ?? null,
9236
+ final_screenshot_count: finalScreenshotCount,
9237
+ final_screenshot_full_page: normalizedFinalScreenshotFullPage ?? null,
9238
+ final_screenshot_mode: normalizedFinalScreenshotFullPage === void 0 ? null : normalizedFinalScreenshotFullPage ? "full_page" : "viewport",
9234
9239
  viewports: viewports.map((viewport) => {
9235
9240
  const expectedActionCount = expectedActionCountByViewport?.get(viewport.name) ?? actionCount;
9241
+ const viewportFinalScreenshotFullPage = typeof viewport.screenshot_full_page === "boolean" ? viewport.screenshot_full_page : normalizedFinalScreenshotFullPage;
9236
9242
  const results = viewport.setup_action_results || [];
9237
9243
  const failed = results.filter((result) => result.ok === false && result.optional !== true);
9238
9244
  const optionalFailed = results.filter((result) => result.ok === false && result.optional === true);
@@ -9272,6 +9278,8 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountByViewpo
9272
9278
  action_counts: profileSetupActionCounts(results),
9273
9279
  frame_action_count: results.filter((result) => result.frame_selector).length,
9274
9280
  frame_urls: profileSetupFrameUrls(viewport),
9281
+ final_screenshot: viewport.screenshot_label ?? null,
9282
+ final_screenshot_full_page: viewportFinalScreenshotFullPage ?? null,
9275
9283
  setup_screenshots: profileSetupScreenshotLabels(results),
9276
9284
  clicked_total: clickedItems.length,
9277
9285
  clicked_truncated: clickedItems.length > clicked.length,
@@ -11516,7 +11524,7 @@ function assessSetupActionsFromEvidence(profile, evidence) {
11516
11524
  ok: (viewport.setup_action_results || []).length >= (expectedActionCountByViewport.get(viewport.name) ?? actionCount) && (viewport.setup_action_results || []).every((result) => result.ok !== false || result.optional === true),
11517
11525
  result_count: (viewport.setup_action_results || []).length
11518
11526
  })),
11519
- setup_summary: profileSetupSummary(viewports, actionCount, expectedActionCountByViewport),
11527
+ setup_summary: profileSetupSummary(viewports, actionCount, expectedActionCountByViewport, profile.target.screenshot_full_page),
11520
11528
  failed
11521
11529
  },
11522
11530
  message: failed.length ? `Setup actions failed in ${failed.length} viewport action(s).` : void 0
@@ -12536,14 +12544,28 @@ function profileScreenshotLabels(viewports) {
12536
12544
  }
12537
12545
  return labels;
12538
12546
  }
12539
- function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewport) {
12547
+ function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewport, finalScreenshotFullPage) {
12548
+ const normalizedFinalScreenshotFullPage = finalScreenshotFullPage === undefined
12549
+ ? undefined
12550
+ : finalScreenshotFullPage !== false;
12551
+ const finalScreenshotCount = (viewports || []).filter((viewport) => viewport && typeof viewport.screenshot_label === "string" && viewport.screenshot_label.trim()).length;
12540
12552
  return {
12541
12553
  viewport_count: (viewports || []).length,
12542
12554
  action_count: actionCount ?? null,
12555
+ final_screenshot_count: finalScreenshotCount,
12556
+ final_screenshot_full_page: normalizedFinalScreenshotFullPage ?? null,
12557
+ final_screenshot_mode: normalizedFinalScreenshotFullPage === undefined
12558
+ ? null
12559
+ : normalizedFinalScreenshotFullPage
12560
+ ? "full_page"
12561
+ : "viewport",
12543
12562
  viewports: (viewports || []).map((viewport) => {
12544
12563
  const expectedActionCount = expectedActionCountsByViewport && expectedActionCountsByViewport[viewport.name] !== undefined
12545
12564
  ? expectedActionCountsByViewport[viewport.name]
12546
12565
  : actionCount;
12566
+ const viewportFinalScreenshotFullPage = typeof viewport.screenshot_full_page === "boolean"
12567
+ ? viewport.screenshot_full_page
12568
+ : normalizedFinalScreenshotFullPage;
12547
12569
  const results = viewport.setup_action_results || [];
12548
12570
  const failed = results.filter((result) => result && result.ok === false && result.optional !== true);
12549
12571
  const optionalFailed = results.filter((result) => result && result.ok === false && result.optional === true);
@@ -12597,6 +12619,8 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewp
12597
12619
  action_counts: profileSetupActionCounts(results),
12598
12620
  frame_action_count: results.filter((result) => result && result.frame_selector).length,
12599
12621
  frame_urls: profileSetupFrameUrls(viewport),
12622
+ final_screenshot: viewport.screenshot_label || null,
12623
+ final_screenshot_full_page: viewportFinalScreenshotFullPage ?? null,
12600
12624
  setup_screenshots: profileSetupScreenshotLabels(results),
12601
12625
  clicked_total: clickedItems.length,
12602
12626
  clicked_truncated: clickedItems.length > clicked.length,
@@ -12781,7 +12805,7 @@ function assessProfile(profile, evidence) {
12781
12805
  && (viewport.setup_action_results || []).every((result) => !result || result.ok !== false || result.optional === true),
12782
12806
  result_count: (viewport.setup_action_results || []).length,
12783
12807
  })),
12784
- setup_summary: profileSetupSummary(viewports, actionCount, expectedActionCountsByViewport),
12808
+ setup_summary: profileSetupSummary(viewports, actionCount, expectedActionCountsByViewport, profile.target && profile.target.screenshot_full_page),
12785
12809
  failed,
12786
12810
  },
12787
12811
  message: failed.length ? "Setup actions failed in " + failed.length + " viewport action(s)." : undefined,
@@ -15659,9 +15683,13 @@ async function captureViewport(viewport) {
15659
15683
  }
15660
15684
  }
15661
15685
  const screenshotLabel = profileSlug + "-" + viewport.name;
15686
+ let screenshotFullPage = null;
15662
15687
  try {
15663
15688
  const screenshotOptions = {};
15664
- if (profile.target && profile.target.screenshot_full_page !== undefined) screenshotOptions.fullPage = profile.target.screenshot_full_page !== false;
15689
+ if (profile.target && profile.target.screenshot_full_page !== undefined) {
15690
+ screenshotFullPage = profile.target.screenshot_full_page !== false;
15691
+ screenshotOptions.fullPage = screenshotFullPage;
15692
+ }
15665
15693
  if (typeof saveScreenshot === "function") await saveScreenshot(screenshotLabel, screenshotOptions);
15666
15694
  } catch (error) {
15667
15695
  pageErrors.push({ message: "saveScreenshot failed: " + String(error && error.message ? error.message : error).slice(0, 500) });
@@ -15729,6 +15757,7 @@ async function captureViewport(viewport) {
15729
15757
  route_inventory: routeInventory,
15730
15758
  setup_action_results: setupActionResults,
15731
15759
  screenshot_label: screenshotLabel,
15760
+ screenshot_full_page: screenshotFullPage,
15732
15761
  navigation_error: navigationError,
15733
15762
  wait_error: waitError,
15734
15763
  };
package/dist/index.js CHANGED
@@ -62,7 +62,7 @@ import {
62
62
  resolveRiddleProofProfileTimeoutSec,
63
63
  slugifyRiddleProofProfileName,
64
64
  summarizeRiddleProofProfileResult
65
- } from "./chunk-DB6J53V5.js";
65
+ } from "./chunk-6VXZ6V5M.js";
66
66
  import {
67
67
  DEFAULT_RIDDLE_API_BASE_URL,
68
68
  DEFAULT_RIDDLE_API_KEY_FILE,
package/dist/profile.cjs CHANGED
@@ -541,12 +541,18 @@ function profileScreenshotLabels(viewports) {
541
541
  }
542
542
  return labels;
543
543
  }
544
- function profileSetupSummary(viewports, actionCount, expectedActionCountByViewport) {
544
+ function profileSetupSummary(viewports, actionCount, expectedActionCountByViewport, finalScreenshotFullPage) {
545
+ const normalizedFinalScreenshotFullPage = finalScreenshotFullPage === void 0 ? void 0 : finalScreenshotFullPage !== false;
546
+ const finalScreenshotCount = viewports.filter((viewport) => typeof viewport.screenshot_label === "string" && viewport.screenshot_label.trim()).length;
545
547
  return toJsonValue({
546
548
  viewport_count: viewports.length,
547
549
  action_count: actionCount ?? null,
550
+ final_screenshot_count: finalScreenshotCount,
551
+ final_screenshot_full_page: normalizedFinalScreenshotFullPage ?? null,
552
+ final_screenshot_mode: normalizedFinalScreenshotFullPage === void 0 ? null : normalizedFinalScreenshotFullPage ? "full_page" : "viewport",
548
553
  viewports: viewports.map((viewport) => {
549
554
  const expectedActionCount = expectedActionCountByViewport?.get(viewport.name) ?? actionCount;
555
+ const viewportFinalScreenshotFullPage = typeof viewport.screenshot_full_page === "boolean" ? viewport.screenshot_full_page : normalizedFinalScreenshotFullPage;
550
556
  const results = viewport.setup_action_results || [];
551
557
  const failed = results.filter((result) => result.ok === false && result.optional !== true);
552
558
  const optionalFailed = results.filter((result) => result.ok === false && result.optional === true);
@@ -586,6 +592,8 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountByViewpo
586
592
  action_counts: profileSetupActionCounts(results),
587
593
  frame_action_count: results.filter((result) => result.frame_selector).length,
588
594
  frame_urls: profileSetupFrameUrls(viewport),
595
+ final_screenshot: viewport.screenshot_label ?? null,
596
+ final_screenshot_full_page: viewportFinalScreenshotFullPage ?? null,
589
597
  setup_screenshots: profileSetupScreenshotLabels(results),
590
598
  clicked_total: clickedItems.length,
591
599
  clicked_truncated: clickedItems.length > clicked.length,
@@ -2830,7 +2838,7 @@ function assessSetupActionsFromEvidence(profile, evidence) {
2830
2838
  ok: (viewport.setup_action_results || []).length >= (expectedActionCountByViewport.get(viewport.name) ?? actionCount) && (viewport.setup_action_results || []).every((result) => result.ok !== false || result.optional === true),
2831
2839
  result_count: (viewport.setup_action_results || []).length
2832
2840
  })),
2833
- setup_summary: profileSetupSummary(viewports, actionCount, expectedActionCountByViewport),
2841
+ setup_summary: profileSetupSummary(viewports, actionCount, expectedActionCountByViewport, profile.target.screenshot_full_page),
2834
2842
  failed
2835
2843
  },
2836
2844
  message: failed.length ? `Setup actions failed in ${failed.length} viewport action(s).` : void 0
@@ -3850,14 +3858,28 @@ function profileScreenshotLabels(viewports) {
3850
3858
  }
3851
3859
  return labels;
3852
3860
  }
3853
- function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewport) {
3861
+ function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewport, finalScreenshotFullPage) {
3862
+ const normalizedFinalScreenshotFullPage = finalScreenshotFullPage === undefined
3863
+ ? undefined
3864
+ : finalScreenshotFullPage !== false;
3865
+ const finalScreenshotCount = (viewports || []).filter((viewport) => viewport && typeof viewport.screenshot_label === "string" && viewport.screenshot_label.trim()).length;
3854
3866
  return {
3855
3867
  viewport_count: (viewports || []).length,
3856
3868
  action_count: actionCount ?? null,
3869
+ final_screenshot_count: finalScreenshotCount,
3870
+ final_screenshot_full_page: normalizedFinalScreenshotFullPage ?? null,
3871
+ final_screenshot_mode: normalizedFinalScreenshotFullPage === undefined
3872
+ ? null
3873
+ : normalizedFinalScreenshotFullPage
3874
+ ? "full_page"
3875
+ : "viewport",
3857
3876
  viewports: (viewports || []).map((viewport) => {
3858
3877
  const expectedActionCount = expectedActionCountsByViewport && expectedActionCountsByViewport[viewport.name] !== undefined
3859
3878
  ? expectedActionCountsByViewport[viewport.name]
3860
3879
  : actionCount;
3880
+ const viewportFinalScreenshotFullPage = typeof viewport.screenshot_full_page === "boolean"
3881
+ ? viewport.screenshot_full_page
3882
+ : normalizedFinalScreenshotFullPage;
3861
3883
  const results = viewport.setup_action_results || [];
3862
3884
  const failed = results.filter((result) => result && result.ok === false && result.optional !== true);
3863
3885
  const optionalFailed = results.filter((result) => result && result.ok === false && result.optional === true);
@@ -3911,6 +3933,8 @@ function profileSetupSummary(viewports, actionCount, expectedActionCountsByViewp
3911
3933
  action_counts: profileSetupActionCounts(results),
3912
3934
  frame_action_count: results.filter((result) => result && result.frame_selector).length,
3913
3935
  frame_urls: profileSetupFrameUrls(viewport),
3936
+ final_screenshot: viewport.screenshot_label || null,
3937
+ final_screenshot_full_page: viewportFinalScreenshotFullPage ?? null,
3914
3938
  setup_screenshots: profileSetupScreenshotLabels(results),
3915
3939
  clicked_total: clickedItems.length,
3916
3940
  clicked_truncated: clickedItems.length > clicked.length,
@@ -4095,7 +4119,7 @@ function assessProfile(profile, evidence) {
4095
4119
  && (viewport.setup_action_results || []).every((result) => !result || result.ok !== false || result.optional === true),
4096
4120
  result_count: (viewport.setup_action_results || []).length,
4097
4121
  })),
4098
- setup_summary: profileSetupSummary(viewports, actionCount, expectedActionCountsByViewport),
4122
+ setup_summary: profileSetupSummary(viewports, actionCount, expectedActionCountsByViewport, profile.target && profile.target.screenshot_full_page),
4099
4123
  failed,
4100
4124
  },
4101
4125
  message: failed.length ? "Setup actions failed in " + failed.length + " viewport action(s)." : undefined,
@@ -6973,9 +6997,13 @@ async function captureViewport(viewport) {
6973
6997
  }
6974
6998
  }
6975
6999
  const screenshotLabel = profileSlug + "-" + viewport.name;
7000
+ let screenshotFullPage = null;
6976
7001
  try {
6977
7002
  const screenshotOptions = {};
6978
- if (profile.target && profile.target.screenshot_full_page !== undefined) screenshotOptions.fullPage = profile.target.screenshot_full_page !== false;
7003
+ if (profile.target && profile.target.screenshot_full_page !== undefined) {
7004
+ screenshotFullPage = profile.target.screenshot_full_page !== false;
7005
+ screenshotOptions.fullPage = screenshotFullPage;
7006
+ }
6979
7007
  if (typeof saveScreenshot === "function") await saveScreenshot(screenshotLabel, screenshotOptions);
6980
7008
  } catch (error) {
6981
7009
  pageErrors.push({ message: "saveScreenshot failed: " + String(error && error.message ? error.message : error).slice(0, 500) });
@@ -7043,6 +7071,7 @@ async function captureViewport(viewport) {
7043
7071
  route_inventory: routeInventory,
7044
7072
  setup_action_results: setupActionResults,
7045
7073
  screenshot_label: screenshotLabel,
7074
+ screenshot_full_page: screenshotFullPage,
7046
7075
  navigation_error: navigationError,
7047
7076
  wait_error: waitError,
7048
7077
  };
@@ -323,6 +323,7 @@ interface RiddleProofProfileViewportEvidence {
323
323
  route_inventory?: Record<string, JsonValue>;
324
324
  setup_action_results?: Array<Record<string, JsonValue>>;
325
325
  screenshot_label?: string;
326
+ screenshot_full_page?: boolean | null;
326
327
  navigation_error?: string;
327
328
  wait_error?: string;
328
329
  }
package/dist/profile.d.ts CHANGED
@@ -323,6 +323,7 @@ interface RiddleProofProfileViewportEvidence {
323
323
  route_inventory?: Record<string, JsonValue>;
324
324
  setup_action_results?: Array<Record<string, JsonValue>>;
325
325
  screenshot_label?: string;
326
+ screenshot_full_page?: boolean | null;
326
327
  navigation_error?: string;
327
328
  wait_error?: string;
328
329
  }
package/dist/profile.js CHANGED
@@ -23,7 +23,7 @@ import {
23
23
  resolveRiddleProofProfileTimeoutSec,
24
24
  slugifyRiddleProofProfileName,
25
25
  summarizeRiddleProofProfileResult
26
- } from "./chunk-DB6J53V5.js";
26
+ } from "./chunk-6VXZ6V5M.js";
27
27
  export {
28
28
  RIDDLE_PROOF_PROFILE_CHECK_TYPES,
29
29
  RIDDLE_PROOF_PROFILE_EVIDENCE_VERSION,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riddledc/riddle-proof",
3
- "version": "0.7.139",
3
+ "version": "0.7.140",
4
4
  "description": "Reusable Riddle Proof contracts and helpers for evidence-backed agent changes.",
5
5
  "license": "MIT",
6
6
  "author": "RiddleDC",