+
    „WÝj(g  ã                   ó<  a € Ra tc0 t R t^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
 ^ RIHtHtHtHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHtHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$ ^ RI%H&t&H't' ^ R	I(H)t)H*t* ^ R
I+H,t,H-t-H.t.H/t/ ]P`                  ! R4      t1]! 4       t2]! RR4      t3]! RR4      t4]! RR4      t5]! RR4      t6]! RR4      t7]! RR4      t8]9! 4       t:] ^ k ]Pv                  ! R4      t<R R lt=]P|                  RR/R R ll4       t?R R lt@R R ltAR R  ltBR! R" ltCR# R$ ltDR% R& ltER' R( ltFR) R* ltGR+ R, ltHR- R. ltIR/ R0 ltJR1 R2 ltKR3 R4 ltLR5 R6 ltMR7 R8 ltNR9 R: ltOR; R< ltPRbR= R> lltQR?R@RARRBR/RC RD lltRRE RF ltSRG RH ltTRI RJ ltURK RL ltVRM RN ltWRO RP ltXRQ RR ltYRS RT ltZRU RV lt[RW RX lt\]2P»                  RY4      RcRZ R[ ll4       t^]2P¿                  R\4      RdR] R^ ll4       t`]2PÃ                  RY4      RcR_ R` ll4       tbR# )ezíMemory-provider setup dashboard routes (schema, existing values, external dependency install).

Extracted from ``hermes_cli.web_server``; helpers/state that tests monkeypatch on
``web_server`` stay there and are late-bound (cycle-safe).
N)ÚPath)ÚAnyÚDictÚListÚOptional)Ú	APIRouterÚHTTPException)Úlate)Ú_invalidate_plugins_hub_cache)Ú_coerce_boolÚ_field_defaultÚ_field_is_setÚ_field_valueÚ_field_visibleÚ_load_memory_providerÚ_memory_provider_manifestÚ_memory_provider_setup_infoÚ_memory_provider_setup_manifestÚ!_normalize_memory_provider_schemaÚ%_read_memory_provider_existing_valuesÚ_require_memory_provider_readyÚ_run_setup_command)ÚMemoryProviderConfigUpdateÚMemoryProviderSetupRequest)Ú_CONFIG_MUTATION_LOCKÚscoped_to_thread)ÚSTORAGE_HONCHO_HOST_BLOCKÚProviderConfigSchemaÚProviderFieldÚget_provider_config_schemazhermes_cli.web_serverÚ"_discover_memory_provider_statuseszhermes_cli.web_server_memoryÚget_hermes_homezhermes_cli.configÚload_configÚsave_configÚsave_env_valueÚload_envz ^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$c                ó0   € V ^8„  d   QhR\         R\        /# ©é   ÚnameÚreturn)Ústrr   )Úformats   "Ú[C:\Users\johnn\AppData\Local\hermes\hermes-agent\hermes_cli\web_routers\memory_providers.pyÚ__annotate__r.   .   s   € ÷ Uñ UœCð U¤Mñ Uó    c                 ó"   € \        R RV  2R7      # )i”  zUnknown memory provider: ©Ústatus_codeÚdetail)r   ©r)   s   &r-   Ú_unknown_providerr5   .   s   € Ü SÐ3LÈTÈFÐ1SÔTÐTr/   Úpassthrough_httpTc                ó<   € V ^8„  d   QhR\         R\         R\        /# )r(   Úlog_msgr)   r6   )r+   Úbool)r,   s   "r-   r.   r.   3   s&   € ÷ Mñ M¤3ð M¬cð MÌñ Mr/   c             #  ó.  "  €  Rx € R#   \          d-    T'       d   h \        P                  Y4       \        RRR7      h\         d   p\        R\	        T4      R7      ThRp?i\
         d$    \        P                  Y4       \        RRR7      hi ; i5i)zŽ``ValueError`` -> 400 with its text; any other error -> logged 500 (an
``HTTPException`` passes through unless ``passthrough_http`` is False).Niô  zInternal server errorr1   i�  )r   Ú_logÚ	exceptionÚ
ValueErrorr+   Ú	Exception)r8   r)   r6   Úexcs   &&$ r-   Ú_value_errors_as_httpr@   2   s~   é € ðMÝøÜô MßØÜ�‰�wÔ%Ü¨Ð4KÔLÐLÜô GÜ¨´C¸³HÔ=À3ÐFûÜô MÜ�‰�wÔ%Ü¨Ð4KÔLÐLðMüs6   ‚B„
 ˆBŠB�+BÁ	BÁ
A!Á!BÁ.$BÂBc                ó<   € V ^8„  d   QhR\         R\        R\        /# ©r(   ÚfieldÚrawr*   )r   r+   r   )r,   s   "r-   r.   r.   F   s!   € ÷  ñ  œ}ð  ´3ð  ¼3ñ  r/   c                ó  € T;'       g    RP                  4       pV P                  pVR8X  dF   T;'       g    V P                  pW P                  4       9  d   \	        RV P
                   R24      hV# VR8X  d   ^ RIHp V! V4      # V'       g   \        # VR8X  d0    \        V4      pTP                  4       '       d   \        T4      # T# VR
8X  dO    \        P                  ! V4      p\        T\         \"        34      '       d   T# \	        RT P
                   R24      hV#   \         d    p\	        RT P
                   R24      ThR	p?ii ; i  \        \        3 d    p\	        RT P
                   R24      ThR	p?ii ; i)zâCoerce a submitted non-secret string to its native JSON type.

A bool is stored as JSON ``false`` rather than ``"false"`` (truthy). Blank
number/json/text clears the key (``_UNSET``); raises ``ValueError`` on malformed input.
Ú ÚselectúInvalid value for 'Ú'r9   ©Úis_truthy_valueÚnumberzInvalid number for 'NÚjsonzInvalid JSON for 'z ' must be a JSON object or array)ÚstripÚkindÚdefaultÚallowed_valuesr=   ÚkeyÚutilsrK   Ú_UNSETÚfloatÚ
is_integerÚintrM   ÚloadsÚ	TypeErrorÚ
isinstanceÚdictÚlist)rC   rD   ÚvaluerO   rK   rL   r?   Úparseds   &&      r-   Ú_coerce_field_valuer_   F   sm  € ð �YˆY�B×ÑÓ€EØ�:‰:€DØˆxÔØ×&Ð&˜Ÿ™ˆØ×,Ñ,Ó.Ô.ÜÐ2°5·9±9°+¸QÐ?Ó@Ð@ØˆØˆv„~Ý)Ù˜uÓ%Ð%ßÜˆØˆxÔð	KÜ˜5“\ˆFð %×/Ñ/×1Ò1Œs�6‹{Ð=°vÐ=Øˆv„~ð	IÜ—Z’Z Ó&ˆFô �fœt¤T˜l×+Ò+ØˆMÜ˜1˜UŸY™Y˜KÐ'GÐHÓIÐIØ€Løô ô 	KÜÐ3°E·I±I°;¸aÐ@ÓAÀsÐJûð	Kûô œIÐ&ô 	IÜÐ1°%·)±)°¸AÐ>Ó?ÀSÐHûð	Iús0   ÂD# ÃE Ä#EÄ.EÅEÅF Å!E;Å;F c                ó^   € V ^8„  d   QhR\         R\        R\        \        \        3,          /# )r(   ÚpathÚwhatr*   )r   r+   r[   r   )r,   s   "r-   r.   r.   i   s)   € ÷ 	2ñ 	2œ$ð 	2¤cð 	2¬d´3¼°8­nñ 	2r/   c                ó
  € V P                  4       '       g   / #  \        P                  ! V P                  RR7      4      p\        T\        4      '       d   T# / #   \         d    \
        P                  RYRR7       / u # i ; i)zHRead a JSON object from ``path``; missing/unreadable/non-dict -> ``{}``.z	utf-8-sig)ÚencodingzFailed to read %s from %sT)Úexc_info)	ÚexistsrM   rX   Ú	read_textr>   r;   ÚwarningrZ   r[   )ra   rb   Údatas   && r-   Ú_read_json_dictrj   i   sr   € à�;‰;�=Š=Øˆ	ðÜ�zŠz˜$Ÿ.™.°+˜.Ó>Ó?ˆô ˜d¤D×)Ò)ˆ4Ð1¨rÐ1øô ô Ü�‰Ð0°$ÀtˆÔLØŠ	ðús   š&A Á%BÂBc                ó0   € V ^8„  d   QhR\         R\        /# ©r(   Úproviderr*   )r   r   )r,   s   "r-   r.   r.   u   s   € ÷ =ñ =Ô2ð =´tñ =r/   c                 óF   € \        4       V P                  ,          R ,          # )zconfig.json)r!   r)   ©rm   s   &r-   Ú_flat_json_pathrp   u   s   € ÜÓ˜xŸ}™}Õ,¨}Õ<Ð<r/   c                óR   € V ^8„  d   QhR\         R\        \        \        3,          /# rl   ©r   r[   r+   r   )r,   s   "r-   r.   r.   y   s'   € ÷ Pñ PÔ2ð P´t¼CÄ¸Hµ~ñ Pr/   c                 ó,   € \        \        V 4      R 4      # )zmemory provider config)rj   rp   ro   s   &r-   Ú_read_flat_jsonrt   y   s   € Üœ?¨8Ó4Ð6NÓOÐOr/   c                ó$   € V ^8„  d   QhR\         /# )r(   r)   ©r+   )r,   s   "r-   r.   r.   }   s   € ÷ Vñ VœCñ Vr/   c                óf   € ^ RI Hp V! V R4      pVP                  VP                  VP                  3# )z‹Host-block resolvers of provider *name*'s own ``client`` module, wherever the provider is
installed (bundled or ``$HERMES_HOME/plugins/``).©Úimport_provider_moduleÚclient)Úplugins.memoryry   Úresolve_active_hostÚresolve_config_pathÚ_host_block)r)   ry   rz   s   &  r-   Ú_honcho_resolversr   }   s2   € õ 6á# D¨(Ó3€FØ×%Ñ% v×'AÑ'AÀ6×CUÑCUÐUÐUr/   c                ó^   € V ^8„  d   QhR\         R\        \        \        3,          R\        /# )r(   rm   Úvaluesr*   )r   r[   r+   r\   )r,   s   "r-   r.   r.   †   s+   € ÷ ñ Ô&:ð ÄDÌÌcÈÅNð ÔW[ñ r/   c                óF  € . pV P                    FŽ  pVP                  '       d4   VP                  VP                  4      ;'       g    RP	                  4       MRpV'       g   KT  VP
                  '       d   \        VP
                  V4       VP                  W434       K�  	  V# )z¥Persist each non-blank secret submission to the env store (when the field has an
``env_key``); return the ``(field, submitted)`` pairs for backend-specific handling.rF   )ÚfieldsÚ	is_secretÚgetrR   rN   Úenv_keyr$   Úappend)rm   r�   ÚsavedrC   Ú	submitteds   &&   r-   Ú_save_submitted_secretsrŠ   †   sx   € ð €EØ—”ˆØ=B¿_¿_¸_�V—Z‘Z §	¡	Ó*×0Ð0¨b×7Ñ7Ô9ÐRTˆ	ßÙØ�=�=ˆ=Ü˜5Ÿ=™=¨)Ô4Ø�‰�eÐ'Ö(ñ !ð €Lr/   c                óV   € V ^8„  d   QhR\         R\        \        \        3,          RR/# ©r(   rm   r�   r*   N©r   r[   r+   )r,   s   "r-   r.   r.   ”   s+   € ÷ (ñ (Ô"6ð (ÄÄSÌ#ÀXÅð (Ð_cñ (r/   c                óV  € V P                    F˜  pVP                  '       g   VP                  V9  d   K(  V! V4      p\        W1VP                  ,          4      pV\        J d5   VP                  .VP
                  O F  pVP                  VR4       K  	  KŠ  WTVP                  &   Kš  	  R# )a  Apply submitted non-secret fields to their backend dict, in place.

Only keys present in ``values`` are touched, so a partial save never
clobbers fields owned by another surface. ``_UNSET`` clears the key (and
its aliases) so it falls back to the host/default mapping.
N)rƒ   r„   rR   r_   rT   ÚaliasesÚpop)rm   r�   Ú
target_forrC   ÚtargetÚcoercedrR   s   &&&    r-   Ú_apply_field_valuesr”   ”   s„   € ð —”ˆØ�?�?ˆ?˜eŸi™i¨vÔ5ÙÙ˜EÓ"ˆÜ% e°E·I±IÕ->Ó?ˆØ”fÓØŸ	™	Ð2 E§M¡MÓ2�Ø—
‘
˜3 Ö%ó 3ð !(�5—9‘9Óó !r/   c                óV   € V ^8„  d   QhR\         R\        \        \        3,          RR/# )r(   ra   ri   r*   N)r   r[   r+   r   )r,   s   "r-   r.   r.   §   s)   € ÷ .ñ .œ4ð .¤t¬C´¨H¥~ð .¸$ñ .r/   c                 óV   € ^ RI Hp ^ RIHp V! V P                  4       V! WRR7       R# )é    )Úatomic_json_write)Úmkdir_under_hermes_homei€  )ÚmodeN)rS   r˜   Úhermes_constantsr™   Úparent)ra   ri   r˜   r™   s   &&  r-   Ú_write_json_0600r�   §   s   € Ý'Ý8Ù˜DŸK™KÔ(Ù�d u×-r/   c                óV   € V ^8„  d   QhR\         R\        \        \        3,          RR/# rŒ   r�   )r,   s   "r-   r.   r.   ®   s+   € ÷ :ñ :Ô#7ð :ÄÄcÌ3ÀhÅð :ÐTXñ :r/   c                 ó~   a€ \        V 4      o\        W4       \        WV3R  l4       \        \	        V 4      S4       R# )c                 ó   <€ S# ©N© )rC   Úexistings   &€r-   Ú<lambda>Ú&_write_provider_flat.<locals>.<lambda>±   s   ø€ ¹r/   N)rt   rŠ   r”   r�   rp   )rm   r�   r£   s   &&@r-   Ú_write_provider_flatr¦   ®   s/   ø€ Ü˜xÓ(€HÜ˜HÔ-Ü˜Ô*@ÔAÜ”_ XÓ.°Ö9r/   c                óV   € V ^8„  d   QhR\         R\        \        \        3,          RR/# rŒ   r�   )r,   s   "r-   r.   r.   µ   s+   € ÷ $ñ $Ô%9ð $Ä4ÌÌSÈÅ>ð $ÐVZñ $r/   c           
     ó’  aaa€ ^ RI Hp V! V P                  R4      p\        V P                  4      w  rEpV! 4       pV! 4       pVP                  ;_uu_ 4        VP                  V4      ;_uu_ 4        VP                  V4      oSP                  R4      p	\        V	\        4      '       d   T	M/ ;SR&   p	V! SV4      oS'       d%   \        V3R lV	P                  4        4       V4      MTp
V	P                  V
S4      o\        W4       Fh  w  r¼SP                  VP                  4      p\        V\        4      '       d$   VP!                  VP"                  4      '       d   KY  VSVP                  &   Kj  	  \%        WVV3R l4       \'        VS4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)u¨   Persist submitted fields to Honcho's real config for the active host (partial
saves touch only submitted keys; blank text clears a key â€” see ``_apply_field_values``).rx   ÚoauthÚhostsc              3   ó<   <"  € T F  w  rVSJ g   K  Vx € K  	  R # 5ir¡   r¢   )Ú.0ÚkÚvr£   s   &  €r-   Ú	<genexpr>Ú)_write_provider_honcho.<locals>.<genexpr>È   s   øé € ÐF¡}™t˜q¸¸X¸Ÿš£}ùs   ƒ
’
c                 ó.   <€ V P                   R 8X  d   S# S# ©Úhost©Úscope)rC   ÚcfgÚ
host_blocks   &€€r-   r¤   Ú(_write_provider_honcho.<locals>.<lambda>Ñ   s   ø€ È%Ï+É+ÐY_ÔJ_¸JÐ<hÐehÐ<hr/   N)r{   ry   r)   r   Ú_refresh_lockÚ_config_refresh_lockÚ_read_config_strictr…   rZ   r[   ÚnextÚitemsÚ
setdefaultrŠ   rR   r+   Ú
startswithÚACCESS_TOKEN_PREFIXr”   r�   )rm   r�   ry   r©   r|   r}   Úhost_block_ofr³   ra   rª   Úhost_keyrC   r‰   Ústoredr¶   r£   r·   s   &&            @@@r-   Ú_write_provider_honchorÄ   µ   s[  ú€ õ 6á" 8§=¡=°'Ó:€EÜ>OÐPX×P]ÑP]Ó>^Ñ;Ð¨mÙÓ €DáÓ €Dð 
×	×	Ó	˜e×8Ñ8¸×>Õ>à×'Ñ'¨Ó-ˆØ—‘˜Ó ˆÜ(2°5¼$×(?Ò(?™uÀRÐGˆˆG‰�uá   dÓ+ˆßQY”4ÔF u§{¡{¤}ÓFÈÔMÐ_cˆØ×%Ñ% h°Ó9ˆ
ä 7¸Ö IÑˆEà—^‘^ E§I¡IÓ.ˆFÜ˜v¤s×+Ò+°×0AÑ0AÀ%×B[ÑB[×0\Ô0\Ø(1�
˜5Ÿ9™9Ó%ñ	 !Jô 	˜HÕ.hÔiÜ˜˜sÔ#÷# ?×	Ñ	×>×>ú×	×	Ð	ús2   ÁF5Á1AF"	ÃBF"	Å 0F"	ÆF5Æ"F2Æ-F5Æ5G	c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r(   rC   r]   r*   )r   r   r+   )r,   s   "r-   r.   r.   Õ   s!   € ÷ 
ñ 
¤-ð 
¼ð 
Äñ 
r/   c                ó  € Vf   V P                   # V P                  R8X  d   ^ RIHp V! V4      '       d   R# R# V P                  R8X  d3   \	        V\
        \        34      '       d   \        P                  ! V4      # \        V4      # )z¡Render a stored native value as the string the generic UI edits (``None`` = key
absent -> declared default; bools -> "true"/"false"; JSON containers re-encoded).r9   rJ   ÚtrueÚfalserM   )
rP   rO   rS   rK   rZ   r[   r\   rM   Údumpsr+   )rC   r]   rK   s   && r-   Ú_serialize_field_valuerÊ   Õ   sl   € ð ‚}Ø�}‰}ÐØ‡z�z�VÔÝ)Ù(¨×/Ò/ˆvÐ<°WÐ<Ø‡z�z�VÔ¤
¨5´4¼°,× ?Ò ?Ü�zŠz˜%Ó Ð Üˆu‹:Ðr/   c                ój   € V ^8„  d   QhR\         R\        R\        \        \        3,          R\        /# ©r(   rC   ÚsourcesÚenvr*   )r   Útupler[   r+   r   )r,   s   "r-   r.   r.   â   s0   € ÷ ñ ”}ð ¬uð ¼4ÄÄSÀ½>ð Ìcñ r/   c                óü   € V FA  pV P                   .V P                  O F!  pWC9   g   K  W4,          f   K  W4,          u u # 	  KC  	  V P                   F$  pVP                  V4      '       g   K  W%,          u # 	  R# )zËStored native value from the first source holding it, else ``None``.

Presence (``key in source``) decides, not truthiness, so a stored ``False``
or ``0`` survives instead of being mistaken for "unset".
N)rR   r�   Úenv_fallbacksr…   )rC   rÍ   rÎ   ÚsourceÚ
source_keyr†   s   &&&   r-   Ú_read_fieldrÔ   â   sm   € ó ˆØ Ÿ9™9Ð5 u§}¡}Ó5ˆJØÖ#¨Õ(:Ô(FØÕ)Ô)ó 6ñ ð ×&Ô&ˆØ�7‰7�7×ÔØ•<Òñ 'ñ r/   c                ój   € V ^8„  d   QhR\         R\        R\        \        \        3,          R\        /# rÌ   )r   rÏ   r[   r+   r9   )r,   s   "r-   r.   r.   ò   s8   € ÷ Yñ Y¤-ð Y¼%ð YÄdÌ3ÔPSÈ8Ånð YÔY]ñ Yr/   c                 óZ  a a€ \         ;QJ d6    V3R  lS P                  .S P                  O 4       F  '       g   K   RM+	  RM'! V3R  lS P                  .S P                  O 4       4      '       d   R# \         ;QJ d    V 3R lV 4       F  '       g   K   R# 	  R# ! V 3R lV 4       4      # )c              3   óX   <"  € T F  q;'       d    SP                  V4      x € K!  	  R # 5ir¡   )r…   )r¬   r†   rÎ   s   & €r-   r¯   Ú)_declared_field_is_set.<locals>.<genexpr>ó   s%   øé € Ð
]Ñ7\¨G×'Ð'�s—w‘w˜wÓ'Ô'Ó7\ùs   ƒ*�*TFc              3   ó„   <"  € T F5  pSP                   .SP                  O F  q!P                  V4      x € K  	  K7  	  R # 5ir¡   )rR   r�   r…   )r¬   rÒ   r­   rC   s   &  €r-   r¯   rØ   õ   s2   øé € ÐX©7 ¸U¿Y¹YÐ<WÈÏÉÓ<W°q�z‰z˜!�}ˆ}Ñ<W‰}«7ùs   ƒ=A )Úanyr†   rÑ   )rC   rÍ   rÎ   s   f&fr-   Ú_declared_field_is_setrÛ   ò   st   ù€ ß
ƒsÔ
]¸¿¹Ð7\È×H[ÑH[Ñ7\Ó
]‡s‡s‚sÔ
]¸¿¹Ð7\È×H[ÑH[Ñ7\Ó
]×]Ò]Ùß‹3ÔX©7ÓX�3Œ3ÐXŠ3ÐXˆ3ÔX©7ÓXÓXÐXr/   c                óR   € V ^8„  d   QhR\         R\        \        \        3,          /# rl   rr   )r,   s   "r-   r.   r.   ø   s'   € ÷ &mñ &mÔ)=ð &mÄ$ÄsÌCÀxÅ.ñ &mr/   c           
      ó"  aaa€ \        4       pV P                  \        8H  pV'       dE   \        V P                  4      w  r4pV! 4       p\        V! 4       R 4      oV! SV4      oR VV3R llpMR\        V 4      upoR V3R llp. pV P                   EFH  p	R U
u/ uF  qª\        Wš4      bK  	  pp
V	P                   Uu. uF)  pR	VP                  RVP                  RVP                  /NK+  	  upVR
&   V! V	4      pV	P                  '       d(   RVR	&   \        W�V4      VR&   VP                  V4       K¢  \!        W�V4      pV'       d(   V	P"                  '       g   V	P$                  R9   d   WkR&   \'        Wž4      pV	P(                  R8X  d!   WùP+                  4       9  d   V	P,                  pWûR	&   V'       d   VRJM
\/        V4      VR&   VP                  V4       EKK  	  RV P                  RV P                  RV P0                  RV/# u up
i u upi )zHoncho configc                ó0   € V ^8„  d   QhR\         R\        /# ©r(   rC   r*   ©r   rÏ   )r,   s   "r-   r.   Ú0_declared_provider_payload.<locals>.__annotate__  s   € ÷ 	Jñ 	Jœ}ð 	J´ñ 	Jr/   c                 ó4   <€ V P                   R 8X  d   SS3# S3# r²   r´   )rC   r·   rD   s   &€€r-   Úsources_forÚ/_declared_provider_payload.<locals>.sources_for  s    ø€ Ø(-¯©°vÔ(=�J Ð$ÐIÀCÀ6ÐIr/   rF   c                ó0   € V ^8„  d   QhR\         R\        /# rß   rà   )r,   s   "r-   r.   rá     s   € ÷ 	ñ 	œ}ð 	´ñ 	r/   c                 ó
   <€ S3# r¡   r¢   )rC   ri   s   &€r-   rã   rä     s
   ø€ Ø�7ˆNr/   ÚlabelÚdescriptionÚplaceholderr]   ÚoptionsÚis_setrG   Nr)   Údocs_urlrƒ   )rR   rç   rO   rè   Úinforé   ÚinlineÚgroup>   ÚaiPeerÚ	workspace)r%   Ústorager   r   r)   rj   rt   rƒ   Úgetattrrê   r]   rç   rè   r„   rÛ   r‡   rÔ   ré   rR   rÊ   rO   rQ   rP   r9   rì   )rm   rÎ   Ú	is_honchor|   r}   rÁ   r³   rã   rƒ   rC   r­   ÚentryÚorÍ   Únativer]   ri   r·   rD   s   &               @@@r-   Ú_declared_provider_payloadrø   ø   sò  ú€ Ü
‹*€CØ× Ñ Ô$=Ñ=€IßÜBSÐT\×TaÑTaÓBbÑ?Ð°-Ù"Ó$ˆÜÑ1Ó3°_ÓEˆÙ" 3¨Ó-ˆ
÷	Jò 	Jð œ¨Ó2ˆ
ˆˆd÷	ð 	ð $&€FØ—•ˆñ 0Aó  Bñ  0A¨!”G˜EÓ%Ò%ñ  0Aˆð  BØhm×huÒhuÓvÑhuÐcd˜W a§g¡g¨w¸¿¹ÀÐPQ×P]ÑP]Ó^ÑhuÑvˆˆiÑÙ˜eÓ$ˆØ�?�?ˆ?ØˆE�'‰NÜ4°UÀSÓIˆE�(‰OØ�M‰M˜%Ô ÙÜ˜U¨SÓ1ˆß˜U×.×.Ð.°5·9±9Ð@WÔ3Wà#'�-Ñ Ü& uÓ5ˆØ�:‰:˜Ô! e×3GÑ3GÓ3IÔ&IØ—M‘MˆEØˆg‰ç09˜&¨Ñ,¼tÀE»{ˆˆh‰Ø�‰�e×ñ' !ð( �H—M‘M 7¨H¯N©N¸JÈ×HYÑHYÐ[cÐekÐlÐlùò' BùÚvs   ÂHÂ>/Hc                ó0   € V ^8„  d   QhR\         R\        /# )r(   r]   r*   )r   r+   )r,   s   "r-   r.   r.   !  s   € ÷ ñ ¤ð ¬ñ r/   c                óÌ   € V f   R# \        V \        4      '       d   V '       d   R# R# \        V \        \        34      '       d   \        P
                  ! V 4      # \        V 4      # )zGThe declared-schema path edits strings; the dashboard may send natives.rF   rÇ   rÈ   )rZ   r9   r[   r\   rM   rÉ   r+   )r]   s   &r-   Ú_stringify_submittedrû   !  sN   € à‚}ÙÜ�%œ×ÒßˆvÐ+ GÐ+Ü�%œ$¤˜×&Ò&Ü�zŠz˜%Ó Ð Üˆu‹:Ðr/   c                ót   € V ^8„  d   QhR\         \        \        3,          R\         \        \        3,          /# )r(   Úconfigr*   ©r[   r+   r   )r,   s   "r-   r.   r.   ,  s*   € ÷ ñ œD¤¤c �Nð ¬t´C¼°H­~ñ r/   c                ó`   € V P                  R4      p\        V\        4      '       g   / ;qR&   V# )zKReturn ``config["memory"]`` as a dict, creating/replacing a non-dict value.Úmemory)r…   rZ   r[   )rý   Úmemory_configs   & r-   Ú_memory_sectionr  ,  s0   € à—J‘J˜xÓ(€MÜ�m¤T×*Ò*Ø+-Ð-ˆ˜xÑ(ØÐr/   c                óV   € V ^8„  d   QhR\         R\        \        \        3,          RR/# rŒ   r�   )r,   s   "r-   r.   r.   4  s.   € ÷  ñ  Ô-Að  Ì4ÔPSÔUXÐPXÍ>ð  Ð^bñ  r/   c                 óL  € V P                   \        8X  d   \        M\        pV! W4       \        ;_uu_ 4        \        4       p\        V4      pVP                  R 4      V P                  8w  d   V P                  VR &   \        V4       RRR4       R#   + '       g   i     R# ; i)rm   N)
