vidspotai-shared 1.0.100 → 1.0.101-dev.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.
Files changed (183) hide show
  1. package/lib/globals/aiModels/enums.d.ts +1 -0
  2. package/lib/globals/aiModels/enums.d.ts.map +1 -1
  3. package/lib/globals/aiModels/enums.js +3 -0
  4. package/lib/globals/aiModels/extendCapability.d.ts +26 -0
  5. package/lib/globals/aiModels/extendCapability.d.ts.map +1 -0
  6. package/lib/globals/aiModels/extendCapability.js +42 -0
  7. package/lib/globals/aiModels/index.d.ts +1 -0
  8. package/lib/globals/aiModels/index.d.ts.map +1 -1
  9. package/lib/globals/aiModels/index.js +1 -0
  10. package/lib/globals/aiModels/providers/google.d.ts.map +1 -1
  11. package/lib/globals/aiModels/providers/google.js +6 -9
  12. package/lib/globals/aiModels/providers/hostedAvatars.js +10 -10
  13. package/lib/globals/creditUnit.d.ts +20 -33
  14. package/lib/globals/creditUnit.d.ts.map +1 -1
  15. package/lib/globals/creditUnit.js +20 -33
  16. package/lib/globals/types.d.ts +34 -2
  17. package/lib/globals/types.d.ts.map +1 -1
  18. package/lib/globals/types.js +37 -0
  19. package/lib/models/demoVideoProject.model.d.ts +213 -0
  20. package/lib/models/demoVideoProject.model.d.ts.map +1 -1
  21. package/lib/models/index.d.ts +2 -0
  22. package/lib/models/index.d.ts.map +1 -1
  23. package/lib/models/index.js +2 -0
  24. package/lib/models/mediaUpload.model.d.ts +25 -0
  25. package/lib/models/mediaUpload.model.d.ts.map +1 -1
  26. package/lib/models/productConnection.model.d.ts +57 -0
  27. package/lib/models/productConnection.model.d.ts.map +1 -0
  28. package/lib/models/productConnection.model.js +7 -0
  29. package/lib/models/video.model.d.ts +11 -0
  30. package/lib/models/video.model.d.ts.map +1 -1
  31. package/lib/models/videoQaJob.model.d.ts +61 -0
  32. package/lib/models/videoQaJob.model.d.ts.map +1 -0
  33. package/lib/models/videoQaJob.model.js +16 -0
  34. package/lib/schemas/brandKit.schema.d.ts +3 -1
  35. package/lib/schemas/brandKit.schema.d.ts.map +1 -1
  36. package/lib/schemas/brandKit.schema.js +9 -0
  37. package/lib/schemas/brief.schema.d.ts +5 -4
  38. package/lib/schemas/brief.schema.d.ts.map +1 -1
  39. package/lib/schemas/brief.schema.js +23 -1
  40. package/lib/schemas/demoQuestion.schema.d.ts +24 -4
  41. package/lib/schemas/demoQuestion.schema.d.ts.map +1 -1
  42. package/lib/schemas/demoQuestion.schema.js +8 -2
  43. package/lib/schemas/demoSpec.schema.d.ts +40 -6
  44. package/lib/schemas/demoSpec.schema.d.ts.map +1 -1
  45. package/lib/schemas/demoSpec.schema.js +46 -1
  46. package/lib/schemas/project.schema.d.ts +33 -3
  47. package/lib/schemas/project.schema.d.ts.map +1 -1
  48. package/lib/schemas/project.schema.js +22 -0
  49. package/lib/schemas/social.schema.d.ts +1 -1
  50. package/lib/schemas/videoPlan.schema.d.ts +22 -20
  51. package/lib/schemas/videoPlan.schema.d.ts.map +1 -1
  52. package/lib/schemas/videoPlan.schema.js +19 -0
  53. package/lib/services/agent/editClassifier.d.ts +10 -10
  54. package/lib/services/agent/eval/types.d.ts +3 -2
  55. package/lib/services/agent/eval/types.d.ts.map +1 -1
  56. package/lib/services/agent/executor/core.d.ts.map +1 -1
  57. package/lib/services/agent/executor/core.js +11 -0
  58. package/lib/services/agent/planner/Planner.d.ts.map +1 -1
  59. package/lib/services/agent/planner/Planner.js +5 -0
  60. package/lib/services/agent/planner/overlayRegen.d.ts.map +1 -1
  61. package/lib/services/agent/planner/overlayRegen.js +5 -0
  62. package/lib/services/agent/planner/plannerMessages.d.ts.map +1 -1
  63. package/lib/services/agent/planner/plannerMessages.js +10 -1
  64. package/lib/services/agent/planner/scriptFirstPlanner.d.ts.map +1 -1
  65. package/lib/services/agent/planner/scriptFirstPlanner.js +2 -0
  66. package/lib/services/agent/regenCore.d.ts.map +1 -1
  67. package/lib/services/agent/regenCore.js +11 -1
  68. package/lib/services/agent/runHelpers.d.ts +8 -0
  69. package/lib/services/agent/runHelpers.d.ts.map +1 -1
  70. package/lib/services/agent/runHelpers.js +5 -1
  71. package/lib/services/agent/tools/chapterOutline.tool.d.ts +8 -0
  72. package/lib/services/agent/tools/chapterOutline.tool.d.ts.map +1 -1
  73. package/lib/services/agent/tools/chapterOutline.tool.js +21 -8
  74. package/lib/services/agent/tools/composeScene.tool.d.ts +32 -2
  75. package/lib/services/agent/tools/composeScene.tool.d.ts.map +1 -1
  76. package/lib/services/agent/tools/estimateCost.tool.d.ts +11 -1
  77. package/lib/services/agent/tools/estimateCost.tool.d.ts.map +1 -1
  78. package/lib/services/agent/tools/extendVideo.tool.d.ts +9 -3
  79. package/lib/services/agent/tools/extendVideo.tool.d.ts.map +1 -1
  80. package/lib/services/agent/tools/extendVideo.tool.js +12 -27
  81. package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts +1 -1
  82. package/lib/services/agent/tools/generateScript.tool.d.ts +3 -2
  83. package/lib/services/agent/tools/generateScript.tool.d.ts.map +1 -1
  84. package/lib/services/agent/tools/generateScript.tool.js +16 -7
  85. package/lib/services/agent/tools/generateVoiceover.tool.d.ts +1 -1
  86. package/lib/services/agent/tools/planVideo.tool.d.ts +11 -8
  87. package/lib/services/agent/tools/planVideo.tool.d.ts.map +1 -1
  88. package/lib/services/agent/tools/render.tool.d.ts +11 -1
  89. package/lib/services/agent/tools/render.tool.d.ts.map +1 -1
  90. package/lib/services/agent/tools/searchStock.tool.d.ts +1 -1
  91. package/lib/services/agent/tools/searchUserLibrary.tool.d.ts +4 -4
  92. package/lib/services/aiGen/providers/alibaba/alibaba.d.ts +0 -6
  93. package/lib/services/aiGen/providers/alibaba/alibaba.d.ts.map +1 -1
  94. package/lib/services/aiGen/providers/alibaba/alibaba.js +5 -103
  95. package/lib/services/aiGen/providers/bytedance/bytedance.service.d.ts.map +1 -1
  96. package/lib/services/aiGen/providers/bytedance/bytedance.service.js +1 -9
  97. package/lib/services/aiGen/providers/google/google.service.d.ts.map +1 -1
  98. package/lib/services/aiGen/providers/google/google.service.js +26 -142
  99. package/lib/services/aiGen/providers/google/googleErrors.d.ts.map +1 -1
  100. package/lib/services/aiGen/providers/google/googleErrors.js +7 -17
  101. package/lib/services/aiGen/providers/kling/kling.service.d.ts.map +1 -1
  102. package/lib/services/aiGen/providers/kling/kling.service.js +22 -3
  103. package/lib/services/aiGen/providers/kling/klingStatus.d.ts +7 -0
  104. package/lib/services/aiGen/providers/kling/klingStatus.d.ts.map +1 -1
  105. package/lib/services/aiGen/providers/kling/klingStatus.js +41 -4
  106. package/lib/services/aiGen/providers/pixverse/pixverse.service.d.ts.map +1 -1
  107. package/lib/services/aiGen/providers/pixverse/pixverse.service.js +25 -0
  108. package/lib/services/aiGen/providers/types.d.ts +20 -0
  109. package/lib/services/aiGen/providers/types.d.ts.map +1 -1
  110. package/lib/services/avatarGen/avatarProviderFactory.d.ts.map +1 -1
  111. package/lib/services/avatarGen/avatarProviderFactory.js +3 -0
  112. package/lib/services/avatarGen/index.d.ts +1 -0
  113. package/lib/services/avatarGen/index.d.ts.map +1 -1
  114. package/lib/services/avatarGen/index.js +1 -0
  115. package/lib/services/avatarGen/providers/synthesiaAvatarProvider.d.ts +53 -0
  116. package/lib/services/avatarGen/providers/synthesiaAvatarProvider.d.ts.map +1 -0
  117. package/lib/services/avatarGen/providers/synthesiaAvatarProvider.js +176 -0
  118. package/lib/services/demo/demoAuthor.d.ts +7 -0
  119. package/lib/services/demo/demoAuthor.d.ts.map +1 -1
  120. package/lib/services/demo/demoAuthor.js +2 -0
  121. package/lib/services/demo/demoAuthorPrompt.d.ts +6 -0
  122. package/lib/services/demo/demoAuthorPrompt.d.ts.map +1 -1
  123. package/lib/services/demo/demoAuthorPrompt.js +24 -2
  124. package/lib/services/demo/demoCaptions.d.ts +69 -0
  125. package/lib/services/demo/demoCaptions.d.ts.map +1 -0
  126. package/lib/services/demo/demoCaptions.js +152 -0
  127. package/lib/services/demo/demoMusic.d.ts +8 -1
  128. package/lib/services/demo/demoMusic.d.ts.map +1 -1
  129. package/lib/services/demo/demoMusic.js +32 -16
  130. package/lib/services/demo/demoScriptPrompt.d.ts +2 -1
  131. package/lib/services/demo/demoScriptPrompt.d.ts.map +1 -1
  132. package/lib/services/demo/demoScriptPrompt.js +29 -2
  133. package/lib/services/demo/demoStockAssets.d.ts +29 -0
  134. package/lib/services/demo/demoStockAssets.d.ts.map +1 -0
  135. package/lib/services/demo/demoStockAssets.js +107 -0
  136. package/lib/services/demo/index.d.ts +3 -0
  137. package/lib/services/demo/index.d.ts.map +1 -1
  138. package/lib/services/demo/index.js +3 -0
  139. package/lib/services/demo/productConnection.service.d.ts +78 -0
  140. package/lib/services/demo/productConnection.service.d.ts.map +1 -0
  141. package/lib/services/demo/productConnection.service.js +125 -0
  142. package/lib/services/editor/planToProject.d.ts.map +1 -1
  143. package/lib/services/editor/planToProject.helpers.d.ts +1 -0
  144. package/lib/services/editor/planToProject.helpers.d.ts.map +1 -1
  145. package/lib/services/editor/planToProject.helpers.js +3 -0
  146. package/lib/services/editor/planToProject.js +39 -0
  147. package/lib/services/editor/projectToDesign.js +13 -1
  148. package/lib/services/firestore.service.d.ts +14 -0
  149. package/lib/services/firestore.service.d.ts.map +1 -1
  150. package/lib/services/firestore.service.js +16 -0
  151. package/lib/services/translation/index.d.ts +1 -0
  152. package/lib/services/translation/index.d.ts.map +1 -1
  153. package/lib/services/translation/index.js +8 -1
  154. package/lib/services/translation/outputLanguage.d.ts +75 -0
  155. package/lib/services/translation/outputLanguage.d.ts.map +1 -0
  156. package/lib/services/translation/outputLanguage.js +190 -0
  157. package/lib/services/translation/translation.service.d.ts +13 -2
  158. package/lib/services/translation/translation.service.d.ts.map +1 -1
  159. package/lib/services/translation/translation.service.js +73 -31
  160. package/lib/services/tts/index.d.ts +1 -0
  161. package/lib/services/tts/index.d.ts.map +1 -1
  162. package/lib/services/tts/index.js +1 -0
  163. package/lib/services/tts/providers/elevenlabs.service.d.ts +7 -0
  164. package/lib/services/tts/providers/elevenlabs.service.d.ts.map +1 -1
  165. package/lib/services/tts/providers/elevenlabs.service.js +69 -13
  166. package/lib/services/tts/types.d.ts +29 -0
  167. package/lib/services/tts/types.d.ts.map +1 -1
  168. package/lib/services/tts/wordTimings.d.ts +27 -0
  169. package/lib/services/tts/wordTimings.d.ts.map +1 -0
  170. package/lib/services/tts/wordTimings.js +57 -0
  171. package/lib/utils/billableDuration.d.ts +11 -0
  172. package/lib/utils/billableDuration.d.ts.map +1 -0
  173. package/lib/utils/billableDuration.js +91 -0
  174. package/lib/utils/index.d.ts +3 -0
  175. package/lib/utils/index.d.ts.map +1 -1
  176. package/lib/utils/index.js +3 -0
  177. package/lib/utils/mp4Duration.d.ts +38 -0
  178. package/lib/utils/mp4Duration.d.ts.map +1 -0
  179. package/lib/utils/mp4Duration.js +164 -0
  180. package/lib/utils/socialEntitlements.d.ts +51 -0
  181. package/lib/utils/socialEntitlements.d.ts.map +1 -0
  182. package/lib/utils/socialEntitlements.js +65 -0
  183. package/package.json +1 -1
