+
    mik                    @   R t ^ RIHt ^ RIt^ RIHt ^ RIHtHt ^ RI	H
t
 ^ RIHt ^ RIHtHtHtHtHtHt ^ RIHtHtHtHtHtHtHtHtHtHtHt ^ R	I H!t! ^ R
I"H#t# ^ RI$H%t% ^ RI&H't' ^ RI(H)t) ]PT                  ! ]+4      t,]! 4       t-R R lt.R R lt/ ! R R4      t0R# )u  
Pipeline orchestrator – runs all 5 agents in sequence and assembles the
ProductionPlan.

Flow:
  1. ScriptAnalyzer   → narrative beats
  2. FrameExpander    → 25 frames/min with camera variety
  3. PromptEngineer   → image + video prompt per frame (one LLM call each)
  4. TTSScriptwriter  → narration text per frame
  5. TimelinePlanner  → exact timestamps and cut points
)annotationsN)Path)CallableOptional)ThreadPoolExecutor)Console)	BarColumnMofNCompleteColumnProgressSpinnerColumn
TextColumnTimeElapsedColumn)AllScenePromptsAllSceneTTSExpandedFrameBreakdownPipelineConfigPipelineEventPipelineModeProductionPlanProductionSceneSceneBreakdownSceneTTSTimeline)ScriptAnalyzerAgent)FrameExpanderAgent)PromptEngineerAgent)TTSScriptwriterAgent)TimelinePlannerAgentc          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )   framesr   promptsr   ttsr   timeliner   returnzlist[ProductionScene] )formats   "E/home/gabslocked/Desktop/Projetos/Images/video_automation/pipeline.py__annotate__r(   :   s:     5 5"55 
5 	5
 5    c                   . pVP                    Uu/ uF  qUP                  VbK  	  ppVP                    Uu/ uF  qwP                  VbK  	  ppVP                    Uu/ uF  qwP                  VbK  	  p	pV P                   EFi  p
V
P                  pVP	                  V4      pVP	                  V4      pV	P	                  V4      pTP                  \        R/ RVbRV'       d   VP                  MRbRV'       d   VP                  MRbRV'       d   VP                  MRbRV'       d   VP                  MRbRV'       d   VP                  MR	bR
V'       d   VP                  '       d   VP                  MV
P                  bRV
P                  bRV
P                  bRV
P                   bRV
P"                  bRV
P$                  bRV
P&                  bRV'       d   VP(                  MRbRV'       d   VP*                  MRbRV'       d   VP,                  MV
P.                  bRV'       d   VP0                  MRbRV
P2                  bRV'       d   VP4                  MV
P4                  bRV'       d   VP6                  MV
P6                  bRV'       d   VP8                  MRbRV'       d   VP:                  MV
P                  bR\=        V
RR4      bR\=        V
R^ 4      bR\=        V
RR4      b 4       EKl  	  V# u upi u upi u upi ) zBCombine outputs from all agents into unified ProductionScene list.scene_number
time_startz00:00.00time_endduration_secondsg        	cut_point
transitionzcrossfade 0.3senvironmentpose_actionmoodcamera_shotcamera_movementcompositionvisual_focusimage_prompt video_prompttts_textvoice_directionnarration_notes	sync_wordanatomical_highlightclothing_descriptionemotional_tonecoverage_group_idNcoverage_angle_indexcoverage_angle_typer%   )scenesr+   r    frame_numbergetappendr   r,   r-   r.   r/   r0   r1   environment_detailr2   r3   r4   r5   r6   r7   r8   r:   r;   narration_textr<   r=   r>   r?   r@   rA   getattr)r    r!   r"   r#   rE   p
prompt_mapttts_maptime_mapframentms   &&&&         r'   _merge_into_production_scenesrT   :   s    %'F-4^^<^..!#^J<*-**5*Q~~q *G5+3??;?a!?H;NN1KKN\\!_ ,.2==J )+
 9;!4!4	
 +-",,* -/2==4D  MM-- "-- ZZ "-- !& 5 5 "-- #//  01Q^^b!" 01Q^^b#$ ()e.B.B%& 67 1 1B'( !& 5 5)* *+!+++.  &'%;%;//12 @AQ%;%;b34 45q//%**58 #*%1Dd"K9: &-U4JA%N;< %,E3H"$M=!	
 P MY =5;s   K.K3K8c                    V ^8  d   QhRRRR/# )r   planr   r$   z	list[str]r%   )r&   s   "r'   r(   r(   r   s     5 5~ 5) 5r)   c                   RRRV P                    2RV P                   2R\        V P                   \        V P                  ^<,          R4      ,          4       2RRRR	RR
