
    	Rj              	      $   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 ddlmZ  ej                    dz  ZdZd'dZ	 	 	 	 d(d)dZdddddddddddddddd ddgd!d"Z ej        dd#ed$ ed%&           dS )*zENative Foster tool for correlated, source-routed Michel verification.    )annotationsN)Path)get_session_env)registryz .config/foster-ask-michel/secretz*http://127.0.0.1:18644/webhooks/ask-michelreturnboolc                 4    t                                           S )N)_SECRET_FILEis_file     <C:/MCSJAgent/foster-ask-michel/sal-phase3/ask_michel_tool.py
_availabler      s    !!!r    Fquestionstrproposed_answercontextneed_screenshottask_id
str | Nonec                   t          dd          }t          dd          }|r|st          j        ddd          S |dk    rt          j        dd|d	d          S d
t          t	          j                               dt          j                    j        d d          }d|| |||rdndd||t          dd          t          dd          t          dd          t          dd          t          dd          dd}t          j        |dd                              d          }	t          
                    d                                          }
t          j        |
                    d          |	t          j                                                  }t"          j                            t(          j                            dt.                    |	dd||d d!"          }	 t"          j                            |d#$          5 }|                                 |j        d%k    r)t          j        d||j        d&          cd d d            S t          j        d'|d%d(d)          cd d d            S # 1 swxY w Y   d S # t"          j        j        $ r<}|                                 t          j        d||j        d*d+          cY d }~S d }~wt<          $ r/}t          j        d|t?          |          d,          cY d }~S d }~ww xY w)-NHERMES_SESSION_PLATFORMr   HERMES_SESSION_CHAT_IDFzINo active gateway origin; ask_michel_verify requires a user chat session.)okerrortelegramzOrigin platform z3 is not enabled for correlated return delivery yet.zfoster--   
ask_michelyesnofosterHERMES_SESSION_CHAT_NAMEHERMES_SESSION_THREAD_IDHERMES_SESSION_USER_IDHERMES_SESSION_USER_NAMEHERMES_SESSION_MESSAGE_ID)platformchat_id	chat_name	thread_iduser_id	user_name
message_id)
event_type
request_idr   r   
candidatesr   requested_byorigin),:)ensure_ascii
separatorszutf-8ascii)encodingMICHEL_WEBHOOK_URLPOSTzapplication/jsonzFoster-Ask-Michel-Tool/2.0)zContent-TypezX-Webhook-SignaturezX-Request-IDz
User-Agent)datamethodheaders   )timeout   )r   r1   statusTzeMichel will verify asynchronously and Foster will return the result to this originating conversation.)r   r1   rC   deliveryz%Michel verification request rejected.)r   r1   rC   r   )r   r1   r   ) r   jsondumpsinttimeuuiduuid4hexencoder
   	read_textstriphmacnewhashlibsha256	hexdigesturllibrequestRequestosenvironget_DEFAULT_URLurlopenreadrC   r   	HTTPErrorcode	Exceptionr   )r   r   r   r   r   r)   r*   r1   payloadbodysecret	signaturerU   responseexcs                  r   ask_michel_verifyrf      s    8"==H6;;G 7 z`
 
   	 :zgggg
 
   	
 E3ty{{++DDdjll.>rr.BDDJ" %$3=55  ()CRHH()CRHH&'?DD()CRHH)*ErJJ
 
 G$ :gEjIIIPPQXYYD##W#55;;==Fw//w~FFPPRRIn$$

+\::.#,&6	
 
	 % 
 
G^##GR#88 	HMMOOO#%%z",&o# #  	 	 	 	 	 	 	 	 :( D	   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 <!   


z$h<	
 
   	 	 	 	 	 	    z$XX
 
   	 	 	 	 	 	s`   &!J <I5J I5(J 5I99J <I9=J L	1KL	L	$L>L	L	rf   a  Delegate an MCSJ answer to Michel for independent source/demo verification. Use when the user asks Foster to verify, check, confirm, or arbitrate an MCSJ answer with Michel. The completed result is routed automatically back to the current originating Telegram conversation.objectstringz"The user's original MCSJ question.)typedescriptionz0Foster's answer or disputed candidate to verify.z+Customer, version, and relevant background.booleanz9Whether Michel should provide authentic screenshot proof.)r   r   r   r   )ri   
propertiesrequired)namerj   
parametersmcsjc                
   t          |                     dd          |                     dd          |                     dd          t          |                     dd                    |                    d                    S )	Nr   r   r   r   r   Fr   )r   r   r   r   r   )rf   rY   r   )argskws     r   <lambda>rt      ss    0*b))!2B77B''TXX&7??@@y!!      r   u   🔎)rn   toolsetschemahandlercheck_fnemoji)r   r   )r   r   FN)r   r   r   r   r   r   r   r   r   r   r   r   )__doc__
__future__r   rQ   rO   rE   rW   rH   urllib.errorrT   urllib.requestrI   pathlibr   gateway.session_contextr   tools.registryr   homer
   rZ   r   rf   ASK_MICHEL_SCHEMAregisterr   r   r   <module>r      s   K K " " " " " "    				                 3 3 3 3 3 3 # # # # # #ty{{??;" " " " !Q Q Q Q Qj  	n
 !):^__(0Astt (9fgg(1B}~~	
 
  !23	 	  (  	  
     r   