
    ȗ_jw                        d dl Z 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  ee          	                                j
        d         Zedz  Z ej                    dz  Zd Zd Zd Zd	 Zd
 Zedk    r e             dS dS )    N)Path   zscript/project-manifest.jsonzA.hermes/skills/content-creation/tao-anh/scripts/generate_image.pyc                    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   script/run-artwork.py<lambda>zsha256.<locals>.<lambda>   s    &++o">">     r   )hashlibsha256openiterupdate	hexdigest)pathdigestblockr	   s      @r
   r   r      s    ^F	4 !F>>>>DD 	! 	!EMM%    	!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! s   ,A##A'*A'c                     | j                             dd           |                     | j        dz             }|                    t          j        |dd          dz   d	           t          j        ||            d S )
NTparentsexist_okz.partF   )ensure_asciiindent
utf-8encoding)	parentmkdirwith_suffixsuffix
write_textjsondumpsosreplace)r   valueparts      r
   atomic_jsonr,      s|    KdT222DK'122DOODJu5CCCdJU\O]]]JtTr   c                     |                                  r|                                 j        dk    rt          d|            |                                 d d         dk    rt          d|            d S )N   zmissing/empty image: s   PNG

z	not PNG: )is_filestatst_sizeRuntimeError
read_bytes)r   s    r
   	check_pngr4      s|    <<>> ;TYY[[0A559499:::! 444-t--... 54r   c                     d| vrt          d          |                     dd          d         }t          j        d|t          j                  S )Nu   RENDER CHÍNH XÁCz:artwork prompt lacks exact provider-rendered text contractr   z^\d+\. "([^"]+)"$)flags)r2   splitrefindall	MULTILINE)promptr   s     r
   prompt_text_blocksr<   %   sO    6))WXXXLL-q11!4E:*EFFFFr   c                     t          j        t                              d                    } | d         }t          |d         z  }t          |d         z  }t          |d         z  t          |d         z  t          |d         z  d	}|                     d
i                               d          dk    s|                     d          st          d          t          j        |                    d                    }|                    d          dk    s.|                    d          dus|                    d          durt          d          |                    di                               d          |                    di                               d          |                    di                               d          d	}|                                D ]P\  }}|d         |         }	|r)t          |	          |k    sd|		                                v rt          d|           Q|d                                         D ]<\  }
}|
|vs!t          t          ||
         z            |k    rt          d|
           =i }|                                rft          j        |                    d                    }|                    d          dk    s>|                    d          | d         k    s|                    d          |d         k    rt          d           |                    d!i           }|                                D ]\  }}||vsD|                    d"          t          ||                             t                              k    rt          d#          t          ||                    t          ||                   |                    d$          k    rt          d%          n:t          d& |                                D                       rt          d'          |                                D ]\  }}||v r|j                            dd(           t'          j        d)t          t*                    d*|d         |         d+t          |          d,d-d.d/d0d1d2d3gd4           t          |           |d                                         D ]2\  }}t          t          |z            |k    rt          d5|           3t          |                    t                              t          |          |                                j        d6||<   t1          |ddd7| d         |d         |t2          j                            t2          j        j                                                  d8           t2          j                            t2          j        j                                                  }ddd7| d         |d         ||d9}t1          ||           d|d<   t          |                    t                              |d:<   ||d;<   t1          ||           d<dt          |                    t                              |d=| d><   || d;<   t1          t          |            t=          t          j        d|d?d@                     d S )ANr   r   active_pathsimage_promptsartwork_generation_receiptintro_poster_masterleft_panel_masterright_panel_master)intro
left_panelright_panelstepsstory	completedcanon_sha256z2artwork is blocked until Story Promotion Gate PASSstatuslockedverifiedTimage_api_calledFz%image prompt bundle not virgin/lockedtext_contractsintro_and_rightleftpromptszno textzartwork text contract drift: source_authority_hasheszartwork authority drift: runningsource_canon_sha256z4artwork receipt is not a reusable running checkpointresultsr   z#artwork checkpoint output map driftr   z!artwork checkpoint artifact driftc              3   >   K   | ]}|                                 V  d S )N)exists).0xs     r
   	<genexpr>zmain.<locals>.<genexpr>S   s*      22AQXXZZ222222r   z(artwork output exists without checkpointr   python3z--promptz--outputz--n1z--detailhighz--formatpngz	--timeout600)checkz%authority drift after provider call: )r   r   byteszcx/gpt-5.5-image)rK   rM   providerrU   rS   rV   
updated_at)rK   rM   rc   rU   rS   rV   completed_atgeneration_receiptrd   	generated)rK   rM   receiptre   artwork)rK   targets)r   ) r&   loadsMANIFEST	read_textROOTgetr2   itemsr<   casefoldr   rX   strrelative_tor4   anyvaluesr!   r"   
subprocessrun	GENERATORr0   r1   r,   datetimenowtimezoneutc	isoformatprintr'   )manifestactiveprompts_pathreceipt_pathoutputsbundleexpected_blockskeyexpectedr;   authority_keyrV   
checkpointrowoutputrelrz   rh   s                     r
   mainr   ,   s   z(,,g,>>??Hn%F&11L&!=>>L455V$788f%9:: G
 ||GR  $$W--<<HLLQ_D`D`<OPPPZ...@@AAFzz(x''6::j+A+A+M+MQWQ[Q[\nQoQow|Q|Q|BCCC,b11556GHHjj!1266::6BBzz"2B77;;<MNN O
 )..00 F FX	"3' 	F-f55AAYRXRaRaRcRcEcEcDsDDEEE Fd#)*C#D#J#J#L#L L Lx&&&}8M1M*N*NRZ*Z*ZJ=JJKKK +[G GZ 6 6 6 H HII
>>(##y00JNNCX4Y4Y]eft]u4u4u  zD  zH  zH  Ib  zc  zc  gm  nG  gH  zH  zHUVVV..B// 	H 	HHC'!!SWWV__GCL<T<TUY<Z<Z8[8[%[%["#HIIIgcl###gcl##swwx'8'888"#FGGG 9		H 
22!1!1222	2	2 GEFFF}} 
w 
wV'>>D4888	3y>>:vi?PQT?UWacfgmcncnpuwz  }G  IO  Q[  ]b  do  qv  w  C  	D  	D  	D  	D&#$=>DDFF 	R 	RMCdSj!!X--"#P3#P#PQQQ . #F$6$6t$<$< = =PVbhbmbmbobobwxxLYEWi  CK  LZ  C[  x~  X  xY  fm  }E  }N  }R  }R  S[  Sd  Sh  }i  }i  }s  }s  }u  }u  #v  #v  	w  	w  	w  	w



 1 5
6
6
@
@
B
BC$$DVow  yG  pH  ek  lE  eF  SZ  lo  p  pGg&&&!%F#&|'?'?'E'E#F#FF F<f%%%%0dsS_SkSklpSqSqOrOr  EH  I  IHY H\(###	$*@@u
U
U
UVVVVVr   __main__)ry   r   r&   r(   r8   rv   pathlibr   __file__resolver   rn   rl   homerx   r   r,   r4   r<   r   __name__ r   r
   <module>r      s      				 				          tH~~'*00DIKK]]	    / / /G G G>W >W >WB zDFFFFF r   