RRRRRRV P
                  P                   2RV P
                  P                   2RV P
                  P                   RV P
                  P                   RV P
                  P                   2RRRRV P                  P                   RV P                  P                   RV P                  P                   R2.pV P                   F  pVP!                  RVP"                   RVP$                  R RVP&                   24       VP!                  RVP$                  R RVP&                   24       VP!                  R VP(                   R!VP*                   24       K  	  VRR"R#V P                  P,                  P/                  4        R$V P                  P                   R%V P                  P                   R&2RV P                   2RR'R(V P0                   R)2.,          pV# )*z,Generate step-by-step assembly instructions.z=== ASSEMBLY INSTRUCTIONS ===r9   zTotal frames: Total duration: zFrames per minute: ~g?u   STEP 1 — GENERATE IMAGESzxFor each frame below, copy the 'Image Prompt' and paste it into your image generator (DALL-E 3, Midjourney, Flux, etc.).z*Save each generated image as frame_XX.png.u   STEP 2 — GENERATE VIDEO CLIPSzFor each frame, upload the generated image to your video generator (Runway ML, Kling AI, Luma, etc.) and paste the 'Video Prompt'.z%Save each video clip as frame_XX.mp4.u   STEP 3 — GENERATE VOICEOVERzAFor each frame, copy the 'TTS Text' and paste it into ElevenLabs.zUse Voice ID: zUse Model: zStability: z | Similarity: z
 | Speed: z Save each audio as frame_XX.mp3.u#   STEP 4 — ASSEMBLE IN VIDEO EDITORzCreate a new project: z @ zfps ()z  [z] Place frame_02dz.mp4 at z    Overlay frame_z.mp3 audio at z    Cut at z | u   STEP 5 — EXPORTz
Export as  (z, zfps)u   STEP 6 — PUBLISHz
Upload to z and add captions/hashtags.)total_scenestotal_duration_formattedroundmaxtotal_duration_secondsvoice_settingsvoice_idmodel_id	stabilitysimilarity_boostspeedexport_settings
resolutionfpsaspect_ratiorE   rH   r4   r+   r,   r/   r0   video_formatuppertarget_platform)rV   instructionsss   &  r'   _build_assembly_instructionsrp   r   s    	(

**+,
4889:
uT%6%6T=X=X[]=]_b9c%cdef
$	>4
)	J/
'K
,,5567
d))2234
d))334 5**;;< =%%++,	. 	+
-
 !5!5!@!@ A##
$E$*>*>*K*K)LA	O7L> [[!--q~~c.B C,,!	
 	  4N1<<.Q	
 	k!++c!,,HI  

T))66<<>? @  ++,Bt/C/C/G/G.H	N
4889:

T))**EF	 	L r)   c                  f    ] tR t^tRtRR R lltR R ltR R ltR	 R
 ltR R lt	R R lt
RtR# )Pipelinez;Orchestrates the full video production pipeline (5 agents).Nc                    V ^8  d   QhRRRR/# )r   configr   on_eventz)Optional[Callable[[PipelineEvent], None]]r%   )r&   s   "r'   r(   Pipeline.__annotate__   s     " "" <"r)   c                	@    Wn         VP                  V n        W n        R # N)rt   	llm_modelmodel	_on_event)selfrt   ru   s   &&&r'   __init__Pipeline.__init__   s    
 %%
