gooseworks 0.5.9-dev.61.827a2d9f → 0.6.0-dev.62.a550dc87

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.
Files changed (39) hide show
  1. package/dist/kit/core/assembly-timeline.d.ts +113 -0
  2. package/dist/kit/core/assembly-timeline.d.ts.map +1 -0
  3. package/dist/kit/core/assembly-timeline.js +266 -0
  4. package/dist/kit/core/assembly-timeline.js.map +1 -0
  5. package/dist/kit/core/device.d.ts.map +1 -1
  6. package/dist/kit/core/device.js +1 -0
  7. package/dist/kit/core/device.js.map +1 -1
  8. package/dist/kit/core/eyes.d.ts +16 -1
  9. package/dist/kit/core/eyes.d.ts.map +1 -1
  10. package/dist/kit/core/eyes.js +39 -2
  11. package/dist/kit/core/eyes.js.map +1 -1
  12. package/dist/kit/core/run.d.ts.map +1 -1
  13. package/dist/kit/core/run.js +215 -5
  14. package/dist/kit/core/run.js.map +1 -1
  15. package/dist/kit/core/version.d.ts +2 -1
  16. package/dist/kit/core/version.d.ts.map +1 -1
  17. package/dist/kit/core/version.js +3 -2
  18. package/dist/kit/core/version.js.map +1 -1
  19. package/dist/kit/line/types.d.ts +2 -0
  20. package/dist/kit/line/types.d.ts.map +1 -1
  21. package/dist/kit/maker/inputs.js +1 -1
  22. package/dist/kit/maker/make.d.ts +2 -0
  23. package/dist/kit/maker/make.d.ts.map +1 -1
  24. package/dist/kit/maker/make.js +21 -1
  25. package/dist/kit/maker/make.js.map +1 -1
  26. package/dist/kit/maker/parts/html-frames/{1.2.1 → 1.3.0}/part.json +42 -4
  27. package/dist/kit/maker/parts/html-frames/src/part.d.ts.map +1 -1
  28. package/dist/kit/maker/parts/html-frames/src/part.js +5 -1
  29. package/dist/kit/maker/parts/html-frames/src/part.js.map +1 -1
  30. package/dist/kit/maker/under.d.ts.map +1 -1
  31. package/dist/kit/maker/under.js +5 -0
  32. package/dist/kit/maker/under.js.map +1 -1
  33. package/dist/skills/server-entry-skills.d.ts +1 -1
  34. package/dist/skills/server-entry-skills.d.ts.map +1 -1
  35. package/dist/skills/server-entry-skills.js +39 -38
  36. package/dist/skills/server-entry-skills.js.map +1 -1
  37. package/package.json +7 -3
  38. package/skills/make-custom-video/SKILL.md +23 -28
  39. package/skills/manifest.json +2 -2
