+
    iHàj†  ã                  ó–   € R t ^ RIHt ^ RIHtHt RtRtR R ltR R lt	R R	 lt
 ! R
 R4      tR R ltR R ltR R ltR R ltR# )aý  Provider-native assistant reasoning carriers outside the standard reasoning fields.

* Gemini text-turn ``thought_signature`` (message-level ``extra_content.google`` on the OpenAI-compat
  and Vertex endpoints; the non-functionCall ``thoughtSignature`` part on the native API). Replaying it
  makes the server rehydrate the turn's thoughts (live: 31 -> 237/250 prompt tokens).
* GitHub Copilot ``/chat/completions`` ``reasoning_text`` / ``reasoning_opaque`` (top-level assistant
  keys, replayed by the Copilot editor clients) and the Gemini-3 ``function.thought_signature``.

Capture stores them top-level on the live assistant dict AND as ONE private ``reasoning_details`` record,
so they persist in the existing column and survive gateway/resume replay. Its type ends in ``.native_assistant``, which no profile declares, so
the chat-completions transport never forwards the record itself; ``shape_wire_carriers`` lifts each
field back onto the wire copy only for the route that reads it and strips it everywhere else.
)Úannotations)ÚAnyÚOptionalzhermes.native_assistantc               ó$   € V ^8„  d   QhRRRRRR/# )é   Úobjr   ÚnameÚstrÚreturn© )Úformats   "Ú=/home/ubuntu/.hermes/hermes-agent/agent/reasoning_carriers.pyÚ__annotate__r      s!   € ÷ /ñ /ˆsð /˜#ð / #ñ /ó    c                óþ   € \        WR4      pR FE  pVe   K	  \        \        WR4      \        4      '       g   K+  \        W4      P                  V4      pKG  	  \        VRR4      p\	        V4      '       d   V! 4       # T# )z```obj.<name>``, else the same key from pydantic ``model_extra`` (unknown SDK fields park there).NÚ
model_dump)Úmodel_extraÚprovider_data)ÚgetattrÚ
isinstanceÚdictÚgetÚcallable)r   r   ÚvalueÚsideÚdumps   &&   r   Úfieldr      sj   € ä�C˜tÓ$€EÛ0ˆØŒ=œZ¬°¸4Ó(@Ä$×GÔGÜ˜CÓ&×*Ñ*¨4Ó0ŠEñ 1ô �5˜,¨Ó-€DÜ˜d—^’^‰4‹6Ð.¨Ð.r   c               ó    € V ^8„  d   QhRRRR/# )r   Úextrar   r
   úOptional[str]r   )r   s   "r   r   r   !   s   € ÷ Añ A˜Sð A ]ñ Ar   c                ó$  € \        V \        4      '       g   R# V P                  R4      p\        V\        4      '       d   VP                  R4      MV P                  R4      p\        V\        4      '       d   VP	                  4       '       d   V# R# )zYGemini signature inside an ``extra_content`` dict (``google.thought_signature`` or flat).NÚgoogleÚthought_signature)r   r   r   r	   Ústrip)r   r!   Úsigs   &  r   r"   r"   !   sh   € ä�eœT×"Ò"ÙØ�Y‰Y�xÓ €FÜ-7¸Ä×-EÒ-Eˆ&�*‰*Ð(Ô
)È5Ï9É9ÐUhÓKi€CÜ˜S¤#×&Ò&¨3¯9©9¯;ª;ˆ3Ð@¸DÐ@r   c               ó    € V ^8„  d   QhRRRR/# )r   Úassistant_messager   r
   zOptional[dict]r   )r   s   "r   r   r   *   s   € ÷ 	@ñ 	@ cð 	@¨nñ 	@r   c                óî   € / p\        \        V R4      4      ;p'       d
   RRV//VR&   R F4  p\        W4      p\        V\        4      '       g   K&  V'       g   K0  WAV&   K6  	  V'       d   R\        /VC# R# )zbThe private ``reasoning_details`` record for one response message, or None when it has no carrier.Úextra_contentr!   r"   ÚtypeN©Úreasoning_opaqueÚreasoning_text)r"   r   r   r	   ÚCARRIER_TYPE)r&   Úrecordr$   Úkeyr   s   &    r   Úcarrier_recordr0   *   sz   € à€FÜ¤Ð&7¸Ó IÓJÐJ€sÖJØ#+Ð.AÀ3Ð-GÐ"HˆˆÑÛ5ˆÜÐ'Ó-ˆÜ�eœS×!Ô!§e¡eØ�3‹Kñ 6÷ 06ˆF”LÐ+ FÐ+Ð?¸4Ð?r   c                  ó>   € ] tR t^6tRtR R ltR R ltR R ltRtR	# )
