
    iJ                         d Z ddlmZ ddlmZ ddlmZmZmZm	Z	 ddl
mZ ddlmZmZmZ ddlmZ ddlmZ  ed	      Zd
a ed       G d d             ZddZdddede	e   dedgdf   dedz  ddf
dZdedefdZdeeef   fdZg dZy)z*Registry for memory store implementations.    )	dataclass)import_module)AnyCallableDictType)register_memory_store_schema)RegistryRegistryEntryRegistryError)MemoryStoreConfig)
MemoryBasememory_storeFT)slotsc                   R    e Zd ZU eed<   ee   ed<   edgdf   ed<   dZedz  ed<   y)MemoryStoreRegistrationname
config_clsr   r   factoryNsummary)	__name__
__module____qualname__str__annotations__r   r   r   r        O/Users/bowang/.openclaw/workspace/ChatDev/runtime/node/agent/memory/registry.pyr   r      s3    
IS	*+\9::GS4Zr   r   returnNc                  ,    t         st        d       da y y )Nz(runtime.node.agent.memory.builtin_storesT)_BUILTINS_LOADEDr   r   r   r   _ensure_builtins_loadedr"      s    @A r   )r   r   r   r   r   r   r   c                    | t         j                         v rt        d|  d      t        | |||      }t         j	                  | |       t        | ||       y )NzMemory store 'z' already registered)r   r   r   r   )target)r   r   )memory_store_registrynamesr   r   registerr	   )r   r   r   r   entrys        r   register_memory_storer)      s[     $**,,nTF2FGHH#*g_fgE""4"6 *gNr   c                     t                t        j                  |       }|j                         }t	        |t
              st        d|  d      |S )NzEntry 'z"' is not a MemoryStoreRegistration)r"   r%   getload
isinstancer   r   )r   r(   registrations      r   get_memory_store_registrationr/   ,   sI    044T:E::<Ll$;<gdV+MNOOr   c                      t                t        j                         D  ci c]  \  } }| |j                          c}} S c c}} w )N)r"   r%   itemsr,   )r   r(   s     r   iter_memory_store_registrationsr2   5   s:    2G2M2M2OP2O;4D%**,2OPPPs   A)r%   r   r)   r/   r2   )r   N)__doc__dataclassesr   	importlibr   typingr   r   r   r   schema_registryr	   utils.registryr
   r   r   entity.configsr   %runtime.node.agent.memory.memory_baser   r%   r!   r   r"   r   r)   r/   r2   __all__r   r   r   <module>r<      s    0 ! # , , 8 A A , < 0  
    O
O S	O *+\9:	O
 4ZO 
O 0G Qc3J.J)K Q
r   