+
    …WÝjë  ã                  ó,  a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIHtH	t
 ]P                  ! ]4      tRtRtRtRtRtR	tR
tRt]! RR7       ! R R4      4       t]! RR7       ! R R4      4       t]! RR7       ! R R4      4       t/ tR]R&   R R ltR R ltR# )aâ  Declarative config schema for memory provider plugins: each declares its fields in
a ``config_schema.py`` beside ``__init__.py``; one generic renderer and one
``GET/PUT /api/memory/providers/{name}/config`` pair drive the UI. Schema files are
loaded by path, never imported as a package (plugin ``__init__`` pulls in the agent
runtime, which must not load into the web server); they may import only this
pure-data module. ``web_server`` owns read/write, dispatching on ``storage``.
)ÚannotationsN)Ú	dataclassÚfieldÚtextÚselectÚsecretÚboolÚnumberÚjsonÚ	flat_jsonÚhoncho_host_blockT)Úfrozenc                  ó>   € ] tR t^t$ RtR]R&   R]R&   RtR]R&   RtR# )	ÚProviderFieldOptionz'A single choice for a ``select`` field.ÚstrÚvalueÚlabelÚ Údescription© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r   Ú__static_attributes__r   ó    ÚPC:\Users\johnn\AppData\Local\hermes\hermes-agent\plugins\memory\config_schema.pyr   r      s   ‡ á1àƒJØƒJØ€K�×r   r   c                  óú   € ] tR t^'t$ RtR]R&   R]R&   ]tR]R&   RtR]R&   Rt	R]R&   Rt
R]R	&   RtR
]R&   RtR]R&   RtR]R&   RtR]R&   RtR]R&   RtR]R&   RtR]R&   RtR]R&   ]R R l4       tR R ltRtR# )ÚProviderFieldaE  One configurable field. Stored in exactly one place by ``kind``: non-secret
kinds under ``key`` in the provider's storage; ``secret`` in the env store under
``env_key``, never read back (only ``is_set``). ``aliases``/``env_fallbacks`` read
legacy values; ``inline`` marks the compact-panel subset (rest: modal, by ``group``).r   Úkeyr   Úkindr   Údefaultr   Úplaceholderztuple[ProviderFieldOption, ...]ÚoptionsNz
str | NoneÚenv_keyztuple[str, ...]ÚaliasesÚenv_fallbacksFr   ÚinlineÚgroupÚinfoÚhostÚscopec               ó   € V ^8„  d   QhRR/# )é   Úreturnr   r   )Úformats   "r   Ú__annotate__ÚProviderField.__annotate__@   s   € ÷ (ñ (˜4ñ (r   c                	ó(   € V P                   \        8H  # ©N)r"   ÚKIND_SECRET©Úselfs   &r   Ú	is_secretÚProviderField.is_secret?   s   € à�y‰yœKÑ'Ð'r   c               ó   € V ^8„  d   QhRR/# )r/   r0   zset[str]r   )r1   s   "r   r2   r3   C   s   € ÷ 3ñ 3 ñ 3r   c                	óV   € V P                    Uu0 uF  qP                  kK  	  up# u upi r5   )r%   r   )r8   Úopts   & r   Úallowed_valuesÚProviderField.allowed_valuesC   s    € Ø%)§\¢\Ó2¡\˜c—	”	¡\Ñ2Ð2ùÒ2s   �&r   )r   r   r   r   r   r   Ú	KIND_TEXTr"   r#   r   r$   r%   r&   r'   r(   r)   r*   r+   r-   Úpropertyr9   r>   r   r   r   r   r    r    '   s§   ‡ ñ]ð
 
