+
    „WÝj4  ã                   ó¤  a € RE t70 t R t^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHtHt ^ RIHtHt ^ RIHt ^ RIHt ]P.                  ! R	4      tR
RRRRRRRRFRRG/RRRRRRRRRHRRG/RRRRRRRRRG/RRRRRRRRRG//t] ^ k RIt] ^k R R  ltR! R" lt]! 0 RJm4      tR# R$ ltR% R& lt R' R( lt!R) R* lt"RKR+ R, llt#R- R. lt$] ! R/ R04      4       t%/ t&] ^k R1 R2 lt'RLt(R3 R4 lt)RKR5 R6 llt*R7t+R8]! 4       PX                   2t-] ! R9 R:4      4       t./ t/] ^k ]P`                  ! 4       t1R; R< lt2R= R> lt3R?t4R@t5RARRBR/RC RD llt6R# )Mz}Messaging-platform catalog and onboarding helpers: platform overrides/env discovery, WhatsApp
and Telegram onboarding state.
N)Ú	dataclass)ÚHTTPException©ÚPath)ÚAnyÚOptional)ÚOPTIONAL_ENV_VARSÚwrite_platform_config_field)Úis_setup_hidden_env)Úget_version_infozhermes_cli.web_serverÚ
api_serverÚnamez
API serverÚdescriptionzIExpose Hermes as an OpenAI-compatible HTTP API for tools like Open WebUI.Údocs_urlz@https://hermes-agent.nousresearch.com/docs/user-guide/messaging/Úenv_varsÚrequired_envÚwebhookÚWebhooksz>Receive events from GitHub, GitLab, and other webhook sources.zIhttps://hermes-agent.nousresearch.com/docs/user-guide/messaging/webhooks/Úmsgraph_webhookzMicrosoft Graph WebhookuL   Receive Microsoft Graph change notifications (Teams meetings, Outlook, â€¦).zOhttps://hermes-agent.nousresearch.com/docs/user-guide/messaging/msgraph-webhookÚrelayzRelay (experimental)z<Generic relay adapter fronted by the Hermes Relay connector.Ú c                ó`   € V ^8„  d   QhR\         \        \        \        3,          R3,          /# )é   Úreturn.)ÚtupleÚdictÚstrr   )Úformats   "ÚSC:\Users\johnn\AppData\Local\hermes\hermes-agent\hermes_cli\web_server_messaging.pyÚ__annotate__r   @   s%   € ÷ $ñ $¤U¬4´´S°­>¸3Ð+>Õ%?ñ $ó    c            	     óÎ  a€ ^ RI Hp  / p ^ RIHp V! 4        ^ RIHp VP                  4        F  pWAVP                  &   K  	  \        4       p. pV P                  P                  4        Uu. uF!  qwP                  R8w  g   K  VP                  NK#  	  ppV\        V4      ,            FE  p	W•9   d   K  VP!                  V	4       VP#                  \%        W‘P'                  V	4      4      4       KG  	  \)        \*        4       U
U	u/ uF  w  r©WšbK	  	  up	p
oVP-                  V3R lR	7       \/        V4      #   \         d    \        P                  RRR7        ELi ; iu upi u up	p
i )
a™  Build the messaging catalog from the gateway's Platform enum + plugin registry.