rò   r   rÄ   r¦   r   r"   r  r…   r)   r#   )rm   r�   Úwriterrý   r  s   &&   r-   Ú_update_memory_provider_configr  4  st   € Ø'/×'7Ñ'7Ô;TÔ'TÕ#ÔZn€FÙ
ˆ8Ôß	Ö	Ü“ˆÜ'¨Ó/ˆØ×Ñ˜ZÓ(¨H¯M©MÔ9Ø(0¯©ˆM˜*Ñ%Ü˜Ô÷ 
×	×	Ò	ús   ¸ABÂB#	c                óR   € V ^8„  d   QhR\         \        ,          R\        R\        /# )r(   r]   Úlimitr*   )r   r+   rW   )r,   s   "r-   r.   r.   A  s*   € ÷ Pñ Pœh¤s�mð P´Cð PÄ3ñ Pr/   c                 ó`   € \        T ;'       g    R 4      p\        V4      V8:  d   V# VRV  R2# )rF   Nz
... truncated ...)r+   Úlen)r]   r  Útexts   && r-   Ú_trim_setup_outputr  A  s6   € Üˆu�{ˆ{˜Ó€DÜ�t“9 Ô%ˆ4ÐO¨d°6°E¨l¨^Ð;NÐ+OÐOr/   ÚcommandrF   Ú	completedÚerrorc                óÎ   € V ^8„  d   QhR\         R\         R\         R\         R\        \        P                  ,          R\        \         ,          R\        \         \
        3,          /# )r(   rO   r)   Ústatusr  r  r  r*   )r+   r   Ú
subprocessÚCompletedProcessr[   r   )r,   s   "r-   r.   r.   F  s]   € ÷ 	ñ 	Üð	Üð	Ü%(ð	Ü36ð	äœ
×3Ñ3Õ4ð	äDLÌSÅMð	ô 
Œ#Œsˆ(…^ñ	r/   c                 óÄ   € R T RTRTRTRVf   RMVP                   RVf   RM\        VP                  4      R\        T;'       g    Vf   R4      /# VP                  4      /# )	rO   r)   r  r  Ú
returncodeNÚstdoutrF   Ústderr)r  r  r  r  )rO   r)   r  r  r  r  s   $$$$$$r-   Ú_command_resultr  F  s{   € ð
 	��f˜d H¨f°iÀØ˜iÒ/‘d°Y×5IÑ5IØ˜	Ò)‘"Ô/AÀ)×BRÑBRÓ/SØÔ$ U×%]Ð%]°YÒ5F¨rÓ^ð	ð ð MV×L\ÑL\Ó^ð	ð r/   c                óh   € V ^8„  d   QhR\         R\        \        \         \        3,          ,          /# r'   )r+   r\   r[   r   )r,   s   "r-   r.   r.   R  s+   € ÷ fñ f´sð f¼tÄDÌÌcÈÅNÕ?Sñ fr/   c           
      ó¾   € ^ RI Hp Rp V! V 4      w  r4T'       d   \        RYTR7      .# . #   \         d%   p\        RT RT\	        T4      R7      .u Rp?# Rp?ii ; i)r—   )Ú$prepare_memory_provider_dependencieszhermes pm installÚpipÚfailed©rO   r)   r  r  r  N)rO   r)   r  r  )Úhermes_cli.memory_setupr  r>   r  r+   )r)   r  r  Ú	_manifestr  r?   s   &     r-   Ú,_install_memory_provider_python_dependenciesr!  R  sm   € ÝLà!€GðjÙ@ÀÓFÑˆ	÷ X^ŒO ¨TÈ'ÔRÐSÐeÐceÐeøô ô jÜ U°¸hÐPWÔ_bÐcfÓ_gÔhÐiÕiûðjús   Š