!r)   c                   V ^8  d   QhRR/# )r   r$   Noner%   )r&   s   "r'   r(   rv      s     4 4 4r)   c                Z    V P                   e   V P                  \        R/ VB 4       R# R# )z2Emit a pipeline event if a callback is registered.Nr%   )r{   r   )r|   kwargss   &,r'   _emitPipeline._emit   s%    >>%NN=2623 &r)   c                    V ^8  d   QhRRRR/# )r   storystrr$   r   r%   )r&   s   "r'   r(   rv      s        r)   c                    V P                   p V P                  W4      #   \         d#   pT P                  R\	        T4      R7       h Rp?ii ; i)z1Execute the pipeline and return a ProductionPlan.error
event_typemessageN)rt   _run_pipeline	Exceptionr   r   )r|   r   cfgexcs   &&  r'   runPipeline.run   sH    kk	%%e11 	JJ'3s8J<	s    AAAc               $    V ^8  d   QhRRRRRR/# )r   r   r   r   r   r$   r   r%   )r&   s   "r'   r(   rv      s&     d d3 d^ d dr)   c                  a aa S P                  R^RRR7       \        \        4       \        R4      \        R7      ;_uu_ 4       pVP                  RRR	7      p\        S P                  R
7      pVP                  VSP                  4      pVP                  VRR7       RRR4       \        P                  RXP                   R24       S P                  R^RVP                   R2R7       S P                  R^RRSP                   R2R7       \        \        4       \        R4      \        R7      ;_uu_ 4       pVP                  RSP                   R2RR	7      p\        S P                  R
7      pVP                  VS4      oVP                  VRR7       RRR4       \        P                  RSP                    R24       S P                  R^RSP                    R2R7       S P                  R^RRSP                    R2^ SP                   R7       S P                  R^RRR7       \        P                  R4       R VVV 3R  llpR! VV 3R" llp	\#        ^R#7      ;_uu_ 4       p
V
P%                  V4      pV
P%                  V	4      pVP'                  4       pVP'                  4       pRRR4       \(        ;QJ d&    R$ SP*                   4       F  '       g   K   R%M	  R&M! R$ SP*                   4       4      pV'       Edr   SP*                   Uu/ uF9  p\-        VR'^ 4      ^ 8X  g   K  \-        VR(R4      '       g   K,  VP.                  VbK;  	  pp/ pXP0                   FK  pVP3                  VP4                  4      pV'       g   K(  VP6                  '       g   K<  VVVP6                  &   KM  	  . pSP*                   F{  p\-        VR'^ 4      ^ 8  g   K  \-        VR(R4      pV'       g   K.  VV9   g   K7  VV,          pVP9                  \;        VP.                  VP<                  VP>                  R)7      4       K}  	  VP0                  PA                  V4       VP0                  PC                  R* R+7       \        P                  R\E        XP0                  4       R,24       \        P                  R\E        XP0                  4       R-24       S P                  R^R\E        VP0                  4       R.2R7       S P                  R^R\E        VP0                  4       R/2R7       S P                  R^R0R1R7       \        \        4       \        R4      \        R7      ;_uu_ 4       pVP                  R2RR	7      p\G        SR37      pVPI                  V4      pVP                  VR4R7       RRR4       \        P                  R5XPJ                   R624       S P                  R^R0R7VPJ                   2R7       \M        SWV4      p\O        SPP                  SPR                  VPJ                  VPT                  SP                   SP                  PV                  SPX                  PZ                  SP\                  SP^                  VR87
      p\a        V4      Vn1        SPd                  \f        Ph                  8X  d   S Pk                  V4       M0SPd                  \f        Pl                  8X  d   S Po                  V4       S P                  R9R:VPP                   R;VP                   R<VPJ                   R=2R>7       V#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; iu upi   + '       g   i     EL; i)?z0Internal pipeline execution with event emission.agent_startzScript Analyzerz(Analyzing script into narrative beats...)r   agent_number
