+
    iHàj’  ã                  óB  a € 0 t $ R t^ RIHt ]R8X  d    ^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIHtHt ]	P                  ! ]4      tRtR]R]R]R	]R
]R]/tR R ltRtR]R&   R R ltRR R llt]R8X  d   ]P<                  ! ]! 4       4       R# R#   ] d     L„i ; i)a/  Hermes-tools-as-MCP server for the codex_app_server runtime.

Codex owns the loop and tool list there, so a curated subset of Hermes tools is
exposed over stdio MCP; codex registers it via ``~/.codex/config.toml
[mcp_servers.hermes-tools]``. Run: ``python -m agent.transports.hermes_tools_mcp_server``.
)ÚannotationsÚ__main__N)ÚAnyÚOptionalzhermes-toolsÚstringÚintegerÚnumberÚbooleanÚarrayÚobjectc               ó    € V ^8„  d   QhRRRR/# )é   Úschemaúdict | NoneÚreturnz)tuple[inspect.Signature, dict[str, type]]© )Úformats   "ÚM/home/ubuntu/.hermes/hermes-agent/agent/transports/hermes_tools_mcp_server.pyÚ__annotate__r   &   s   € ÷ Dñ D ;ð DÐ3\ñ Dó    c           
     ó¢  € T ;'       g    / P                  R4      ;'       g    / p\        T ;'       g    / P                  R4      ;'       g    . 4      p. / rCVP                  4        FÈ  w  rVVP                  R4      '       d   K  \        P                  T;'       g    / P                  R4      \
        4      pWR9   d   V\        P                  P                  3M\        V,          R3w  r‰W„V&   VP                  \        P                  ! V\        P                  P                  W‰R7      4       KÊ  	  \        P                  ! V\        R7      V3# )zZKEYWORD_ONLY signature + annotations from a JSON schema (optional params default to None).Ú
propertiesÚrequiredÚ_ÚtypeN)Ú
annotationÚdefault)Úreturn_annotation)ÚgetÚsetÚitemsÚ
startswithÚ_JSON_TO_PYr   ÚinspectÚ	ParameterÚemptyr   ÚappendÚKEYWORD_ONLYÚ	SignatureÚstr)
r   Úpropsr   ÚparamsÚannotsÚpnameÚpspecÚpyÚannr   s
   &         r   Ú_signature_from_schemar1   &   s  € à�\ˆ\�r×Ñ˜|Ó,×2Ð2°€EÜ�F—L�L˜b×%Ñ% jÓ1×7Ð7°RÓ8€HØ˜ˆFØŸ™ž‰ˆØ×Ñ˜C× Ò ÙÜ�_‰_˜eŸk˜k r×.Ñ.¨vÓ6¼Ó<ˆØ8=Ô8I˜œG×-Ñ-×3Ñ3Ñ4ÔPXÐY[ÕP\Ð^bÐOc‰ˆØˆu‰Ø�‰”g×'Ò'¨¬w×/@Ñ/@×/MÑ/MÐZ]ÔoÖpñ &ô ×Ò˜V´sÔ;¸VÐCÐCr   ztuple[str, ...]ÚEXPOSED_TOOLSc               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   r   G   s   € ÷ >ñ >�sñ >r   c            	     óV  a€  ^ RI Hp  ^ RIHpHo T ! \        RR7      pT! RR7      ;'       g    .  Uu/ uFK  p\        T\        4      '       g   K  TP                  R	4      R
