memorisdk 2.0.1__py3-none-any.whl → 2.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.
Potentially problematic release.
This version of memorisdk might be problematic. Click here for more details.
- memori/__init__.py +3 -3
- memori/agents/conscious_agent.py +289 -77
- memori/agents/memory_agent.py +19 -9
- memori/agents/retrieval_agent.py +59 -51
- memori/config/manager.py +7 -7
- memori/config/memory_manager.py +25 -25
- memori/config/settings.py +13 -6
- memori/core/conversation.py +15 -15
- memori/core/database.py +14 -13
- memori/core/memory.py +376 -105
- memori/core/providers.py +25 -25
- memori/database/__init__.py +11 -0
- memori/database/adapters/__init__.py +11 -0
- memori/database/adapters/mongodb_adapter.py +739 -0
- memori/database/adapters/mysql_adapter.py +8 -8
- memori/database/adapters/postgresql_adapter.py +6 -6
- memori/database/adapters/sqlite_adapter.py +6 -6
- memori/database/auto_creator.py +8 -9
- memori/database/connection_utils.py +5 -5
- memori/database/connectors/__init__.py +11 -0
- memori/database/connectors/base_connector.py +18 -19
- memori/database/connectors/mongodb_connector.py +527 -0
- memori/database/connectors/mysql_connector.py +13 -15
- memori/database/connectors/postgres_connector.py +12 -12
- memori/database/connectors/sqlite_connector.py +11 -11
- memori/database/models.py +2 -2
- memori/database/mongodb_manager.py +1402 -0
- memori/database/queries/base_queries.py +3 -4
- memori/database/queries/chat_queries.py +3 -5
- memori/database/queries/entity_queries.py +3 -5
- memori/database/queries/memory_queries.py +3 -5
- memori/database/query_translator.py +11 -11
- memori/database/schema_generators/__init__.py +11 -0
- memori/database/schema_generators/mongodb_schema_generator.py +666 -0
- memori/database/schema_generators/mysql_schema_generator.py +2 -4
- memori/database/search/__init__.py +11 -0
- memori/database/search/mongodb_search_adapter.py +653 -0
- memori/database/search/mysql_search_adapter.py +8 -8
- memori/database/search/sqlite_search_adapter.py +6 -6
- memori/database/search_service.py +17 -17
- memori/database/sqlalchemy_manager.py +10 -12
- memori/integrations/__init__.py +1 -1
- memori/integrations/anthropic_integration.py +1 -3
- memori/integrations/litellm_integration.py +23 -6
- memori/integrations/openai_integration.py +31 -3
- memori/tools/memory_tool.py +10 -9
- memori/utils/exceptions.py +58 -58
- memori/utils/helpers.py +11 -12
- memori/utils/input_validator.py +10 -12
- memori/utils/logging.py +4 -4
- memori/utils/pydantic_models.py +57 -57
- memori/utils/query_builder.py +20 -20
- memori/utils/security_audit.py +28 -28
- memori/utils/security_integration.py +9 -9
- memori/utils/transaction_manager.py +20 -19
- memori/utils/validators.py +6 -6
- {memorisdk-2.0.1.dist-info → memorisdk-2.1.0.dist-info}/METADATA +22 -12
- memorisdk-2.1.0.dist-info/RECORD +71 -0
- memorisdk-2.0.1.dist-info/RECORD +0 -66
- {memorisdk-2.0.1.dist-info → memorisdk-2.1.0.dist-info}/WHEEL +0 -0
- {memorisdk-2.0.1.dist-info → memorisdk-2.1.0.dist-info}/licenses/LICENSE +0 -0
- {memorisdk-2.0.1.dist-info → memorisdk-2.1.0.dist-info}/top_level.txt +0 -0
|
@@ -3,24 +3,23 @@ Base database queries and schema operations
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
from abc import ABC, abstractmethod
|
|
6
|
-
from typing import Dict
|
|
7
6
|
|
|
8
7
|
|
|
9
8
|
class BaseQueries(ABC):
|
|
10
9
|
"""Abstract base class for database queries"""
|
|
11
10
|
|
|
12
11
|
@abstractmethod
|
|
13
|
-
def get_table_creation_queries(self) ->
|
|
12
|
+
def get_table_creation_queries(self) -> dict[str, str]:
|
|
14
13
|
"""Return dictionary of table creation SQL statements"""
|
|
15
14
|
pass
|
|
16
15
|
|
|
17
16
|
@abstractmethod
|
|
18
|
-
def get_index_creation_queries(self) ->
|
|
17
|
+
def get_index_creation_queries(self) -> dict[str, str]:
|
|
19
18
|
"""Return dictionary of index creation SQL statements"""
|
|
20
19
|
pass
|
|
21
20
|
|
|
22
21
|
@abstractmethod
|
|
23
|
-
def get_trigger_creation_queries(self) ->
|
|
22
|
+
def get_trigger_creation_queries(self) -> dict[str, str]:
|
|
24
23
|
"""Return dictionary of trigger creation SQL statements"""
|
|
25
24
|
pass
|
|
26
25
|
|
|
@@ -2,27 +2,25 @@
|
|
|
2
2
|
Chat history database queries
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
from typing import Dict
|
|
6
|
-
|
|
7
5
|
from .base_queries import BaseQueries
|
|
8
6
|
|
|
9
7
|
|
|
10
8
|
class ChatQueries(BaseQueries):
|
|
11
9
|
"""Centralized chat history SQL queries"""
|
|
12
10
|
|
|
13
|
-
def get_table_creation_queries(self) ->
|
|
11
|
+
def get_table_creation_queries(self) -> dict[str, str]:
|
|
14
12
|
"""Chat table creation queries"""
|
|
15
13
|
from .base_queries import SchemaQueries
|
|
16
14
|
|
|
17
15
|
return {"chat_history": SchemaQueries.TABLE_CREATION["chat_history"]}
|
|
18
16
|
|
|
19
|
-
def get_index_creation_queries(self) ->
|
|
17
|
+
def get_index_creation_queries(self) -> dict[str, str]:
|
|
20
18
|
"""Chat index creation queries"""
|
|
21
19
|
from .base_queries import SchemaQueries
|
|
22
20
|
|
|
23
21
|
return {k: v for k, v in SchemaQueries.INDEX_CREATION.items() if "chat" in k}
|
|
24
22
|
|
|
25
|
-
def get_trigger_creation_queries(self) ->
|
|
23
|
+
def get_trigger_creation_queries(self) -> dict[str, str]:
|
|
26
24
|
"""Chat trigger creation queries"""
|
|
27
25
|
return {} # No triggers for chat history currently
|
|
28
26
|
|
|
@@ -2,15 +2,13 @@
|
|
|
2
2
|
Entity and relationship database queries
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
from typing import Dict
|
|
6
|
-
|
|
7
5
|
from .base_queries import BaseQueries
|
|
8
6
|
|
|
9
7
|
|
|
10
8
|
class EntityQueries(BaseQueries):
|
|
11
9
|
"""Centralized entity and relationship SQL queries"""
|
|
12
10
|
|
|
13
|
-
def get_table_creation_queries(self) ->
|
|
11
|
+
def get_table_creation_queries(self) -> dict[str, str]:
|
|
14
12
|
"""Entity table creation queries"""
|
|
15
13
|
from .base_queries import SchemaQueries
|
|
16
14
|
|
|
@@ -21,7 +19,7 @@ class EntityQueries(BaseQueries):
|
|
|
21
19
|
],
|
|
22
20
|
}
|
|
23
21
|
|
|
24
|
-
def get_index_creation_queries(self) ->
|
|
22
|
+
def get_index_creation_queries(self) -> dict[str, str]:
|
|
25
23
|
"""Entity index creation queries"""
|
|
26
24
|
from .base_queries import SchemaQueries
|
|
27
25
|
|
|
@@ -31,7 +29,7 @@ class EntityQueries(BaseQueries):
|
|
|
31
29
|
if any(word in k for word in ["entities", "relationships"])
|
|
32
30
|
}
|
|
33
31
|
|
|
34
|
-
def get_trigger_creation_queries(self) ->
|
|
32
|
+
def get_trigger_creation_queries(self) -> dict[str, str]:
|
|
35
33
|
"""Entity trigger creation queries"""
|
|
36
34
|
return {} # No triggers for entities currently
|
|
37
35
|
|
|
@@ -2,15 +2,13 @@
|
|
|
2
2
|
Memory-related database queries
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
from typing import Dict
|
|
6
|
-
|
|
7
5
|
from .base_queries import BaseQueries
|
|
8
6
|
|
|
9
7
|
|
|
10
8
|
class MemoryQueries(BaseQueries):
|
|
11
9
|
"""Centralized memory-related SQL queries"""
|
|
12
10
|
|
|
13
|
-
def get_table_creation_queries(self) ->
|
|
11
|
+
def get_table_creation_queries(self) -> dict[str, str]:
|
|
14
12
|
"""Memory table creation queries"""
|
|
15
13
|
from .base_queries import SchemaQueries
|
|
16
14
|
|
|
@@ -20,7 +18,7 @@ class MemoryQueries(BaseQueries):
|
|
|
20
18
|
"rules_memory": SchemaQueries.TABLE_CREATION["rules_memory"],
|
|
21
19
|
}
|
|
22
20
|
|
|
23
|
-
def get_index_creation_queries(self) ->
|
|
21
|
+
def get_index_creation_queries(self) -> dict[str, str]:
|
|
24
22
|
"""Memory index creation queries"""
|
|
25
23
|
from .base_queries import SchemaQueries
|
|
26
24
|
|
|
@@ -30,7 +28,7 @@ class MemoryQueries(BaseQueries):
|
|
|
30
28
|
if any(table in k for table in ["short_term", "long_term", "rules"])
|
|
31
29
|
}
|
|
32
30
|
|
|
33
|
-
def get_trigger_creation_queries(self) ->
|
|
31
|
+
def get_trigger_creation_queries(self) -> dict[str, str]:
|
|
34
32
|
"""Memory trigger creation queries"""
|
|
35
33
|
from .base_queries import SchemaQueries
|
|
36
34
|
|
|
@@ -6,7 +6,7 @@ differences between SQLite, PostgreSQL, and MySQL, particularly for
|
|
|
6
6
|
boolean values and other database-specific syntax.
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
-
from typing import Any
|
|
9
|
+
from typing import Any
|
|
10
10
|
|
|
11
11
|
from loguru import logger
|
|
12
12
|
|
|
@@ -32,7 +32,7 @@ class QueryParameterTranslator:
|
|
|
32
32
|
self.database_type = database_type.lower()
|
|
33
33
|
logger.debug(f"QueryParameterTranslator initialized for {self.database_type}")
|
|
34
34
|
|
|
35
|
-
def translate_parameters(self, parameters:
|
|
35
|
+
def translate_parameters(self, parameters: dict[str, Any]) -> dict[str, Any]:
|
|
36
36
|
"""
|
|
37
37
|
Translate parameters to be compatible with the target database.
|
|
38
38
|
|
|
@@ -70,7 +70,7 @@ class QueryParameterTranslator:
|
|
|
70
70
|
return None
|
|
71
71
|
|
|
72
72
|
# Handle lists/arrays
|
|
73
|
-
if isinstance(value,
|
|
73
|
+
if isinstance(value, list | tuple):
|
|
74
74
|
return [self._translate_value(item) for item in value]
|
|
75
75
|
|
|
76
76
|
# Handle dictionaries
|
|
@@ -80,7 +80,7 @@ class QueryParameterTranslator:
|
|
|
80
80
|
# Return other values unchanged
|
|
81
81
|
return value
|
|
82
82
|
|
|
83
|
-
def _translate_boolean(self, value: bool) ->
|
|
83
|
+
def _translate_boolean(self, value: bool) -> bool | int:
|
|
84
84
|
"""
|
|
85
85
|
Translate boolean values for database compatibility.
|
|
86
86
|
|
|
@@ -159,8 +159,8 @@ class QueryParameterTranslator:
|
|
|
159
159
|
return True
|
|
160
160
|
|
|
161
161
|
def translate_query_with_parameters(
|
|
162
|
-
self, query: str, parameters:
|
|
163
|
-
) -> tuple[str,
|
|
162
|
+
self, query: str, parameters: dict[str, Any]
|
|
163
|
+
) -> tuple[str, dict[str, Any]]:
|
|
164
164
|
"""
|
|
165
165
|
Translate both query and parameters for database compatibility.
|
|
166
166
|
|
|
@@ -180,17 +180,17 @@ class QueryParameterTranslator:
|
|
|
180
180
|
|
|
181
181
|
return query, translated_params
|
|
182
182
|
|
|
183
|
-
def get_boolean_true(self) ->
|
|
183
|
+
def get_boolean_true(self) -> bool | int:
|
|
184
184
|
"""Get database-appropriate TRUE value."""
|
|
185
185
|
return self._translate_boolean(True)
|
|
186
186
|
|
|
187
|
-
def get_boolean_false(self) ->
|
|
187
|
+
def get_boolean_false(self) -> bool | int:
|
|
188
188
|
"""Get database-appropriate FALSE value."""
|
|
189
189
|
return self._translate_boolean(False)
|
|
190
190
|
|
|
191
191
|
|
|
192
192
|
# Convenience functions for common boolean translations
|
|
193
|
-
def get_db_boolean(value: bool, database_type: str) ->
|
|
193
|
+
def get_db_boolean(value: bool, database_type: str) -> bool | int:
|
|
194
194
|
"""
|
|
195
195
|
Get database-appropriate boolean value.
|
|
196
196
|
|
|
@@ -206,8 +206,8 @@ def get_db_boolean(value: bool, database_type: str) -> Union[bool, int]:
|
|
|
206
206
|
|
|
207
207
|
|
|
208
208
|
def translate_query_params(
|
|
209
|
-
parameters:
|
|
210
|
-
) ->
|
|
209
|
+
parameters: dict[str, Any], database_type: str
|
|
210
|
+
) -> dict[str, Any]:
|
|
211
211
|
"""
|
|
212
212
|
Convenience function to translate query parameters.
|
|
213
213
|
|
|
@@ -4,4 +4,15 @@ Schema generators for different database backends
|
|
|
4
4
|
|
|
5
5
|
from .mysql_schema_generator import MySQLSchemaGenerator
|
|
6
6
|
|
|
7
|
+
try:
|
|
8
|
+
from .mongodb_schema_generator import MongoDBSchemaGenerator
|
|
9
|
+
|
|
10
|
+
MONGODB_SCHEMA_AVAILABLE = True
|
|
11
|
+
except ImportError:
|
|
12
|
+
MongoDBSchemaGenerator = None # type: ignore
|
|
13
|
+
MONGODB_SCHEMA_AVAILABLE = False
|
|
14
|
+
|
|
7
15
|
__all__ = ["MySQLSchemaGenerator"]
|
|
16
|
+
|
|
17
|
+
if MONGODB_SCHEMA_AVAILABLE:
|
|
18
|
+
__all__.append("MongoDBSchemaGenerator")
|