- ­A¸AÁAÁAc                ój   € V ^8„  d   QhR\         R\        R\        R\        R\        \        ,          /# )r(   ÚresultsrO   r)   r  r*   )r\   r+   r   rW   )r,   s   "r-   r.   r.   ]  s6   € ÷  ñ  œTð  ¬ð  ´Cð  Ä#ð  Ô_gÔhkÕ_lñ  r/   c                ó~  €  \        VP                  R4      '       d   TM\        P                  ! V4      3RV/VB pT P                  \        YT! TP                  ^ 8H  4      Y6R7      4       TP                  #   \         d9   pT P                  \        YT! R4      T\        T4      R7      4        Rp?R# Rp?ii ; i)zPRun a setup command, append its result row; returncode or None on spawn failure.ÚshellÚdisplayNr  )rO   r)   r  r  r  )	r   r…   ÚshlexÚsplitr>   r‡   r  r+   r  )r#  rO   r)   r  Ú	status_ofÚkwargsr  r?   s   &&&&&,  r-   Ú_run_setup_stepr+  ]  sª   € ðÜ&°&·*±*¸W×2EÒ2E¡wÌ5Ï;Ê;ÐW^ÓK_Ñ{ÐipÐ{ÐtzÑ{ˆ	ð ‡N�N”?¨Á	È)×J^ÑJ^ÐbcÑJcÓ@dÐnuô  Lô  MØ×ÑÐøô	 ô Ø�‰”¨DÁIÈdÃOÐ]dÔloÐpsÓltÔuÔvÝûðús   ‚;A9 Á9B<Â-B7Â7B<c                ó    € V ^8„  d   QhR\         \        \        \        3,          ,          R\         \        \        \        3,          ,          /# )r(   Údependenciesr*   )r\   r[   r+   r   )r,   s   "r-   r.   r.   h  s;   € ÷ ñ ÄÄdÌ3ÔPSÈ8ÅnÕAUð ÔZ^Ô_cÔdgÔilÐdlÕ_mÕZnñ r/   c                 óˆ  a€ . pV  F¸  pVP                  R 4      ;'       g    RpVP                  R4      ;'       g    RpVP                  R4      ;'       g    RoV'       d   \        VRW4V3R l^R7      ^ 8X  d   Kw  S'       g   K�  \        VRVSR	 R
RR7      pV'       g   Kž  V^ 8X  g   K§  \        VRW4R ^R7       Kº  	  V# )r)   Ú
dependencyÚcheckrF   ÚinstallÚexternal_checkc                 ó0   <€ V '       d   R # S'       d   R# R# )Úalready_installedÚmissingr  r¢   )ÚokÚinstall_cmds   &€r-   r¤   Ú@_install_memory_provider_external_dependencies.<locals>.<lambda>r  s   ø€ ¯bÐ*Ð^ÇK°yÐ^ÐU]Ð^r/   )ÚtimeoutÚexternal_installc                 ó   € V '       d   R # R# )Ú	installedr  r¢   ©r6  s   &r-   r¤   r8  x  s   € ×VXÀ{ÐGfÐ^fÐGfr/   Ti,  )r%  r9  c                 ó   € V '       d   R # R# )Úverifiedr  r¢   r=  s   &r-   r¤   r8  |  s   € ×acÐS]ÐSqÐiqÐSqr/   )r…   r+  )r-  r#  Údepr)   Ú	check_cmdÚrcr7  s   &     @r-   Ú._install_memory_provider_external_dependenciesrC  h  sÅ   ø€ Ø$&€GÛˆØ�w‰w�v‹×.Ð. ,ˆØ—G‘G˜GÓ$×*Ð*¨ˆ	Ø—g‘g˜iÓ(×.Ð.¨Bˆ÷ œØÐ% tÜ^Ðhjô
ð ôñ ßÙÜØÐ'¨¨{Ñ<fØ ô
ˆ÷ ‰9˜˜qžÜ˜GÐ%5°tÑHqÐ{}×~ñ% ð& €Nr/   c                óR   € V ^8„  d   QhR\         R\        \         \        3,          /# r'   )r+   r[   r   )r,   s   "r-   r.   r.   €  s&   € ÷ Zñ Z¬ð Z´´c¼3°hµñ Zr/   c                 ó„  € \        V 4      p\        V 4      pVf   V'       g   \        V 4      h\        V 4      p \	        V 4      w  rEVP                  \        VR,          4      4       V'       g   VP                  \        RV RR7      4       \        ;QJ d    R V 4       F  '       d   K   RM	  R	M! R V 4       4      p\        4        Uu/ uF  qˆR
,          VbK  	  p	pRVRV RVRV	P                  V 4      /#   \
         d6   pTP                  \        RT R\        T4      R7      4       R. /p R p?LîR p?ii ; iu upi )NÚsetupr  )rO   r)   r  r  Úexternal_dependenciesÚno_declared_steps)rO   r)   r  c              3   ó8   "  € T F  qR ,          R8g  x € K  	  R# 5i)r  r  Nr¢   )r¬   Úresults   & r-   r¯   Ú1_install_memory_provider_setup.<locals>.<genexpr>Ž  s   é € Ð@¹¨f�HÕ Ö)»ùs   ‚FTr)   r6  rm   r#  r  )r   r   r5   r!  r   r>   r‡   r  r+   ÚextendrC  Úallr    r…   )