Built-ins come from ``gateway.config.Platform`` (LOCAL excluded); plugin platforms from
``platform_registry.plugin_entries()`` so new adapters appear without a code change here.
UI metadata comes from each plugin's PlatformEntry, or :data:`_PLATFORM_OVERRIDES` for core-only
platforms; the rest is derived from id/required_env.
)ÚPlatform)Údiscover_plugins)Úplatform_registryz$plugin platform registry unavailableT©Úexc_infoÚlocalc                 ó~   <€ SP                  V R ,          \        \        4      4      V R,          P                  4       3# )Úidr   )ÚgetÚlenÚ_PLATFORM_ORDERÚlower)ÚeÚorders   &€r   Ú<lambda>Ú-_messaging_platform_catalog.<locals>.<lambda>c   s)   ø€  §	¡	¨!¨D­'´3´Ó3GÓ HÈ!ÈFÍ)Ï/É/ÓJ[Ñ\r    )Úkey)Úgateway.configr"   Úhermes_cli.pluginsr#   Úgateway.platform_registryr$   Úplugin_entriesr   Ú	ExceptionÚ_logÚdebugÚsetÚ__members__ÚvaluesÚvalueÚlistÚaddÚappendÚ_build_catalog_entryr*   Ú	enumerater,   Úsortr   )r"   Ú
plugin_mapr#   r$   Úplugin_entryÚseenÚentriesÚmÚbuiltinÚpidÚidxr/   s              @r   Ú_messaging_platform_catalogrL   @   s4  ø€ õ (ð
 "$€Jð	Jõ 	8ÙÔÝ?Ø-×<Ñ<Ö>ˆLØ,8�|×(Ñ(Ó)ñ ?ô
 “U€DØ$&€GØ (× 4Ñ 4× ;Ñ ;Ô =ÓTÑ =˜1ÇÁÈGÑASŒwˆq�wŒwÑ =€GÐTØœ˜jÓ)×)Ð)ˆØŒ;ÙØ�‰�ŒØ�‰Ô+¨C·±ÀÓ1DÓEÖFñ	 *ô '0´Ô&@ÔAÑ&@™(˜#ˆSŠXÑ&@ÒA€EØ‡L�LÔ\€LÔ]Ü�‹>Ðøô ô JÜ�
‰
Ð9ÀDˆ
×IðJüò
 Uùó Bs#   ‹8D3 Á+EÂEÄE!Ä3"EÅEc                ó:   € V ^8„  d   QhR\         \        ,          /# ©r   r   )Ú	frozensetr   )r   s   "r   r   r   g   s   € ÷ ñ ¤9¬S¥>ñ r    c                 óœ   €  \        R \        4        4       4      #   \         d%    \        P	                  RRR7       \        4       u # i ; i)z¶Env-var keys owned by a Channels page platform card; the Keys/Env page hides them so the
