powermem 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- powermem/__init__.py +103 -0
- powermem/agent/__init__.py +35 -0
- powermem/agent/abstract/__init__.py +22 -0
- powermem/agent/abstract/collaboration.py +259 -0
- powermem/agent/abstract/context.py +187 -0
- powermem/agent/abstract/manager.py +232 -0
- powermem/agent/abstract/permission.py +217 -0
- powermem/agent/abstract/privacy.py +267 -0
- powermem/agent/abstract/scope.py +199 -0
- powermem/agent/agent.py +791 -0
- powermem/agent/components/__init__.py +18 -0
- powermem/agent/components/collaboration_coordinator.py +645 -0
- powermem/agent/components/permission_controller.py +586 -0
- powermem/agent/components/privacy_protector.py +767 -0
- powermem/agent/components/scope_controller.py +685 -0
- powermem/agent/factories/__init__.py +16 -0
- powermem/agent/factories/agent_factory.py +266 -0
- powermem/agent/factories/config_factory.py +308 -0
- powermem/agent/factories/memory_factory.py +229 -0
- powermem/agent/implementations/__init__.py +16 -0
- powermem/agent/implementations/hybrid.py +728 -0
- powermem/agent/implementations/multi_agent.py +1040 -0
- powermem/agent/implementations/multi_user.py +1020 -0
- powermem/agent/types.py +53 -0
- powermem/agent/wrappers/__init__.py +14 -0
- powermem/agent/wrappers/agent_memory_wrapper.py +427 -0
- powermem/agent/wrappers/compatibility_wrapper.py +520 -0
- powermem/config_loader.py +318 -0
- powermem/configs.py +249 -0
- powermem/core/__init__.py +19 -0
- powermem/core/async_memory.py +1493 -0
- powermem/core/audit.py +258 -0
- powermem/core/base.py +165 -0
- powermem/core/memory.py +1567 -0
- powermem/core/setup.py +162 -0
- powermem/core/telemetry.py +215 -0
- powermem/integrations/__init__.py +17 -0
- powermem/integrations/embeddings/__init__.py +13 -0
- powermem/integrations/embeddings/aws_bedrock.py +100 -0
- powermem/integrations/embeddings/azure_openai.py +55 -0
- powermem/integrations/embeddings/base.py +31 -0
- powermem/integrations/embeddings/config/base.py +132 -0
- powermem/integrations/embeddings/configs.py +31 -0
- powermem/integrations/embeddings/factory.py +48 -0
- powermem/integrations/embeddings/gemini.py +39 -0
- powermem/integrations/embeddings/huggingface.py +41 -0
- powermem/integrations/embeddings/langchain.py +35 -0
- powermem/integrations/embeddings/lmstudio.py +29 -0
- powermem/integrations/embeddings/mock.py +11 -0
- powermem/integrations/embeddings/ollama.py +53 -0
- powermem/integrations/embeddings/openai.py +49 -0
- powermem/integrations/embeddings/qwen.py +102 -0
- powermem/integrations/embeddings/together.py +31 -0
- powermem/integrations/embeddings/vertexai.py +54 -0
- powermem/integrations/llm/__init__.py +18 -0
- powermem/integrations/llm/anthropic.py +87 -0
- powermem/integrations/llm/base.py +132 -0
- powermem/integrations/llm/config/anthropic.py +56 -0
- powermem/integrations/llm/config/azure.py +56 -0
- powermem/integrations/llm/config/base.py +62 -0
- powermem/integrations/llm/config/deepseek.py +56 -0
- powermem/integrations/llm/config/ollama.py +56 -0
- powermem/integrations/llm/config/openai.py +79 -0
- powermem/integrations/llm/config/qwen.py +68 -0
- powermem/integrations/llm/config/qwen_asr.py +46 -0
- powermem/integrations/llm/config/vllm.py +56 -0
- powermem/integrations/llm/configs.py +26 -0
- powermem/integrations/llm/deepseek.py +106 -0
- powermem/integrations/llm/factory.py +118 -0
- powermem/integrations/llm/gemini.py +201 -0
- powermem/integrations/llm/langchain.py +65 -0
- powermem/integrations/llm/ollama.py +106 -0
- powermem/integrations/llm/openai.py +166 -0
- powermem/integrations/llm/openai_structured.py +80 -0
- powermem/integrations/llm/qwen.py +207 -0
- powermem/integrations/llm/qwen_asr.py +171 -0
- powermem/integrations/llm/vllm.py +106 -0
- powermem/integrations/rerank/__init__.py +20 -0
- powermem/integrations/rerank/base.py +43 -0
- powermem/integrations/rerank/config/__init__.py +7 -0
- powermem/integrations/rerank/config/base.py +27 -0
- powermem/integrations/rerank/configs.py +23 -0
- powermem/integrations/rerank/factory.py +68 -0
- powermem/integrations/rerank/qwen.py +159 -0
- powermem/intelligence/__init__.py +17 -0
- powermem/intelligence/ebbinghaus_algorithm.py +354 -0
- powermem/intelligence/importance_evaluator.py +361 -0
- powermem/intelligence/intelligent_memory_manager.py +284 -0
- powermem/intelligence/manager.py +148 -0
- powermem/intelligence/plugin.py +229 -0
- powermem/prompts/__init__.py +29 -0
- powermem/prompts/graph/graph_prompts.py +217 -0
- powermem/prompts/graph/graph_tools_prompts.py +469 -0
- powermem/prompts/importance_evaluation.py +246 -0
- powermem/prompts/intelligent_memory_prompts.py +163 -0
- powermem/prompts/templates.py +193 -0
- powermem/storage/__init__.py +14 -0
- powermem/storage/adapter.py +896 -0
- powermem/storage/base.py +109 -0
- powermem/storage/config/base.py +13 -0
- powermem/storage/config/oceanbase.py +58 -0
- powermem/storage/config/pgvector.py +52 -0
- powermem/storage/config/sqlite.py +27 -0
- powermem/storage/configs.py +159 -0
- powermem/storage/factory.py +59 -0
- powermem/storage/migration_manager.py +438 -0
- powermem/storage/oceanbase/__init__.py +8 -0
- powermem/storage/oceanbase/constants.py +162 -0
- powermem/storage/oceanbase/oceanbase.py +1384 -0
- powermem/storage/oceanbase/oceanbase_graph.py +1441 -0
- powermem/storage/pgvector/__init__.py +7 -0
- powermem/storage/pgvector/pgvector.py +420 -0
- powermem/storage/sqlite/__init__.py +0 -0
- powermem/storage/sqlite/sqlite.py +218 -0
- powermem/storage/sqlite/sqlite_vector_store.py +311 -0
- powermem/utils/__init__.py +35 -0
- powermem/utils/utils.py +605 -0
- powermem/version.py +23 -0
- powermem-0.1.0.dist-info/METADATA +187 -0
- powermem-0.1.0.dist-info/RECORD +123 -0
- powermem-0.1.0.dist-info/WHEEL +5 -0
- powermem-0.1.0.dist-info/licenses/LICENSE +206 -0
- powermem-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Memory factory for creating different types of agent memory managers.
|
|
3
|
+
|
|
4
|
+
This module provides the main factory class for creating different types
|
|
5
|
+
of agent memory managers based on configuration.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from typing import Dict
|
|
9
|
+
import logging
|
|
10
|
+
|
|
11
|
+
from typing import Any, Dict
|
|
12
|
+
from powermem.agent.abstract.manager import AgentMemoryManagerBase
|
|
13
|
+
from powermem.agent.implementations.multi_agent import MultiAgentMemoryManager
|
|
14
|
+
from powermem.agent.implementations.multi_user import MultiUserMemoryManager
|
|
15
|
+
from powermem.agent.implementations.hybrid import HybridMemoryManager
|
|
16
|
+
from powermem.configs import MemoryConfig
|
|
17
|
+
|
|
18
|
+
logger = logging.getLogger(__name__)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class MemoryFactory:
|
|
22
|
+
"""
|
|
23
|
+
Factory class for creating different types of agent memory managers.
|
|
24
|
+
|
|
25
|
+
This factory provides a unified interface for creating memory managers
|
|
26
|
+
based on configuration, supporting multi-agent, multi-user, and hybrid modes.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
# Registry of available memory manager types
|
|
30
|
+
_MANAGER_REGISTRY: Dict[str, type] = {
|
|
31
|
+
"multi_agent": MultiAgentMemoryManager,
|
|
32
|
+
"multi_user": MultiUserMemoryManager,
|
|
33
|
+
"hybrid": HybridMemoryManager,
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@classmethod
|
|
37
|
+
def create_from_config(cls, config: Dict[str, Any]) -> AgentMemoryManagerBase:
|
|
38
|
+
"""
|
|
39
|
+
Create a memory manager from configuration.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
config: Memory configuration object
|
|
43
|
+
|
|
44
|
+
Returns:
|
|
45
|
+
AgentMemoryManagerBase instance
|
|
46
|
+
|
|
47
|
+
Raises:
|
|
48
|
+
ValueError: If the manager type is not supported
|
|
49
|
+
"""
|
|
50
|
+
if not hasattr(config, 'agent_memory') or not config.agent_memory.enabled:
|
|
51
|
+
raise ValueError("Agent memory management is not enabled in configuration")
|
|
52
|
+
|
|
53
|
+
manager_type = config.agent_memory.mode
|
|
54
|
+
|
|
55
|
+
if manager_type not in cls._MANAGER_REGISTRY:
|
|
56
|
+
raise ValueError(f"Unsupported manager type: {manager_type}")
|
|
57
|
+
|
|
58
|
+
manager_class = cls._MANAGER_REGISTRY[manager_type]
|
|
59
|
+
|
|
60
|
+
try:
|
|
61
|
+
manager = manager_class(config)
|
|
62
|
+
manager.initialize()
|
|
63
|
+
logger.info(f"Created {manager_type} memory manager successfully")
|
|
64
|
+
return manager
|
|
65
|
+
except Exception as e:
|
|
66
|
+
logger.error(f"Failed to create {manager_type} memory manager: {e}")
|
|
67
|
+
raise
|
|
68
|
+
|
|
69
|
+
@classmethod
|
|
70
|
+
def create_manager(
|
|
71
|
+
cls,
|
|
72
|
+
manager_type: str,
|
|
73
|
+
config: Dict[str, Any]
|
|
74
|
+
) -> AgentMemoryManagerBase:
|
|
75
|
+
"""
|
|
76
|
+
Create a specific type of memory manager.
|
|
77
|
+
|
|
78
|
+
Args:
|
|
79
|
+
manager_type: Type of manager to create
|
|
80
|
+
config: Memory configuration object
|
|
81
|
+
|
|
82
|
+
Returns:
|
|
83
|
+
AgentMemoryManagerBase instance
|
|
84
|
+
|
|
85
|
+
Raises:
|
|
86
|
+
ValueError: If the manager type is not supported
|
|
87
|
+
"""
|
|
88
|
+
if manager_type not in cls._MANAGER_REGISTRY:
|
|
89
|
+
raise ValueError(f"Unsupported manager type: {manager_type}")
|
|
90
|
+
|
|
91
|
+
manager_class = cls._MANAGER_REGISTRY[manager_type]
|
|
92
|
+
|
|
93
|
+
try:
|
|
94
|
+
manager = manager_class(config)
|
|
95
|
+
manager.initialize()
|
|
96
|
+
logger.info(f"Created {manager_type} memory manager successfully")
|
|
97
|
+
return manager
|
|
98
|
+
except Exception as e:
|
|
99
|
+
logger.error(f"Failed to create {manager_type} memory manager: {e}")
|
|
100
|
+
raise
|
|
101
|
+
|
|
102
|
+
@classmethod
|
|
103
|
+
def register_manager(
|
|
104
|
+
cls,
|
|
105
|
+
manager_type: str,
|
|
106
|
+
manager_class: type
|
|
107
|
+
) -> None:
|
|
108
|
+
"""
|
|
109
|
+
Register a new memory manager type.
|
|
110
|
+
|
|
111
|
+
Args:
|
|
112
|
+
manager_type: Type identifier for the manager
|
|
113
|
+
manager_class: Class implementing AgentMemoryManagerBase
|
|
114
|
+
"""
|
|
115
|
+
if not issubclass(manager_class, AgentMemoryManagerBase):
|
|
116
|
+
raise ValueError("Manager class must inherit from AgentMemoryManagerBase")
|
|
117
|
+
|
|
118
|
+
cls._MANAGER_REGISTRY[manager_type] = manager_class
|
|
119
|
+
logger.info(f"Registered new memory manager type: {manager_type}")
|
|
120
|
+
|
|
121
|
+
@classmethod
|
|
122
|
+
def get_available_managers(cls) -> Dict[str, type]:
|
|
123
|
+
"""
|
|
124
|
+
Get all available memory manager types.
|
|
125
|
+
|
|
126
|
+
Returns:
|
|
127
|
+
Dictionary mapping manager types to their classes
|
|
128
|
+
"""
|
|
129
|
+
return cls._MANAGER_REGISTRY.copy()
|
|
130
|
+
|
|
131
|
+
@classmethod
|
|
132
|
+
def is_manager_type_supported(cls, manager_type: str) -> bool:
|
|
133
|
+
"""
|
|
134
|
+
Check if a manager type is supported.
|
|
135
|
+
|
|
136
|
+
Args:
|
|
137
|
+
manager_type: Type identifier to check
|
|
138
|
+
|
|
139
|
+
Returns:
|
|
140
|
+
True if supported, False otherwise
|
|
141
|
+
"""
|
|
142
|
+
return manager_type in cls._MANAGER_REGISTRY
|
|
143
|
+
|
|
144
|
+
@classmethod
|
|
145
|
+
def create_hybrid_manager(
|
|
146
|
+
cls,
|
|
147
|
+
config: MemoryConfig,
|
|
148
|
+
primary_mode: str = "multi_user",
|
|
149
|
+
fallback_mode: str = "multi_agent"
|
|
150
|
+
) -> AgentMemoryManagerBase:
|
|
151
|
+
"""
|
|
152
|
+
Create a hybrid memory manager with specific modes.
|
|
153
|
+
|
|
154
|
+
Args:
|
|
155
|
+
config: Memory configuration object
|
|
156
|
+
primary_mode: Primary management mode
|
|
157
|
+
fallback_mode: Fallback management mode
|
|
158
|
+
|
|
159
|
+
Returns:
|
|
160
|
+
HybridMemoryManager instance
|
|
161
|
+
"""
|
|
162
|
+
# Ensure hybrid config is set
|
|
163
|
+
if not hasattr(config, 'agent_memory'):
|
|
164
|
+
raise ValueError("Agent memory configuration not found")
|
|
165
|
+
|
|
166
|
+
config.agent_memory.mode = "hybrid"
|
|
167
|
+
config.agent_memory.hybrid_config.enabled = True
|
|
168
|
+
config.agent_memory.hybrid_config.primary_mode = primary_mode
|
|
169
|
+
config.agent_memory.hybrid_config.fallback_mode = fallback_mode
|
|
170
|
+
|
|
171
|
+
return cls.create_from_config(config)
|
|
172
|
+
|
|
173
|
+
@classmethod
|
|
174
|
+
def create_multi_agent_manager(
|
|
175
|
+
cls,
|
|
176
|
+
config: MemoryConfig,
|
|
177
|
+
enable_collaboration: bool = True,
|
|
178
|
+
default_scope: str = "private"
|
|
179
|
+
) -> AgentMemoryManagerBase:
|
|
180
|
+
"""
|
|
181
|
+
Create a multi-agent memory manager with specific settings.
|
|
182
|
+
|
|
183
|
+
Args:
|
|
184
|
+
config: Memory configuration object
|
|
185
|
+
enable_collaboration: Whether to enable collaboration
|
|
186
|
+
default_scope: Default memory scope
|
|
187
|
+
|
|
188
|
+
Returns:
|
|
189
|
+
MultiAgentMemoryManager instance
|
|
190
|
+
"""
|
|
191
|
+
# Ensure multi-agent config is set
|
|
192
|
+
if not hasattr(config, 'agent_memory'):
|
|
193
|
+
raise ValueError("Agent memory configuration not found")
|
|
194
|
+
|
|
195
|
+
config.agent_memory.mode = "multi_agent"
|
|
196
|
+
config.agent_memory.multi_agent_config.enabled = True
|
|
197
|
+
config.agent_memory.multi_agent_config.default_collaboration_level = (
|
|
198
|
+
"collaborative" if enable_collaboration else "isolated"
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
return cls.create_from_config(config)
|
|
202
|
+
|
|
203
|
+
@classmethod
|
|
204
|
+
def create_multi_user_manager(
|
|
205
|
+
cls,
|
|
206
|
+
config: MemoryConfig,
|
|
207
|
+
user_isolation: bool = True,
|
|
208
|
+
cross_user_sharing: bool = False
|
|
209
|
+
) -> AgentMemoryManagerBase:
|
|
210
|
+
"""
|
|
211
|
+
Create a multi-user memory manager with specific settings.
|
|
212
|
+
|
|
213
|
+
Args:
|
|
214
|
+
config: Memory configuration object
|
|
215
|
+
user_isolation: Whether to enable user isolation
|
|
216
|
+
cross_user_sharing: Whether to allow cross-user sharing
|
|
217
|
+
|
|
218
|
+
Returns:
|
|
219
|
+
MultiUserMemoryManager instance
|
|
220
|
+
"""
|
|
221
|
+
# Ensure multi-user config is set
|
|
222
|
+
if not hasattr(config, 'agent_memory'):
|
|
223
|
+
raise ValueError("Agent memory configuration not found")
|
|
224
|
+
|
|
225
|
+
config.agent_memory.mode = "multi_user"
|
|
226
|
+
config.agent_memory.multi_user_config.user_isolation = user_isolation
|
|
227
|
+
config.agent_memory.multi_user_config.cross_user_sharing = cross_user_sharing
|
|
228
|
+
|
|
229
|
+
return cls.create_from_config(config)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Implementation classes for agent memory managers.
|
|
3
|
+
|
|
4
|
+
This module provides concrete implementations of the agent memory manager
|
|
5
|
+
abstract base classes for different scenarios.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from .multi_agent import MultiAgentMemoryManager
|
|
9
|
+
from .multi_user import MultiUserMemoryManager
|
|
10
|
+
from .hybrid import HybridMemoryManager
|
|
11
|
+
|
|
12
|
+
__all__ = [
|
|
13
|
+
"MultiAgentMemoryManager",
|
|
14
|
+
"MultiUserMemoryManager",
|
|
15
|
+
"HybridMemoryManager"
|
|
16
|
+
]
|