@@ -34,6 +34,14 @@ export interface IDemoVideoInputs {
34
34
  websiteUrl?: string;
35
35
  /** User-uploaded product screenshots (GCS URLs). The reliable fallback for auth'd SaaS. */
36
36
  screenshotUrls?: string[];
37
+ /**
38
+ * Opt-in: record a short screencast of `websiteUrl` in a headless browser and
39
+ * feature it as B-roll (Tier 1 of the product-footage-capture feature —
40
+ * notes/PRODUCT_FOOTAGE_CAPTURE_PLAN.md). Only acts when the worker's
41
+ * `DEMO_RECORD_ENABLED` kill-switch is also on; otherwise ignored. Records the
42
+ * PUBLIC page only — authenticated capture (Tier 2) is a separate connect flow.
43
+ */
44
+ recordProductUrl?: boolean;
37
45
  /** Public GitHub repo URL (v1) — read for brand tokens + feature extraction. OAuth depth is v2. */
38
46
  githubRepoUrl?: string;
39
47
  /**
@@ -138,6 +146,29 @@ export interface IDemoPendingClarification {
138
146
  /** Epoch ms when we paused. */
139
147
  createdAt: number;
140
148
  }
149
+ /**
150
+ * A worker pause waiting for the user to (re)connect their product sign-in so the
151
+ * RECORDING stage can replay it and capture the authenticated UI (Tier 2
152
+ * product-footage-capture). Set when an authed replay hits a login wall (expired
153
+ * or missing session) with status AWAITING_INPUT. The user reconnects via the
154
+ * live sign-in session (which re-captures the storageState), then a resume clears
155
+ * this and re-enqueues. Sibling of {@link IDemoPendingClarification} — same pause
156
+ * seam, different `kind`.
157
+ */
158
+ export interface IDemoPendingSignin {
159
+ /** Discriminator — a sign-in reconnect pause. */
160
+ kind: "signin";
161
+ /** Origin host of the product whose session expired / is missing. */
162
+ host: string;
163
+ /** The product URL to reconnect + record. */
164
+ productUrl: string;
165
+ /** Deep-link the frontend Connect modal can open (set by the frontend surface). */
166
+ connectUrl?: string;
167
+ /** The stage the worker paused BEFORE, so resume re-enters at the right place. */
168
+ resumeStage: EDemoVideoStatus;
169
+ /** Epoch ms when we paused. */
170
+ createdAt: number;
171
+ }
141
172
  /** One timeline-synced narration segment, authored from the rendered DemoSpec timeline (plan §6). */
