humanish 0.78.0 → 0.79.0

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/run.d.ts CHANGED
@@ -749,6 +749,18 @@ export interface RunBundle {
749
749
  desktopBrowser?: {
750
750
  requested: "default" | "chrome" | "chromium" | "firefox";
751
751
  resolved?: string;
752
+ /**
753
+ * Synthetic media devices the browser was launched with (#509): the camera feed's origin and
754
+ * in-sandbox path, how the permission dialog is answered, and the exact flags.
755
+ */
756
+ media?: {
757
+ camera?: {
758
+ source: "synthetic" | "file";
759
+ file: string;
760
+ };
761
+ permission: "prompt" | "granted";
762
+ flags: string[];
763
+ };
752
764
  };
753
765
  /**
754
766
  * Optional lineage for a run that intentionally re-executes selected lanes from a prior
package/dist/run.js CHANGED
@@ -3905,11 +3905,13 @@ function hasStopWhenObservationEvidence(items, screenshotCount) {
3905
3905
  && item.screenshotRef.path.length > 0);
3906
3906
  if (!hasScreenshot)
3907
3907
  return false;
3908
+ // A matched stopWhen, or a declared dwell window that ended the session (#510): both are
3909
+ // structured, harness-owned completion, with frames behind them.
3908
3910
  return items.some((item) => isRecord(item)
3909
3911
  && item.kind === "notice"
3910
3912
  && item.status === "matched"
3911
3913
  && typeof item.title === "string"
3912
- && item.title.startsWith("stopWhen matched"));
3914
+ && (item.title.startsWith("stopWhen matched") || item.title === "dwell window complete"));
3913
3915
  }
3914
3916
  function actorVerdictConsistencyFindings(bundle) {
3915
3917
  if (bundle.mode !== "live" || bundle.review.verdict !== "pass") {