r)   rm   Úmanifestr#  rF  Ú_inputsr?   r6  ÚrowÚstatusess
   &         r-   Ú_install_memory_provider_setuprR  €  s  € Ü$ TÓ*€HÜ(¨Ó.€HØÒ§Ü Ó%Ð%Ü:¸4Ó@€Gð.Ü8¸Ó>‰ˆð ‡N�NÔAÀ%ÐH_ÕB`ÓaÔbßØ�‰”¨G¸$ÐGZÔ[Ô\ß	‹Ñ@¹Ó@��ŠÑ@¹Ó@Ó	@€BÜ,NÔ,PÓQÑ,P S�F•˜SÒ Ñ,P€HÐQØ�"�j $¨	°7¸HÀhÇlÁlÐSWÓFXÐYÐYøô ô .Ø�‰”¨G¸$ÀxÔWZÐ[^ÓW_Ô`ÔaØ(¨"Ð-�ûð.üò Rs   ºC: ÃD=Ã:D:Ä+D5Ä5D:c                ó^   € V ^8„  d   QhR\         R\        R\        \         \        3,          /# )r(   r)   rm   r*   ©r+   r   r[   )r,   s   "r-   r.   r.   •  s)   € ÷ ñ ¤3ð ´#ð ¼$¼sÄC¸x½.ñ r/   c                 óü  € \        V 4      p\        W4       UUu. uFŠ  p/ R Uu/ uF  qDW4,          bK  	  upCRVR,          R8X  d   RM
\        W24      R\        W24      RVP	                  R. 4      RVP	                  RR4      /CR Uu/ uF  qDVP	                  V4      bK  	  upCNKŒ  	  pppR	V RV P                  R
R4      P                  RR4      P                  4       RVR\        V 4      /# u upi u upi u uppi )rR   rç   rO   r]   ÚsecretrF   rë   rê   Úurlr)   Ú_Ú Ú-rƒ   rF  )rR   rç   rO   rè   ré   Úrequired)ÚwhenÚminimumÚmaximumÚstep)r   r   r   r   r…   ÚreplaceÚtitler   )r)   rm   ri   rC   r­   rƒ   s   &&    r-   Ú_memory_provider_payloadrb  •  s  € Ü0°Ó6€Dô 7°tÔFôñ GˆEð	
Ù$fÓgÑ$f˜q�%•(Š{Ñ$fÑgð	
à˜5 �=¨HÔ4‘R¼,ÀuÓ:SØ”m EÓ0°)¸U¿Y¹YÀyÐRTÓ=UÐW\Ð^c×^gÑ^gÐhmÐoqÓ^rñ	
ñ )OÓOÑ(N 1�%—)‘)˜A“,ŠÑ(NÑOó		
ñ Gð ñ ð 	��g˜tŸ|™|¨C°Ó5×=Ñ=¸cÀ3ÓG×MÑMÓOÐQYÐ[aØÔ,¨TÓ2ðð ùò hùò Pùós"   š
C8¤C.µAC8ÂC3Â"C8Ã.
C8c                ót   € V ^8„  d   QhR\         \        \        3,          R\        R\        \        ,          /# rB   )r[   r+   r   rW   rU   )r,   s   "r-   r.   r.   ¦  s-   € ÷ ñ ¤¤c¬3 h¥ð ´cð ¼cÄE½kñ r/   c                 ó\  € Ve
   VR8w  d   TM
\        V 4      p \        V\        4      '       g(   \        P                  ! \        V4      ;p4      '       g   \        hV R,          R8X  d(   VP                  4       '       g   \        h\        V4      pT P                  R4      T P                  R4      reTe   Y58  d   \        RT R,           R	T 24      hTe   Y68”  d   \        RT R,           R
T 24      hT#   \        \        \        3 d   p\        RT R,           R24      ThR p?ii ; i)NrF   rO   ÚintegerzInvalid numeric value for 'rR   rI   r]  r^  z' must be at least z' must be at most )r   rZ   r9   ÚmathÚisfiniterU   r=   rV   rW   rY   ÚOverflowErrorr…   )rC   rD   r]   rJ  r?   r]  r^  s   &&     r-   Ú_coerce_schema_numberri  ¦  s  € Ø’? s¨b¤y‰C´nÀUÓ6K€EðQÜ�eœT×"Ò"¬$¯-ª-Ä%ÈÃ,Ð8N¸×*OÒ*OÜÐØ��=˜IÔ%Ø×$Ñ$×&Ò&Ü Ð Ü˜“[ˆFð —y‘y Ó+¨U¯Y©Y°yÓ-AˆWØÒ˜vÔ/Ü˜1˜U 5�\˜NÐ*=¸g¸YÐGÓHÐHØÒ˜vÔ/Ü˜1˜U 5�\˜NÐ*<¸W¸IÐFÓGÐGØ€Møô ”z¤=Ð1ô QÜÐ6°u¸Uµ|°nÀAÐFÓGÈSÐPûðQús   šA&C9 ÂC9 Ã9D+ÄD&Ä&D+c                ó^   € V ^8„  d   QhR\         \        \        3,          R\        R\        /# rB   rþ   )r,   s   "r-   r.   r.   ¹  s)   € ÷ *ñ *¤¤S¬# X¥ð *´Sð *¼Sñ *r/   c                 óÌ  € V R ,          pVR8X  d"   \        V\        \        V 4      RR7      R7      # VR9   d   \        W4      # \        Ve   TMR4      P	                  4       pVR8X  dc   T;'       g    \        \        V 4      4      pY0P                  R. 4       Uu0 uF  qDR,          kK  	  up9  d   \        RV R	,           R
24      hV# T;'       g    \        V 4      # u upi )rO   ÚbooleanF)rP   rF   rG   rê   r]   rH   rR   rI   >   rL   re  )r   r   ri  r+   rN   r…   r=   )rC   rD   rO   r]   Úopts   &&   r-   Ú_coerce_schema_fieldrn  ¹  sÖ   € Ø��=€DØˆyÔÜ˜C¬´nÀUÓ6KÐUZÔ)[Ô\Ð\ØÐ$Ô$Ü$ UÓ0Ð0Ü�s’‘¨BÓ/×5Ñ5Ó7€EØˆxÔØ×3Ð3œœ^¨EÓ2Ó3ˆØ·±¸9ÀbÔ1IÓJÑ1I¨#˜WŸ˜Ñ1IÑJÔJÜÐ2°5¸µ<°.ÀÐBÓCÐCØˆØ×)Ð)”N 5Ó)Ð)ùò Ks   ÂC!c                ób   € V ^8„  d   QhR\         R\        R\        \         \        3,          RR/# ©r(   r)   rm   r�   r*   NrT  )r,   s   "r-   r.   r.   È  s2   € ÷ ñ ¬cð ¼Sð Ì$ÌsÔTWÈxÍ.ð Ð]añ r/   c                 óö  € Vef   \        VR4      '       dT    ^ RIHp Ve$   \	        V4      P
                  VP
                  Jd&   VP                  V\        \        4       4      4       R # \        ;_uu_ 4        \        4       p\        V4      pVP                  V 4      p/ \        V\        4      '       d   TM/ CVCWP&   \        V4       R R R 4       R #   \         d    R p LÅi ; i  + '       g   i     R # ; i)Nr#   )ÚMemoryProvider)ÚhasattrÚagent.memory_providerrr  r>   Útyper#   r+   r!   r   r"   r  r…   rZ   r[   )r)   rm   r�   Ú_BaseMemoryProviderr¶   Ú
memory_cfgÚcurrents   &&&    r-   Ú#_save_memory_provider_native_configry  È  sÐ   € ØÒ¤¨°-× @Ò @ð	'ÝSð Ò&¬$¨x«.×*DÑ*DÐL_×LkÑLkÓ*kØ× Ñ  ¬¬_Ó->Ó)?Ô@Ùß	Ö	Ü‹mˆÜ$ SÓ)ˆ
Ø—.‘. Ó&ˆØW¬*°W¼d×*CÒ*C™wÈÐWÐPVÐWˆ
ÑÜ�CÔ÷ 
Ñ	øô ô 	'Ø"&Òð	'ú÷
 
×	Ð	ús   ˜C Á8AC'ÃC$Ã#C$Ã'C8	c                ób   € V ^8„  d   QhR\         R\        R\        \         \        3,          RR/# rp  rT  )r,   s   "r-   r.   r.   Ù  s4   € ÷ (ñ (¬sð (¼cð (Ì4ÔPSÔUXÐPXÍ>ð (Ð^bñ (r/   c                 ó€  € \        V 4      p\        W4      pV Uu/ uF  qUR ,          VbK  	  pp/ p/ pV FÐ  p\        V/ VCVCV4      '       g   K  VR ,          p	VR,          R8X  dh   \        VP	                  V	4      ;'       g    R4      P                  4       p
V
'       d,   VP	                  R4      '       d   W¨\        VR,          4      &   Kš  W’9   d	   W),          MVP	                  V	\        V4      4      p\        W[4      Wy&   KÒ  	  \        WV4       VP                  4        F  w  rÍ\        WÍ4       K  	  R# u upi )rR   rO   rV  rF   Ú_env_keyN)r   r   r   r+   r…   rN   r   rn  ry  r½   r$   )r)   rm   r�   r£   rƒ   rC   Úfields_by_keyÚconfig_valuesÚsecretsrR   r‰   rD   r†   rV  s   &&&           r-   Ú$_write_memory_provider_config_valuesr€  Ù  s  € Ü4°TÓ:€HÜ.¨tÓ>€FÙ6<Ó=±f¨U˜5•\ 5Ò(±f€MÐ=Ø$&€MØ €GÛˆÜ˜eÐ%B¨Ð%B°MÐ%BÀM×RÒRÙØ�E�lˆØ��=˜HÔ$Ü˜FŸJ™J s›O×1Ð1¨rÓ2×8Ñ8Ó:ˆIß˜UŸY™Y z×2Ò2Ø2;œ˜E *Õ-Ó.Ñ/ÙØ œ]ˆfŽk°·±¸SÄ.ÐQVÓBWÓ0XˆÜ1°%Ó=ˆÓñ ô (¨¸ÔFØ"Ÿ=™=ž?‰ˆÜ�wÖ'ó +ùò >s   ›D;c                ó(   € V ^8„  d   QhR\         RR/# )r(   r)   r*   Nrv   )r,   s   "r-   r.   r.   ñ  s   € ÷ &ñ &¬cð &°dñ &r/   c                óf   € \         P                  T ;'       g    R4      '       g   \        V 4      hR# )a  Reject provider names that could traverse outside the plugin dirs.

``name`` is interpolated into filesystem paths by ``find_provider_dir()``
and gates which plugin manifest's setup commands run; a strict charset
allowlist (no path separators, no dots) makes traversal impossible.
rF   N)Ú_MEMORY_PROVIDER_NAME_REÚ	fullmatchr5   r4   s   &r-   Ú#_require_valid_memory_provider_namer…  ñ  s+   € ô $×-Ñ-¨d¯j¨j°b×9Ò9Ü Ó%Ð%ñ :r/   z#/api/memory/providers/{name}/configc                óh   € V ^8„  d   QhR\         R\        \         ,          R\        \         ,          /# )r(   r)   ÚsurfaceÚprofile)r+   r   )r,   s   "r-   r.   r.   ý  s,   € ÷ 1ñ 1¬3ð 1¼Ä#½ð 1ÔX`ÔadÕXeñ 1r/   c              ƒ   ó\   a a"  € \        S 4       V V3R  lp\        W#4      G Rj  x€L
 #  L5i)c            
      ó¶   <€ SR 8X  d%   \        S4      p V f   RSRSRRR. /# \        V 4      # \        S4      pVf   RSRSR. R\        S4      /# \	        SV4      # )Údeclaredr)   rç   rì   rF   rƒ   rF  )r   rø   r   r   rb  )r‹  rm   r)   r‡  s     €€r-   Ú_runÚ(get_memory_provider_config.<locals>._run   sz   ø€ ð �jÔ Ü1°$Ó7ˆHØÒØ  g¨t°ZÀÀXÈrÐRÐRÜ-¨hÓ7Ð7Ü(¨Ó.ˆØÒØ˜D '¨4°¸2¸wÔHcÐdhÓHiÐjÐjÜ'¨¨hÓ7Ð7r/   N©r…  r   )r)   r‡  rˆ  rŒ  s   ff& r-   Úget_memory_provider_configr�  ü  s&   ùé € ä'¨Ô-ö8ô " 'Ó0×0Ð0Ñ0ùó   „!,¥*¦,z"/api/memory/providers/{name}/setupc                óR   € V ^8„  d   QhR\         R\        R\        \         ,          /# )r(   r)   Úbodyrˆ  )r+   r   r   )r,   s   "r-   r.   r.     s'   € ÷ 1ñ 1¤cð 1Ô1Kð 1Ü)1´#­ñ1r/   c              ƒ   ó\   a a"  € \        S 4       VV 3R  lp\        W#4      G Rj  x€L
 #  L5i)c                  óB  <€ \        S4      p V f   \        S4      '       g   \        S4      hV eI   SP                  '       d7   \	        RSRR7      ;_uu_ 4        \        SV SP                  4       R R R 4       \        4        \        S4      #   + '       g   i     L%; i)Nz5Failed to persist memory provider setup values for %sF)r6   )r   r   r5   r�   r@   r€  r
   rR  )rm   r’  r)   s    €€r-   rŒ  Ú#setup_memory_provider.<locals>._run  s‚   ø€ Ü(¨Ó.ˆØÒÔ$=¸d×$CÒ$Cô
 $ DÓ)Ð)ØÒ D§K§K KÜ&Ð'^Ð`dØ8=÷?ö ?ä4°T¸8ÀTÇ[Á[ÔQ÷?ô 	&Ô'Ü-¨dÓ3Ð3÷	?÷ ?ús   ÁBÂB	NrŽ  )r)   r’  rˆ  rŒ  s   ff& r-   Úsetup_memory_providerr–    s(   ùé € ô (¨Ô-ö4ô " 'Ó0×0Ð0Ñ0ùr�  c          	      ót   € V ^8„  d   QhR\         R\        R\        \         ,          R\        \         ,          /# )r(   r)   r’  r‡  rˆ  )r+   r   r   )r,   s   "r-   r.   r.   (  s6   € ÷ 5ñ 5Ü
ð5Ü/ð5Ü:BÄ3½-ð5ÜYaÔbeÕYfñ5r/   c              ƒ   óò   a aa"  € \        S 4       VP                  ;'       g    / oV VV3R  lp\        RS 4      ;_uu_ 4        \        W44      G Rj  x€L
 uuRRR4       #  L  + '       g   i     R# ; i5i)c                  óü  <€ SR 8X  da   \        S4      p V f   \        S4      h\        T SP                  4        UUu/ uF  w  rV\	        V4      bK  	  upp4       \        4        RR/# \        S4      pVf   \        S4      h\        SVS4       \        S4       \        ;_uu_ 4        \        4       pS\        V4      R&   \        V4       RRR4       \        4        RRRS/# u uppi   + '       g   i     L&; i)r‹  Nr6  Trm   Úactive)r   r5   r  r½   rû   r
   r   r€  r   r   r"   r  r#   )r‹  r­   r®   rm   rý   r)   r‡  r�   s        €€€r-   rŒ  Ú+update_memory_provider_config.<locals>._run.  sè   ø€ Ø�jÔ Ü1°$Ó7ˆHØÒÜ'¨Ó-Ð-Ü*¨8Ð]c×]iÑ]iÔ]kÔ5lÑ]kÑUYÐUV°aÔ9MÈaÓ9PÒ6PÑ]kÒ5lÔmÜ)Ô+Ø˜$�<ÐÜ(¨Ó.ˆØÒÜ# DÓ)Ð)Ü,¨T°8¸VÔDÜ& tÔ,ß"Ö"Ü “]ˆFØ26ŒO˜FÓ# JÑ/Ü˜Ô÷ #ô 	&Ô'Ø�d˜H dÐ+Ð+ùó 6m÷ #×"ús   ¼C%Â)$C+Ã+C;	z*PUT /api/memory/providers/%s/config failedN)r…  r�   r@   r   )r)   r’  r‡  rˆ  rŒ  r�   s   f&f& @r-   Úupdate_memory_provider_configrœ  '  sY   úé € ô (¨Ô-Ø�[‰[×Ð˜B€F÷,ô( 