ÚStreamCarrierszâAccumulates the carriers from streamed deltas: the latest signature / opaque blob (Claude on
Copilot sends a new opaque before each tool call; the editor clients replay only the latest) and
the concatenated ``reasoning_text``.c               ó   € V ^8„  d   QhRR/# )r   r
   ÚNoner   )r   s   "r   r   ÚStreamCarriers.__annotate__;   s   € ÷ (ñ (˜$ñ (r   c                	ó0   € R V n         R V n        . V n        R # ©N)Ú	signatureÚopaqueÚ
text_parts)Úselfs   &r   Ú__init__ÚStreamCarriers.__init__;   s   € Ø(,ˆŒØ%)ˆŒØ%'ˆŽr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Údeltar   Ú	reasoningr   r
   r   )r   s   "r   r   r5   @   s!   € ÷ 	8ñ 	8˜#ð 	8¨-ð 	8¸Mñ 	8r   c                óv  € \        \        VR4      4      ;'       g    V P                  V n        \        VR4      p\        V\        4      '       d   V'       d   TMV P
                  V n        \        VR4      p\        V\        4      '       d	   V'       g   V# V P                  P                  V4       Vf   V# T# )zmAbsorb one delta; returns ``reasoning``, else its ``reasoning_text`` fragment (Copilot's readable reasoning).r(   r+   r,   )r"   r   r8   r   r	   r9   r:   Úappend)r;   r?   r@   r9   Útexts   &&&  r   ÚfeedÚStreamCarriers.feed@   s�   € ä*¬5°¸Ó+HÓI×[Ð[ÈTÏ^É^ˆŒÜ�uÐ0Ó1ˆÜ *¨6´3× 7Ò 7¿F‘fÈÏÉˆŒÜ�UÐ,Ó-ˆÜ˜4¤×%Ò%¯$ØÐØ�‰×Ñ˜tÔ$Ø Ò(ˆtÐ7¨iÐ7r   c               ó    € V ^8„  d   QhRRRR/# )r   Úresponser   r
   r4   r   )r   s   "r   r   r5   K   s   € ÷ 
>ñ 
>˜cð 
> dñ 
>r   c                	ód  € \        VR R4      pV'       d   \        V^ ,          RR4      MRpVf   R# V P                  '       d   RRV P                  //Vn        V P                  '       d   V P                  Vn        V P
                  '       d#   RP                  V P
                  4      Vn        R# R# )ÚchoicesNÚmessager!   r"   Ú )r   r8   r(   r9   r+   r:   Újoinr,   )r;   rG   rI   rJ   s   &&  r   ÚapplyÚStreamCarriers.applyK   s†   € Ü˜( I¨tÓ4ˆß:A”'˜' !�* i°Ô6ÀtˆØŠ?ÙØ�>�>ˆ>Ø%-Ð0CÀTÇ^Á^Ð/TÐ$UˆGÔ!Ø�;�;ˆ;Ø'+§{¡{ˆGÔ$Ø�?�?ˆ?Ø%'§W¡W¨T¯_©_Ó%=ˆGÖ"ñ r   )r9   r8   r:   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r<   rD   rM   Ú__static_attributes__r   r   r   r2   r2   6   s   † ñ,õ(õ
	8÷