agent_namer   z[bold blue]{task.description})consolez3Agent 1/5: Analyzing script into narrative beats...N)totalrz   z![green]Agent 1/5: Script analyzed)descriptionz
  [dim]-> z! narrative beats identified[/dim]agent_completez narrative beats identifiedzFrame ExpanderzExpanding beats into ~z cinematic frames...z!Agent 2/5: Expanding beats into ~z![green]Agent 2/5: Frames expandedz' frames with varied camera angles[/dim]z! frames with varied camera angleszPrompt EngineerzEngineering prompts (z frames, streaming)...)r   r   r   r   progress_currentprogress_totalzTTS ScriptwriterzWriting narration scripts...z_
[bold blue]Agents 3+4/5: Running Prompt Engineer + TTS Scriptwriter in parallel...[/bold blue]c                   V ^8  d   QhRR/# )r   r$   r   r%   )r&   s   "r'   r(   ,Pipeline._run_pipeline.<locals>.__annotate__  s     	E 	Eo 	Er)   c                 h   < \        SP                  R 7      p V P                  SSP                  4      # )r   )r   rz   generatecharacter_template)prompterr   r    r|   s    r'   _run_prompt_engineer4Pipeline._run_pipeline.<locals>._run_prompt_engineer  s*    *<H$$VS-C-CDDr)   c                   V ^8  d   QhRR/# )r   r$   r   r%   )r&   s   "r'   r(   r     s     	8 	8{ 	8r)   c                 x  < \        SP                  R 7      p ^ RIHp \        ;QJ d&    R SP
                   4       F  '       g   K   RM	  RM! R SP
                   4       4      pSP
                   Uu. uF!  pV'       d   \        VR^ 4      ^ 8X  g   K  VNK#  	  pp\        SP                  SP                  \        V4      V Uu. uFM  pV! VP                  VP                  VP                  VP                  VP                  VP                   R7      NKO  	  upR7      pV P#                  V4      # u upi u upi )r   )SceneAnalysisc              3  <   "   T F  p\        VR R4      x  K  	  R# 5irB   NrK   .0fs   & r'   	<genexpr>HPipeline._run_pipeline.<locals>._run_tts_scriptwriter.<locals>.<genexpr>$  s       #?L!.55}   TFrC   )r+   r1   r2   r3   rJ   r=   )titlesummaryr\   rE   )r   rz   modelsr   anyr    rK   r   r   r   lenrF   rI   r2   r3   rJ   r=   r   )
tts_writerr   coverage_enabledr   tts_source_framesframe_as_scenesr    r|   s         r'   _run_tts_scriptwriter5Pipeline._run_pipeline.<locals>._run_tts_scriptwriter  s   -DJJ?J,  #s #?E}}#sss #?E}}#   "==!(a'716La+PTU+U =  !
 -ll !23 /
 / "%&^^$%$8$8$%MMVV'('7'7()(9(9 /
	O  &&77+!
s   4D2D2D2AD7)max_workersc              3  <   "   T F  p\        VR R4      x  K  	  R# 5ir   r   r   s   & r'   r   )Pipeline._run_pipeline.<locals>.<genexpr>F  s       
;HaGA*D11=r   TFrC   rB   )r+   r;   r<   c                    V P                   # rx   )r+   )ro   s   &r'   <lambda>(Pipeline._run_pipeline.<locals>.<lambda>c  s    !..r)   )keyz& image + video prompts generated[/dim]z TTS scripts[/dim]z  image + video prompts generatedz TTS scripts generatedzTimeline PlannerzPlanning timeline...zAgent 5/5: Planning timeline...)rt   z%[green]Agent 5/5: Timeline calculatedz  [dim]-> Total duration: [/dim]rX   )
r   r   r]   r`   r\   rm   character_template_namera   rg   rE   pipeline_completezPipeline complete: r[   z	 scenes, rY   r   )8r   r
   r   r   r   add_taskr   rz   analyzerm   updateprintr\   frames_per_minuter   expandtotal_framesr   submitresultr   r    rK   rF   rE   rG   r+   rB   rH   r   r;   r<   extendsortr   r   rV   r]   rT   r   r   r   r`   valuer   namera   rg   rp   assembly_instructionsmoder   PLAN_AND_IMAGES_generate_imagesGENERATE_generate_all_assets)r|   r   r   progresstaskanalyzer	breakdownexpanderr   r   executorprompt_future