142
173
  export interface IDemoVideoScriptSegment {
143
174
  /** Scene this narration belongs to (matches DemoScene.id). */
@@ -149,6 +180,48 @@ export interface IDemoVideoScriptSegment {
149
180
  /** Spoken duration, ms (post-TTS, speed-matched to the scene). */
150
181
  durationMs: number;
151
182
  }
183
+ /**
184
+ * One word of narration, timed on the VIDEO timeline (not relative to its own
185
+ * segment). Absolute times are what the renderer and the `.srt` both need, and
186
+ * keeping one clock avoids an off-by-a-segment class of bug.
187
+ */
188
+ export interface IDemoCaptionWord {
189
+ word: string;
190
+ startMs: number;
191
+ endMs: number;
192
+ }
193
+ /**
194
+ * One on-screen caption line. A narration SEGMENT is per-scene and can run 30+
195
+ * words; a CUE is what a viewer can actually read at once, so one segment
196
+ * usually yields several cues (see `buildCaptionTrack`).
197
+ */
198
+ export interface IDemoCaptionCue {
199
+ /** Scene this cue's narration belongs to (matches DemoScene.id). */
200
+ sceneId: string;
201
+ /** The full line, as displayed. */
202
+ text: string;
203
+ startMs: number;
204
+ endMs: number;
205
+ /**
206
+ * Per-word timings for the karaoke/word-pop presets. Empty when the TTS
207
+ * provider returned no alignment — the renderer then spaces words evenly
208
+ * across the cue, so a cue is never dropped for want of timings.
209
+ */
210
+ words: IDemoCaptionWord[];
211
+ }
212
+ /**
213
+ * Burned-in caption track for a demo video, derived from the ACTUAL synthesized
214
+ * speech (ElevenLabs character alignment), not from a words-per-second estimate.
215
+ *
216
+ * Pipeline-owned and deliberately NOT part of `DemoSpec`: the spec doubles as the
217
+ * planner LLM's structured-output schema, and word timings are something only the
218
+ * voicing stage can know. Persisted at `demoVideoProjects.captionTrack`.
219
+ */
220
+ export interface IDemoCaptionTrack {
221
+ cues: IDemoCaptionCue[];
222
+ /** True when timings came from real provider alignment rather than estimation. */
223
+ fromAlignment: boolean;
224
+ }
152
225
  /** Per-stage wall-clock timing (feedback_track_stage_timings). Persisted so we can spot stuck-vs-slow. */
153
226
  export interface IDemoVideoStageTiming {
154
227
  stage: EDemoVideoStatus;
@@ -156,6 +229,108 @@ export interface IDemoVideoStageTiming {
156
229
  startedAt: number;
157
230
  /** Wall-clock duration of the stage, ms (set when it ends). */
158
231
  ms?: number;
232
+ /**
233
+ * Human-readable narration of what this stage actually saw and did — e.g.
234
+ * "Planned 9 scenes · 82s · problem-solution" or "Checks passed · repaired
235
+ * audio loudness" (plan §12 / Phase 4, AG-NARRATE). Written by the worker when
236
+ * the stage resolves, from the stage's REAL result (deterministic, no LLM), and
237
+ * capped short enough to render in a timeline row. Absent for stages with
238
+ * nothing worth narrating, and on projects generated before Phase 4.
239
+ */
240
+ note?: string;
241
+ }
242
+ /** Verdict for a single Output-QA check. `warn` ships; `fail` records a caveat. */
243
+ export type EDemoQaStatus = "pass" | "warn" | "fail";
244
+ /**
245
+ * One deterministic technical check the Output-QA supervisor ran against the
246
+ * muxed deliverable (plan §12 / Phase 1). Mirrors, in code, the ffprobe/ffmpeg
247
+ * checks a human runs by hand: duration parity, faststart/moov order, audio
248
+ * presence + non-silence, stream/dimension integrity.
249
+ */
250
+ export interface IDemoQaCheck {
251
+ /** Stable machine id, e.g. `duration-parity`, `faststart`, `audio-non-silence`. */
252
+ id: string;
253
+ /** Human-readable label for the UI/logs. */
254
+ label: string;
255
+ status: EDemoQaStatus;
256
+ /** What was observed vs expected (e.g. "actual 81.30s vs expected 81.50s (Δ200ms)"). */
257
+ detail: string;
258
+ }
259
+ /** What the perceptual supervisor recommends doing with the reviewed cut. */
260
+ export type EDemoQaRecommendation = "ship" | "ship-with-caveats" | "revise";
261
+ /** One perceptual (watched-it-back) finding from the Gemini critic (Phase 2). */
262
+ export interface IDemoQaPerceptualFinding {
263
+ severity: EDemoQaStatus;
264
+ /** Rubric axis, e.g. `hookStrength`, `voiceoverPacing`, `brandTextLegibility`. */
265
+ dimension: string;
266
+ message: string;
267
+ /** 0-based scene index the finding maps to, when the critic could localize it. */
268
+ sceneIndexHint?: number;
269
+ }
270
+ /**
271
+ * Perceptual half of the Output-QA supervisor (plan §12 / Phase 2): the Gemini
272
+ * "watch it back and judge it" pass that grades what ffprobe can't — hook, VO
273
+ * clarity/pacing, brand-text legibility, cut rhythm, CTA, overall shippability —
274
+ * plus the AG-45 gate's recommendation. Present only when the perceptual critic
275
+ * ran (flag `DEMO_PERCEPTUAL_QA_ENABLED` + a Gemini key). Non-blocking: a low
276
+ * score is a recommendation, not a hard failure.
277
+ */
278
+ export interface IDemoQaPerceptual {
279
+ /** Production-readiness 0–10 (Gemini's weighted score). */
280
+ score: number;
281
+ /** Would a paying customer accept this as-is? */
282
+ shippable: boolean;
283
+ /** 2–4 sentence human summary. */
284
+ summary: string;
285
+ findings: IDemoQaPerceptualFinding[];
286
+ /** What the supervisor recommends: ship / ship-with-caveats / revise. */
287
+ recommendation: EDemoQaRecommendation;
288
+ /** Raw AG-45 gate action (`ship`/`remix`/`regen-scenes`/`replan`…) for telemetry. */
289
+ gateAction: string;
290
+ /** Human-readable why, from the gate. */
291
+ reason: string;
292
+ /** Caveats to surface when recommendation = ship-with-caveats. */
293
+ caveats?: string[];
294
+ /** Whether an auto-revise was actually triggered off this review. */
295
+ autoRevised?: boolean;
296
+ /** Epoch ms the perceptual pass finished. */
297
+ ranAt: number;
298
+ }
299
+ /**
300
+ * Structured result of the Output-QA supervisor stage (QA_REVIEW). Persisted on
301
+ * the project for observability + the Phase-3 "where is the issue" UI. QA is
302
+ * NON-blocking: `shippable` may be false (a caveat) but the video still ships.
303
+ */
304
+ export interface IDemoQaReport {
305
+ /** True when no check ended `fail` (warns are tolerated). */
306
+ ok: boolean;
307
+ /** True when the output is fit to ship (no unrecoverable `fail`). */
308
+ shippable: boolean;
309
+ checks: IDemoQaCheck[];
310
+ /** Machine ids of the ffmpeg auto-fixes actually applied (e.g. `remux-faststart`, `loudnorm`). */
311
+ fixesApplied: string[];
312
+ /** Raw probe snapshot for debugging (durations in ms, audio loudness in dB, dims). */
313
+ probe: {
314
+ videoDurationMs?: number;
315
+ audioDurationMs?: number;
316
+ expectedDurationMs?: number;
317
+ width?: number;
318
+ height?: number;
319
+ fps?: number;
320
+ hasAudio?: boolean;
321
+ audioMeanDb?: number;
322
+ audioMaxDb?: number;
323
+ faststart?: boolean;
324
+ };
325
+ /** Number of validate→fix→re-validate iterations run (0 = passed first look). */
326
+ iterations: number;
327
+ /** Epoch ms the QA pass finished. */
328
+ ranAt: number;
329
+ /**
330
+ * Perceptual review of the deliverable (Phase 2). Present only when the Gemini
331
+ * critic ran (flag-gated + needs a key). Absent = deterministic QA only.
332
+ */
333
+ perceptual?: IDemoQaPerceptual;
159
334
  }
160
335
  export interface IDemoVideoProjectModel {
161
336
  userId: string;
@@ -170,6 +345,15 @@ export interface IDemoVideoProjectModel {
170
345
  * "captured from your site" vs "you uploaded".
171
346
  */
172
347
  capturedScreenshotUrls?: string[];
348
+ /**
349
+ * Product footage the worker auto-RECORDED from `inputs.websiteUrl` during the
350
+ * RECORDING stage (Tier 1 product-footage-capture). Stored as featured media
351
+ * assets (`kind: "video"`) so the gather stage re-injects them into the
352
+ * planner's `mediaAssets` on every pass — a redelivered/resumed job reuses the
353
+ * clip instead of re-launching the browser + re-encoding. Absent unless the
354
+ * user opted into `recordProductUrl` and a capture succeeded.
355
+ */
356
+ capturedFootageUrls?: IDemoMediaAsset[];
173
357
  /** The planned, re-renderable DemoSpec. Present once PLANNING completes. */
174
358
  demoSpec?: DemoSpec;
175
359
  /**
@@ -198,6 +382,13 @@ export interface IDemoVideoProjectModel {
198
382
  * steady state. See [[DemoQuestion]].
199
383
  */
200
384
  pendingClarification?: IDemoPendingClarification;
385
+ /**
386
+ * Set while the worker is PAUSED (status AWAITING_INPUT) waiting for the user
387
+ * to (re)connect their product sign-in for authenticated recording (Tier 2).
388
+ * Distinct from `pendingClarification` (`kind` discriminator). Absent in steady
389
+ * state; cleared on resume. See {@link IDemoPendingSignin}.
390
+ */
391
+ pendingSignin?: IDemoPendingSignin;
201
392
  /**
202
393
  * Ids of clarifying questions this project has ALREADY paused on. The worker's
203
394
  * deterministic asset asks (missing logo / screenshots) consult this so a
@@ -216,6 +407,15 @@ export interface IDemoVideoProjectModel {
216
407
  script?: IDemoVideoScriptSegment[];
217
408
  /** Muxed-in narration track (pre-mux audio asset). */
218
409
  voiceoverUrl?: string;
410
+ /**
411
+ * Word-timed captions derived from the synthesized narration, burned into the
412
+ * render (G3). Present once VOICING ran with captions enabled for this aspect /
413
+ * audioIntent. Absent on music-led cuts, on the `DEMO_CAPTIONS_DISABLED`
414
+ * kill-switch, and on projects rendered before G3 landed.
415
+ */
416
+ captionTrack?: IDemoCaptionTrack;
417
+ /** `.srt` sidecar for YouTube/LinkedIn uploads, generated from `captionTrack`. */
418
+ captionsSrtUrl?: string;
219
419
  /**
220
420
  * Background-music bed mixed under the narration (ducked). Selected from the
221
421
  * curated catalog by DemoSpec style. Persisted for observability + redelivery
@@ -230,6 +430,19 @@ export interface IDemoVideoProjectModel {
230
430
  aspect?: DemoSpec["aspect"];
231
431
  /** Per-stage timings for observability (persisted into the doc, not a side trace.json). */
232
432
  stageTimings?: IDemoVideoStageTiming[];
433
+ /**
434
+ * Result of the Output-QA supervisor stage (QA_REVIEW). Present once QA ran.
435
+ * Non-blocking: a `shippable: false` report still ships the video but records
436
+ * the caveats for the UI. Absent when the `DEMO_QA_DISABLED` kill-switch is set.
437
+ */
438
+ qaReport?: IDemoQaReport;
439
+ /**
440
+ * How many times the perceptual supervisor has auto-triggered a spec-revise +
441
+ * re-render on this project (Phase 2, gated by `DEMO_QA_AUTOFIX_ENABLED`).
442
+ * Bounded to 1 so a persistently-low critic score can't loop the pipeline (or
443
+ * its cost) forever. Incremented in the same write that sets `pendingRevision`.
444
+ */
445
+ qaAutoReviseCount?: number;
233
446
  estimatedCredits?: number;
234
447
  totalCreditsUsed?: number;
235
448
  errorMessage?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"demoVideoProject.model.d.ts","sourceRoot":"","sources":["../../src/models/demoVideoProject.model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"demoVideoProject.model.d.ts","sourceRoot":"","sources":["../../src/models/demoVideoProject.model.ts"],"names":[],"mappings":"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"}
@@ -12,5 +12,7 @@ export * from "./mediaUpload.model";
12
12
  export * from "./social.model";
13
13
  export * from "./demoVideoProject.model";
14
14
  export * from "./githubConnection.model";
15
+ export * from "./productConnection.model";
15
16
  export * from "./outreach.model";
17
+ export * from "./videoQaJob.model";
16
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC"}
@@ -28,4 +28,6 @@ __exportStar(require("./mediaUpload.model"), exports);
28
28
  __exportStar(require("./social.model"), exports);
29
29
  __exportStar(require("./demoVideoProject.model"), exports);
30
30
  __exportStar(require("./githubConnection.model"), exports);
31
+ __exportStar(require("./productConnection.model"), exports);
31
32
  __exportStar(require("./outreach.model"), exports);
33
+ __exportStar(require("./videoQaJob.model"), exports);
@@ -7,6 +7,19 @@
7
7
  * (tags, folders, sharing) is v2.
8
8
  */
9
9
  export type EMediaUploadKind = "image" | "video" | "audio" | "other";
10
+ /**
11
+ * Lifecycle of an upload record.
12
+ *
13
+ * `single-upload` writes its record only once the bytes are already in GCS, so
14
+ * it has no use for this and legacy rows carry no `status` at all — absent is
15
+ * therefore read as "ready" everywhere. The resumable path (see
16
+ * `mediaUploadSession.controller.ts`) must reserve the row BEFORE the browser
17
+ * starts PUTting, because the object path is the thing being authorized; those
18
+ * rows start `pending` and are flipped once the object is verified present.
19
+ * `aborted` is a tombstone — kept rather than deleted so an interrupted upload
20
+ * can be resumed or garbage-collected on evidence instead of guesswork.
21
+ */
22
+ export type EMediaUploadStatus = "pending" | "ready" | "aborted";
10
23
  export interface IMediaUploadModel {
11
24
  userId: string;
12
25
  url: string;
@@ -15,5 +28,17 @@ export interface IMediaUploadModel {
15
28
  kind: EMediaUploadKind;
16
29
  sizeBytes?: number;
17
30
  createdAt: string;
31
+ /** Absent means ready — see EMediaUploadStatus. */
32
+ status?: EMediaUploadStatus;
33
+ /**
34
+ * Bucket-relative object path (e.g. `media-uploads/foo-ab12-171.webm`).
35
+ *
36
+ * Only set by the resumable path, which needs to re-derive the GCS handle at
37
+ * completion time. It is deliberately NOT taken from the client on completion:
38
+ * the client would then be able to claim any object in the bucket as its own.
39
+ */
40
+ objectPath?: string;
41
+ /** Set when this row came from the in-app screen recorder rather than a file picker. */
42
+ source?: "screen-recorder";
18
43
  }
19
44
  //# sourceMappingURL=mediaUpload.model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mediaUpload.model.d.ts","sourceRoot":"","sources":["../../src/models/mediaUpload.model.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAErE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"mediaUpload.model.d.ts","sourceRoot":"","sources":["../../src/models/mediaUpload.model.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B"}
@@ -0,0 +1,57 @@
1
+ import { FieldValue } from "firebase-admin/firestore";
2
+ /**
3
+ * Product sign-in connection — the stored, encrypted result of a user signing
4
+ * into their own SaaS product once via the self-hosted live-browser session, so
5
+ * the worker can replay it headlessly and RECORD the authenticated UI as B-roll
6
+ * (Tier 2 of the product-footage-capture feature — notes/PRODUCT_FOOTAGE_CAPTURE_PLAN.md).
7
+ *
8
+ * We NEVER store the user's credentials. The human signs in inside a browser
9
+ * they drive (Google popup, email/password, SSO, magic link — whichever their
10
+ * product uses); we capture only the RESULT — a Playwright-style `storageState`
11
+ * (cookies + localStorage across the origins touched during sign-in) — and store
12
+ * it ENCRYPTED at rest via the shared token vault (AES-256-GCM,
13
+ * `SOCIAL_TOKEN_ENC_KEY`), exactly like {@link IGithubConnectionModel}. Only a
14
+ * worker / Cloud Function decrypts it at replay time.
15
+ *
16
+ * Doc id = `${userId}__${host}` so re-connecting the same product upserts (a
17
+ * fresh session replaces the expired one) and a user can hold several product
18
+ * profiles (one per host), reused across demo projects. Sessions expire, so the
19
+ * worker flips `status` to "expired" when a replay hits a login wall, and the
20
+ * needs_signin resume loop asks the user to reconnect.
21
+ */
22
+ export interface IProductConnectionModel {
23
+ /** Owning user (also part of the doc id). */
24
+ userId: string;
25
+ /** Origin host of the connected product (part of the doc id), e.g. "app.acme.com". */
26
+ host: string;
27
+ /** The URL the user connected / the default recording target. */
28
+ productUrl: string;
29
+ /**
30
+ * All web origins captured in the session (multi-origin auth — e.g. a product
31
+ * spanning app.acme.com + auth.acme.com). storageState is keyed per origin.
32
+ */
33
+ origins: string[];
34
+ /** Optional user-facing label ("My dashboard", "Acme staging"). */
35
+ label?: string;
36
+ /**
37
+ * Playwright-style `storageState` (cookies + localStorage) serialized to JSON
38
+ * then ENCRYPTED via the shared token vault. Never store or log plaintext.
39
+ * Decrypt with `decryptToken` only inside a worker / Cloud Function at replay.
40
+ */
41
+ stateEnc: string;
42
+ /**
43
+ * Best-effort epoch ms of the earliest captured cookie expiry — drives the
44
+ * "reconnect soon" UX. Absent when no expiries were readable (session cookies).
45
+ */
46
+ expiresHint?: number;
47
+ /** Lifecycle: "active" until a replay detects the session no longer authenticates. */
48
+ status: "active" | "expired";
49
+ /** When the session was captured / last refreshed. */
50
+ capturedAt: FieldValue;
51
+ /** When a worker last replayed it for a recording (observability). */
52
+ lastUsedAt?: FieldValue;
53
+ updatedAt: FieldValue;
54
+ }
55
+ /** Deterministic doc id for a user's product connection (one per host). */
56
+ export declare function productConnectionDocId(userId: string, host: string): string;
57
+ //# sourceMappingURL=productConnection.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"productConnection.model.d.ts","sourceRoot":"","sources":["../../src/models/productConnection.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,uBAAuB;IACtC,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sFAAsF;IACtF,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7B,sDAAsD;IACtD,UAAU,EAAE,UAAU,CAAC;IACvB,sEAAsE;IACtE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,EAAE,UAAU,CAAC;CACvB;AAED,2EAA2E;AAC3E,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3E"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.productConnectionDocId = productConnectionDocId;
4
+ /** Deterministic doc id for a user's product connection (one per host). */
5
+ function productConnectionDocId(userId, host) {
6
+ return `${userId}__${host}`;
7
+ }
@@ -16,7 +16,18 @@ export interface IVideoScene {
16
16
  */
17
17
  taskProvider?: string;
18
18
  sceneIndex: number;
19
+ /** REQUESTED duration, in seconds. What we asked the provider for. */
19
20
  duration?: number;
21
+ /**
22
+ * DELIVERED duration, in seconds, when the provider reports it
23
+ * (VideoStatusResult.durationSec). Billing prefers this over `duration`.
24
+ *
25
+ * These diverge whenever a provider ignores or clamps the request — most
26
+ * sharply on video-extend, where Kling/Pixverse append a fixed native
27
+ * increment (~5s) regardless of what was asked. Undefined for providers that
28
+ * don't report a length; billing then falls back to `duration` as before.
29
+ */
30
+ actualDurationSec?: number;
20
31
  prompt?: string;
21
32
  outputVideoUrl?: string;
22
33
  inputVideoUrl?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"video.model.d.ts","sourceRoot":"","sources":["../../src/models/video.model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"video.model.d.ts","sourceRoot":"","sources":["../../src/models/video.model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import type { IDemoQaReport } from "./demoVideoProject.model";
2
+ /**
3
+ * Output-QA job model — the main-pipeline sibling of the demo supervisor's
4
+ * `qaReport` (see notes/SAAS_DEMO_GENERATOR_PLAN.md §12).
5
+ *
6
+ * Backs the MCP `check_video_quality` / `repair_video` tools. Those are
7
+ * enqueue→poll like every other long-running VidSpotAI flow: the MCP server
8
+ * validates + writes one of these docs + enqueues, and the Express worker (the
9
+ * only surface with ffmpeg installed) does the download/probe/repair and writes
10
+ * the result back here. The MCP tool polls this doc to completion.
11
+ *
12
+ * Deliberately its OWN collection rather than a field on `videoJobs`: QA is a
13
+ * per-request event (you can inspect the same video repeatedly, with different
14
+ * repair sets), and keeping it separate means the main generation model's shape
15
+ * is untouched.
16
+ */
17
+ /**
18
+ * The QA report shape is pipeline-agnostic despite its historical `Demo` name —
19
+ * it's produced by one engine (`services/qa/outputQa.ts`) for both pipelines.
20
+ * This alias lets main-pipeline code refer to it without reading as demo code.
21
+ */
22
+ export type IOutputQaReport = IDemoQaReport;
23
+ export declare enum EVideoQaJobStatus {
24
+ QUEUED = "queued",
25
+ RUNNING = "running",
26
+ COMPLETED = "completed",
27
+ FAILED = "failed"
28
+ }
29
+ /** What the caller asked for. `inspect` never writes; `repair` may re-upload. */
30
+ export declare enum EVideoQaMode {
31
+ INSPECT = "inspect",
32
+ REPAIR = "repair"
33
+ }
34
+ export interface IVideoQaJobModel {
35
+ /** Owner — always the authenticated caller; enforced at enqueue AND re-checked
36
+ * in the worker, so a forged doc can't make the worker touch someone's file. */
37
+ userId: string;
38
+ /** The `videoJobs` doc whose output is being inspected/repaired. */
39
+ videoJobId: string;
40
+ status: EVideoQaJobStatus;
41
+ mode: EVideoQaMode;
42
+ /**
43
+ * Repairs the caller permitted, for `repair` mode. Always a subset of the
44
+ * closed allow-list in `demoFfmpegTools.repairOutput`; empty in `inspect` mode.
45
+ */
46
+ requestedFixes: string[];
47
+ /** The output URL as it stood when the job was enqueued. */
48
+ sourceVideoUrl: string;
49
+ report?: IOutputQaReport;
50
+ /** Set only when a repair changed the bytes AND the re-upload succeeded. */
51
+ repairedVideoUrl?: string;
52
+ /** True when `repairedVideoUrl` was written back onto the videoJobs doc. */
53
+ appliedToVideoJob?: boolean;
54
+ errorMessage?: string;
55
+ createdAt: string;
56
+ updatedAt: string;
57
+ /** Epoch ms the worker started, for stuck-job triage. */
58
+ startedAt?: number;
59
+ finishedAt?: number;
60
+ }
61
+ //# sourceMappingURL=videoQaJob.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoQaJob.model.d.ts","sourceRoot":"","sources":["../../src/models/videoQaJob.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D;;;;;;;;;;;;;;GAcG;AAEH;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC;AAE5C,oBAAY,iBAAiB;IAC3B,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED,iFAAiF;AACjF,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B;oFACgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,YAAY,CAAC;IACnB;;;OAGG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;IAGvB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EVideoQaMode = exports.EVideoQaJobStatus = void 0;
4
+ var EVideoQaJobStatus;
5
+ (function (EVideoQaJobStatus) {
6
+ EVideoQaJobStatus["QUEUED"] = "queued";
7
+ EVideoQaJobStatus["RUNNING"] = "running";
8
+ EVideoQaJobStatus["COMPLETED"] = "completed";
9
+ EVideoQaJobStatus["FAILED"] = "failed";
10
+ })(EVideoQaJobStatus || (exports.EVideoQaJobStatus = EVideoQaJobStatus = {}));
11
+ /** What the caller asked for. `inspect` never writes; `repair` may re-upload. */
12
+ var EVideoQaMode;
13
+ (function (EVideoQaMode) {
14
+ EVideoQaMode["INSPECT"] = "inspect";
15
+ EVideoQaMode["REPAIR"] = "repair";
16
+ })(EVideoQaMode || (exports.EVideoQaMode = EVideoQaMode = {}));
@@ -20,6 +20,7 @@ export declare const BrandIdentitySchema: z.ZodObject<{
20
20
  brandName: z.ZodOptional<z.ZodString>;
21
21
  wordmark: z.ZodOptional<z.ZodString>;
22
22
  logoUrl: z.ZodOptional<z.ZodString>;
23
+ siteUrl: z.ZodOptional<z.ZodString>;
23
24
  }, z.core.$strip>;
24
25
  export declare const BrandReferenceSchema: z.ZodObject<{
25
26
  url: z.ZodString;
@@ -31,6 +32,7 @@ export declare const BrandKitSchema: z.ZodObject<{
31
32
  brandName: z.ZodOptional<z.ZodString>;
32
33
  wordmark: z.ZodOptional<z.ZodString>;
33
34
  logoUrl: z.ZodOptional<z.ZodString>;
35
+ siteUrl: z.ZodOptional<z.ZodString>;
34
36
  }, z.core.$strip>>;
35
37
  colors: z.ZodDefault<z.ZodObject<{
36
38
  primary: z.ZodOptional<z.ZodString>;
@@ -58,7 +60,7 @@ export declare const BrandKitSchema: z.ZodObject<{
58
60
  senior: "senior";
59
61
  }>>;
60
62
  accent: z.ZodOptional<z.ZodString>;
61
- language: z.ZodDefault<z.ZodString>;
63
+ language: z.ZodOptional<z.ZodString>;
62
64
  voiceId: z.ZodOptional<z.ZodString>;
63
65
  style: z.ZodOptional<z.ZodEnum<{
64
66
  energetic: "energetic";
@@ -1 +1 @@
1
- {"version":3,"file":"brandKit.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/brandKit.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;GAIG;AAEH,eAAO,MAAM,iBAAiB;;;;;iBAM5B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;iBAa3B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;iBAI9B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;iBAG/B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkBzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"brandKit.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/brandKit.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;GAIG;AAEH,eAAO,MAAM,iBAAiB;;;;;iBAM5B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;iBAa3B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;iBAa9B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;iBAG/B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkBzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -34,6 +34,15 @@ exports.BrandIdentitySchema = zod_1.z.object({
34
34
  brandName: zod_1.z.string().optional(),
35
35
  wordmark: zod_1.z.string().optional(),
36
36
  logoUrl: zod_1.z.string().url().optional(),
37
+ /**
38
+ * The product's own web address. Rendered in the address bar of any browser
39
+ * <DeviceFrame>, which otherwise falls back to the placeholder
40
+ * "app.example.com" — a stand-in that reads as an unfinished mock the moment
41
+ * real product footage sits behind it. The demo pipeline already resolves a
42
+ * website for every author (`authorInput.websiteUrl`), so this is normally
43
+ * populated for free rather than being one more thing to ask for.
44
+ */
45
+ siteUrl: zod_1.z.string().url().optional(),
37
46
  });
38
47
  exports.BrandReferenceSchema = zod_1.z.object({
39
48
  url: zod_1.z.string().url(),