>ñ 
>r   r2   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úmodelr   Úbase_urlr
   útuple[str, ...]r   )r   s   "r   r   r   X   s!   € ÷ ñ ˜ð  sð ¨ñ r   c                óš   € ^ RI Hp ^ RIHp V! V 4      '       d   RMRpT! \	        T;'       g    R4      R4      '       d   RMRpWE,           # )z/Message-level carrier keys this route consumes.)Ú!_model_consumes_thought_signature©Úbase_url_host_matchesrK   úgithubcopilot.com)r(   r   r*   )Ú!agent.transports.chat_completionsrZ   Úutilsr\   r	   )rV   rW   rZ   r\   ÚgeminiÚcopilots   &&    r   Ú_route_readsrb   X   sL   € åSÝ+ñ $EÀU×#KÒ#KÑÐQS€FÙ8MÌcÐRZ×R`ÐR`Ð^`ÓNaÐcv×8wÒ8wÑ4Ð}€GØÕÐr   c               ó    € V ^8„  d   QhRRRR/# )r   Ú
tool_callsÚlistr
   r   )r   s   "r   r   r   c   s   € ÷ ñ ¨$ð °4ñ r   c                óN  € V  UUUu. uFˆ  p\        V\        4      '       dn   \        VP                  R 4      \        4      '       dI   RVR ,          9   d;   / VCR VR ,          P                  4        UUu/ uF  w  r#VR8w  g   K  W#bK  	  upp/CMTNKŠ  	  uppp# u uppi u upppi )Úfunctionr"   )r   r   r   Úitems)rd   ÚtcÚkÚvs   &   r   Ú_strip_function_signaturerl   c   s¤   € ñ
 õ	ñ ˆBô �bœ$×Ò¤J¨r¯v©v°jÓ/AÄ4×$HÒ$HÐM`ÐdfÐgqÕdrÔMrð 	bˆ2Ðaˆz¨R°
­^×-AÑ-AÔ-CÔ`Ñ-C¡T QÀqÐL_ÑG_œD˜AšDÑ-CÒ`Òaàò	ñ ó	ð ùÛ`ùôs   ‡A,B Á3BÂBÂ	B ÂB c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Úmsgr   ÚreadsrX   ra   Úboolr
   r   )r   s   "r   r   r   l   s(   € ÷ ñ �ð ˜Oð °dð ¸sñ r   c                óŠ  a € \        S \        4      '       d   S P                  R 4      R8w  d   S # S P                  R4      p\        V\        4      '       d   TM. p\	        R V 4       R4      pS P                  R4      p\        V\        4      '       d   TM. pV'       * ;'       d5    \
        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      pVfS   V'       gK   \
        ;QJ d#    V 3R	 l\         4       F  '       g   K   RM	  RM! V 3R	 l\         4       4      '       g   S # S P                  4        UUu/ uF  w  rxV\        9  g   K  WxbK  	  p	pp/ T;'       g    / C\         Uu/ uF  qwS 9   g   K  VS V,          bK  	  upCp
Ve8   V Uu. uF  q»VJg   K
  VNK  	  ppV'       d   WÉR&   MV	P                  RR4       V FF  pV
