
    f`j,                        d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlmZ  ee	          
                                j        d         Z ej        dej                  Zd Zd Zd Zd	 Zed
k    rS	  ej         e                       dS # e$ r0Z ede ej                    ej        d           Y dZ[dS dZ[ww xY wdS )    N)datetimetimezone)Path   u   [^\W_]+(?:['’-][^\W_]+)*c                     t           | z  }|                                st          d|            t          j        |                    d                    S )Nzmissing utf-8encoding)PROJECTis_fileRuntimeErrorjsonloads	read_text)relpaths     script/complete-project.pyloadr      sP    S=D<<>> -+c++,,,:dnngn66777    c                    t          j                    }|                     d          5 t          fdd          D ]}|                    |           	 d d d            n# 1 swxY w Y   |                                S )Nrbc                  .                          d          S )Ni   )read)handles   r   <lambda>zsha.<locals>.<lambda>   s    &++o">"> r   r   )hashlibsha256openiterupdate	hexdigest)r   digestblockr   s      @r   shar$      s    ^F	4 !F>>>>DD 	! 	!EMM%    	!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! s   ,A##A'*A'c           	      |    |                      d|                      d|                      d                              S )N
word_countspoken_word_countaggregate_word_countget)drafts    r   report_wordsr,      s2    99\599-@%))LbBcBc#d#deeer   c                  
#  / t          j        t          j        t	          t
          dz            dgt
                    } | j        rt          d          t          d          }t          d          }t          d          }t          d          }t          d	          }t          d
          }t          d          }t          d          }t          d          }	t          d          }
t          d          }t          d          }t          d          }t          d          }t          d          }t          d          }t          d          }t          d          }t          d          }d t          dd          D             }d
                    |          dz   }t
          dz  }t
          dz  }t
          dz  }t
          d z  }t
          d!z  }t
          d"z  }t
          d#z  }t
          d$z  }|                    d%&          }t          |          /t          t                              |                    }t
          d'z  } |                                 rt          |           nd }!|                    d(          pi }"t%                      }#d)d*h}$|                    d+          d,u o+|                    d-          d.k    ot%          |"          |$k    }%|%r|$D ]}&|"                    |&          pg }'|%oYt          |'          dk    oF|'d/                             d0          d1k    o't'          |'d/                             d2                    }%|'r.|#                    |'d/                             d3                     |%ot          |#          dk    od |#v}%t+          d4 |                    d5g           D             i           }(|                    d6          d7k    o|                    d8          d9k    on|                    d6          |                    d6          k    oB|                    d8          |                    d8          k    o|                    d:          d,u })|||||
|||||||||g}*i d;|                    d+          d,u oTt-          |          |k    oAt/          |d<         d=                   |cxk    ot/          |d<         d>                   k    nc d?||k    o)|                                |                                k    d@|)dA|                    d+          d,u o|                    dB          d,u dC|                    dD          /k    o3|                    dE          /k    ot3          /fdF|*D                       dG|                    d+          d,u o|                    dH          dIk    o|                    dJ          d,u o|                    dK          dLu o|                    dM          d/k    o|                    dN          /k    os|                                o_|                                oK|                    dO          t          |          k    o%|                    dP          t          |          k    dQ|                    d+          d,u oV|                    dH          dRk    o<|                    dJ          d,u o$|                    dK          dLu o|                    dM          d/k    o|(                    dS          |(                    dT          k    o|(                    dTd/          dk    o|                                o|                                o|                                oq|                    dN          t          |          k    oK|                    dO          t          |          k    o%|                    dP          t          |          k    dU|                    d+          d,u oC|                    dV          dWk    o)|                    dX          d,u o|                    dN          |                    dO          k    o|                    dY          |                    dO          k    o|                    dZ          t          t
          d
z            k    o|                    d[          t          |          k    oe|                    d\          |                    d]          k    o9|                                o%|                    d^          t          |          k    d_|	                    d+          d,u o|	                    dV          dWk    o|	                    dN          |                    dN          k    o|	                    dO          |                    dO          k    o|	                    dZ          t          t
          dz            k    o_|	                    d[          t          |          k    o9|                                o%|	                    d^          t          |          k    d`|
                    d+          d,u o|
                    da          d,u db|                    d+          d,u o|                    d-          d.k    oq|                    dc          ddk    oX|                    de          d,u oA|                    dfi                               d+          d,u o|
                    da          d,u dg|                    d+          d,u o|                    dfi                               d+          d,u o|                    dh          dik    o|                    dj          |                    dO          k    o[|                    dk          t          t
          dz            k    o-|                    dl          t          t
          dz            k    dm|                    d+          d,u o|                    d-          d.k    o|                    dfi                               dn          dLu oU|                    doi                               dp          d,u o*|                    doi                               dq          d,u dr|                    d+          d,u oC|                    d-          d.k    o*|                    dfi                               dn          dLu ds|                    d+          d,u o|                    d-          dtk    du|                    d+          d,u o|                    d-          d.k    ot|                    dfi                               dn          dLu oI|                                 o5|                                 j        dvk     o|!|                    d^          k    dw|                    d+          d,u oedx|                    dyd/          cxk    odzk    nc oA|                    d{          t          t
          |                    d|d}          z            k    |                    d+          d,u oB|                    d~          pi                     d          pi                     d{          |!k    |%d}+t3          |+                                          },i ddd+|,dt
          j        d|                    d          d/d|dddt=          |dz  d          d|                    d          d|                    d          |                    d^          ddu|                    d          |                    d          |                    d^          dd|                    d          |                    d          |"dd|+dt?          |+                                          dt          |+          dtA          j!        tD          j#                  $                                }-t
          dz  }.|.%                    tM          j'        |-dLdx          dz   d%&           |,sDtQ          tM          j'        dLd |+)                                D             ddL                     dS d.|d-<   d dD             |d<   |-d         |d<   t
          dz  %                    tM          j'        |dLdx          dz   d%&           tQ          tM          j'        d,|-d         |-d         d.ddL                     d/S )Nz script/validate-workflow-copy.pyfull)cwdz#workflow-copy authority gate failedzscript/project-manifest.jsonzscript/story-brief.jsonzstory/draft-report.jsonzstory/promotion-report.jsonzstory/originality-report.jsonzlog/tts-pronunciation.jsonz log/intro-tts-pronunciation.jsonzlog/tts-verification.jsonzlog/intro-voice.jsonzlog/image-generation.jsonzimage/layout-manifest.jsonzlog/intro-render.jsonzlog/footage-job.jsonzlog/final-render.jsonz log/production-verification.jsonzlog/upload-transcode.jsonzlog/metadata-verification.jsonzlog/postiz-media.jsonzlog/postiz-schedule.jsonc                 x    g | ]7}t           d |ddz                      d                                          8S )zstory/chapters/chapter-02dz.txtr   r	   )r   r   rstrip).0indexs     r   
