diegosouzapw/OmniRoute · error · VideoDrilldownValidationError
${message}
Error message
${message} What it means
Generic validation-failure helper (validationFailure) in videoBridgeDrilldown: throws VideoDrilldownValidationError with a dynamic message for any input violating drilldown limits — oversized frames (VIDEO_DRILLDOWN_MAX_FRAME_BYTES), oversized entries, duration > 600s, frame dimension > 8192, or non-canonical JPEG data URIs. The specific at-fault input is named in the dynamic message text.
Solutions
- Read the dynamic message to identify which limit was violated
- Re-encode frames to canonical JPEG within the 4MB/frame and 8192px limits
- Split oversized drilldown entries instead of storing one >32MB blob
- Reject such uploads earlier at the request-validation boundary
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/lib/guardrails/videoBridgeDrilldown.ts:109 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of diegosouzapw/OmniRoute@a179ffed5b (2026-08-25).
Data as JSON: /api/errors/88fa9297ee73a116.
Report an issue: GitHub.
Appendix: source
Thrown at src/lib/guardrails/videoBridgeDrilldown.ts:109
}
interface StoredDrilldownFrame {
data: Buffer;
height: number;
timestampSeconds: number;
width: number;
}
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;
function validationFailure(message: string): never {
throw new VideoDrilldownValidationError(message);
}
function throwIfAborted(signal?: AbortSignal): void {
if (signal?.aborted) throw new VideoDrilldownAbortedError();
}
function yieldToEventLoop(): Promise<void> {
return new Promise((resolve) => setImmediate(resolve));
}
function isAsciiAlphaNumeric(code: number): boolean {
return (
(code >= 0x30 && code <= 0x39) ||
(code >= 0x41 && code <= 0x5a) ||
(code >= 0x61 && code <= 0x7a)
);
}
View on GitHub (pinned to a179ffed5b)