@@ -0,0 +1,113 @@
1
+ export declare const ASSEMBLY_FORMAT: "gooseworks-assembly-timeline/1";
2
+ export declare const SPEECH_MODES: readonly ["native_dialogue", "audio_driven_lipsync", "narration", "singing", "mixed", "none"];
3
+ export declare const SOUNDTRACK_MODES: readonly ["source_ambience", "music", "sfx", "intentional_silence"];
4
+ export type SpeechMode = typeof SPEECH_MODES[number];
5
+ export type SoundtrackMode = typeof SOUNDTRACK_MODES[number];
6
+ export interface AssemblySource {
7
+ asset_id: string;
8
+ sha256: string;
9
+ /** Local transport only; excluded from the portable revision. */
10
+ path?: string;
11
+ in_ms: number;
12
+ out_ms: number;
13
+ speed: number;
14
+ }
15
+ export interface AssemblySegment {
16
+ id: string;
17
+ scene_id: string;
18
+ start_ms: number;
19
+ end_ms: number;
20
+ video: AssemblySource;
21
+ speech_mode: SpeechMode;
22
+ depicts_speech: boolean;
23
+ native_audio: 'preserve' | 'muted';
24
+ speech_driver?: AssemblySource & {
25
+ task: 'exact_audio';
26
+ };
27
+ intent?: string;
28
+ }
29
+ export interface AssemblyCue {
30
+ id: string;
31
+ role: Exclude<SpeechMode, 'mixed' | 'none'> | 'source_ambience' | 'music' | 'sfx';
32
+ source: AssemblySource;
33
+ start_ms: number;
34
+ end_ms: number;
35
+ gain_db: number;
36
+ loop: boolean;
37
+ intent?: string;
38
+ }
39
+ export interface AssemblyTimeline {
40
+ format: typeof ASSEMBLY_FORMAT;
41
+ creative_contract_revision: string;
42
+ duration_ms: number;
43
+ speech_mode: SpeechMode;
44
+ soundtrack_modes: SoundtrackMode[];
45
+ segments: AssemblySegment[];
46
+ audio_cues: AssemblyCue[];
47
+ pauses: Array<{
48
+ start_ms: number;
49
+ end_ms: number;
50
+ scope: 'speech' | 'all_audio';
51
+ reason: string;
52
+ }>;
53
+ required_cue_ids: string[];
54
+ visual_overrides?: Array<{
55
+ start_ms: number;
56
+ end_ms: number;
57
+ kind: 'freeze' | 'transition';
58
+ reason: string;
59
+ source?: AssemblySource;
60
+ scene_id?: string;
61
+ source_kind?: 'image' | 'video';
62
+ segment_ids?: string[];
63
+ }>;
64
+ }
65
+ export interface AssemblyPictureSource {
66
+ id: string;
67
+ scene_id: string;
68
+ source: AssemblySource;
69
+ source_kind: 'image' | 'video';
70
+ }
71
+ /** Overrides can introduce picture bytes that never appear in ordinary clips. */
72
+ export declare function assemblyPictureSources(timeline: AssemblyTimeline): AssemblyPictureSource[];
73
+ export interface AssemblyCheck {
74
+ status: 'complete' | 'incomplete' | 'invalid';
75
+ timeline: AssemblyTimeline | null;
76
+ revision: string | null;
77
+ issues: string[];
78
+ /** Legacy intent is retained for review, never inferred from transcript absence. */
79
+ legacy?: Record<string, unknown>;
80
+ }
81
+ export interface FinalContentReview {
82
+ output_sha256: string;
83
+ timeline_revision: string;
84
+ creative_contract_revision: string;
85
+ reviewer: string;
86
+ verdict: 'approved' | 'needs_revision' | 'incomplete';
87
+ capabilities: {
88
+ audio_perception: boolean;
89
+ motion_perception: boolean;
90
+ };
91
+ coverage: Array<{
92
+ start_ms: number;
93
+ end_ms: number;
94
+ }>;
95
+ unresolved_issues: Array<{
96
+ severity: 'P0' | 'P1' | 'P2';
97
+ message: string;
98
+ }>;
99
+ dimensions: Record<string, {
100
+ status: 'pass' | 'needs_revision' | 'incomplete' | 'not_applicable';
101
+ note: string;
102
+ }>;
103
+ }
104
+ export declare const CONTENT_DIMENSIONS: readonly ["reference_and_concept", "brand_and_product", "scale_and_geometry", "action_and_continuity", "lip_sync", "voice_performance", "pronunciation", "sound_and_silence", "pacing_and_joins", "camera_and_lighting", "overlays"];
105
+ /** Excludes machine-specific transport, while retaining exact assets and source clocks. */
106
+ export declare function assemblyTimelineRevision(value: AssemblyTimeline): string;
107
+ /** Structural and clock checks. A complete result still requires source-byte and content review. */
108
+ export declare function normalizeAssemblyTimeline(raw: unknown, legacy?: Record<string, unknown>): AssemblyCheck;
109
+ export declare const FINAL_ASSEMBLY_DURATION_TOLERANCE_MS = 100;
110
+ export declare function measuredFinalDurationMs(seconds: number | null | undefined): number | null;
111
+ /** Omit measurement only for preflight; final acceptance needs the measured duration. */
112
+ export declare function finalContentReviewProblems(raw: unknown, outputSha: string, assembly: AssemblyCheck, measuredDurationMs?: number | null): string[];
113
+ //# sourceMappingURL=assembly-timeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assembly-timeline.d.ts","sourceRoot":"","sources":["../../../src/kit/core/assembly-timeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FINAL_ASSEMBLY_DURATION_TOLERANCE_MS = exports.CONTENT_DIMENSIONS = exports.SOUNDTRACK_MODES = exports.SPEECH_MODES = exports.ASSEMBLY_FORMAT = void 0;
4
+ exports.assemblyPictureSources = assemblyPictureSources;
5
+ exports.assemblyTimelineRevision = assemblyTimelineRevision;
6
+ exports.normalizeAssemblyTimeline = normalizeAssemblyTimeline;
7
+ exports.measuredFinalDurationMs = measuredFinalDurationMs;
8
+ exports.finalContentReviewProblems = finalContentReviewProblems;
9
+ // Source-linked edit intent. File/rebuild checks never certify audiovisual quality.
10
+ const canonical_1 = require("./canonical");
11
+ exports.ASSEMBLY_FORMAT = 'gooseworks-assembly-timeline/1';
12
+ exports.SPEECH_MODES = ['native_dialogue', 'audio_driven_lipsync', 'narration', 'singing', 'mixed', 'none'];
13
+ exports.SOUNDTRACK_MODES = ['source_ambience', 'music', 'sfx', 'intentional_silence'];
14
+ /** Overrides can introduce picture bytes that never appear in ordinary clips. */
15
+ function assemblyPictureSources(timeline) {
16
+ return [
17
+ ...timeline.segments.map(segment => ({ id: segment.id, scene_id: segment.scene_id, source: segment.video, source_kind: 'video' })),
18
+ ...(timeline.visual_overrides ?? []).flatMap((override, index) => override.source ? [{ id: `override-${index + 1}`, scene_id: override.scene_id, source: override.source, source_kind: override.source_kind }] : []),
19
+ ];
20
+ }
21
+ exports.CONTENT_DIMENSIONS = ['reference_and_concept', 'brand_and_product', 'scale_and_geometry', 'action_and_continuity', 'lip_sync', 'voice_performance', 'pronunciation', 'sound_and_silence', 'pacing_and_joins', 'camera_and_lighting', 'overlays'];
22
+ const object = (v) => !!v && typeof v === 'object' && !Array.isArray(v);
23
+ const hash = (v) => typeof v === 'string' && /^[a-f0-9]{64}$/.test(v);
24
+ const text = (v) => typeof v === 'string' && !!v.trim();
25
+ const ms = (v) => typeof v === 'number' && Number.isSafeInteger(v) && v >= 0;
26
+ const finite = (v) => typeof v === 'number' && Number.isFinite(v);
27
+ const sourceSpan = (s) => (s.out_ms - s.in_ms) / s.speed;
28
+ const speechRole = (role) => ['native_dialogue', 'audio_driven_lipsync', 'narration', 'singing'].includes(role);
29
+ /** Excludes machine-specific transport, while retaining exact assets and source clocks. */
30
+ function assemblyTimelineRevision(value) {
31
+ const portable = (v) => Array.isArray(v) ? v.map(portable)
32
+ : object(v) ? Object.fromEntries(Object.entries(v).filter(([key]) => key !== 'path').map(([key, item]) => [key, portable(item)])) : v;
33
+ return (0, canonical_1.canonicalHash)(portable(value));
34
+ }
35
+ function gaps(items, duration) {
36
+ const missing = [];
37
+ let end = 0;
38
+ for (const item of [...items].sort((a, b) => a.start_ms - b.start_ms)) {
39
+ if (item.start_ms > end + 1)
40
+ missing.push({ start_ms: end, end_ms: item.start_ms });
41
+ end = Math.max(end, item.end_ms);
42
+ }
43
+ if (end < duration - 1)
44
+ missing.push({ start_ms: end, end_ms: duration });
45
+ return missing;
46
+ }
47
+ /** Structural and clock checks. A complete result still requires source-byte and content review. */
48
+ function normalizeAssemblyTimeline(raw, legacy) {
49
+ if (!object(raw))
50
+ return { status: 'incomplete', timeline: null, revision: null,
51
+ issues: ['Source-linked assembly timeline is missing. Legacy sound must be reviewed before migration.'], ...(legacy ? { legacy } : {}) };
52
+ const issues = [];
53
+ if (raw.format !== exports.ASSEMBLY_FORMAT)
54
+ issues.push(`assembly format must be ${exports.ASSEMBLY_FORMAT}`);
55
+ if (!hash(raw.creative_contract_revision))
56
+ issues.push('creative_contract_revision must identify approved bytes');
57
+ if (!ms(raw.duration_ms) || raw.duration_ms <= 0 || raw.duration_ms > 180_000)
58
+ issues.push('duration_ms must be 1–180000');
59
+ if (!exports.SPEECH_MODES.includes(raw.speech_mode))
60
+ issues.push('speech_mode is missing or unknown');
61
+ if (!Array.isArray(raw.soundtrack_modes) || raw.soundtrack_modes.some((m) => !exports.SOUNDTRACK_MODES.includes(m)) || new Set(raw.soundtrack_modes).size !== raw.soundtrack_modes.length)
62
+ issues.push('soundtrack_modes must be explicit and unique (an empty list means no extra soundtrack)');
63
+ if (!Array.isArray(raw.segments) || !raw.segments.length || raw.segments.length > 300)
64
+ issues.push('segments must contain 1–300 source-linked entries');
65
+ if (!Array.isArray(raw.audio_cues) || raw.audio_cues.length > 500)
66
+ issues.push('audio_cues must be an explicit list of at most 500');
67
+ if (!Array.isArray(raw.pauses) || raw.pauses.length > 500)
68
+ issues.push('pauses must be an explicit list of at most 500');
69
+ if (!Array.isArray(raw.required_cue_ids) || raw.required_cue_ids.some((id) => !text(id)))
70
+ issues.push('required_cue_ids must be explicit');
71
+ if (raw.visual_overrides !== undefined && (!Array.isArray(raw.visual_overrides) || raw.visual_overrides.length > 500))
72
+ issues.push('visual_overrides must be a bounded explicit list');
73
+ if (issues.length)
74
+ return { status: 'invalid', timeline: null, revision: null, issues };
75
+ const t = raw;
76
+ const validSource = (s, at) => {
77
+ if (!object(s) || !text(s.asset_id) || !hash(s.sha256) || !ms(s.in_ms) || !ms(s.out_ms) || s.out_ms <= s.in_ms || !finite(s.speed) || s.speed < 0.25 || s.speed > 4) {
78
+ issues.push(`${at}: exact asset, hash, bounds and supported speed required`);
79
+ return false;
80
+ }
81
+ return true;
82
+ };
83
+ const validRange = (v, at) => {
84
+ if (!object(v) || !ms(v.start_ms) || !ms(v.end_ms) || v.end_ms <= v.start_ms || v.end_ms > t.duration_ms) {
85
+ issues.push(`${at}: invalid final bounds`);
86
+ return false;
87
+ }
88
+ return true;
89
+ };
90
+ const ids = new Set();
91
+ for (const s of t.segments) {
92
+ if (!object(s)) {
93
+ issues.push('segment must be an object');
94
+ continue;
95
+ }
96
+ if (!text(s.id) || ids.has(s.id) || !text(s.scene_id))
97
+ issues.push('segment ids must be unique and scene_id required');
98
+ ids.add(s.id);
99
+ if (!exports.SPEECH_MODES.includes(s.speech_mode) || typeof s.depicts_speech !== 'boolean' || !['preserve', 'muted'].includes(s.native_audio))
100
+ issues.push(`${s.id}: explicit speech and native audio decisions required`);
101
+ if (validRange(s, s.id) && validSource(s.video, s.id) && Math.abs(sourceSpan(s.video) - (s.end_ms - s.start_ms)) > 1)
102
+ issues.push(`${s.id}: picture source duration/rate differs from final interval`);
103
+ if (s.video?.speed !== 1 && !text(s.intent))
104
+ issues.push(`${s.id}: speed change needs intent`);
105
+ if (s.depicts_speech && !['native_dialogue', 'audio_driven_lipsync', 'singing'].includes(s.speech_mode))
106
+ issues.push(`${s.id}: speaking face cannot use narration-only or no-speech routing`);
107
+ if (s.depicts_speech && s.speech_mode === 'native_dialogue' && s.native_audio !== 'preserve')
108
+ issues.push(`${s.id}: native dialogue may not be muted`);
109
+ if (s.depicts_speech && s.speech_mode === 'audio_driven_lipsync' && (!validSource(s.speech_driver, `${s.id} driver`) || s.speech_driver?.task !== 'exact_audio'))
110
+ issues.push(`${s.id}: exact driver audio is required; a voice reference is not a driver`);
111
+ else if (s.depicts_speech && s.speech_mode === 'audio_driven_lipsync' && Math.abs(sourceSpan(s.speech_driver) - (s.end_ms - s.start_ms)) > 1)
112
+ issues.push(`${s.id}: driver window/rate differs from its speaking picture interval`);
113
+ }
114
+ ids.clear();
115
+ for (const c of t.audio_cues) {
116
+ if (!object(c)) {
117
+ issues.push('audio cue must be an object');
118
+ continue;
119
+ }
120
+ if (!text(c.id) || ids.has(c.id))
121
+ issues.push('audio cue ids must be unique');
122
+ ids.add(c.id);
123
+ if (!speechRole(c.role) && !['source_ambience', 'music', 'sfx'].includes(c.role))
124
+ issues.push(`${c.id}: unknown audio role`);
125
+ if (!finite(c.gain_db) || c.gain_db < -80 || c.gain_db > 24 || typeof c.loop !== 'boolean')
126
+ issues.push(`${c.id}: explicit supported gain and loop decision required`);
127
+ if (validRange(c, c.id) && validSource(c.source, c.id)) {
128
+ if (!c.loop && Math.abs(sourceSpan(c.source) - (c.end_ms - c.start_ms)) > 1)
129
+ issues.push(`${c.id}: audio source clock differs from final interval`);
130
+ if ((c.loop || c.source.speed !== 1) && !text(c.intent))
131
+ issues.push(`${c.id}: looping/retiming needs intent`);
132
+ if (c.loop && speechRole(c.role))
133
+ issues.push(`${c.id}: speech cannot loop to fill a scene`);
134
+ }
135
+ }
136
+ for (const id of t.required_cue_ids)
137
+ if (!ids.has(id))
138
+ issues.push(`required cue ${id} is missing`);
139
+ for (const p of t.pauses)
140
+ if (!validRange(p, 'pause') || !text(p.reason) || !['speech', 'all_audio'].includes(p.scope))
141
+ issues.push('every pause needs its range, scope and reason');
142
+ for (const v of t.visual_overrides ?? []) {
143
+ if (!validRange(v, 'visual override') || !text(v.reason) || !['freeze', 'transition'].includes(v.kind))
144
+ issues.push('visual overrides need bounds, kind and reason');
145
+ else {
146
+ if (v.kind === 'freeze' && !v.source)
147
+ issues.push('freeze requires its exact source');
148
+ if (v.source && (!validSource(v.source, 'override source') || !text(v.scene_id) || !['image', 'video'].includes(v.source_kind ?? '')))
149
+ issues.push('override sources need exact bytes, scene_id and source_kind (image or video)');
150
+ if (v.kind === 'transition' && (!Array.isArray(v.segment_ids) || v.segment_ids.length < 2 || v.segment_ids.some((id) => !t.segments.some((s) => s.id === id))))
151
+ issues.push('transition must name its source segments');
152
+ }
153
+ }
154
+ if (issues.length)
155
+ return { status: 'invalid', timeline: null, revision: null, issues };
156
+ if (gaps([...t.segments, ...(t.visual_overrides ?? [])], t.duration_ms).length)
157
+ issues.push('Picture coverage has undeclared padding or a missing source interval');
158
+ for (let a = 0; a < t.segments.length; a++)
159
+ for (let b = a + 1; b < t.segments.length; b++) {
160
+ const left = t.segments[a], right = t.segments[b];
161
+ const start = Math.max(left.start_ms, right.start_ms), end = Math.min(left.end_ms, right.end_ms);
162
+ if (end > start + 1 && !(t.visual_overrides ?? []).some((v) => v.kind === 'transition' && v.start_ms <= start && v.end_ms >= end && v.segment_ids?.includes(left.id) && v.segment_ids.includes(right.id)))
163
+ issues.push(`${left.id}/${right.id}: picture overlap needs a declared transition`);
164
+ }
165
+ for (const s of t.segments.filter((s) => s.depicts_speech)) {
166
+ const driver = s.speech_mode === 'audio_driven_lipsync' ? s.speech_driver : s.video;
167
+ const matching = t.audio_cues.filter((c) => c.role === s.speech_mode && c.gain_db > -80 && c.source.sha256 === driver.sha256 && c.source.asset_id === driver.asset_id && Math.abs(c.source.speed - driver.speed) < 1e-9 && !c.loop)
168
+ .filter((c) => Math.abs((c.source.in_ms + (s.start_ms - c.start_ms) * c.source.speed) - driver.in_ms) <= 1)
169
+ .map((c) => ({ start_ms: Math.max(s.start_ms, c.start_ms) - s.start_ms, end_ms: Math.min(s.end_ms, c.end_ms) - s.start_ms }))
170
+ .filter((c) => c.end_ms > c.start_ms);
171
+ if (gaps(matching, s.end_ms - s.start_ms).length)
172
+ issues.push(`${s.id}: corresponding driver audio does not cover the speaking picture on its source clock`);
173
+ }
174
+ const silence = t.soundtrack_modes.includes('intentional_silence');
175
+ for (let a = 0; a < t.audio_cues.length; a++)
176
+ for (let b = a + 1; b < t.audio_cues.length; b++) {
177
+ const left = t.audio_cues[a], right = t.audio_cues[b];
178
+ if (!speechRole(left.role) || !speechRole(right.role))
179
+ continue;
180
+ const start = Math.max(left.start_ms, right.start_ms), end = Math.min(left.end_ms, right.end_ms);
181
+ if (end <= start + 1)
182
+ continue;
183
+ if (left.source.sha256 === right.source.sha256 && left.source.in_ms === right.source.in_ms && left.source.out_ms === right.source.out_ms && left.source.speed === right.source.speed && left.start_ms === right.start_ms && left.end_ms === right.end_ms)
184
+ issues.push(`${left.id}/${right.id}: duplicated speech bus`);
185
+ else if (!(text(left.intent) && text(right.intent)) && !(t.visual_overrides ?? []).some((v) => v.kind === 'transition' && v.start_ms <= start && v.end_ms >= end))
186
+ issues.push(`${left.id}/${right.id}: overlapping speech needs explicit intent`);
187
+ }
188
+ if (silence && (t.soundtrack_modes.length !== 1 || t.audio_cues.length))
189
+ issues.push('intentional_silence cannot hide planned sound cues');
190
+ if (silence && t.speech_mode !== 'none')
191
+ issues.push('total silence conflicts with required speech');
192
+ for (const role of ['music', 'sfx', 'source_ambience'])
193
+ if (t.soundtrack_modes.includes(role) && !t.audio_cues.some((c) => c.role === role))
194
+ issues.push(`planned ${role} has no cue`);
195
+ if (!silence) {
196
+ for (const gap of gaps([...t.audio_cues, ...t.pauses.filter((p) => p.scope === 'all_audio')], t.duration_ms))
197
+ issues.push(`unplanned audio gap ${gap.start_ms}–${gap.end_ms}ms`);
198
+ }
199
+ if (t.speech_mode === 'none' && t.audio_cues.some((c) => speechRole(c.role)))
200
+ issues.push('No-speech intent conflicts with speech cues');
201
+ if (t.speech_mode !== 'none')
202
+ for (const gap of gaps([...t.audio_cues.filter((c) => speechRole(c.role) && c.gain_db > -80), ...t.pauses], t.duration_ms))
203
+ issues.push(`unplanned speech gap ${gap.start_ms}–${gap.end_ms}ms (music cannot substitute for speech intent)`);
204
+ return { status: issues.length ? 'invalid' : 'complete', timeline: t, revision: assemblyTimelineRevision(t), issues };
205
+ }
206
+ // A final frame and AAC padding can differ slightly from the edit clock.
207
+ exports.FINAL_ASSEMBLY_DURATION_TOLERANCE_MS = 100;
208
+ function measuredFinalDurationMs(seconds) {
209
+ if (typeof seconds !== 'number' || !Number.isFinite(seconds) || seconds <= 0)
210
+ return null;
211
+ const duration = Math.ceil(seconds * 1000);
212
+ return Number.isSafeInteger(duration) ? duration : null;
213
+ }
214
+ /** Omit measurement only for preflight; final acceptance needs the measured duration. */
215
+ function finalContentReviewProblems(raw, outputSha, assembly, measuredDurationMs) {
216
+ if (!object(raw))
217
+ return ['Exact-final audiovisual content review is missing'];
218
+ const r = raw;
219
+ const problems = [];
220
+ if (assembly.status !== 'complete' || !assembly.timeline)
221
+ problems.push('Assembly evidence is incomplete');
222
+ if (r.output_sha256 !== outputSha || r.timeline_revision !== assembly.revision || r.creative_contract_revision !== assembly.timeline?.creative_contract_revision)
223
+ problems.push('Content review belongs to different final, timeline or approved intent bytes');
224
+ if (r.verdict !== 'approved' || !text(r.reviewer))
225
+ problems.push('Content review is not approved by an identified reviewer');
226
+ if (!r.capabilities?.audio_perception || !r.capabilities?.motion_perception)
227
+ problems.push('Actual audio and continuous-motion review capability is missing');
228
+ const measurementRequired = measuredDurationMs !== undefined;
229
+ const measured = ms(measuredDurationMs) && measuredDurationMs > 0 ? measuredDurationMs : null;
230
+ if (measurementRequired && measured === null)
231
+ problems.push('The final playback duration could not be measured');
232
+ if (measured !== null && (!assembly.timeline || Math.abs(assembly.timeline.duration_ms - measured) > exports.FINAL_ASSEMBLY_DURATION_TOLERANCE_MS))
233
+ problems.push(`Assembly duration must match the measured ${measured}ms final within ${exports.FINAL_ASSEMBLY_DURATION_TOLERANCE_MS}ms`);
234
+ const duration = measured ?? assembly.timeline?.duration_ms ?? 0;
235
+ // Preflight accepts frame/AAC padding; final acceptance still covers the measured end.
236
+ const upperBound = duration + exports.FINAL_ASSEMBLY_DURATION_TOLERANCE_MS;
237
+ const coverageValid = Array.isArray(r.coverage) && r.coverage.every((w) => object(w) && ms(w.start_ms) && ms(w.end_ms) && w.end_ms > w.start_ms && w.end_ms <= upperBound);
238
+ if (!coverageValid)
239
+ problems.push('Complete final playback coverage is missing or out of bounds');
240
+ else {
241
+ let end = 0;
242
+ let missing = 0;
243
+ for (const window of [...r.coverage].sort((a, b) => a.start_ms - b.start_ms)) {
244
+ missing += Math.max(0, window.start_ms - end);
245
+ end = Math.max(end, window.end_ms);
246
+ }
247
+ missing += Math.max(0, duration - end);
248
+ if (!r.coverage.length || missing > 1)
249
+ problems.push(`Playback and listening must cover the complete ${duration}ms final (only 1ms total timestamp rounding is allowed)`);
250
+ }
251
+ if (!Array.isArray(r.unresolved_issues) || r.unresolved_issues.some((i) => !i || i.severity === 'P0' || i.severity === 'P1'))
252
+ problems.push('Required unresolved issues remain');
253
+ for (const name of exports.CONTENT_DIMENSIONS) {
254
+ const dimension = r.dimensions?.[name];
255
+ if (!dimension || !text(dimension.note) || !['pass', 'not_applicable'].includes(dimension.status))
256
+ problems.push(`${name}: required content review is incomplete or needs revision`);
257
+ if (dimension?.status === 'not_applicable' && ['reference_and_concept', 'brand_and_product', 'action_and_continuity', 'sound_and_silence', 'pacing_and_joins', 'camera_and_lighting'].includes(name))
258
+ problems.push(`${name}: this responsibility cannot be skipped`);
259
+ if (dimension?.status === 'not_applicable' && ['voice_performance', 'pronunciation'].includes(name) && assembly.timeline?.speech_mode !== 'none')
260
+ problems.push(`${name}: speech is present`);
261
+ if (dimension?.status === 'not_applicable' && name === 'lip_sync' && assembly.timeline?.segments.some((s) => s.depicts_speech))
262
+ problems.push('lip_sync: a speaking face is present');
263
+ }
264
+ return problems;
265
+ }
266
+ //# sourceMappingURL=assembly-timeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assembly-timeline.js","sourceRoot":"","sources":["../../../src/kit/core/assembly-timeline.ts"],"names":[],"mappings":";;;AA2DA,wDAKC;AA+BD,4DAIC;AAcD,8DA+FC;AAKD,0DAIC;AAGD,gEAqCC;AAjQD,oFAAoF;AACpF,2CAA4C;AAE/B,QAAA,eAAe,GAAG,gCAAyC,CAAC;AAC5D,QAAA,YAAY,GAAG,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAC7G,QAAA,gBAAgB,GAAG,CAAC,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,qBAAqB,CAAU,CAAC;AAqDpG,iFAAiF;AACjF,SAAgB,sBAAsB,CAAC,QAA0B;IAC/D,OAAO;QACL,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,OAAgB,EAAE,CAAC,CAAC;QAC3I,GAAG,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,KAAK,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAY,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACvN,CAAC;AACJ,CAAC;AAoBY,QAAA,kBAAkB,GAAG,CAAC,uBAAuB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,UAAU,EAAE,mBAAmB,EAAE,eAAe,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,UAAU,CAAU,CAAC;AAEvQ,MAAM,MAAM,GAAG,CAAC,CAAU,EAAgC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/G,MAAM,IAAI,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5F,MAAM,IAAI,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9E,MAAM,EAAE,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnG,MAAM,MAAM,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxF,MAAM,UAAU,GAAG,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACzE,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAExH,2FAA2F;AAC3F,SAAgB,wBAAwB,CAAC,KAAuB;IAC9D,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAW,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC1E,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxI,OAAO,IAAA,yBAAa,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,IAAI,CAAC,KAAkD,EAAE,QAAgB;IAChF,MAAM,OAAO,GAAgD,EAAE,CAAC;IAChE,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtE,IAAI,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpF,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,GAAG,GAAG,QAAQ,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,oGAAoG;AACpG,SAAgB,yBAAyB,CAAC,GAAY,EAAE,MAAgC;IACtF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI;YAC7E,MAAM,EAAE,CAAC,6FAA6F,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC3I,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,GAAG,CAAC,MAAM,KAAK,uBAAe;QAAE,MAAM,CAAC,IAAI,CAAC,2BAA2B,uBAAe,EAAE,CAAC,CAAC;IAC9F,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IAClH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,GAAG,CAAC,WAAW,GAAG,OAAO;QAAE,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC3H,IAAI,CAAE,oBAAmC,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACtH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAE,wBAAuC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,gBAAgB,CAAC,MAAM;QAAE,MAAM,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAC;IACjT,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACxJ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACrI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IACzH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAC3I,IAAI,GAAG,CAAC,gBAAgB,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IACvL,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACxF,MAAM,CAAC,GAAG,GAAkC,CAAC;IAC7C,MAAM,WAAW,GAAG,CAAC,CAAU,EAAE,EAAU,EAAuB,EAAE;QAClE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACpK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,0DAA0D,CAAC,CAAC;YAAC,OAAO,KAAK,CAAC;QAC7F,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,CAAU,EAAE,EAAU,EAAE,EAAE;QAC5C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;QACvK,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACvE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QACvH,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAE,oBAAkC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,CAAC,cAAc,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,uDAAuD,CAAC,CAAC;QAC1O,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,4DAA4D,CAAC,CAAC;QACvM,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC;QAC/F,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,gEAAgE,CAAC,CAAC;QAC9L,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,WAAW,KAAK,iBAAiB,IAAI,CAAC,CAAC,YAAY,KAAK,UAAU;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,oCAAoC,CAAC,CAAC;QACvJ,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,WAAW,KAAK,sBAAsB,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,KAAK,aAAa,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,qEAAqE,CAAC,CAAC;aACvP,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,WAAW,KAAK,sBAAsB,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,aAAc,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iEAAiE,CAAC,CAAC;IACvO,CAAC;IACD,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC9E,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAC7H,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,sDAAsD,CAAC,CAAC;QACvK,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,kDAAkD,CAAC,CAAC;YACpJ,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAC;YAC/G,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,sCAAsC,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,gBAAgB;QAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IACpG,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM;QAAE,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IACrL,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,gBAAgB,IAAI,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;aAChK,CAAC;YACJ,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM;gBAAE,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACtF,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;YACnO,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAC1N,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACxF,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM;QAAE,MAAM,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;IACpK,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3F,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACjG,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,QAAQ,IAAI,KAAK,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,+CAA+C,CAAC,CAAC;QAChS,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,KAAK,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,aAAc,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACrF,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;aAChO,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC1G,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;aAC5H,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,sFAAsF,CAAC,CAAC;IAC/J,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/F,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS;YAChE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACjG,IAAI,GAAG,IAAI,KAAK,GAAG,CAAC;gBAAE,SAAS;YAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,yBAAyB,CAAC,CAAC;iBAClT,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,QAAQ,IAAI,KAAK,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,4CAA4C,CAAC,CAAC;QACrP,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IAC3I,IAAI,OAAO,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM;QAAE,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IACrG,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAU;QAAE,IAAI,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,aAAa,CAAC,CAAC;IAChM,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IACnL,CAAC;IACD,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IACzI,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM;QAAE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,wBAAwB,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,gDAAgD,CAAC,CAAC;IAC1Q,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,wBAAwB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;AACxH,CAAC;AAED,yEAAyE;AAC5D,QAAA,oCAAoC,GAAG,GAAG,CAAC;AAExD,SAAgB,uBAAuB,CAAC,OAAkC;IACxE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1F,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D,CAAC;AAED,yFAAyF;AACzF,SAAgB,0BAA0B,CAAC,GAAY,EAAE,SAAiB,EAAE,QAAuB,EAAE,kBAAkC;IACrI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,mDAAmD,CAAC,CAAC;IAC/E,MAAM,CAAC,GAAG,GAAoC,CAAC;IAC/C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,QAAQ,CAAC,QAAQ;QAAE,QAAQ,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC3G,IAAI,CAAC,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,CAAC,iBAAiB,KAAK,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC,0BAA0B,KAAK,QAAQ,CAAC,QAAQ,EAAE,0BAA0B;QAAE,QAAQ,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;IAChQ,IAAI,CAAC,CAAC,OAAO,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IAC7H,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,gBAAgB,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,iBAAiB;QAAE,QAAQ,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;IAC9J,MAAM,mBAAmB,GAAG,kBAAkB,KAAK,SAAS,CAAC;IAC7D,MAAM,QAAQ,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9F,IAAI,mBAAmB,IAAI,QAAQ,KAAK,IAAI;QAAE,QAAQ,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACjH,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,4CAAoC,CAAC;QACxI,QAAQ,CAAC,IAAI,CAAC,6CAA6C,QAAQ,mBAAmB,4CAAoC,IAAI,CAAC,CAAC;IAClI,MAAM,QAAQ,GAAG,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE,WAAW,IAAI,CAAC,CAAC;IACjE,uFAAuF;IACvF,MAAM,UAAU,GAAG,QAAQ,GAAG,4CAAoC,CAAC;IACnE,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC;IAC3K,IAAI,CAAC,aAAa;QAAE,QAAQ,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;SAC7F,CAAC;QACJ,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7E,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;YAC9C,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,kDAAkD,QAAQ,yDAAyD,CAAC,CAAC;IAC5K,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACjL,KAAK,MAAM,IAAI,IAAI,0BAAkB,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,2DAA2D,CAAC,CAAC;QACrL,IAAI,SAAS,EAAE,MAAM,KAAK,gBAAgB,IAAI,CAAC,uBAAuB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,qBAAqB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,yCAAyC,CAAC,CAAC;QACtQ,IAAI,SAAS,EAAE,MAAM,KAAK,gBAAgB,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,WAAW,KAAK,MAAM;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,qBAAqB,CAAC,CAAC;QAC9L,IAAI,SAAS,EAAE,MAAM,KAAK,gBAAgB,IAAI,IAAI,KAAK,UAAU,IAAI,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACxL,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../../src/kit/core/device.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAK9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,8EAA8E;AAC9E,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsB5D;AAsBD,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAiBnF;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK7D;AAYD,wBAAsB,YAAY,CAAC,KAAK,EAAE;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,UAAU,CAAC;CACrB,GAAG,OAAO,CAAC,YAAY,CAAC,CAexB"}
1
+ {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../../src/kit/core/device.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAK9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,8EAA8E;AAC9E,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsB5D;AAsBD,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAiBnF;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK7D;AAYD,wBAAsB,YAAY,CAAC,KAAK,EAAE;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,UAAU,CAAC;CACrB,GAAG,OAAO,CAAC,YAAY,CAAC,CAgBxB"}
@@ -143,6 +143,7 @@ async function deviceReport(input) {
143
143
  arch: archOf(),
144
144
  kit_version: version_1.KIT_VERSION,
145
145
  interfaces: [...version_1.KIT_INTERFACES],
146
+ features: [...version_1.KIT_FEATURES],
146
147
  ffmpeg: input.tools.ffmpeg.report,
147
148
  ffprobe: input.tools.ffprobe.report,
148
149
  browser,
@@ -1 +1 @@
1
- {"version":3,"file":"device.js","sourceRoot":"","sources":["../../../src/kit/core/device.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,4BAsBC;AAuBD,kCAiBC;AAED,gCAKC;AAYD,oCAoBC;AAtHD,6EAA6E;AAC7E,kEAAkE;AAClE,mCAAoC;AACpC,2BAAuD;AACvD,0CAAsD;AACtD,2CAA6B;AAE7B,mCAAoD;AACpD,2CAAwC;AACxC,iCAAgE;AAChE,uCAAwE;AAGxE,MAAM,SAAS,GAAG,sBAAsB,CAAC;AACzC,MAAM,OAAO,GAAG,0BAA0B,CAAC;AAE3C,8EAA8E;AACvE,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,MAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,IAAA,gBAAK,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAA4B,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3I,MAAM,KAAK,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAA,mBAAU,GAAE,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;QACjH,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,uEAAuE;YACvE,MAAM,IAAA,sBAAe,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACpC,SAAS;QACX,CAAC;QACD,uEAAuE;QACvE,IAAI,CAAC,MAAM,IAAA,eAAQ,EAAC,GAAG,IAAI,WAAW,IAAA,qBAAS,EAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;YACjF,MAAM,KAAK,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,KAAK,KAAK,GAAG;gBAAE,MAAM,IAAA,kBAAW,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACnD,SAAS;QACX,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,CAAC;QACH,MAAM,EAAE,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAA6B,CAAC,SAAS,CAAC;QAClE,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,UAAkB;IACjC,IAAI,CAAC;QACH,4FAA4F;QAC5F,OAAO,IAAA,gBAAW,EAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAC1D,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAA,eAAU,EAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAC5H,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,SAAgB,WAAW,CAAC,IAAY;IACtC,MAAM,IAAI,GAAG,IAAA,qBAAa,EAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,KAAK,GAA8C,EAAE,CAAC;IAC5D,KAAK,MAAM,EAAE,IAAI,IAAA,gBAAW,EAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE;YAAE,SAAS;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,IAAA,aAAQ,EAAC,GAAG,CAAC,CAAC,WAAW,EAAE;YAAE,SAAS;QAC3C,mFAAmF;QACnF,MAAM,QAAQ,GAAG,IAAA,gBAAW,EAAC,GAAG,CAAC;aAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,wBAAc,EAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;aAC9D,IAAI,EAAE;aACN,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChB,IAAI,QAAQ,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;YAAE,MAAM;IACjC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,GAAW;IAC1C,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,OAAO,CAAC,IAAA,eAAU,EAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK;QAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxF,MAAM,KAAK,GAAG,MAAM,IAAA,iBAAM,EAAC,KAAK,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,IAAI;IACX,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC3H,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,MAAM;IACb,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC;IAC5E,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;AACjF,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,KAKlC;IACC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC,OAA4C,CAAC;IAC7F,OAAO;QACL,SAAS,EAAE,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACrC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;QAC1C,EAAE,EAAE,IAAI,EAAE;QACV,IAAI,EAAE,MAAM,EAAE;QACd,WAAW,EAAE,qBAAW;QACxB,UAAU,EAAE,CAAC,GAAG,wBAAc,CAAC;QAC/B,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM;QACjC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;QACnC,OAAO;QACP,YAAY,EAAE,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;QAC1C,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;KAC/B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"device.js","sourceRoot":"","sources":["../../../src/kit/core/device.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,12 @@ export interface Eyes {
27
27
  unreadable_tiles: number[];
28
28
  };
29
29
  audio?: ReviewAudio;
30
+ /** Samples and measurements never establish perceptual review. */
31
+ content_review_status?: 'incomplete';
32
+ review_capability?: {
33
+ audio_perception: false;
34
+ motion_perception: false;
35
+ };
30
36
  }
31
37
  export interface ReviewAudio {
32
38
  required: boolean;
@@ -37,6 +43,15 @@ export interface ReviewAudio {
37
43
  end_s: number;
38
44
  reason: 'cut' | 'word_gap';
39
45
  }>;
46
+ measured_near_silence?: Array<{
47
+ start_s: number;
48
+ end_s: number;
49
+ }>;
50
+ unplanned_quiet_candidates?: Array<{
51
+ start_s: number;
52
+ end_s: number;
53
+ }>;
54
+ measurement_status?: 'measured' | 'incomplete';
40
55
  }
41
56
  export interface Product {
42
57
  name?: string;
@@ -92,7 +107,7 @@ export declare function presenceWarning(name: string | undefined, photos: Float6
92
107
  export declare function lookAtFinal(opts: {
93
108
  ffmpeg: string;
94
109
  final: string;
95
- timeline: Pick<Timeline, 'duration_s' | 'width' | 'height' | 'scenes' | 'end_card'> & {
110
+ timeline: Pick<Timeline, 'duration_s' | 'width' | 'height' | 'scenes' | 'end_card' | 'assembly_timeline'> & {
96
111
  speech?: Timeline['speech'];
97
112
  fps?: number;
98
113
  };
@@ -1 +1 @@
1
- {"version":3,"file":"eyes.d.ts","sourceRoot":"","sources":["../../../src/kit/core/eyes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eyes.d.ts","sourceRoot":"","sources":["../../../src/kit/core/eyes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAIjD,oDAAoD;AACpD,eAAO,MAAM,YAAY,KAAK,CAAC;AAW/B,gHAAgH;AAChH,eAAO,MAAM,YAAY,MAAM,CAAC;AAEhC,8EAA8E;AAC9E,eAAO,MAAM,QAAQ,UAUpB,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,IAAI;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,EAAE,CAAC;QAAC,gBAAgB,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACvF,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,kEAAkE;IAClE,qBAAqB,CAAC,EAAE,YAAY,CAAC;IACrC,iBAAiB,CAAC,EAAE;QAAE,gBAAgB,EAAE,KAAK,CAAC;QAAC,iBAAiB,EAAE,KAAK,CAAA;KAAE,CAAC;CAC3E;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,GAAG,UAAU,CAAA;KAAE,CAAC,CAAC;IAC/E,qBAAqB,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,0BAA0B,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,kBAAkB,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;CAChD;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,UAAU,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AA+BlG,2FAA2F;AAC3F,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAIzF;AAED,2GAA2G;AAC3G,wBAAgB,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,QAAQ,GAAG,UAAU,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,EAAE,CAiBzH;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,QAAQ,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;CAAE,GAAG,WAAW,CAAC,SAAS,CAAC,CAiB9I;AAmCD,qEAAqE;AACrE,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAGjD;AAwCD,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAA;CAAE,CAAC,EAAE,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAchI;AAuBD,4CAA4C;AAC5C,wBAAgB,SAAS,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,CAS9C;AAkBD,kHAAkH;AAClH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,GAAG,IAAI,CA8B1G;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAqBtE;AAED,yHAAyH;AACzH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,WAAW,GAAG,IAAI,CAWnH;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,mBAAmB,CAAC,GAAG;QAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1J,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,kCAAkC;IAClC,IAAI,CAAC,EAAE,IAAI,CAAC;CACb,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDhB"}
@@ -163,6 +163,38 @@ async function extractReviewAudio(ffmpeg, source, output, signal) {
163
163
  child.on('close', (code) => { clearTimeout(timer); resolve(code === 0 ? output : null); });
164
164
  });
165
165
  }
166
+ /** Whole-cut near-silence diagnostics. A quiet consonant or intended pause is not a defect verdict. */
167
+ async function measureQuiet(ffmpeg, source, duration, signal) {
168
+ return new Promise((resolve) => {
169
+ const child = (0, child_process_1.spawn)(ffmpeg, ['-nostdin', '-hide_banner', '-i', source, '-vn', '-af', 'silencedetect=noise=-45dB:d=0.25', '-f', 'null', '-'], { stdio: ['ignore', 'ignore', 'pipe'], env: (0, toolchain_1.childEnv)(), signal });
170
+ let log = '';
171
+ const timer = setTimeout(() => child.kill('SIGKILL'), 60_000);
172
+ child.stderr.on('data', (chunk) => { if (log.length < 1_000_000)
173
+ log += chunk.toString('utf8'); });
174
+ child.on('error', () => { clearTimeout(timer); resolve(null); });
175
+ child.on('close', (code) => {
176
+ clearTimeout(timer);
177
+ if (code !== 0) {
178
+ resolve(null);
179
+ return;
180
+ }
181
+ const intervals = [];
182
+ let opened = null;
183
+ for (const match of log.matchAll(/silence_(start|end):\s*([0-9.]+)/g)) {
184
+ const at = Math.min(duration, Number(match[2]));
185
+ if (match[1] === 'start')
186
+ opened = at;
187
+ else if (opened !== null) {
188
+ intervals.push({ start_s: opened, end_s: at });
189
+ opened = null;
190
+ }
191
+ }
192
+ if (opened !== null)
193
+ intervals.push({ start_s: opened, end_s: duration });
194
+ resolve(intervals);
195
+ });
196
+ });
197
+ }
166
198
  /** A tile's label: its scene and second, or END for the end card. */
167
199
  function tileLabel(tile) {
168
200
  if (tile.end_card)
@@ -403,7 +435,8 @@ async function lookAtFinal(opts) {
403
435
  const unreadable_tiles = frames.filter((frame) => !frame.frame).map((frame) => frame.tile.tile);
404
436
  if (missing_scenes.length || unreadable_tiles.length)
405
437
  warnings.push({ check: 'review_coverage', message: 'The frame review is incomplete. Inspect the missing scenes in the actual video before calling it ready.' });
406
- const required = Boolean(opts.timeline.speech?.length);
438
+ const assembly = opts.timeline.assembly_timeline;
439
+ const required = !(assembly?.speech_mode === 'none' && assembly.soundtrack_modes.includes('intentional_silence'));
407
440
  let audio = { required, final_mix: null, before_sound: null, windows: required ? audioReviewWindows(opts.timeline) : [] };
408
441
  if (required) {
409
442
  const audioDir = path.join(dir, 'review-audio');
@@ -411,11 +444,15 @@ async function lookAtFinal(opts) {
411
444
  const final_mix = await extractReviewAudio(opts.ffmpeg, opts.final, path.join(audioDir, 'final-mix.wav'), opts.signal);
412
445
  const before_sound = opts.beforeSound ? await extractReviewAudio(opts.ffmpeg, opts.beforeSound, path.join(audioDir, 'before-sound.wav'), opts.signal) : null;
413
446
  audio = { ...audio, final_mix, before_sound };
447
+ const quiet = final_mix ? await measureQuiet(opts.ffmpeg, opts.final, opts.timeline.duration_s, opts.signal) : null;
448
+ const pauses = assembly?.pauses ?? [];
449
+ audio = { ...audio, measurement_status: quiet === null ? 'incomplete' : 'measured',
450
+ ...(quiet ? { measured_near_silence: quiet, unplanned_quiet_candidates: quiet.filter((q) => !pauses.some((p) => p.start_ms / 1000 <= q.start_s + 0.05 && p.end_ms / 1000 >= q.end_s - 0.05)) } : {}) };
414
451
  if (!final_mix || (opts.beforeSound && !before_sound))
415
452
  warnings.push({ check: 'review_audio', message: 'Audio review evidence could not be extracted. Listen to the actual final and source takes before calling speech clean.' });
416
453
  }
417
454
  const output = await (0, files_1.hashFile)(opts.final).catch(() => null);
418
- const eyes = { contact_sheet: sheet, tiles, warnings, look_for: exports.LOOK_FOR, ...(output ? { output_sha256: output.sha256 } : {}), coverage: { complete: Boolean(sheet) && !missing_scenes.length && !unreadable_tiles.length, missing_scenes, unreadable_tiles }, audio };
455
+ const eyes = { contact_sheet: sheet, tiles, warnings, look_for: exports.LOOK_FOR, ...(output ? { output_sha256: output.sha256 } : {}), coverage: { complete: Boolean(sheet) && !missing_scenes.length && !unreadable_tiles.length, missing_scenes, unreadable_tiles }, audio, content_review_status: 'incomplete', review_capability: { audio_perception: false, motion_perception: false } };
419
456
  await (0, promises_1.writeFile)(path.join(dir, 'eyes.json'), JSON.stringify(eyes, null, 2) + '\n', { mode: 0o600 });
420
457
  return eyes;
421
458
  }