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.

Files changed (62) hide show
  1. memori/__init__.py +3 -3
  2. memori/agents/conscious_agent.py +289 -77
  3. memori/agents/memory_agent.py +19 -9
  4. memori/agents/retrieval_agent.py +59 -51
  5. memori/config/manager.py +7 -7
  6. memori/config/memory_manager.py +25 -25
  7. memori/config/settings.py +13 -6
  8. memori/core/conversation.py +15 -15
  9. memori/core/database.py +14 -13
  10. memori/core/memory.py +376 -105
  11. memori/core/providers.py +25 -25
  12. memori/database/__init__.py +11 -0
  13. memori/database/adapters/__init__.py +11 -0
  14. memori/database/adapters/mongodb_adapter.py +739 -0
  15. memori/database/adapters/mysql_adapter.py +8 -8
  16. memori/database/adapters/postgresql_adapter.py +6 -6
  17. memori/database/adapters/sqlite_adapter.py +6 -6
  18. memori/database/auto_creator.py +8 -9
  19. memori/database/connection_utils.py +5 -5
  20. memori/database/connectors/__init__.py +11 -0
  21. memori/database/connectors/base_connector.py +18 -19
  22. memori/database/connectors/mongodb_connector.py +527 -0
  23. memori/database/connectors/mysql_connector.py +13 -15
  24. memori/database/connectors/postgres_connector.py +12 -12
  25. memori/database/connectors/sqlite_connector.py +11 -11
  26. memori/database/models.py +2 -2
  27. memori/database/mongodb_manager.py +1402 -0
  28. memori/database/queries/base_queries.py +3 -4
  29. memori/database/queries/chat_queries.py +3 -5
  30. memori/database/queries/entity_queries.py +3 -5
  31. memori/database/queries/memory_queries.py +3 -5
  32. memori/database/query_translator.py +11 -11
  33. memori/database/schema_generators/__init__.py +11 -0
  34. memori/database/schema_generators/mongodb_schema_generator.py +666 -0
  35. memori/database/schema_generators/mysql_schema_generator.py +2 -4
  36. memori/database/search/__init__.py +11 -0
  37. memori/database/search/mongodb_search_adapter.py +653 -0
  38. memori/database/search/mysql_search_adapter.py +8 -8
  39. memori/database/search/sqlite_search_adapter.py +6 -6
  40. memori/database/search_service.py +17 -17
  41. memori/database/sqlalchemy_manager.py +10 -12
  42. memori/integrations/__init__.py +1 -1
  43. memori/integrations/anthropic_integration.py +1 -3
  44. memori/integrations/litellm_integration.py +23 -6
  45. memori/integrations/openai_integration.py +31 -3
  46. memori/tools/memory_tool.py +10 -9
  47. memori/utils/exceptions.py +58 -58
  48. memori/utils/helpers.py +11 -12
  49. memori/utils/input_validator.py +10 -12
  50. memori/utils/logging.py +4 -4
  51. memori/utils/pydantic_models.py +57 -57
  52. memori/utils/query_builder.py +20 -20
  53. memori/utils/security_audit.py +28 -28
  54. memori/utils/security_integration.py +9 -9
  55. memori/utils/transaction_manager.py +20 -19
  56. memori/utils/validators.py +6 -6
  57. {memorisdk-2.0.1.dist-info → memorisdk-2.1.0.dist-info}/METADATA +22 -12
  58. memorisdk-2.1.0.dist-info/RECORD +71 -0
  59. memorisdk-2.0.1.dist-info/RECORD +0 -66
  60. {memorisdk-2.0.1.dist-info → memorisdk-2.1.0.dist-info}/WHEEL +0 -0
  61. {memorisdk-2.0.1.dist-info → memorisdk-2.1.0.dist-info}/licenses/LICENSE +0 -0
  62. {memorisdk-2.0.1.dist-info → memorisdk-2.1.0.dist-info}/top_level.txt +0 -0
memori/core/providers.py CHANGED
@@ -4,7 +4,7 @@ Provider configuration for different LLM providers (OpenAI, Azure, custom)
4
4
 
5
5
  from dataclasses import dataclass
6
6
  from enum import Enum
7
- from typing import Any, Dict, Optional
7
+ from typing import Any
8
8
 
9
9
  from loguru import logger
10
10
 
