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.
Files changed (123) hide show
  1. powermem/__init__.py +103 -0
  2. powermem/agent/__init__.py +35 -0
  3. powermem/agent/abstract/__init__.py +22 -0
  4. powermem/agent/abstract/collaboration.py +259 -0
  5. powermem/agent/abstract/context.py +187 -0
  6. powermem/agent/abstract/manager.py +232 -0
  7. powermem/agent/abstract/permission.py +217 -0
  8. powermem/agent/abstract/privacy.py +267 -0
  9. powermem/agent/abstract/scope.py +199 -0
  10. powermem/agent/agent.py +791 -0
  11. powermem/agent/components/__init__.py +18 -0
  12. powermem/agent/components/collaboration_coordinator.py +645 -0
  13. powermem/agent/components/permission_controller.py +586 -0
  14. powermem/agent/components/privacy_protector.py +767 -0
  15. powermem/agent/components/scope_controller.py +685 -0
  16. powermem/agent/factories/__init__.py +16 -0
  17. powermem/agent/factories/agent_factory.py +266 -0
  18. powermem/agent/factories/config_factory.py +308 -0
  19. powermem/agent/factories/memory_factory.py +229 -0
  20. powermem/agent/implementations/__init__.py +16 -0
  21. powermem/agent/implementations/hybrid.py +728 -0
  22. powermem/agent/implementations/multi_agent.py +1040 -0
  23. powermem/agent/implementations/multi_user.py +1020 -0
  24. powermem/agent/types.py +53 -0
  25. powermem/agent/wrappers/__init__.py +14 -0
  26. powermem/agent/wrappers/agent_memory_wrapper.py +427 -0
  27. powermem/agent/wrappers/compatibility_wrapper.py +520 -0
  28. powermem/config_loader.py +318 -0
  29. powermem/configs.py +249 -0
  30. powermem/core/__init__.py +19 -0
  31. powermem/core/async_memory.py +1493 -0
  32. powermem/core/audit.py +258 -0
  33. powermem/core/base.py +165 -0
  34. powermem/core/memory.py +1567 -0
  35. powermem/core/setup.py +162 -0
  36. powermem/core/telemetry.py +215 -0
  37. powermem/integrations/__init__.py +17 -0
  38. powermem/integrations/embeddings/__init__.py +13 -0
  39. powermem/integrations/embeddings/aws_bedrock.py +100 -0
  40. powermem/integrations/embeddings/azure_openai.py +55 -0
  41. powermem/integrations/embeddings/base.py +31 -0
  42. powermem/integrations/embeddings/config/base.py +132 -0
  43. powermem/integrations/embeddings/configs.py +31 -0
  44. powermem/integrations/embeddings/factory.py +48 -0
  45. powermem/integrations/embeddings/gemini.py +39 -0
  46. powermem/integrations/embeddings/huggingface.py +41 -0
  47. powermem/integrations/embeddings/langchain.py +35 -0
  48. powermem/integrations/embeddings/lmstudio.py +29 -0
  49. powermem/integrations/embeddings/mock.py +11 -0
  50. powermem/integrations/embeddings/ollama.py +53 -0
  51. powermem/integrations/embeddings/openai.py +49 -0
  52. powermem/integrations/embeddings/qwen.py +102 -0
  53. powermem/integrations/embeddings/together.py +31 -0
  54. powermem/integrations/embeddings/vertexai.py +54 -0
  55. powermem/integrations/llm/__init__.py +18 -0
  56. powermem/integrations/llm/anthropic.py +87 -0
  57. powermem/integrations/llm/base.py +132 -0
  58. powermem/integrations/llm/config/anthropic.py +56 -0
  59. powermem/integrations/llm/config/azure.py +56 -0
  60. powermem/integrations/llm/config/base.py +62 -0
  61. powermem/integrations/llm/config/deepseek.py +56 -0
  62. powermem/integrations/llm/config/ollama.py +56 -0
  63. powermem/integrations/llm/config/openai.py +79 -0
  64. powermem/integrations/llm/config/qwen.py +68 -0
  65. powermem/integrations/llm/config/qwen_asr.py +46 -0
  66. powermem/integrations/llm/config/vllm.py +56 -0
  67. powermem/integrations/llm/configs.py +26 -0
  68. powermem/integrations/llm/deepseek.py +106 -0
  69. powermem/integrations/llm/factory.py +118 -0
  70. powermem/integrations/llm/gemini.py +201 -0
  71. powermem/integrations/llm/langchain.py +65 -0
  72. powermem/integrations/llm/ollama.py +106 -0
  73. powermem/integrations/llm/openai.py +166 -0
  74. powermem/integrations/llm/openai_structured.py +80 -0
  75. powermem/integrations/llm/qwen.py +207 -0
  76. powermem/integrations/llm/qwen_asr.py +171 -0
  77. powermem/integrations/llm/vllm.py +106 -0
  78. powermem/integrations/rerank/__init__.py +20 -0
  79. powermem/integrations/rerank/base.py +43 -0
  80. powermem/integrations/rerank/config/__init__.py +7 -0
  81. powermem/integrations/rerank/config/base.py +27 -0
  82. powermem/integrations/rerank/configs.py +23 -0
  83. powermem/integrations/rerank/factory.py +68 -0
  84. powermem/integrations/rerank/qwen.py +159 -0
  85. powermem/intelligence/__init__.py +17 -0
  86. powermem/intelligence/ebbinghaus_algorithm.py +354 -0
  87. powermem/intelligence/importance_evaluator.py +361 -0
  88. powermem/intelligence/intelligent_memory_manager.py +284 -0
  89. powermem/intelligence/manager.py +148 -0
  90. powermem/intelligence/plugin.py +229 -0
  91. powermem/prompts/__init__.py +29 -0
  92. powermem/prompts/graph/graph_prompts.py +217 -0
  93. powermem/prompts/graph/graph_tools_prompts.py +469 -0
  94. powermem/prompts/importance_evaluation.py +246 -0
  95. powermem/prompts/intelligent_memory_prompts.py +163 -0
  96. powermem/prompts/templates.py +193 -0
  97. powermem/storage/__init__.py +14 -0
  98. powermem/storage/adapter.py +896 -0
  99. powermem/storage/base.py +109 -0
  100. powermem/storage/config/base.py +13 -0
  101. powermem/storage/config/oceanbase.py +58 -0
  102. powermem/storage/config/pgvector.py +52 -0
  103. powermem/storage/config/sqlite.py +27 -0
  104. powermem/storage/configs.py +159 -0
  105. powermem/storage/factory.py +59 -0
  106. powermem/storage/migration_manager.py +438 -0
  107. powermem/storage/oceanbase/__init__.py +8 -0
  108. powermem/storage/oceanbase/constants.py +162 -0
  109. powermem/storage/oceanbase/oceanbase.py +1384 -0
  110. powermem/storage/oceanbase/oceanbase_graph.py +1441 -0
  111. powermem/storage/pgvector/__init__.py +7 -0
  112. powermem/storage/pgvector/pgvector.py +420 -0
  113. powermem/storage/sqlite/__init__.py +0 -0
  114. powermem/storage/sqlite/sqlite.py +218 -0
  115. powermem/storage/sqlite/sqlite_vector_store.py +311 -0
  116. powermem/utils/__init__.py +35 -0
  117. powermem/utils/utils.py +605 -0
  118. powermem/version.py +23 -0
  119. powermem-0.1.0.dist-info/METADATA +187 -0
  120. powermem-0.1.0.dist-info/RECORD +123 -0
  121. powermem-0.1.0.dist-info/WHEEL +5 -0
  122. powermem-0.1.0.dist-info/licenses/LICENSE +206 -0
  123. 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
+ ]