
    Nj$                       U d Z ddlmZ 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
 ddlZddlZddlZddlmZmZ ddlmZ ddlZ e
d      Z e
d      Zd	Zd
ZdZej2                  j5                  d ee              ee      ej8                  d<   ddZddZd dZg Z de!d<   d!dZ" G d de#      Z$d"dZ% G d d      Z& G d d      Z'd#dZ(d#dZ)d$dZ*e+dk(  r e, ejZ                   e*                   y)%zOOffline reproduction of Telegram update 629525116 against live read-only state.    )annotationsN)Path)
MethodTypeSimpleNamespace)Anyz(/home/cube/projects/richard/hermes-agentz)/home/cube/.hermes/profiles/dualcoachtest
8527916639i|ʅ%checkinHERMES_HOMEc                d    t        j                  | j                               j                         S N)hashlibsha256
read_bytes	hexdigest)paths    reproduce_checkin.pydigestr      s!    >>$//+,6688    c                    t         dz  t         dz  t         dz  t         dz  t         dz  t         dz  t         dz  g} g }| D ]\  }|j                         r|j                  |       %|j                         s6|j	                  d |j                  d	      D               ^ t        t        |            D ci c]*  }t        |j                  t                     t        |      , c}S c c}w )
Nconfig.yaml	customersz$data/customer-activation-audit.jsonlz%data/customer-activation-journal.jsonz2data/nutrition-onboarding-projection-journal.jsonlz4data/customers/task26_live_2e_r2_20260815_8527916639zdata/owner-actionsc              3  B   K   | ]  }|j                         s|  y wr   )is_file).0r   s     r   	<genexpr>z%authority_snapshot.<locals>.<genexpr>0   s     L/$T\\^/s   *)PROFILEr   appendis_dirextendrglobsortedsetstrrelative_tor   )rootsfilesrootr   s       r   authority_snapshotr)   !   s    -+8899FFHH&&E E<<>LL[[]LLL$**S/LL	 
 FLCPUJEWXEWTC  )*F4L8EWXXXs   4/C&c                   |  t        | t        t        t        t        f      r| S t        | t
              rt	        |       S t        | t        t        f      r| D cg c]  }t        |       c}S t        | t              r6| j                         D ci c]  \  }}t	        |      t        |       c}}S t        | dd       }|!t        |       j                  t        |      dS dt        |       j                  iS c c}w c c}}w )Nkey)typer+   r,   )
isinstanceboolintfloatr$   r   tuplelistsafedictitemsgetattrr,   __name__)valueitemr+   s      r   r3   r3   4   s    }
54eS*AB%5z%%'',-utT
u--%6;kkmDmdC$t*$mDD
%
%C
U,,T#Y??DK(()) .Ds   C<Dzlist[dict[str, Any]]TRACEc                J    t         j                  | |dt        |             y )N)methodphase)r:   r   r3   )r<   r=   states      r   markr?   F   s    	LLFUBd5kBCr   c                      e Zd Zy)OfflineNetworkErrorN)r7   
__module____qualname__ r   r   rA   rA   J   s    r   rA   c                     t        d      )Nz(network disabled by offline reproduction)rA   argskwargss     r   deny_networkrI   N   s    
H
IIr   c                  $    e Zd ZddZddZddZy)FakeBotc                    g | _         y r   )callsselfs    r   __init__zFakeBot.__init__S   s	    +-
r   c                   K   | j                   j                  t        |             t        dd|d       t	        d      S w)NzFakeBot.send_messagereturni)#  rH   
message_idrT   rM   r   r3   r?   r   rO   rH   s     r   send_messagezFakeBot.send_messageV   s6     

$v,'#XfN$//s   A Ac                   K   | j                   j                  dt        |      i       t        dd|d       t	        d      S w)NeditzFakeBot.edit_message_textrR   i*#  rS   rU   rV   rW   s     r   edit_message_textzFakeBot.edit_message_text[   s;     