@@ -28,35 +28,35 @@ class ProviderConfig:
28
28
  """
29
29
 
30
30
  # Common parameters
31
- api_key: Optional[str] = None
32
- api_type: Optional[str] = None # "openai", "azure", or custom
33
- base_url: Optional[str] = None # Custom endpoint URL
34
- timeout: Optional[float] = None
35
- max_retries: Optional[int] = None
31
+ api_key: str | None = None
32
+ api_type: str | None = None # "openai", "azure", or custom
33
+ base_url: str | None = None # Custom endpoint URL
34
+ timeout: float | None = None
35
+ max_retries: int | None = None
36
36
 
37
37
  # Azure-specific parameters
38
- azure_endpoint: Optional[str] = None
39
- azure_deployment: Optional[str] = None
40
- api_version: Optional[str] = None
41
- azure_ad_token: Optional[str] = None
38
+ azure_endpoint: str | None = None
39
+ azure_deployment: str | None = None
40
+ api_version: str | None = None
41
+ azure_ad_token: str | None = None
42
42
 
43
43
  # OpenAI-specific parameters
44
- organization: Optional[str] = None
45
- project: Optional[str] = None
44
+ organization: str | None = None
45
+ project: str | None = None
46
46
 
47
47
  # Model configuration
48
- model: Optional[str] = None # User can specify model, defaults to gpt-4o if not set
48
+ model: str | None = None # User can specify model, defaults to gpt-4o if not set
49
49
 
50
50
  # Additional headers for custom providers
51
- default_headers: Optional[Dict[str, str]] = None
52
- default_query: Optional[Dict[str, Any]] = None
51
+ default_headers: dict[str, str] | None = None
52
+ default_query: dict[str, Any] | None = None
53
53
 
54
54
  # HTTP client configuration
55
- http_client: Optional[Any] = None
55
+ http_client: Any | None = None
56
56
 
57
57
  @classmethod
58
58
  def from_openai(
59
- cls, api_key: Optional[str] = None, model: Optional[str] = None, **kwargs
59
+ cls, api_key: str | None = None, model: str | None = None, **kwargs
60
60
  ):
61
61
  """Create configuration for standard OpenAI"""
62
62
  return cls(api_key=api_key, api_type="openai", model=model, **kwargs)
@@ -64,11 +64,11 @@ class ProviderConfig:
64
64
  @classmethod
65
65
  def from_azure(
66
66
  cls,
67
- api_key: Optional[str] = None,
68
- azure_endpoint: Optional[str] = None,
69
- azure_deployment: Optional[str] = None,
70
- api_version: Optional[str] = None,
71
- model: Optional[str] = None,
67
+ api_key: str | None = None,
68
+ azure_endpoint: str | None = None,
69
+ azure_deployment: str | None = None,
70
+ api_version: str | None = None,
71
+ model: str | None = None,
72
72
  **kwargs,
73
73
  ):
74
74
  """Create configuration for Azure OpenAI"""
@@ -86,8 +86,8 @@ class ProviderConfig:
86
86
  def from_custom(
87
87
  cls,
88
88
  base_url: str,
89
- api_key: Optional[str] = None,
90
- model: Optional[str] = None,
89
+ api_key: str | None = None,
90
+ model: str | None = None,
91
91
  **kwargs,
92
92
  ):
93
93
  """Create configuration for custom OpenAI-compatible endpoints"""
@@ -95,7 +95,7 @@ class ProviderConfig:
95
95
  api_key=api_key, api_type="custom", base_url=base_url, model=model, **kwargs
96
96
  )
97
97
 
98
- def get_openai_client_kwargs(self) -> Dict[str, Any]:
98
+ def get_openai_client_kwargs(self) -> dict[str, Any]:
99
99
  """
100
100
  Get kwargs for OpenAI client initialization based on provider type.
101
101
 
@@ -2,4 +2,15 @@
2
2
 
3
3
  from .connectors import MySQLConnector, PostgreSQLConnector, SQLiteConnector
4
4
 
5
+ try:
6
+ from .connectors import MongoDBConnector
7
+
8
+ MONGODB_AVAILABLE = True
9
+ except ImportError:
10
+ MongoDBConnector = None # type: ignore
11
+ MONGODB_AVAILABLE = False
12
+
5
13
  __all__ = ["SQLiteConnector", "PostgreSQLConnector", "MySQLConnector"]
14
+
15
+ if MONGODB_AVAILABLE:
16
+ __all__.append("MongoDBConnector")
@@ -7,4 +7,15 @@ from .mysql_adapter import MySQLSearchAdapter
7
7
  from .postgresql_adapter import PostgreSQLSearchAdapter
8
8
  from .sqlite_adapter import SQLiteSearchAdapter
9
9
 
10
+ try:
11
+ from .mongodb_adapter import MongoDBAdapter
12
+
13
+ MONGODB_ADAPTER_AVAILABLE = True
14
+ except ImportError:
15
+ MongoDBAdapter = None # type: ignore
16
+ MONGODB_ADAPTER_AVAILABLE = False
17
+
10
18
  __all__ = ["SQLiteSearchAdapter", "PostgreSQLSearchAdapter", "MySQLSearchAdapter"]
19
+
20
+ if MONGODB_ADAPTER_AVAILABLE:
21
+ __all__.append("MongoDBAdapter")