From 96c2f303fc86ab6ed4157b815f6e799be33b71e1 Mon Sep 17 00:00:00 2001 From: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com> Date: Tue, 1 Sep 2026 12:16:14 -0300 Subject: [PATCH] refactor(video): unify the drill-down JPEG data-URI prefix with the shared contract Drops videoBridgeDrilldown's local JPEG_DATA_URI_PREFIX constant in favor of the exported JPEG_FRAME_DATA_URI_PREFIX from videoBridgeFrameContract, matching the contact-sheet and dedup call sites. Literal value and all validation semantics (decodeCanonicalJpeg, the chars bound, timestamp/cap/ordering rules) are unchanged. --- src/lib/guardrails/videoBridgeDrilldown.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/lib/guardrails/videoBridgeDrilldown.ts b/src/lib/guardrails/videoBridgeDrilldown.ts index e39eaf4a57..04ca6ced68 100644 --- a/src/lib/guardrails/videoBridgeDrilldown.ts +++ b/src/lib/guardrails/videoBridgeDrilldown.ts @@ -2,6 +2,7 @@ import { createHash } from "node:crypto"; import sharp from "sharp"; +import { JPEG_FRAME_DATA_URI_PREFIX } from "./videoBridgeFrameContract"; import { resolveVideoFocusWindow, type VideoFocusWindow } from "./videoBridgeRuntime"; export interface VideoDrilldownFrameInput { @@ -101,9 +102,8 @@ export const VIDEO_DRILLDOWN_MAX_FRAME_BYTES = 4 * 1024 * 1024; export const VIDEO_DRILLDOWN_MAX_ENTRY_BYTES = 32 * 1024 * 1024; const MAX_DURATION_SECONDS = 600; const MAX_FRAME_DIMENSION = 8192; -const JPEG_DATA_URI_PREFIX = "data:image/jpeg;base64,"; export const VIDEO_DRILLDOWN_MAX_FRAME_DATA_URI_CHARS = - JPEG_DATA_URI_PREFIX.length + Math.ceil(VIDEO_DRILLDOWN_MAX_FRAME_BYTES / 3) * 4; + JPEG_FRAME_DATA_URI_PREFIX.length + Math.ceil(VIDEO_DRILLDOWN_MAX_FRAME_BYTES / 3) * 4; function validationFailure(message: string): never { throw new VideoDrilldownValidationError(message); @@ -270,10 +270,10 @@ async function decodeCanonicalJpeg( resolution: { height: number; width: number }; }> { throwIfAborted(signal); - if (!dataUri.startsWith(JPEG_DATA_URI_PREFIX)) { + if (!dataUri.startsWith(JPEG_FRAME_DATA_URI_PREFIX)) { validationFailure("Invalid drill-down JPEG frame"); } - const encoded = dataUri.slice(JPEG_DATA_URI_PREFIX.length); + const encoded = dataUri.slice(JPEG_FRAME_DATA_URI_PREFIX.length); if (dataUri.length > VIDEO_DRILLDOWN_MAX_FRAME_DATA_URI_CHARS) { validationFailure("Drill-down frame byte limit exceeded"); } @@ -622,7 +622,7 @@ export class VideoDrilldownCache { ) .slice(0, frameCount) .map((frame) => ({ - dataUri: `${JPEG_DATA_URI_PREFIX}${frame.data.toString("base64")}`, + dataUri: `${JPEG_FRAME_DATA_URI_PREFIX}${frame.data.toString("base64")}`, height: frame.height, timestampSeconds: frame.timestampSeconds, width: frame.width,