same fields aren't duplicated. Best-effort: if the catalog can't be built, nothing is hidden.c              3   óT   "  € T F  qP                  R R4       F  q"x € K  	  K   	  R# 5i)r   N© ©r*   )Ú.0ÚentryÚks   &  r   Ú	<genexpr>Ú,_channel_managed_env_keys.<locals>.<genexpr>k   s&   é € ÐiÑ(E˜uÏyÉyÐYcÐegÖOhÈ!œÑOh™Ó(Eùs   ‚&(z+could not build channel-managed env key setTr%   )rO   rL   r7   r8   r9   rR   r    r   Ú_channel_managed_env_keysrY   g   sD   € ðÜÑiÔ(CÔ(EÓiÓiÐiøÜô Ü�
‰
Ð@È4ˆ
ÔPÜ‹{Òðús   ‚ œ,AÁ
Ac                óJ   € V ^8„  d   QhR\         R\        \         R3,          /# ©r   Úplatform_idr   .©r   r   )r   s   "r   r   r   x   s"   € ÷ .ñ .¬ð .´´c¸3°hµñ .r    c                ó   € ^ RI Hp V! V 4      # )z¤Env-var prefixes owned by a messaging platform card (shared with the profile-clone
channel stripper so a card and a clone agree on which keys belong to a platform).)Úplatform_env_prefixes)Úhermes_cli.profile_channelsr_   )r\   r_   s   & r   Ú_platform_env_prefixesra   x   s   € õ BÙ  Ó-Ð-r    c                óJ   € V ^8„  d   QhR\         R\        \         R3,          /# r[   r]   )r   s   "r   r   r      s&   € ÷ Cñ C¬Sð C´U¼3À¸8µ_ñ Cr    c                ó”  a€ \        V 4      p\        \        \        P                  ! 4        UaUu0 uF‚  w  opVP                  R4      R8X  g   K  S\        9  g   K+  \        S4      '       d   K>  \        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       g   K€  SkK„  	  upp4      4      # u uppi )zLAll messaging-category env vars for a platform (override + plugin + prefix).ÚcategoryÚ	messagingc              3   óF   <"  € T F  pSP                  V4      x € K  	  R # 5i©N)Ú
startswith)rT   Úprefixr   s   & €r   rW   Ú._discover_platform_env_vars.<locals>.<genexpr>‡   s   øé € Ð?±h¨F�—‘ ×'Ð'³hùs   ƒ!TF)	ra   r   Úsortedr   Úitemsr*   Ú_MESSAGING_KEYS_PAGE_KEYSÚ_is_setup_hidden_envÚany)r\   Úprefixesr   Úinfos   & ` r   Ú_discover_platform_env_varsrr      s©   ø€ ä% kÓ2€HÜ”Ü0×6Ò6Ô8õAÙ8‘��tØ�8‰8�JÓ ;Ñ.ô 	àÔ1Ñ1ô 	ô % T×*ô 	÷ ‹CÔ?±hÓ?�C�CŠCÔ?±hÓ?×?÷	 	ˆÑ8òAó Bó Cð Cùó As)   °CÁCÁCÁ0
CÁ;CÂCÂ2Cc          
      ó’   € V ^8„  d   QhR\         R\        \         \        3,          R\        R,          R\        \         R3,          /# )r   r\   ÚoverriderE   Nr   .)r   r   r   r   )r   s   "r   r   r   Š   sD   € ÷ 	ñ 	¬#ð 	¼¼cÄ3¸h½ð 	ÔWZÐ]aÕWað 	ÔfkÔloÐqtÐltÕfuñ 	r    c                ó|  € \        V 4      pRV9   d^   \        ;QJ d    . R VR,           4       F  NK  	  5M! R VR,           4       4      p\        \        P                  . VOVO54      4      # VeI   VP                  '       d7   \        \        P                  . \        VP                  4      OVO54      4      # V# )z�Canonical env-var list for a platform card. Required credentials always survive: hiding a
required field would make the platform unconfigurable.r   c              3   óL   "  € T F  p\        V4      '       d   K  Vx € K  	  R # 5irg   )rn   )rT   r2   s   & r   rW   Ú+_merge_platform_env_vars.<locals>.<genexpr>�   s   é € Ð^Ñ(< ÔDXÐY\×D]ŸšÓ(<ùs   ‚$š
$)rr   r   r   Úfromkeysr   )r\   rt   rE   Ú
discoveredÚexplicits   &&&  r   Ú_merge_platform_env_varsr{   Š   sž   € ô -¨[Ó9€JØ�XÔß”5Ñ^¨°Ö(<Ó^—5‘5Ñ^¨°Ö(<Ó^Ó^ˆÜ”T—]‘]Ð#; XÐ#;°
Ñ#;Ó<Ó=Ð=ØÒ L×$=×$=Ð$=Ü”T—]‘]Ð#S¤U¨<×+DÑ+DÓ%EÐ#SÈ
Ñ#SÓTÓUÐUØÐr    c                óR   € V ^8„  d   QhR\         R\        \        \         3,          /# )r   rE   r   )r   r   r   )r   s   "r   r   r   –   s"   € ÷ ñ ¤cð ¬d´3¼°8­nñ r    c                óÎ   € RV P                   RV P                  RV P                  /pV P                  '       d   V P                  VR&   V P                  e   V P                  VR&   V# )z™A plugin's declared card metadata in override shape; undeclared fields are left out so
the builder falls back exactly as for a platform with no metadata.r   r   r   r   r   )Údashboard_labelÚdashboard_descriptionr   Údashboard_env_varsÚdashboard_required_env)rE   Úfieldss   & r   Ú_plugin_card_fieldsrƒ   –   sj   € ð 	�×,Ñ,¨m¸\×=_Ñ=_Ø�L×)Ñ)ð€Fð ×&×&Ð&Ø)×<Ñ<ˆˆzÑØ×*Ñ*Ò6Ø!-×!DÑ!Dˆˆ~ÑØ€Mr    c                ól   € V ^8„  d   QhR\         R\        R,          R\        \         \        3,          /# )r   r\   rE   Nr   )r   r   r   )r   s   "r   r   r   ¤   s0   € ÷ ñ ¤cð ¼¸t½ð ÌtÔTWÔY\ÐT\Í~ñ r    c                 óP  € \         P                  V 4      ;'       g    Ve   \        V4      M/ pRV9   d   \        VR,          4      pM%Ve    \        VP                  ;'       g    R
4      MR
pVe   VP
                  MR pVe   VP                  ;'       g    RMR pRT RVP                  R4      ;'       g+    T;'       g!    V P                  RR4      P                  4       RVP                  R4      ;'       g    T;'       g    RRVP                  RR4      R	\        WV4      RV/# )Nr   r   r)   r   Ú_Ú r   r   r   rR   )
Ú_PLATFORM_OVERRIDESr*   rƒ   r   r   ÚlabelÚinstall_hintÚreplaceÚtitler{   )r\   rE   rt   r   Úplugin_labelÚplugin_hints   &&    r   rA   rA   ¤   s  € Ü"×&Ñ& {Ó3÷ Oð OØ-9Ò-EÔ˜LÔ)È2ð à˜Ô!Ü˜X nÕ5Ó6‰àAMÒAY”u˜\×6Ñ6×<Ð<¸"Ô=Ð_aˆØ)5Ò)A�<×%Ò%Àt€LØ7CÒ7O�<×,Ñ,×2Ð2°øÐUY€KàˆkØ�—‘˜VÓ$×]Ð]¨×]Ð]¸×8KÑ8KÈCÐQTÓ8U×8[Ñ8[Ó8]Ø�x—|‘| MÓ2×GÐG°k×GÐGÀRØ�H—L‘L ¨RÓ0ØÔ,¨[ÀLÓQØ˜ðð r    c                ó4   € V ^8„  d   QhR\         R\        RR/# )r   r\   Úenabledr   N)r   Úbool)r   s   "r   r   r   ·   s&   € ÷ Añ A¬ð A´tð AÀñ Ar    c                 ó    € \        V R V4       R# )r�   N)r	   )r\   r�   s   &&r   Ú_write_platform_enabledr“   ·   s   € Ü ¨Y¸Ö@r    c                   óT   a € ] tR t^»t o RtRtRtRtRtRt	Rt
RtRtRtV 3R ltRtV tR# )Ú_WhatsAppOnboardingSessionNÚstartingFc                ór  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[R,          ;R&   S[;R	&   S[R,          ;R
&   S[R,          ;R&   S[R,          ;R&   S[R,          ;R&   S[R,          ;R&   S[;R&   S[;R&   S[P                  R,          ;R&   # )r   NÚprocÚmodeÚallowed_usersÚsession_pathÚ
expires_atÚexpires_at_tsÚprofileÚstatusÚ
qr_payloadÚ
account_idÚaccount_nameÚaccount_phoneÚerrorÚstarting_processÚsession_reservedÚexpiry_timer)Ú
subprocessÚPopenr   Úfloatr‘   Ú	threadingÚTimer)r   Ú__classdict__s   "€r   r   Ú'_WhatsAppOnboardingSession.__annotate__»   sý   ø‡ ‚ á
×
Ñ
˜TÕ
!Ñ!ñ ñ �Iñ ñ Ññ	 ñ
 Ññ ñ �Oñ ñ Ññ ñ �4�ZÑñ ñ Ññ ñ �d•
Ñ!ñ ñ �d•
Ñ!ñ ñ ˜•*Ñ#ñ ñ ˜•:Ñ$ñ ñ ��:Ññ ñ Ñ"ñ ñ  Ñ"ñ! ñ" —/‘/ DÕ(Ñ/ò# r    rR   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   r§   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r­   s   @r   r•   r•   »   sB   ø‡ € ð €GØ€FØ!€JØ!€JØ#€LØ $€MØ€EØ"ÐØ"ÐØ+/€L÷# ƒ r    r•   c                ó$   € V ^8„  d   QhR\         /# rN   r   )r   s   "r   r   r   Ò   s   € ÷ Lñ L¤ñ Lr    c                  ó    € ^ RI Hp  V ! RR4      # )é    ©Úget_hermes_dirzplatforms/whatsapp/sessionzwhatsapp/session)Úhermes_constantsr»   rº   s    r   Ú_whatsapp_session_pathr½   Ò   s   € Ý/ÙÐ6Ð8JÓKÐKr    c                ó^   € V ^8„  d   QhR\         R\        R\        \         \        3,          /# )r   Ú
pairing_idÚrecordr   )r   r•   r   r   )r   s   "r   r   r   Ý   s4   € ÷ cñ c¬Sð cÔ:Tð cÔY]Ô^aÔcfÐ^fÕYgñ cr    c           	      óR   € R V /\          Uu/ uF  q"\        W4      bK  	  upC# u upi )r¿   )Ú_WHATSAPP_PAYLOAD_FIELDSÚgetattr)r¿   rÀ   Úfs   && r   Ú_whatsapp_onboarding_payloadrÅ   Ý   s/   € Ø˜*ÐbÕH`Ó(aÑH`À1¬G°FÓ,>Ò)>ÑH`Ñ(aÐbÐbùÒ(as   Œ$c                óh   € V ^8„  d   QhR\         \        ,          R\        \        \        3,          /# )r   rž   r   )r   r   r   r   )r   s   "r   r   r   á   s/   € ÷ dñ d¼Ä½ð dÔQUÔVYÔ[^ÐV^ÕQ_ñ dr    c                 ó$   € ^ RI Hp V! V RRR7      # )r¹   )Ú_restart_gateway_afterzWhatsApp onboarding)Úwhatr‰   )Úhermes_cli.web_server_gatewayrÈ   )rž   rÈ   s   & r   Ú*_restart_gateway_after_whatsapp_onboardingrË   á   s   € ÝDÙ! 'Ð0EÐMbÔcÐcr    z+https://setup.hermes-agent.nousresearch.comzHermesDashboard/c                   ó8   a € ] tR t^êt o RtRtRtV 3R ltRtV t	R# )Ú_TelegramOnboardingPairingNc                óŒ   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[;R&   S[ R,          ;R&   S[ R,          ;R&   S[ R,          ;R&   # )r   Ú
poll_tokenrœ   r�   NÚ	bot_tokenÚbot_usernameÚowner_user_id)r   rª   )r   r­   s   "€r   r   Ú'_TelegramOnboardingPairing.__annotate__ê   s[   ø‡ ‚ á�Oñ ñ �Oñ ñ Ññ	 ñ
 �T�zÑ ñ ñ ˜•*Ñ#ñ ñ ˜•:Ñ$ò r    rR   )
r¯   r°   r±   r²   rÐ   rÑ   rÒ   r³   r´   rµ   r¶   s   @r   rÍ   rÍ   ê   s   ø‡ € ð
 !€IØ#€LØ $€M÷ ƒ r    rÍ   c                ó$   € V ^8„  d   QhR\         /# rN   ©r   )r   s   "r   r   r   ø   s   € ÷ fñ f¤sñ fr    c                  ór   € \         P                  ! R \        4      P                  4       P	                  R4      # )ÚTELEGRAM_ONBOARDING_URLÚ/)ÚosÚgetenvÚ _TELEGRAM_ONBOARDING_DEFAULT_URLÚstripÚrstriprR   r    r   Ú_telegram_onboarding_base_urlrÞ   ø   s*   € Ü�9Š9Ð.Ô0PÓQ×WÑWÓY×`Ñ`ÐadÓeÐer    c                ó<   € V ^8„  d   QhR\         R\         R\         /# )r   r¤   Úfallbackr   rÕ   )r   s   "r   r   r   ü   s!   € ÷ ñ ¬cð ¼Sð ÄSñ r    c                 ó<   € R RRRRRRRRR	R
R/P                  W4      # )Ú	not_foundz2Telegram pairing was not found. Start a new setup.Úexpiredz*Telegram setup expired. Start a new setup.Úclaimedz6Telegram setup was already claimed. Start a new setup.Úunauthorizedz-Telegram setup service rejected this request.Ú)telegram_manager_bot_token_not_configuredz)Telegram setup service is not configured.Útelegram_token_fetch_failedz/Telegram could not finish bot setup. Try again.rS   )r¤   rà   s   &&r   Ú"_telegram_onboarding_error_messagerè   ü   s<   € àÐIØÐ?ØÐKØÐGØ3Ð5`Ø%Ð'Xð÷ 
�cˆ%Óðr    z9Telegram setup service is unavailable. Try again shortly.z4Telegram setup service returned an invalid response.ÚbodyÚbearer_tokenc                ó´   € V ^8„  d   QhR\         R\         R\        \         \        3,          R,          R\         R,          R\        \         \        3,          /# )r   ÚmethodÚpathré   Nrê   r   )r   r   r   )r   s   "r   r   r     sO   € ÷ $ñ $Üð$Üð$Ü%)¬#¬s¨(¥^°dÕ%:ð$ÜQTÐW[ÕQ[ð$ä	Œ#Œsˆ(…^ñ$r    c                óØ  € ^ RI pRRR\        /p/ pVe
   RVR&   W&R&   V'       d	   RV 2VR&    VP                  VP                  R	4      R
7      ;_uu_ 4       pVP                  ! V \        4        V 23RV/VB pVP                  4        RRR4        XP                  4       p
\%        T
\&        4      '       g   \        R\"        R7      hT
#   + '       g   i     LJ; i  TP                   d´   p	 T	P                  P                  4       p
M  \         d    / p
 Mi ; i\        T
P                  R4      ;'       g    T
P                  R4      ;'       g    R4      p\        TR4      pTR9   d   RpMT	P                  P                  R8X  d   RMRp\        YÜR7      T	hRp	?	i\         d   p	\        R\         R7      T	hRp	?	ii ; i  \         d   p	\        R\"        R7      T	hRp	?	ii ; i)r¹   NÚAcceptzapplication/jsonz
User-AgentzContent-TypeÚjsonzBearer ÚAuthorizationg      $@)ÚtimeoutÚheadersr¤   rŸ   r   z)Telegram setup service returned an error.iš  i”  iö  )Ústatus_codeÚdetail>   rä   rã   )ÚhttpxÚ_TELEGRAM_ONBOARDING_USER_AGENTÚClientÚTimeoutÚrequestrÞ   Úraise_for_statusÚHTTPStatusErrorÚresponserð   r7   r   r*   rè   rô   r   Ú_TELEGRAM_UNAVAILABLEÚ_TELEGRAM_INVALIDÚ
isinstancer   )rì   rí   ré   rê   rö   ró   Úrequest_kwargsÚclientrý   ÚexcÚparsedr¤   rõ   rô   s   &&$$          r   Ú!_telegram_onboarding_request_syncr    sÑ  € ó ØÐ+¨\Ô;ZÐ[€GØ%'€NØÒØ"4ˆ�ÑØ!%�vÑßØ%,¨\¨NÐ#;ˆ�Ñ ðTØ�\‰\ %§-¡-°Ó"5ˆ\×6Ô6¸&Ø—~’~ fÔ1NÓ1PÐ0QÐRVÐQWÐ.XÑ|ÐbiÐ|Ðm{Ñ|ˆHØ×%Ñ%Ô'÷ 7ð$PØ—‘“ˆô �fœd×#Ò#Ü¨Ô4EÔFÐFØ€M÷1 7×6ûð × Ñ ô Mð	Ø—\‘\×&Ñ&Ó(‰FøÜô 	ØŠFð	úä�F—J‘J˜wÓ'×EÐE¨6¯:©:°hÓ+?×EÐEÀ2ÓFˆÜ3°EÐ;fÓgˆØÐ*Ô*Ø‰Kà!$§¡×!9Ñ!9¸SÔ!@™#ÀcˆKÜ¨ÔCÈÐLûÜô TÜ¨Ô4IÔJÐPSÐSûðTûô
 ô PÜ¨Ô4EÔFÈCÐOûðPúsŠ   ¯)C  Á3CÂC  ÂG ÃC	ÃC  ÃC  Ã GÃ2DÄFÄDÄFÄDÄFÄ=FÅA	FÆGÆ,GÆ-F?Æ?GÇG)ÇG$Ç$G)c                óZ  € V ^8„  d   Qh/ ^ \         9   d,   \        \        \        \        \        3,          3,          ;R&   ^\         9   d   \        \        R3,          ;R&   ^\         9   d   \        \        \
        3,          ;R&   ^\         9   d   \        \        \        3,          ;R&   # )r   rˆ   .r,   Ú_whatsapp_onboarding_sessionsÚ_telegram_onboarding_pairings)Ú__conditional_annotations__r   r   r   r   r•   rÍ   )r   s   "r   r   r      s”   € ÷ ñ ÷0ò ”Tœ#œt¤C¬ H�~Ð-Õ.ñ ñ1÷pò ””s˜C�x•ñ ñq÷\ JÒ Iœt¤CÔ)CÐ$CÕDÑ Iñ]÷f JÒ Iœt¤CÔ)CÐ$CÕDÑ Iògr    )ÚAPI_SERVER_ENABLEDÚAPI_SERVER_KEYÚAPI_SERVER_PORTÚAPI_SERVER_HOSTÚAPI_SERVER_MODEL_NAMErR   )ÚWEBHOOK_ENABLEDÚWEBHOOK_PORTÚWEBHOOK_SECRET)ÚtelegramÚdiscordÚslackÚ
