Make Video Projects first-class
packages/shared/src/types/firebase/promptVideoGeneration.ts
apps/flow-builder/src/store/promptVideoGenerations/promptVideoGenerations.server.ts
apps/functions/src/hyperframes-export.ts
apps/functions/src/wizard-video-thumbnail.ts
apps/flow-builder/app/api/prompt-video-generations/**
apps/flow-builder/src/promptVideoGeneration/**
flowchart TB L[Legacy scene-model video] --> C[(promptVideoGenerations)] H[Video Project
HyperFrames HTML] --> C C --> S[2,419-line store
36 exported operations] S --> R[48 route handlers] S --> F[Export + thumbnail functions] S --> U[Share + editor UI] R -. storage paths .-> F U -. version fields .-> F classDef leak stroke:#dc2626,stroke-width:2px,color:#991b1b,fill:#fff7f7; class C,S,R,F,U leak;
Studio gives customers Avery, their AI Producer; the work Avery creates is a Video Project. Persistence instead calls it “V3 Wizard video” with format: 'wizard' and shares its interface with the KTLO scene model.
Deepen one Video Project module and hide the current Firestore collection, Storage layout, callable renderer, and compatibility fields behind its seam. HyperFrames becomes an implementation, not the product model.
- • locality: one project lifecycle
- • leverage: one interface
- • KTLO storage stays internal
- • tests cross the real seam