44Provides adapter implementations for various knowledge backends.
55All adapters implement KnowledgeStoreProtocol.
66
7- Adapters are lazy-loaded to avoid importing heavy dependencies.
7+ Adapters are now registered via the adapter registry to enable
8+ protocol-driven knowledge backend resolution.
89"""
910
1011from typing import TYPE_CHECKING
1112
1213if TYPE_CHECKING :
1314 from .mem0_adapter import Mem0Adapter
1415
15- # Lazy loading for adapters
16+ # Import registry functions
17+ from .registry import (
18+ register_knowledge_adapter ,
19+ register_knowledge_factory ,
20+ get_knowledge_adapter ,
21+ list_knowledge_adapters ,
22+ get_first_available_knowledge_adapter ,
23+ has_knowledge_adapter ,
24+ )
25+
26+ # Import factory functions for heavy adapters
27+ from .factories import (
28+ create_mem0_knowledge_adapter ,
29+ create_mongodb_knowledge_adapter ,
30+ create_chroma_knowledge_adapter ,
31+ create_sqlite_knowledge_adapter ,
32+ )
33+
34+ # Register core adapter factories (lightweight, no heavy dependencies)
35+ register_knowledge_factory ("sqlite" , create_sqlite_knowledge_adapter )
36+
37+ # Register heavy adapter factories (lazy-loaded via factories)
38+ register_knowledge_factory ("mem0" , create_mem0_knowledge_adapter )
39+ register_knowledge_factory ("mongodb" , create_mongodb_knowledge_adapter )
40+ register_knowledge_factory ("chroma" , create_chroma_knowledge_adapter )
41+
42+ # Lazy loading for adapters (backward compatibility)
1643_LAZY_IMPORTS = {
1744 "Mem0Adapter" : ("praisonaiagents.knowledge.adapters.mem0_adapter" , "Mem0Adapter" ),
1845 "MongoDBKnowledgeAdapter" : ("praisonaiagents.knowledge.adapters.mongodb_adapter" , "MongoDBKnowledgeAdapter" ),
@@ -31,10 +58,24 @@ def __getattr__(name: str):
3158
3259def __dir__ ():
3360 """List available attributes."""
34- return list (_LAZY_IMPORTS .keys ())
61+ return list (_LAZY_IMPORTS .keys ()) + [
62+ "register_knowledge_adapter" ,
63+ "register_knowledge_factory" ,
64+ "get_knowledge_adapter" ,
65+ "list_knowledge_adapters" ,
66+ "get_first_available_knowledge_adapter" ,
67+ "has_knowledge_adapter" ,
68+ ]
3569
3670
3771__all__ = [
3872 "Mem0Adapter" ,
3973 "MongoDBKnowledgeAdapter" ,
74+ # Registry functions
75+ "register_knowledge_adapter" ,
76+ "register_knowledge_factory" ,
77+ "get_knowledge_adapter" ,
78+ "list_knowledge_adapters" ,
79+ "get_first_available_knowledge_adapter" ,
80+ "has_knowledge_adapter" ,
4081]
0 commit comments