ÐKÈT×	RÕ	RÜ% gÓ4×4÷ 
SÒ	RÙ4÷ 
S×	RÐ	Rüs/   …>A7ÁA#ÁA!ÁA#ÁA7Á!A#Á#A4	Á.	A7c                ó@   € V ^8„  d   Qh/ ^ \         9   d
   \        ;R&   # )r(   rT   )Ú__conditional_annotations__r   )r,   s   "r-   r.   r.      s    € ÷ ñ ÷P Ò ŒÑ òQr/   )i   )NNr¡   )drž  Ú__doc__Ú
contextlibrM   Úloggingrf  Úrer'  r  Úpathlibr   Útypingr   r   r   r   Úfastapir   r   Úhermes_cli.web_depsr	   Úhermes_cli.web_server_dashboardr
   Úhermes_cli.web_server_memoryr   r   r   r   r   r   r   r   r   r   r   r   r   Úhermes_cli.web_modelsr   r   Úhermes_cli.web_routers._commonr   r   Úplugins.memory.config_schemar   r   r   r   Ú	getLoggerr;   Úrouterr    r!   r"   r#   r$   r%   ÚobjectrT   Úcompilerƒ  r5   Úcontextmanagerr@   r_   rj   rp   rt   r   rŠ   r”   r�   r¦   rÄ   rÊ   rÔ   rÛ   rø   rû   r  r  r  r  r!  r+  rC  rR  rb  ri  rn  ry  r€  r…  r…   r�  Úpostr–  Úputrœ  r.   )rž  s   @r-   Ú<module>r³     s  øðöó Û Û Û Û 	Û Û Ý ß ,Ó ,ç ,å $Ý I÷÷ ÷ õ ÷ Yß R÷ó ð ×ÒÐ0Ó1€Ù	‹€ñ &*Ð*NÐPnÓ%oÐ "ÙÐ(Ð*=Ó>€Ù�=Ð"5Ó6€Ù�=Ð"5Ó6€ÙÐ&Ð(;Ó<€Ù�
Ð/Ó0€á‹h€Ó àŸ:š:Ð&IÓJÐ õUð ×ÑðMÈtö Mó ðMõ& õF	2õ=õPõVõõ(õ&.õ:õ$õ@
õõ Yõ&mõRõõ ÷Pð
	Ø9;ð	à7;ð	àTX÷	õfõ õõ0Zõ*õ"õ&*õõ"(õ0&ð ‡�Ð1Ó2ö1ó 3ð1ð& ‡�Ð1Ó2ö1ó 3ð1ð, ‡�Ð1Ó2ö5ó 3ò5r/   