8X  g   K3  TR
,          R,          TR
,          bKM  	  ppR T3R llp^ p\         F’  pTP                  T4      p	T	f   \        P                  RT4       K0  T	P                  R4      ;'       g    RT R2p
T	P                  R4      ;'       g    R	RR/ /p TP                  T! Y‹T
4      YŠR7       T^,          pK”  	  \        P!                  RT\#        \        4      4       T#   \         d   p\        RT 24      ThRp?ii ; iu upi   \         d#    TP                  YŠR7      ! T! Y‹T
4      4        L†i ; i)z\Create the MCP server with Hermes tools attached (lazy imports: importable without ``mcp``).)Ú	MCPServerz4hermes-tools MCP server requires the 'mcp' package: N)Úget_tool_definitionsÚhandle_function_calla  Hermes Agent's tool surface, exposed for use inside a Codex session. Use these for capabilities Codex's built-in toolset doesn't cover: web search/extract, browser automation, subagent delegation, vision, image generation, persistent memory, skills, and cross-session search.)ÚinstructionsT)Ú
quiet_moder   ÚfunctionÚnamec               ó$   € V ^8„  d   QhRRRRRR/# )r   Ú	tool_namer)   r   r   Údescriptionr   )r   s   "r   r   Ú#_build_server.<locals>.__annotate__c   s!   € ÷ ñ  ð ¨kð Èñ r   c                ó€   <a € \        V4      w  r4R  VV 3R llpS Vn        W%n        W5n        / VCR\        /CVn        V# )c               ó    € V ^8„  d   QhRRRR/# )r   Úkwargsr   r   r)   r   )r   s   "r   r   Ú:_build_server.<locals>._make_handler.<locals>.__annotate__g   s   € ÷ 	Jñ 	J ð 	J¨ñ 	Jr   c            	     ó  <€  S! SV P                  4        UUu/ uF  w  rVf   K  WbK  	  upp4      # u uppi   \         dD   p\        P                  RS4       \        P
                  ! R\        T4      RS/4      u R p?# R p?ii ; i)Nztool %s raisedÚerrorÚtool)r    Ú	ExceptionÚloggerÚ	exceptionÚjsonÚdumpsr)   )rB   ÚkÚvÚexcr7   r=   s   ,   €€r   Ú	_dispatchÚ7_build_server.<locals>._make_handler.<locals>._dispatchg   sv   ø€ ðJá+¨IÈÏÉÌÔ7iÉÁÀÐ[\¼¸ºÉÒ7iÓjÐjùÓ7iøÜô JÜ× Ñ Ð!1°9Ô=Ü—z’z 7¬C°«H°f¸iÐ"HÓIÕIûðJús+   ƒ: ™4¦4¬: ´: ºBÁ8BÁ=BÂBr   )r1   Ú__name__Ú__doc__Ú__signature__r)   Ú__annotations__)r=   r   r>   Úsigr,   rO   r7   s   f&&   €r   Ú_make_handlerÚ$_build_server.<locals>._make_handlerc   sK   ù€ ä,¨VÓ4‰ˆ÷	Jñ 	Jð 'ˆ	ÔØ'ÔØ"%ÔØ$= vÐ$=¨x¼Ñ$=ˆ	Ô!ØÐr   u5   skipping %s â€” not registered in this Hermes processr>   zHermes z toolÚ
parametersr   r   )r;   r>   z.hermes-tools MCP server registered %d/%d tools)Ú
mcp.serverr5   ÚImportErrorÚmodel_toolsr6   r7   ÚHERMES_TOOLS_MCP_SERVER_NAMEÚ
isinstanceÚdictr   r2   rH   ÚdebugÚadd_toolÚ	TypeErrorrF   ÚinfoÚlen)r5   rN   r6   ÚmcpÚtdÚall_defsrV   Úexposed_countr;   Úspecr>   Úparams_schemar7   s               @r   Ú_build_serverrj   G   s±  ø€ ðaå(÷ Gá
Ü$ð8ô	€Cñ (°4Ô8×>Ð>¸BÐ>óá>ˆBÜ�bœ$×ô 	/à$&§F¡F¨6£N°jÑ$@ô 	/ˆˆ:��vÕ  :¥Ò.Ù>ð ð ÷ð ð$ €MßˆØ�|‰|˜DÓ!ˆØŠ<Ü�L‰LÐPÐRVÔWÙØ—h‘h˜}Ó-×FÐF°7¸4¸&ÀÐ1FˆØŸ™ Ó.×VÐV°6¸8À\ÐSUÐ2Vˆð	jØ�L‰L™ t¸KÓHÈtˆLÔmð 	˜ÕŠñ ô ‡K�KÐ@À-ÔQTÔUbÓQcÔdØ€Jøôs ô aÜÐPÐQTÐPUÐVÓWÐ]`Ð`ûðaüò"øôD ô 	jà�H‰H˜$ˆHÔ8¹ÀtÐ\gÓ9hÖið	jús:   ƒE ´E6ÁE6Á)E6ÄE;ÅE3ÅE.Å.E3Å;*F(Æ'F(c               ó    € V ^8„  d   QhRRRR/# )r   ÚargvzOptional[list[str]]r   Úintr   )r   s   "r   r   r   ˆ   s   € ÷ ñ Ð"ð ¨cñ r   c                óò  € T ;'       g    \         P                  R,          p RV 9   ;'       g    RV 9   p\        P                  ! V'       d   \        P                  M\        P
                  \         P                  RR7       \        P                  P                  RR4       \        P                  P                  RR	4        \        4       p TP                  4        ^ #   \         d/   p\         P                  P                  R