tts_futurer!   r"   r   r   master_frame_maptts_by_group	scene_ttsmaster_framesecondary_ttsgroup_idsrcplannerr#   production_scenesrV   r    s   f&f                         @r'   r   Pipeline._run_pipeline   s    	

$(>	 	 	
 O67
 
 $$ET % D +<H(0(8(8@S@S(TIOOD.QOR
 	//00QR	
 	

'( --..IJ	 	 	
 	

$',S-B-B,CCWX	 	 	
 O67
 
 $$3C4I4I3J K& ' % D
 *

;H-5__Y-LFOOD.QOR
 	,,--TU	
 	

''**++LM	 	 	
 	

$(+F,?,?+@@VW!.. 	 	
 	

$)2	 	 	
 	)	

	E 	E	8 	8>  A..($OO,@AM!)>?J'4';';'=G)002C / 3 
;A==
333 
;A==
 
  ,2== +8a14a8A= "A2D9 "!=   
 13L ZZ	/33I4J4JK<L$B$B$BCLL!?!?@ ( M]]14a81<&q*=tDHxH$<*84%,,X)*%(\\,/,?,?.  # JJm,JJOO 8O9W^^,--ST	
 	
3szz?"33EFG

'(7>>*++KL	 	 	
 	

')3::''=>	 	 	
 	

$)*	 	 	
 O67
 
 $$%Fd$SD*#6G!(c!2HOOD.UOV
 	()J)J(K6R	
 	

')&x'H'H&IJ	 	 	
 :G(
 ,,NN%-%F%F#+#B#B,,//55$'$:$:$?$?--//$
 &B$%G" 88|333!!$'XX...%%d+

*)$**R8I8I7J)TXTqTqSrrst 	 	

 u
 
 
8
 
 
\ /.. b
 
 
sF   A\.8A]$A]]*']*<]*A]/.\?	]	]'	/^ 	c                    V ^8  d   QhRRRR/# r   rV   r   r$   r   r%   )r&   s   "r'   r(   rv     s     w w^ w wr)   c                  aa \        V P                  P                  4      R,          pVP                  RRR7       \        P                  R4        ^ RIp^ RIHpH	p ^ RI
pVP                  RR4      pVP                  R	R4      pVP                  VP                  R
R4      P                  4       R4      oV! Wx4      oVP                  4       p	 V	P                  SP!                  4       4      p
V
'       g   \#        R4      h\        P                  RSP$                   R24       / pVP&                   EF   pVRVP(                  R R2,          p\+        VRR4      p\+        VR^ 4      p\+        VRR4      pRpV'       dd   V^ 8  d]   VP                  V4      pV'       d(   \        P                  RV RV RVR,           R24       M\        P                  RV RV R24       V'       d.   VP,                  VV3VV3R llpV	P                  V! 4       4       M-V	P                  SP/                  VP,                  VSR7      4       V'       dC   V^ 8X  d<   SP0                  pV'       d(   VW&   \        P                  R V R!VR,           R24       V'       d   V'       d   R"V R#2MRp\        P                  R$VP(                   R%VP2                   V R&24       V P5                  R'VP(                  R\7        V4      VP(                  VP2                  R(VP(                   R%VP2                   R)2R*7       EK  	  V	P                  SP9                  4       4       V	P;                  4        \        P                  R+4       R#   T	P                  SP9                  4       4       T	P;                  4        i ; i  \<         d    p\        P                  R,T R-24       h Rp?ii ; i).z0Generate only images (for PLAN_AND_IMAGES mode).assetsTparentsexist_okzE
[bold yellow]Generating images with Nano Banana Pro...[/bold yellow]N)FlowBrowserEngineASPECT_RATIOSGOOGLE_FLOW_SESSION_TOKENr9   GOOGLE_FLOW_CSRF_TOKENGOOGLE_FLOW_ASPECT_RATIOportraitIMAGE_ASPECT_RATIO_PORTRAITz!FlowBrowserEngine failed to startu:   [dim]Using Flow / Nano Banana Pro (GEM_PIX_2) — project=r   frame_rZ   .pngrB   rC   rD   u   [dim]  → Coverage ref [z / z]: using master :N   Nu	   …[/dim]u)   [yellow]  ⚠ No master captured yet for z angle u*    — generating without reference[/yellow]c                   <"   SP                  V4      G R j  xL
   SP                  WSR7      G R j  xL
 SP                  4       G R j  xL
  #  L8 L L	  SP                  4       G R j  xL 
  i ; i5i)Nrj   )set_reference_imager   clear_reference_image)_prompt_path_refaspectengines   &&&r'   _gen_with_ref0Pipeline._generate_images.<locals>._gen_with_ref  st     
 #)"<"<T"BBBE-3__$+ .= ." (" '-&B&B&D D D C(" !Ef&B&B&D D DsS   A5AA5A AA A5AA5A A5A2+A.,A22A5r   u   [dim]  → Master captured [z]: z []u   [green]✓ Frame /[/green]image_generatedzImage z
 generated)r   image_scene_numberimage_base64