64<01((6dS$//s   AANrR   None)rH   r   rR   object)r7   rB   rC   rP   rX   r[   rD   r   r   rK   rK   R   s    .0
0r   rK   c                      e Zd ZddZddZy)FakeMessagec                    t         | _        t        t        t                    | _        t        t        t              dd      | _        t        t              | _        d | _        d| _	        d | _
        g | _        y )N)idprivateF)rb   r,   is_forumt   )TEXTtextr   r/   CUSTOMER_ID	from_userchatchat_idmessage_thread_idrT   reply_to_messagerepliesrN   s    r   rP   zFakeMessage.__init__b   sZ    	(C,<=#s;'7iRWX	;'!% $-/r   c                   K   d|it        |      }| j                  j                  |       t        dd|d       t	        d      S w)Nrg   zFakeMessage.reply_textrR   i+#  )callrT   rU   )r3   rn   r   r?   r   )rO   rg   rH   rp   s       r   
reply_textzFakeMessage.reply_textl   sE     -V-D!%xdtL$//s   AANr\   )rg   r$   rH   r   rR   r^   )r7   rB   rC   rP   rq   rD   r   r   r`   r`   a   s    00r   r`   c                \    t        |       dfd}t        | t        ||              y )Nc           	         t        d||       	  |i |}t        d|       |S # t        $ r1}t        dt        |      j                  t	        |              d }~ww xY wNenterrF   raise)exception_type	exceptionrR   )resultr?   BaseExceptionr,   r7   r$   rO   rG   rH   ry   excnameoriginals        r   wrappedzwrap_sync.<locals>.wrappedu   sj    T7f5	t.v.F 	T8F+	  	wtCy/A/ASQTXV	s   * 	A$,AA$rO   r^   rG   r   rH   r   rR   r   r6   setattrr   ownerr~   r   r   s    ` @r   	wrap_syncr   s   )    ud#H E4GU34r   c                \    t        |       dfd}t        | t        ||              y )Nc           	        K   t        d||       	  |i | d {   }t        d|       |S 7 # t        $ r1}t        dt        |      j                  t	        |              d }~ww xY wwrt   rz   r|   s        r   r   zwrap_async.<locals>.wrapped   ss     T7f5	#T4V44F 	T8F+ 5 	wtCy/A/ASQTXV	s0   A36 46 A36 	A0,A++A00A3r   r   r   s    ` @r   
wrap_asyncr      r   r   c                 <	  K   t               t        t        _        t        t        j                  _        t        j                  d      j                  } t        j                  d      }t        j                  d      j                  }t        j                  t        dz  j                  d            }|d   d   }| j                  d	d
|d   d      }t        t              |_        d |_         ||      }t#               |_        |j'                         }|t)        |j*                  xs d      d |_        d |_        d.d}t1        ||      |_        d |_        d.d}	t1        |	|      |_        t9        |d       t;        |d       t;        |d       t9        |d       t9        |d       t=               }
t?        t@        |
|
d d d       }i }	 |jC                  |t?                      d {    d	|d<   t               tU        fdtW              tW              z  D              }tY        t[        |j\                  j_                                     }|jG                  ta        tb        dz        ta        tb        d z        d!t@        td        td        d"d#tf        d$t        |jh                  jj                        |jl                  d ud%tI        |      jJ                  t        |jn                        tq        |jr                        tq        tu        |j\                              |jv                  jx                  jz                  |jv                  jx                  j|                  t        |jv                  j~                        |j                  j                         d&|j$                  j                  |
j                  t        t              k(  |g d'(       t        t        j                  |dd)d	*             |j                  d      du r|d+   rd,S d-S 7 )# tD        $ rs}|jG                  dtI        |      jJ                  t        |      djM                  tO        jP                  tI        |      ||jR                                     Y d }~d }~ww xY ww)/Nzgateway.configz$gateway.platforms.nutrition_coachingzgateway.platforms.telegramr   zutf-8)encoding	platformstelegramTzoffline-no-networkextra)enabledtokenr   c                *    t        j                         S r   )
contextlibnullcontext)_roots    r   <lambda>zmain.<locals>.<lambda>   s    J<R<R<Tr   zcoordinator unavailablec                      y)NTrD   rD   r   r   r   zmain.<locals>.<lambda>   s    r   c                      y r   rD   rD   r   r   r   zmain.<locals>.<lambda>   s    r   c                   K   ywNFrD   _self_update_messages      r   no_onboardingzmain.<locals>.no_onboarding   	        c                     yr   rD   )r   s    r   r   zmain.<locals>.<lambda>   s    r   c                   K   ywr   rD   r   s      r   	no_reviewzmain.<locals>.no_review   r   r   _nutrition_address_render_nutrition_text_send_nutrition_topicresolvehandle_text)	update_ideffective_messagemessageedited_messagechannel_postedited_channel_post	completedF )r   rw   exception_message	tracebackc              3  j   K   | ]*  }j                  |      j                  |      k7  s'| , y wr   )get)r   r   afterbefores     r   r   zmain.<locals>.<genexpr>   s1     f&>d&**TBRV[V_V_`dVeBeT&>s   (33zgateway/platforms/telegram.pyz'gateway/platforms/nutrition_coaching.py)telegram_py_sha256nutrition_coaching_py_sha256rc   0)r   user_idrk   	chat_typetopic_idrg   )registry_pathadaptive_nutrition_enabled)r,   r   registered_routesenabled_route_keyscustomer_keycustomer_enabledcustomer_data_rootbridge_active_binding)zRH1: private-DM address normalization does not resolve the activated registry routezYH2: committed-registry reload or customer service-state validation raises before dispatchzQH3: inactive wizard handling returns a notice but Telegram DM send routing raiseszZH4: the inactive wizard bridge itself raises while reading missing/malformed binding state)sourceinputconfigcoordinatorfake_bot_callsfake_message_repliesmethod_tracelive_authority_file_countlive_authority_unchangedchanged_live_authority_files
hypotheses   )ensure_asciiindent	sort_keysr   r      )r   r^   r   r^   r   r^   rR   r.   )Jr)   rI   socketcreate_connectionconnect	importlibimport_modulePlatformConfigTelegramAdapteryaml	safe_loadr   	read_text	from_dictr$   profile_rootprofile_authority_lockrK   _bot_get_nutrition_coachingRuntimeError_nutrition_coaching_error_ensure_live_registry!_get_nutrition_onboarding_previewr   !_handle_nutrition_onboarding_text _room_bootstrap_reserves_ingress_reserve_adaptive_review_updater   r   r`   r   	UPDATE_ID_handle_text_messager{   updater,   r7   joinr   format_exception__traceback__r"   r#   nextiter_routesvaluesr   SOURCErh   rf   _nutrition_coaching_configr   _adaptive_nutrition_config_registry_pathr3   _registered_routesr1   customerspecr   r   	data_rootbridgehas_active_bindingrM   rn   r:   lenprintjsondumpsr   )r   nutrition_moduler   rawtelegram_rawr   adapterr   r   r   r   r   ry   r}   changedresolvedr   r   s                   @@r   mainr
     s    !F+F(FMM,,-=>MMN ../UV--.JK[[O
..'M1<<g<N
OC{#J/L%%"6gAV' F g,F.T+f%G9GL113K7<<Y@YZZ(4K% 1=G-0:='0RG-/EG,.8G.LG+g+,w01w/0k9%k=)mGyG4UY[FF^**6?3DEEE"{  Efc&kCJ&>ffGD,,33567H
MM"(2Q)Q"R,26<e3e,fh &++"TC!$W%G%G%U%U!V*1*L*LTX*XZ!+.77#kNhNhJi!%k&D&D!E"&u[-@-@'A"B$--22?? ( 1 1 6 6 > >"%h&7&7&A&A"B%-__%G%G%IK ||))c&k!'5wj%  k. 
$**V%T
JK

;'50V<V5W1^]^^E 	F ^d3i6H6H!#hggi88cCIZIZ[\ 	 	^ 	^^sD   GRP 1P2	P ;HRP 	R&A(RRRR__main__)r   r   rR   r$   )rR   zdict[str, str])r8   r   rR   r   )r<   r$   r=   r$   r>   r   rR   r]   )rG   r   rH   r   rR   r]   )r   r^   r~   r$   rR   r]   )rR   r/   ).__doc__
__future__r   asyncior   r   r   r  ospathlibr   r   sysr   typesr   r   typingr   r   r   r   rh   r   rf   r   insertr$   environr   r)   r3   r:   __annotations__r?   r   rA   rI   rK   r`   r   r   r
  r7   
SystemExitrunrD   r   r   <module>r     s   U "      	   
  -  	8	9
:
;	 3v; L

= 9Y&* !  D	, 	J0 00 0$55P_f z
[W[[(
)) r   