ƒHØƒJØ€Dˆ#ÓØ€GˆSÓØ€K�ÓØ€K�ÓØ/1€GÐ,Ó1Ø€GˆZÓØ!€Gˆ_Ó!Ø%'€M�?Ó'Ø€FˆDÓØ€Eˆ3ƒOà€Dˆ#ƒNà€Eˆ3Óàô(ó ð(÷3ñ 3r   r    c                  ót   € ] tR t^Gt$ RtR]R&   R]R&   ]tR]R&   RtR]R&   ]	! ]
R7      tR	]R
&   R R ltRtR# )ÚProviderConfigSchemaz,A provider plugin's declared config surface.r   Únamer   Ústorager   Údocs_url)Údefault_factoryútuple[ProviderField, ...]Úfieldsc               ó   € V ^8„  d   QhRR/# )r/   r0   rH   r   )r1   s   "r   r2   Ú!ProviderConfigSchema.__annotate__R   s   € ÷ 9ñ 9Ð8ñ 9r   c                	ó‚   € \         ;QJ d    . R  V P                   4       F  NK  	  5# ! R  V P                   4       4      # )c              3  óL   "  € T F  qP                   '       g   K  Vx € K  	  R # 5ir5   )r)   ©Ú.0Úfs   & r   Ú	<genexpr>Ú5ProviderConfigSchema.inline_fields.<locals>.<genexpr>S   s   é € Ð8¡˜1¯x­x—Q’Q£ùs   ‚$š
$)ÚtuplerI   r7   s   &r   Úinline_fieldsÚ"ProviderConfigSchema.inline_fieldsR   s,   € ßŒuÑ8 §¢Ó8�uÐ8ˆuÑ8 §¢Ó8Ó8Ð8r   r   N)r   r   r   r   r   r   ÚSTORAGE_FLAT_JSONrE   rF   Údataclass_fieldrS   rI   rT   r   r   r   r   rC   rC   G   s=   ‡ á6à
ƒIØƒJØ$€GˆSÓ$à€HˆcÓÙ(7ÈÔ(N€FÐ%ÓN÷9ñ 9r   rC   zdict[str, ProviderConfigSchema]Ú_SCHEMA_CACHEc               ó    € V ^8„  d   QhRRRR/# )r/   rD   r   r0   úProviderConfigSchema | Noner   )r1   s   "r   r2   r2   Y   s   € ÷  ñ   Sð  Ð-Hñ  r   c                óŒ  € ^ RI Hp V! V 4      pV'       d
   VR,          MRpVe   VP                  4       '       g   R# \        V4      pV\        9   d   \        V,          #  ^ RI Hp ^ RIHp V! V4      '       d   RMV! 4       pVe   \        VP                  V4      4      pMk\        P                  P                  RV  2V4      p	\        P                  P                  V	4      p
V	P                  P                  V
4       \!        V
RR4      p Ve
   V\        V&   V#   \"         d    \$        P'                  RT 4        R# i ; i)	z�``CONFIG_SCHEMA`` of provider ``name``; None (no panel) without a ``config_schema.py``.
Cached by resolved file path, not name: user plugins are per-profile.)Úfind_provider_dirzconfig_schema.pyN)Ú_is_bundled)Úuser_plugin_hostz_hermes_memory_config_schema.ÚCONFIG_SCHEMAz3failed to load config schema for memory provider %r)Úplugins.memoryr\   Úis_filer   rX   r]   Úhermes_cli.plugin_isolationr^   Ú_schema_from_recordÚconfig_schemaÚ	importlibÚutilÚspec_from_file_locationÚmodule_from_specÚloaderÚexec_moduleÚgetattrÚ	ExceptionÚ_logÚ	exception)rD   r\   Úprovider_dirÚpathr!   r]   r^   r,   ÚschemaÚspecÚmodules   &          r   Úget_provider_config_schemart   Y   s  € õ 1á$ TÓ*€Lß0<ˆ<Ð,Ö,À$€DØ‚|˜4Ÿ<™<Ÿ>š>Ùä
ˆd‹)€CØ
ŒmÔÜ˜SÕ!Ð!ðÝ.Ý@Ù" <×0Ò0‰tÑ6FÓ6HˆØÒÜ(¨×);Ñ);¸DÓ)AÓB‰Fä—>‘>×9Ñ9Ð<YÐZ^ÐY_Ð:`ÐbfÓgˆDÜ—^‘^×4Ñ4°TÓ:ˆFØ�K‰K×#Ñ# FÔ+Ü˜V _°dÓ;‰Fð ÒØ#Œ�cÑØ€Møô ô ä�‰ÐLÈdÔSÚðús   Á"D Á<'D Â$A*D Ä!EÅEc               ó   € V ^8„  d   QhRR/# )r/   r0   rZ   r   )r1   s   "r   r2   r2   |   s   € ÷ 	@ñ 	@Ð#>ñ 	@r   c                óô   € V '       g   R# \         ;QJ d-    . R V P                  R4      ;'       g    R 4       F  NK  	  5M&! R V P                  R4      ;'       g    R 4       4      p\        R/ / V CRV/CB # )zERebuild a schema that crossed the plugin-host boundary as plain data.Nc              3  óŒ  "  € T Fº  p\        R/ / VCR \        ;QJ d-    . R VP                  R 4      ;'       g    R 4       F  NK  	  5M&! R VP                  R 4      ;'       g    R 4       4      R\        VP                  R4      ;'       g    R4      R\        VP                  R4      ;'       g    R4      /CB x € K¼  	  R# 5i)r%   c              3  ó8   "  € T F  p\        R/ VB x € K  	  R # 5i)Nr   )r   )rO   Úos   & r   rQ   Ú0_schema_from_record.<locals>.<genexpr>.<genexpr>�   s   é € Ð.hÑQgÈAÔ/BÑ/GÀQÖ/GÓQgùs   ‚r'   r(   Nr   )r    rS   ÚgetrN   s   & r   rQ   Ú&_schema_from_record.<locals>.<genexpr>€   sÀ   é € ð -ñ ,ˆAô 	ñ 	Pð O˜1ð O˜i¯¬Ñ.hÐQR×QVÑQVÐW`ÓQa×QgÐQgÐegÐQgÓ.h¯©Ñ.hÐQR×QVÑQVÐW`ÓQa×QgÐQgÐegÐQgÓ.hÓ)hØ"¤E¨!¯%©%°	Ó*:×*@Ð*@¸bÓ$AØ(¬%°·±°oÓ0F×0LÐ0LÈ"Ó*MñOö 	Pó ,ùs   ‚6C¹*CÁ$(CÂ#CÂ1CrI   r   )rS   r{   rC   )ÚrecordrI   s   & r   rc   rc   |   s{   € çÙßŒUñ -ð —‘˜HÓ%×+Ð+¨Ð+ó	-�U‰Uñ -ð —‘˜HÓ%×+Ð+¨Ð+ó	-ó -€Fô
  Ñ?Ð"> VÐ">¨X°vÑ">Ñ?Ð?r   )Ú__conditional_annotations__r   Ú
__future__r   Úimportlib.utilre   ÚloggingÚdataclassesr   r   rW   Ú	getLoggerr   rm   r@   ÚKIND_SELECTr6   Ú	KIND_BOOLÚKIND_NUMBERÚ	KIND_JSONrV   ÚSTORAGE_HONCHO_HOST_BLOCKr   r    rC   rX   r   rt   rc   )r~   s   @r   Ú<module>r‰      sÊ   øðôõ #ã Û ß ;à×Ò˜Ó"€ð €	Ø€Ø€Ø€	Ø€Ø€	ð  Ð Ø/Ð ñ �$Ô÷ð ó ðñ �$Ô÷3ð 3ó ð3ñ> �$Ô÷9ð 9ó ð9ð 24€Ð.Ó 3õ ÷F	@r   