P                  V4      '       g   K  VR
8w  g   V
P                  R4      '       g   K<  W­,          W�&   KH  	  V'       d   \        V4      V	R&   V	# u uppi u upi u upi )ÚroleÚ	assistantÚreasoning_detailsc              3  óŽ   "  € T F;  p\        V\        4      '       g   K  VP                  R 4      \        8X  g   K7  Vx € K=  	  R# 5i)r)   N)r   r   r   r-   )Ú.0Úds   & r   Ú	<genexpr>Ú_shape.<locals>.<genexpr>q   s-   é € Ð_™g˜¬°A´t×)<”1ÀÇÁÀvÃÔR^ÑA^—1’1›gùs   ‚AŸA»
ANrd   c              3  ó¸   "  € T FP  p\        V\        4      ;'       d4    \        VP                  R 4      \        4      ;'       d    RVR ,          9   x € KR  	  R# 5i)rg   r"   N)r   r   r   )rv   ri   s   & r   rx   ry   t   sN   é € ð !áˆBô 	�2”tÓ×oÐo¤¨B¯F©F°:Ó,>ÄÓ!E×oÐoÐJ]ÐacÐdnÕaoÑJoÔoÛùs   ‚Až&AÁATFc              3  ó,   <"  € T F	  qS9   x € K  	  R # 5ir7   r   )rv   rj   rn   s   & €r   rx   ry   w   s   øé € Ð0QÁ=¸a°c¶Ã=ùs   ƒr,   r+   )
r   r   r   re   ÚnextÚanyÚ_MESSAGE_KEYSrh   Úpoprl   )rn   ro   ra   Údetailsr.   rd   Úfn_sigrj   rk   ÚoutÚvaluesrw   Úrestr/   s   f&&           r   Ú_shaper…   l   sÒ  ø€ Ü�cœ4× Ò  C§G¡G¨F£O°{Ô$BØˆ
Ø�g‰gÐ)Ó*€GÜ# G¬T×2Ò2‰g¸€GÜÑ_™gÓ_ÐaeÓf€FØ—‘˜Ó&€JÜ)¨*´d×;Ò;‘À€JØŒ[÷ ð ŸS›Sñ !áó!ŸSŸSšSñ !áó!ó €Fð ‚~Ÿf¯S«SÔ0QÅ=Ó0Q¯S¯SªSÔ0QÅ=Ó0Q×-QÒ-QØˆ
ØŸI™IœKÔ
B™K‘D�A¨1´MÑ+AŒ4ˆ1Š4™K€CÑ
BàQ�—�˜2ÐQµmÓ"P±m°ÈCÁx¤9 1 c¨!¥f¢9±mÑ"PÐQ€FØÒÙ"Ó6™7�a¨v o—�™7ˆÐ6ßØ'+Ð#Ò$à�G‰GÐ'¨Ô.Ûˆà�:‰:�c�?Œ? Ð'7Ô 7¸6¿:¹:ÐFX×;YÔ;YØ•{ˆC‹Hñ ÷ Ü5°jÓAˆˆLÑØ€Jùó Cùâ"Pùâ6s$   ÅH5ÅH5Å7H;ÆH;ÆI Æ*I c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Úmessagesre   rV   r   rW   r
   r   )r   s   "r   r   r   ‹   s.   € ÷ Qñ Q $ð Q°#ð QÀð QÈñ Qr   c               ó<  € ^ RI Hp \        W4      pT! \        T;'       g    R4      R4      pV  Uu. uF  p\	        WdV4      NK  	  pp\
        ;QJ d%    R \        Wp4       4       F  '       d   K   RM	  RM! R \        Wp4       4       4      '       d   V # T# u upi )zžWire copy of ``messages`` with each carrier on the route that reads it and nowhere else.
Never mutates the input; unchanged messages are returned by identity.r[   rK   r]   c              3  ó,   "  € T F
  w  rWJ x € K  	  R # 5ir7   r   )rv   ÚaÚbs   &  r   rx   Ú&shape_wire_carriers.<locals>.<genexpr>“   s   é € ÐDÑ.C¡d a˜1�6Ó.Cùs   ‚FT)r_   r\   rb   r	   r…   ÚallÚzip)r‡   rV   rW   r\   ro   ra   ÚmÚshapeds   &$$     r   Úshape_wire_carriersr‘   ‹   s~   € õ ,ä˜Ó)€EÙ#¤C¨¯¨°BÓ$7Ð9LÓM€GÙ19Ó:±¨AŒf�Q˜wÖ'±€FÐ:ß“sÑD¬c°&Ô.CÓD—s—s’sÑD¬c°&Ô.CÓD×DÒDˆ8ÐPÈ&ÐPùò ;s   ²BN)r(   r+   r,   )rS   Ú
__future__r   Útypingr   r   r-   r~   r   r"   r0   r2   rb   rl   r…   r‘   r   r   r   Ú<module>r”      sM   ðñõ #ç  à(€ØG€õ/õAõ	@÷>ñ >õDõõ÷>Qr   