mattermostÚmatrixÚwhatsappÚsignalÚbluebubblesÚemailÚsmsÚdingtalkÚfeishuÚgoogle_chatÚwecomÚwecom_callbackÚweixinÚqqbotÚyuanbaor   r   >   ÚGATEWAY_PROXY_KEYÚGATEWAY_PROXY_URLÚGATEWAY_ALLOW_ALL_USERSrg   )	rŸ   r    rœ   r™   rš   r¡   r¢   r£   r¤   )8r	  Ú__doc__ÚloggingrÙ   r¨   r«   Údataclassesr   Úfastapir   Úpathlibr   Útypingr   r   Úhermes_cli.configr   r	   Úhermes_cli.setup_hidden_envr
   rn   Úhermes_cli.version_infor   Ú	getLoggerr8   rˆ   r,   rL   rY   rO   rm   ra   rr   r{   rƒ   rA   r“   r•   r  r½   rÂ   rÅ   rË   rÛ   Úbase_versionr÷   rÍ   r  ÚRLockÚ_telegram_onboarding_lockrÞ   rè   rþ   rÿ   r  r   )r	  s   @r   Ú<module>r4     sò  øðöó Û 	Û Û Ý !Ý !Ý ß  ß LÝ SÝ 4ð ×ÒÐ0Ó1€ð Ø�ØÐbØÐVØð 
ð 	˜ð	ð Ø�
ØÐWØÐ_ØÐIÈ>Ð[]ð	ð ØÐ)ØÐeØÐeØ˜ð	ð ØÐ&ØÐUØ�B˜¨ðð/2Ð ó ð@$€ó õ$õNñ &ò 'Ió JÐ õ.õCõ	õ÷õ&Að ÷0ð 0ó ð0ð& HJÐ Ó IõLð
Ð õc÷dð
 $QÐ  Ø$4Ñ5EÓ5G×5TÑ5TÐ4UÐ"VÐ ð ÷%ð %ó ð%ð HJÐ Ó IØ%ŸOšOÓ-Ð õfõð TÐ ØJÐ ð$Ø=Að$Ø^b÷$ñ $r    