
    Oj                    j   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	Z	ddl
Z
ddlmZ ddlmZmZ ddlmZ ddlmZmZ dZd	ed
<   dZd	ed<   dZd	ed<    G d de      Z ed       G d d             ZddZd dZd!dZdd	 	 	 	 	 	 	 d"dZd#dZ d$dZ!d%dZ"e#dk(  r e$ e"             y)&z>Profile-explicit, non-consuming Telegram getMe readiness gate.    )annotationsN)Callable)	dataclassfield)Path)AnyFinal@e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377r	   	SUCCESSORz&task26-telegram-transport-readiness-v3SCHEMA)zcustomers/registry.jsonz:data/onboarding/telegram-customer-bootstrap-v1/ledger.jsonzadata/customers/task26_live_2e_r2_20260815_8527916639/nutrition-onboarding/transient/workflow.jsonzVdata/customers/task26_live_2e_r2_20260815_8527916639/nutrition-onboarding/session.jsonz:data/onboarding/telegram-publication-outbox-v1/ledger.jsonz7data/telegram-ingress-receipts-v1-d0aacf0f4bdbb7c0.json	MONITOREDc                      e Zd ZdZy)ProbeFailurezFail-closed readiness outcome.N)__name__
__module____qualname____doc__     R.omo/evidence/task26/task26-telegram-network-probe-v3-e788f5d5/network_probe_v3.pyr   r      s    (r   r   T)frozenc                  \    e Zd ZU ded<   ded<   ded<   ded<   ded<    ed	
      Zded<   y)ProfileBindingr   profilestrconfig_sha256
env_sha256usernameintbot_idF)reprtokenN)r   r   r   __annotations__r   r"   r   r   r   r   r   #   s+    MOMKE"E3"r   r   c                d    t        j                  | j                               j                         S N)hashlibsha256
read_bytes	hexdigest)paths    r   digestr+   -   s!    >>$//+,6688r   c                   | j                         rt        d| j                         | j                         }t        j                  |j
                        r!|j                  t        j                         k7  rt        d| j                         t        j                  |j
                        dz  rt        d| j                         y )Nzsymlink profile authority: zunsafe profile authority: ?   znon-private profile authority: )

is_symlinkr   namestatS_ISREGst_modest_uidosgetuidS_IMODE)r*   values     r   secure_filer8   1   s    8DEEIIKE<<&%,,"))+*E7		{CDD||EMM"U*<TYYKHII +r   c           	        | j                         j                  d      }|j                         r|j                         rt	        d      |dz  }|dz  }t        |       t        |       t        j                  d      }|j                  |j                  d            xs i }t        |t              st	        d	      |j                  d
      }t        |t              r|j                  d      nd}t        |t              r|j                  d      durt	        d      |j                  d      }t        |t              r|j                  d      nd}	t        |	t              r|	j                  d      nd}