<listcomp>zmain.<locals>.<listcomp>9   s]      F  F  FotDUDDDDDOOY`Oaahhjj  F  F  Fr   r      z



zstory/spoken-narration.txtzstory/story-canon.txtzstory/tts-pronunciation.txtzaudio/intro-voice-source.txtz#audio/intro-voice-pronunciation.txtzaudio/intro-voice.wavz!script/pronunciation-lexicon.jsonzaudio/story-full.wavr   r	   zoutput/final-upload.mp4postscmrq10vod000hj7cbt8zvuj6acmrpr0j9u000bj7cboqonlx4bverifiedTstatus	completedr   stateQUEUEidpublishDatec              3   L   K   | ]}|                     d           dk    |V   dS )sourceaudioNr)   )r3   rows     r   	<genexpr>zmain.<locals>.<genexpr>T   s:      llcswwW_O`O`dkOkOkcOkOkOkOkllr   lexiconprimary_story_familyu   Thanh mai trúc mãsecondary_story_familyu
   Không cófamily_adherence_verifiedstorylength	min_words	max_words
exact_joinstory_familyoriginality_inside_familyprimary_story_family_preservedcanon_chainspoken_sha256source_canon_sha256c              3   L   K   | ]}|                     d           k    V  dS )rU   Nr)   )r3   rE   canons     r   rF   zmain.<locals>.<genexpr>b   s        {|  {|  or{~  |C  |C  DY  [`  |a  |a  ej  |j  {|  {|  {|  {|  {|  {|r   narration_pronunciationkind	narrationreverse_verifiedsemantic_content_changedFnon_lexicon_changessource_sha256projection_sha256lexicon_sha256intro_pronunciationintrosource_countreplacement_countnarration_ttsvoicezngoc-huyen-vbeepronunciation_verifiedchunk_reconstruction_sha256pronunciation_receipt_sha256pronunciation_lexicon_sha256segments_completedsegments_totaloutput_sha256	intro_ttsprovider_imagesprovider_rendered_text_onlylayout_artwork_qabuilder_locationagent_localremote_layout_build_forbidden	visual_qa	intro_gpuencoder_required
h264_nvencintro_pronunciation_sha256"intro_pronunciation_receipt_sha256intro_voice_receipt_sha256footage_technicalrequiredserver_verificationmirror_appliedsource_audio_discardedfinal_technical
productionpassedupload_copyi ʚ;metadata   title_lengthd   r   r   zoutput/info.txtmediavideo)r   scheduleversion
project_idtitlecanonical_titlecanon_sha256r&   tts_words_per_minute   predicted_tts_minutes   tts_duration_secondsduration_secondsfinaljob_id)r   r   output_bytes)r   bytesr   r   
slot_localslot_utc)r   r   r8   checkschecks_passedchecks_total
checked_atzlog/completion-report.json)ensure_asciiindentc                     g | ]	\  }}||
S  r   )r3   keyvalues      r   r5   zmain.<locals>.<listcomp>   s"    7j7j7j
Udi7j7j7j7jr   )r;   failed)r   c                     i | ]}|d S )r=   r   )r3   r   s     r   
<dictcomp>zmain.<locals>.<dictcomp>   s,      f  f  fck  f  f  fr   )capability_preflightstory_briefarchitecturerf   rK   pronunciationttsartworkrb   footager   	transcodepublish
completionsteps
updated_at)r;   r   r   manifest_status)*
subprocessrunsys
executablestrr   
returncoder   r   rangejoinr   r$   lenWORD_REfindallr   r*   setbooladdnextr,   int
read_bytesallstatst_sizevaluesnameroundsumr   nowr   utc	isoformat
write_textr   dumpsprintitems)0gatemanifestbriefr+   	promotionoriginalityr   ra   r   intro_voiceimageslayoutrb   r   r   r   r   r   r   r   chaptersexpectedspoken_path
canon_pathpronunciation_pathintro_source_pathintro_projection_pathintro_voice_pathlexicon_pathstory_audiospokenwordsuploadupload_hashr8   
timestampsexpected_integrationsschedule_okintegrationrows	audio_row	family_okchainr   r;   reportoutputrW   s0                                                  @r   mainr   !   st   >3>3w9[/[+\+\^dekrsssD B@AAA233H*++E*++E233I677K566MABB
*
+
+C-..K-..F.//F())E)**G())E899J011I455H())E.//H F  Fx}~  BD  yE  yE  F  F  FH}}X&&-H88K22J #@@"@@#&KK!88@@L22K""G"44FE''((E00F!'!1!1;#f+++tKLL!!'REJ8:UV,,z**d2  Ex||H7M7MQ\7\  Eadejakak  pE  bEK V0 	; 	;K99[))/RD%x#d))q.xT!W[[=Q=QU\=\xaefjklfmfqfqrvfwfwaxaxK ;tAw{{=99:::!Uc*oo&:Ut:?Ull%8%<%<Y%K%KlllnpqqI		())-BB 	?II.//<?	?MM011UYY?U5V5VV	? MM233uyyAY7Z7ZZ	? MM566$>  ':CQVX_afhrt}  @H  JO  QY  ZE:&&$.  d<3F3F%3O  dTWX]^fXghsXtTuTuy~  Ud  Ud  Ud  Ud  CF  GL  MU  GV  Wb  Gc  Cd  Cd  Ud  Ud  Ud  Udf(`Z-B-B-D-DH^H^H`H`-` 		 	$[__Z%@%@D%H  &G[__]}M~M~  CG  NG	
 	y}}_55>  |;??ShCiCimrCr  |wz  {|  {|  {|  {|  v{  {|  {|  {|  x|  x| 	"=#4#4Z#@#@D#H  $D]M^M^_eMfMfjuMu  $D  {H  {L  {L  M_  {`  {`  dh  {h  $D  mz  m~  m~  Y  mZ  mZ  ^c  mc  $D  hu  hy  hy  zO  hP  hP  TU  hU  $D  Zg  Zk  Zk  l{  Z|  Z|  @E  ZE  $D  J\  Jd  Jd  Jf  Jf  $D  kw  k  k  kA  kA  $D  FS  FW  FW  Xk  Fl  Fl  ps  tF  pG  pG  FG  $D  LY  L]  L]  ^n  Lo  Lo  sv  wC  sD  sD  LD 	266zBBdJ   ZObOfOfgmOnOnryOy   Z  R  V  V  Wi  j  j  nr  r   Z  wJ  wN  wN  Oi  wj  wj  ns  ws   Z  xK  xO  xO  Pe  xf  xf  jk  xk   Z  py  p}  p}  ~L  pM  pM  QZ  Q^  Q^  _r  Qs  Qs  ps   Z  xA  xE  xE  FY  [\  x]  x]  ab  xb   Z  gx  g@  g@  gB  gB   Z  G\  Gd  Gd  Gf  Gf   Z  kw  k  k  kA  kA   Z  FY  F]  F]  ^m  Fn  Fn  ru  vG	  rH	  rH	  FH	   Z  M	`	  M	d	  M	d	  e	x	  M	y	  M	y	  }	@
  A
V
  }	W
  }	W
  M	W
   Z  \
o
  \
s
  \
s
  t
D  \
E  \
E  IL  MY  IZ  IZ  \
Z 	,,4  O	9I9IM^9^  O	cfcjcj  lD  dE  dE  IM  dM  O	  RU  RY  RY  Zi  Rj  Rj  n{  n  n  @S  nT  nT  RT  O	  Y\  Y`  Y`  a~  Y  Y  CP  CT  CT  Uh  Ci  Ci  Yi  O	  nq  nu  nu  vT  nU  nU  Y\  ]d  gC  ]C  YD  YD  nD  O	  IL  IP  IP  Qo  Ip  Ip  tw  xD  tE  tE  IE  O	  JM  JQ  JQ  Rf  Jg  Jg  kn  kr  kr  sC  kD  kD  JD  O	  IT  I\  I\  I^  I^  O	  cf  cj  cj  kz  c{  c{  B	  C	N	  O	  O	  cO	 	[__Z00D8  d[__W=U=UYj=j  dozo~o~  @O  pP  pP  Tg  Tk  Tk  l{  T|  T|  p|  d  AL  AP  AP  Qd  Ae  Ae  i|  i@  i@  AT  iU  iU  AU  d  Ze  Zi  Zi  jH  ZI  ZI  MP  QX  [}  Q}  M~  M~  Z~  d  CN  CR  CR  Sq  Cr  Cr  vy  zF  vG  vG  CG  d  L\  Ld  Ld  Lf  Lf  d  kv  kz  kz  {J  kK  kK  OR  Sc  Od  Od  kd 	6::j11T9ofjjIf>g>gko>o 	VZZ
33t;  ~

8@T@TXc@c  ~hnhrhr  tF  iG  iG  KX  iX  ~  ]c  ]g  ]g  hG  ]H  ]H  LP  ]P  ~  U[  U_  U_  `k  mo  Up  Up  Ut  Ut  u  U@  U@  DH  UH  ~  MS  MW  MW  Xu  Mv  Mv  z~  M~ 	UYYz**d2  vuyyb7Q7Q7U7UV`7a7aei7i  vnsnwnw  yK  oL  oL  P\  o\  v  af  aj  aj  kG  aH  aH  L_  Lc  Lc  dw  Lx  Lx  ax  v  }B  }F  }F  Gk  }l  }l  ps  t{  ~`  t`  pa  pa  }a  v  fk  fo  fo  pL  fM  fM  QT  U\  _u  Uu  Qv  Qv  fv 	W[[44<  zXAVAVZeAe  zjqjuju  wB  DF  kG  kG  kK  kK  LV  kW  kW  [`  k`  z  el  ep  ep  qF  HJ  eK  eK  eO  eO  P`  ea  ea  ei  ei  z  nu  ny  ny  zO  QS  nT  nT  nX  nX  Yq  nr  nr  vz  nz 	599Z00D8  XUYYx=P=PT_=_  Xdidmdmny{}d~d~  eC  eC  DN  eO  eO  SX  eX 	jnnZ00D8aZ^^H=U=UYa=a  	y}}Z00D8  QY]]8=T=TXc=c  Qhqhuhu  wB  DF  iG  iG  iK  iK  LV  iW  iW  [`  i`  Q  ek  es  es  eu  eu  Q  z@  zE  zE  zG  zG  zO  R_  z_  Q  do  s|  s@  s@  AP  sQ  sQ  dQ!" 	HLL,,4  zhll>[\>]>]9d9d9d9dad9d9d9d9d  ziqiuiuv~ii  DG  HO  RZ  R^  R^  _e  gx  Ry  Ry  Hy  Dz  Dz  jz#$ :&&$.UYYw5G5G5M24R4RSZ4[4[4a_a3f3fgo3p3pt3'  F* 6==??##H1 (,8',,--/=u 	e 4S 	 us{A!6!6	
 	(: ; ; 	EIIh//599_;U;UVV 	)--"9"9IMMR`DaDamvmzmz  |K  nL  nL  M  M 	8<<#=#=8<<XbKcKcnstt 	& *3v}}+?+? BPQTU[Q\Q\ 	hl8<00::<<F 33F
djeAFFFMX_``` dje7j7jfllnn7j7j7jkkz  A  A  A  	B  	B  	Bq$HX f  f  6e  f  f  fHW#L1H\--99$*X\ajk:l:l:los:s  F9  G  G  G	$*$9Pbhiwbx  NY  Z  Z  in  o  o  o  p  p  p1r   __main__zCompletion blocked: )file)r   r   rer   r   r   r   pathlibr   __file__resolveparentsr   compileUNICODEr   r   r$   r,   r   __name__exit	Exceptionexcr   stderrr   r   r   <module>r     sk     				     



 ' ' ' ' ' ' ' '      
$x..
 
 
"
"
*1
-
"*2BJ
?
?8 8 8  f f fh h hV z   *S**<<<< s   4B C%B>>C