T R24        Rp?^# Rp?ii ; i  \         d     ^ # \         dD   p\         P#                  R4       \         P                  P                  RT R24        Rp?^# Rp?ii ; i)zEEntry point for `python -m agent.transports.hermes_tools_mcp_server`.:é   NNz	--verbosez-vz1%(asctime)s [%(levelname)s] %(name)s: %(message)s)ÚlevelÚstreamr   ÚHERMES_QUIETÚ1ÚHERMES_REDACT_SECRETSÚtruez&hermes-tools MCP server cannot start: Ú
Nzhermes-tools MCP server crashedzhermes-tools MCP server error: )Úsysrl   ÚloggingÚbasicConfigÚINFOÚWARNINGÚstderrÚosÚenvironÚ
setdefaultrj   rZ   ÚwriteÚrunÚKeyboardInterruptrG   rH   rI   )rl   ÚverboseÚserverrN   s   &   r   Úmainr…   ˆ   s   € à×Ð”3—8‘8˜B•<€DØ˜TÑ!×1Ð1 T¨T¡\€GÜ×Òß%Œg�lŠl¬7¯?©?Ü�z‰zØBõô ‡J�J×Ñ˜.¨#Ô.Ü‡J�J×ÑÐ1°6Ô:ðÜ“ˆðØ�
‰
Œñ øô ô Ü�
‰
×ÑÐAÀ#ÀÀbÐIÔJÝûðûô
 ô Øñ
 ô	 ô Ü×ÑÐ:Ô;Ü�
‰
×ÑÐ:¸3¸%¸rÐBÔCÝûðús<   Ã
C ÃD ÃDÃ*#DÄDÄE6Ä)E6Ä2E6Ä38E1Å1E6)Ú
web_searchÚweb_extractÚbrowser_navigateÚbrowser_clickÚbrowser_typeÚbrowser_pressÚbrowser_snapshotÚbrowser_scrollÚbrowser_backÚbrowser_get_imagesÚbrowser_consoleÚbrowser_visionÚvision_analyzeÚimage_generateÚ
skill_viewÚskills_listÚtext_to_speechÚkanban_completeÚkanban_blockÚkanban_scheduleÚkanban_request_reviewÚkanban_request_changesÚkanban_commentÚkanban_heartbeatÚkanban_showÚkanban_listÚkanban_createÚkanban_unblockÚkanban_link)N)Ú__conditional_annotations__rR   Ú
__future__r   rQ   Úhermes_bootstrapÚModuleNotFoundErrorr#   rJ   rx   r}   rw   Útypingr   r   Ú	getLoggerrH   r\   r)   rm   ÚfloatÚboolÚlistr^   r"   r1   r2   rT   rj   r…   Úexit)r£   s   @r   Ú<module>r­      sÃ   øðôõ #ð
 ˆzÔðÛó Û Û Û 	Û 
ß  à	×	Ò	˜8Ó	$€ð  .Ð ð ˜˜i¨¨h¸¸yÈ$ÐPWÐY]Ð_gÐimÐn€õDð$"€ˆó õ>÷Bð: ˆzÔØ‡H‚H‰T‹VÖñ øðk ô Ùðús   •B ÂBÂB