t        |
t              r|
j                  d      nd}t        |t              r|j                  d      j                         st	        d      |j                  d      j                         }t        j                  d      }|j!                  |d      }|j                  d      }t        |t              r|j                         st	        d      |j                         }|j#                  d      \  }}}|r|j%                         rt'        |      dk  rt	        d      t)        |t+        |      t+        |      |t'        |      |      S )zGRead exactly ``profile`` without changing cwd, globals, or environment.T)strictzprofile directory unavailablezconfig.yamlz.envyamlzutf-8)encodingzinvalid profile config	platformstelegramNenabledz*enabled Telegram configuration unavailableextraadaptive_nutritionseparate_botbot_username@z,configured Telegram bot username unavailabledotenvF)interpolateTELEGRAM_BOT_TOKENz%configured Telegram token unavailable:r   z*configured Telegram token identity invalid)r   r   r   r   r    r"   )
expanduserresolveis_dirr.   r   r8   	importlibimport_module	safe_load	read_text
isinstancedictgetr   removeprefixstripdotenv_values	partition	isdecimalr   r   r+   )r   rootconfig_pathenv_pathr;   documentr=   r>   r@   adaptiveseparater   rE   valuesr"   prefix	separator_secrets                     r   load_profile_bindingrb   ;   sV   ''t'4D;;=DOO-:;;&Kf}H""6*D~~k33W3EFL"Hh%344[)I,6y$,Gy}}Z(THh%i)@)LGHHLL!E2<UD2Iuyy-.tH/9(D/Ix||N+tH/9(D/Ix||N+tHh$H,A,A#,F,L,L,NIJJ$$S)//1H$$X.F!!(!>FJJ+,EeS!BCCKKME!&!5FIwF,,.#f+2BGHH[)(#6{ r         $@timeoutc               b  K    || j                         }	 |4 d{    t        j                  |j                         |       d{   }ddd      d{    t        dd      }t        |dd      }|| j                  k7  s|| j                  k7  rt        d      t        dt        t        | j                        | j                  | j                  d	d
|ddddS 7 7 7 # 1 d{  7  sw Y   xY w# t        $ r}t        d      |d}~wt        $ r}t        d      |d}~ww xY ww)zFCall only getMe and match both configured username and token-bound ID.Nrd   ztelegram getMe timeoutz telegram getMe transport failurer   idz$telegram getMe bot identity mismatchREADY_TELEGRAM_TRANSPORTTz
Bot.get_meF)schemastatus	successorr   r   configured_usernamebot_id_matchmethodbounded_timeout_secondsconsumes_updatesmutates_cursorwrites_state)r"   asynciowait_forget_meTimeoutErrorr   	Exceptiongetattrr   r    r   r   r   r   r   )bindingbot_factoryre   botidentityexcreturned_usernamereturned_ids           r   
getme_gater   h   s     gmm
$CH3$--cjjlGLLH 3  *d;(D$/KG,,,w~~0MABB,w' ..&//#*!  L 333 >34#= H=>CGHs   D/C: CC: )C%	C!
C%C: C#C: BD/C: !C%#C: %C7+C.,C73C: :	D,DD,D''D,,D/c                    t        j                  d      }t        j                  d      }|j                  dddd      }|j                  | |      S )Nr>   ztelegram.requestg      @)connect_timeoutread_timeoutwrite_timeoutpool_timeout)r"   request)rL   rM   HTTPXRequestBot)r"   r>   telegram_requestr   s       r   production_bot_factoryr      sZ    &&z2H ../AB++	 , G <<eW<55r   c                N    t         D ci c]  }|t        | |z         c}S c c}w r%   )r   r+   )r   relatives     r   authority_hashesr      s)    AJKXHfWx/00KKKs   "c                    t        j                         } | j                  ddt               | j                  ddt               | j                         }d|j                  cxk  rdk  sn t        d	t        j                  
       y	 t        |j                        }t        |j                        }t        j                  t        |t         |j                              }t        |j                        |k7  rt#        d      	 t        t)        j*                  |dd             y# t"        t$        t&        f$ r(}t        d| t        j                  
       Y d }~yd }~ww xY w)Nz	--profileT)requiredtypez	--timeoutrc   )defaultr   r   
   z(FAIL_TELEGRAM_TRANSPORT: invalid timeout)file   rd   z+profile authority changed during getMe gatezFAIL_TELEGRAM_TRANSPORT:    ),rH   )	sort_keys
separators)argparseArgumentParseradd_argumentr   float
parse_argsre   printsysstderrrb   r   r   rs   runr   r   r   OSError
ValueErrorjsondumps)parserargsry   beforeresultr}   s         r   mainr      s   $$&F
d>
T>Dt||!r!8szzJ
&t||4!'//2w 6M
 GOO,6LMM 7
 
$**Vt

CD	 ':. )#/cjjAs   	A<D( (E$<EE$__main__)r*   r   returnr   )r*   r   r   None)r   r   r   r   )ry   r   rz   zCallable[[str], Any]re   r   r   zdict[str, object])r"   r   r   r   )r   r   r   zdict[str, str])r   r   )%r   
__future__r   r   rs   r&   rL   r   r4   r0   r   collections.abcr   dataclassesr   r   pathlibr   typingr   r	   r   r#   r   r   RuntimeErrorr   r   r+   r8   rb   r   r   r   r   r   
SystemExitr   r   r   <module>r      s    D "      	  
 $ (  U	5 U8 8	5 )< ) $# # #9J*b 	  %  	 
  F	6L. z
TV
 r   