@vosjs/studio-core 0.26.0 → 0.28.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/index.d.ts CHANGED
@@ -417,6 +417,18 @@ interface RecordingMeta {
417
417
  * has no script and carries none.
418
418
  */
419
419
  steps?: StepSpan[];
420
+ /**
421
+ * The recorder did not land where it was asked: a sign-in, an identity
422
+ * provider, a 401/403, or a redirect to somewhere else. Present only when
423
+ * the take was recorded ANYWAY, so whoever reads it later (a digest, an
424
+ * agent cutting the footage) knows the picture may be the wrong page.
425
+ * `asked`/`landed` are origin + path, never a query or hash.
426
+ */
427
+ wall?: {
428
+ kind: 'status' | 'idp' | 'signin' | 'redirect';
429
+ asked: string;
430
+ landed: string;
431
+ };
420
432
  }
421
433
  /**
422
434
  * A span's tie to an actions.json step: metadata for `vos plan
@@ -3001,6 +3013,12 @@ interface DigestTakeFacts {
3001
3013
  hasSystemAudio: boolean;
3002
3014
  hasCursor: boolean;
3003
3015
  windowFocusedFrac: number | null;
3016
+ /**
3017
+ * The recorder did not land where it was asked (a sign-in, a redirect) and
3018
+ * the take was recorded anyway: the footage may be the wrong page. null
3019
+ * when it landed where it was asked, or the recorder does not check.
3020
+ */
3021
+ wall: RecordingMeta['wall'] | null;
3004
3022
  }
3005
3023
  interface Digest {
3006
3024
  digestVersion: number;
package/dist/index.js CHANGED
@@ -8322,6 +8322,10 @@ var STYLE_FIELDS = [
8322
8322
  "cam",
8323
8323
  "export"
8324
8324
  ];
8325
+ var STYLE_EXPORT_KEYS = [
8326
+ "fps",
8327
+ "format"
8328
+ ];
8325
8329
  function pickStyle(doc) {
8326
8330
  const out = {};
8327
8331
  for (const k of STYLE_FIELDS) {
@@ -8334,9 +8338,18 @@ function copyStyle(from, to, opts = {}) {
8334
8338
  const next = structuredClone(to);
8335
8339
  const style = pickStyle(from);
8336
8340
  for (const k of STYLE_FIELDS) {
8341
+ if (k === "export") continue;
8337
8342
  if (k in style) next[k] = style[k];
8338
8343
  else delete next[k];
8339
8344
  }
8345
+ const fromExport = style.export;
8346
+ if (fromExport) {
8347
+ const merged = { ...next.export ?? {} };
8348
+ for (const k of STYLE_EXPORT_KEYS) {
8349
+ if (fromExport[k] !== void 0) merged[k] = fromExport[k];
8350
+ }
8351
+ next.export = merged;
8352
+ }
8340
8353
  const styled = next;
8341
8354
  return opts.layout ? copyLayout(from, styled, { keys: opts.keys }).doc : styled;
8342
8355
  }
@@ -8695,7 +8708,8 @@ function buildDigest(input) {
8695
8708
  hasMic: Boolean(doc.source.micKey) || meta.hasMic === true,
8696
8709
  hasSystemAudio: meta.hasAudio === true,
8697
8710
  hasCursor: doc.source.cursor.length > 0,
8698
- windowFocusedFrac: meta.windowFocusedFrac ?? null
8711
+ windowFocusedFrac: meta.windowFocusedFrac ?? null,
8712
+ wall: meta.wall ?? null
8699
8713
  },
8700
8714
  units: {
8701
8715
  source: "seconds of footage",