image_pathr   r   r   z/
[bold green]All images generated![/bold green]z[red]Image generation failed: [/red])r   rt   
output_dirmkdirr   r   asyncioproviders.flow_browser_enginer   r   osgetenvrG   lowernew_event_looprun_until_completestartRuntimeError
project_idrE   r+   rK   r8   r   last_media_idr\   r   r   stopcloser   )r|   rV   r  r  r   r   r  sessioncsrfloopokcoverage_master_media_idsro   img_pathcoverage_groupangle_index
angle_typereference_media_idr  
master_midangle_labelr   r  r  s   &&                    @@r'   r   Pipeline._generate_images  s   $++001H<
5T	
n	Vii ;R@G995r:D"&&		4jAGGI-F
 'w5F))+D\,,V\\^<&'JKKPQWQbQbPccij =?)A)fQ^^C4H,MMH &-Q0CT%JN")!-CQ"GK!(,A2!FJ59&%+/-F-J-J*.* .#MM";N;K3zl [00B30G/H	!S
 $MM"KNK[ \))45_!a * %&NN"*!3E E //@//"OO !v ,  &+*:%+%9%9
%HR5E#MM">~>Nc#-c?"39!> /="ZL*QS   MM+ANN+;1T=N=N<OP[}\de JJ#4+,>>%)#&x=)*'+'8'8"((8$:K:K9LJ W  K %^ ''6

MMLM ''6

 	MM:3%vFG	s`   A<N1 &M= 6B(M= A
M= *A!M= M= '.M= M= BM= 7AN1 =1N..N1 1O<OOc                    V ^8  d   QhRRRR/# r   r%   )r&   s   "r'   r(   rv   )  s     l8 l8 l8D l8r)   c           
       a a \        S P                  P                  4      R,          pVP                  RRR7       \        P                  R4       S P                  S4        ^ RIHp \        S P                  P                  RR4      p\        P                  RVP                  4        R	24       V! S P                  P                  4      pSP                   Fv  pVR8X  d   R
MRpVRVP                  R V 2,          pVP                  VP                  V4       \        P                  RVP                   RSP                    RV R24       Kx  	  \        P                  RVP                  4        R24        ^ RIHp
 \        P                  R4       S P-                  RRR^ SP                   R7       V
! 4       pSP                   F  pVRVP                  R R2,          pVRVP                  R R2,          pVP/                  4       '       g#   \$        P1                  R VP                  4       Kk  VP                  3R! VV 3R" lllp VP                  VVP2                  VVR#7       \        P                  R$VP                   RSP                    R%24       K  	  VP7                  4        \        P                  R)4       S P-                  R*RR+SP                    R,2R-7       R#   \"         d:   p	\        P                  RT	 R24       \$        P'                  R4        Rp	?	ELRp	?	ii ; i  \"         dT   p\$        P5                  R&TP                  T4       \        P                  R'TP                   R(T R24        Rp?EK  Rp?ii ; i  \8         d%   p\        P                  R.T R/24        Rp?R# Rp?i\"         d:   p	\        P                  R0T	 R24       \$        P'                  R14        Rp	?	R# Rp	?	ii ; i)2z<Generate all assets: images, TTS, video (for GENERATE mode).r   Tr   zL
[bold yellow]Generating all assets (this may take a while)...[/bold yellow])get_tts_providertts_provider
chatterboxz'
[bold yellow]Generating TTS audio via z...[/bold yellow]z.wavz.mp3r   rZ   u   [green]✓ Audio r
  r[   z	)[/green]z([bold green]All TTS audio generated via z![/bold green]z[red]TTS generation failed: r  zTTS generation errorN)GrokVideoProviderzB
[bold yellow]Generating video clips via Grok I2V...[/bold yellow]r   Video Generatorz&Generating video clips via Grok I2V...r   r   r   r   r   r   z.mp4z,Image not found for scene %d, skipping videoc                    V ^8  d   QhRRRR/# )r   r   intr$   r   r%   )r&   s   "r'   r(   3Pipeline._generate_all_assets.<locals>.__annotate__n  s       T r)   c           	     V   < SP                  R RRV RV  R2VSP                  R7       R# )agent_progressr3  zScene z: %r4  N)r   r\   )r   _snrV   r|   s   &&r'   _on_video_progress9Pipeline._generate_all_assets.<locals>._on_video_progressn  s8    JJ#3#4"(Rz ;),'+'8'8  r)   )r  r:   output_pathon_progressu   [green]✓ Video r  zVideo failed for scene %d: %su   [red]✗ Video z	 failed: z3[bold green]Video generation complete![/bold green]r   zVideo generation complete (z clips))r   r   r   z 
[dim]Video generation skipped: r   z[red]Video generation failed: zVideo generation failed)r   rt   r  r  r   r   r   	providersr/  rK   ra   rl   rE   r+   r   r;   r\   r   logger	exceptionproviders.grok_video_providerr2  r   existswarningr:   r   r  EnvironmentError)r|   rV   r  r/  provider_nametts_provro   ext
audio_pathr   r2  
video_provr%  vid_pathr<  vid_excenv_excs   ff               r'   r   Pipeline._generate_all_assets)  s   $++001H<
5	
 	d#	52#**NLM MM:=;N;N;P:QQbc ((B(BCH[[ - =f6'F1>>#2Fse*LL
!!!**j9''7q9J9J8K2m_\ef ! MM:=;N;N;P:QQ_`A	8GMMU JJ(,@!"#00   +,J[[%&0DD(II%&0DD(II((NNF :;..  ''#+%&^^$,$6	 (  MM+ANN+;1T=N=N<OxX5 !J MMOPJJ+,5d6G6G5HP  y  	5MM8VDE344	5d ! LL7 MM)!..)97)6R 	    	OMM=gYfMNN 	8MM:3%vFG677	8sq   #DK( ;CN AL/AN (L,3.L''L,/N:ANN NN PN::PP.O<<P)r{   rt   rz   rx   )__name__
__module____qualname____firstlineno____doc__r}   r   r   r   r   r   __static_attributes__r%   r)   r'   rr   rr      s.    E"4
dLwrl8 l8r)   rr   )1rT  
__future__r   loggingpathlibr   typingr   r   concurrent.futuresr   rich.consoler   rich.progressr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   agents.script_analyzerr   agents.frame_expanderr   agents.prompt_engineerr   agents.tts_scriptwriterr   agents.timeline_plannerr   	getLoggerrP  rA  r   rT   rp   rr   r%   r)   r'   <module>rc     s|   
 #   % 1       7 4 6 8 8			8	$
)5p5zf8 f8r)   