memorisdk 1.0.2__py3-none-any.whl → 2.0.1__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 (48) hide show
  1. memori/__init__.py +24 -8
  2. memori/agents/conscious_agent.py +252 -414
  3. memori/agents/memory_agent.py +487 -224
  4. memori/agents/retrieval_agent.py +491 -68
  5. memori/config/memory_manager.py +323 -0
  6. memori/core/conversation.py +393 -0
  7. memori/core/database.py +386 -371
  8. memori/core/memory.py +1683 -532
  9. memori/core/providers.py +217 -0
  10. memori/database/adapters/__init__.py +10 -0
  11. memori/database/adapters/mysql_adapter.py +331 -0
  12. memori/database/adapters/postgresql_adapter.py +291 -0
  13. memori/database/adapters/sqlite_adapter.py +229 -0
  14. memori/database/auto_creator.py +320 -0
  15. memori/database/connection_utils.py +207 -0
  16. memori/database/connectors/base_connector.py +283 -0
  17. memori/database/connectors/mysql_connector.py +240 -18
  18. memori/database/connectors/postgres_connector.py +277 -4
  19. memori/database/connectors/sqlite_connector.py +178 -3
  20. memori/database/models.py +400 -0
  21. memori/database/queries/base_queries.py +1 -1
  22. memori/database/queries/memory_queries.py +91 -2
  23. memori/database/query_translator.py +222 -0
  24. memori/database/schema_generators/__init__.py +7 -0
  25. memori/database/schema_generators/mysql_schema_generator.py +215 -0
  26. memori/database/search/__init__.py +8 -0
  27. memori/database/search/mysql_search_adapter.py +255 -0
  28. memori/database/search/sqlite_search_adapter.py +180 -0
  29. memori/database/search_service.py +700 -0
  30. memori/database/sqlalchemy_manager.py +888 -0
  31. memori/integrations/__init__.py +36 -11
  32. memori/integrations/litellm_integration.py +340 -6
  33. memori/integrations/openai_integration.py +506 -240
  34. memori/tools/memory_tool.py +94 -4
  35. memori/utils/input_validator.py +395 -0
  36. memori/utils/pydantic_models.py +138 -36
  37. memori/utils/query_builder.py +530 -0
  38. memori/utils/security_audit.py +594 -0
  39. memori/utils/security_integration.py +339 -0
  40. memori/utils/transaction_manager.py +547 -0
  41. {memorisdk-1.0.2.dist-info → memorisdk-2.0.1.dist-info}/METADATA +56 -23
  42. memorisdk-2.0.1.dist-info/RECORD +66 -0
  43. memori/scripts/llm_text.py +0 -50
  44. memorisdk-1.0.2.dist-info/RECORD +0 -44
  45. memorisdk-1.0.2.dist-info/entry_points.txt +0 -2
  46. {memorisdk-1.0.2.dist-info → memorisdk-2.0.1.dist-info}/WHEEL +0 -0
  47. {memorisdk-1.0.2.dist-info → memorisdk-2.0.1.dist-info}/licenses/LICENSE +0 -0
  48. {memorisdk-1.0.2.dist-info → memorisdk-2.0.1.dist-info}/top_level.txt +0 -0
@@ -19,6 +19,26 @@ class MemoryCategoryType(str, Enum):
19
19
  rule = "rule"
20
20
 
21
21
 
22
+ class MemoryClassification(str, Enum):
23
+ """Enhanced memory classification for long-term storage"""
24
+
25
+ ESSENTIAL = "essential" # Core facts, preferences, skills
26
+ CONTEXTUAL = "contextual" # Project context, ongoing work
27
+ CONVERSATIONAL = "conversational" # Regular chat, questions, discussions
28
+ REFERENCE = "reference" # Code examples, technical references
29
+ PERSONAL = "personal" # User details, relationships, life events
30
+ CONSCIOUS_INFO = "conscious-info" # Direct promotion to short-term context
31
+
32
+
33
+ class MemoryImportanceLevel(str, Enum):
34
+ """Memory importance levels"""
35
+
36
+ CRITICAL = "critical" # Must never be lost
37
+ HIGH = "high" # Very important for context
38
+ MEDIUM = "medium" # Useful to remember
39
+ LOW = "low" # Nice to have context
40
+
41
+
22
42
  class RetentionType(str, Enum):
23
43
  """Memory retention types"""
24
44
 
@@ -122,42 +142,6 @@ class MemoryImportance(BaseModel):
122
142
  )
123
143
 
124
144
 
125
- class ProcessedMemory(BaseModel):
126
- """Complete processed memory with all extracted information"""
127
-
128
- # Core categorization
129
- category: MemoryCategory
130
-
131
- # Entity extraction
132
- entities: ExtractedEntities
133
-
134
- # Importance and retention
135
- importance: MemoryImportance
136
-
137
- # Content processing
138
- summary: str = Field(description="Concise, searchable summary of the memory")
139
- searchable_content: str = Field(
140
- description="Content optimized for keyword and semantic search"
141
- )
142
- key_insights: List[str] = Field(
143
- default_factory=list, description="Key insights or takeaways"
144
- )
145
-
146
- # Storage decision
147
- should_store: bool = Field(description="Whether this memory should be stored")
148
- storage_reasoning: str = Field(
149
- description="Why this memory should or shouldn't be stored"
150
- )
151
-
152
- # Metadata (optional fields)
153
- timestamp: Optional[datetime] = Field(
154
- default_factory=datetime.now, description="When this memory was processed"
155
- )
156
- processing_metadata: Optional[Dict[str, str]] = Field(
157
- default=None, description="Additional processing metadata"
158
- )
159
-
160
-
161
145
  class MemorySearchQuery(BaseModel):
162
146
  """Structured query for memory search"""
163
147
 
@@ -244,6 +228,124 @@ class ConversationContext(BaseModel):
244
228
  )
245
229
 
246
230
 
231
+ class ProcessedMemory(BaseModel):
232
+ """Legacy processed memory model for backward compatibility"""
233
+
234
+ content: str = Field(description="The actual memory content")
235
+ summary: str = Field(description="Concise summary for search")
236
+ searchable_content: str = Field(description="Optimized content for search")
237
+ should_store: bool = Field(description="Whether this memory should be stored")
238
+ storage_reasoning: str = Field(
239
+ description="Why this memory should or shouldn't be stored"
240
+ )
241
+ timestamp: datetime = Field(default_factory=datetime.now)
242
+ processing_metadata: Optional[Dict[str, str]] = Field(default=None)
243
+
244
+
245
+ class ProcessedLongTermMemory(BaseModel):
246
+ """Enhanced long-term memory with classification and conscious context"""
247
+
248
+ # Core Memory Content
249
+ content: str = Field(description="The actual memory content")
250
+ summary: str = Field(description="Concise summary for search")
251
+ classification: MemoryClassification = Field(description="Type classification")
252
+ importance: MemoryImportanceLevel = Field(description="Importance level")
253
+
254
+ # Context Information
255
+ topic: Optional[str] = Field(default=None, description="Main topic/subject")
256
+ entities: List[str] = Field(
257
+ default_factory=list, description="People, places, technologies mentioned"
258
+ )
259
+ keywords: List[str] = Field(
260
+ default_factory=list, description="Key terms for search"
261
+ )
262
+
263
+ # Conscious Context Flags
264
+ is_user_context: bool = Field(
265
+ default=False, description="Contains user personal info"
266
+ )
267
+ is_preference: bool = Field(default=False, description="User preference/opinion")
268
+ is_skill_knowledge: bool = Field(
269
+ default=False, description="User's abilities/expertise"
270
+ )
271
+ is_current_project: bool = Field(default=False, description="Current work context")
272
+
273
+ # Memory Management
274
+ duplicate_of: Optional[str] = Field(
275
+ default=None, description="Links to original if duplicate"
276
+ )
277
+ supersedes: List[str] = Field(
278
+ default_factory=list, description="Previous memories this replaces"
279
+ )
280
+ related_memories: List[str] = Field(
281
+ default_factory=list, description="Connected memory IDs"
282
+ )
283
+
284
+ # Technical Metadata
285
+ conversation_id: str = Field(description="Source conversation")
286
+ confidence_score: float = Field(
287
+ default=0.8, description="AI confidence in extraction"
288
+ )
289
+ extraction_timestamp: datetime = Field(default_factory=datetime.now)
290
+ last_accessed: Optional[datetime] = Field(default=None)
291
+ access_count: int = Field(default=0)
292
+
293
+ # Classification Reasoning
294
+ classification_reason: str = Field(description="Why this classification was chosen")
295
+ promotion_eligible: bool = Field(
296
+ default=False, description="Should be promoted to short-term"
297
+ )
298
+
299
+ @property
300
+ def importance_score(self) -> float:
301
+ """Convert importance level to numeric score"""
302
+ return {"critical": 0.9, "high": 0.7, "medium": 0.5, "low": 0.3}.get(
303
+ self.importance, 0.5
304
+ )
305
+
306
+
307
+ class UserContextProfile(BaseModel):
308
+ """Permanent user context for conscious ingestion"""
309
+
310
+ # Core Identity
311
+ name: Optional[str] = None
312
+ pronouns: Optional[str] = None
313
+ location: Optional[str] = None
314
+ timezone: Optional[str] = None
315
+
316
+ # Professional Context
317
+ job_title: Optional[str] = None
318
+ company: Optional[str] = None
319
+ industry: Optional[str] = None
320
+ experience_level: Optional[str] = None
321
+ specializations: List[str] = Field(default_factory=list)
322
+
323
+ # Technical Stack
324
+ primary_languages: List[str] = Field(default_factory=list)
325
+ frameworks: List[str] = Field(default_factory=list)
326
+ tools: List[str] = Field(default_factory=list)
327
+ environment: Optional[str] = None
328
+
329
+ # Behavioral Preferences
330
+ communication_style: Optional[str] = None
331
+ technical_depth: Optional[str] = None
332
+ response_preference: Optional[str] = None
333
+
334
+ # Current Context
335
+ active_projects: List[str] = Field(default_factory=list)
336
+ learning_goals: List[str] = Field(default_factory=list)
337
+ domain_expertise: List[str] = Field(default_factory=list)
338
+
339
+ # Values & Constraints
340
+ code_standards: List[str] = Field(default_factory=list)
341
+ time_constraints: Optional[str] = None
342
+ technology_preferences: List[str] = Field(default_factory=list)
343
+
344
+ # Metadata
345
+ last_updated: datetime = Field(default_factory=datetime.now)
346
+ version: int = 1
347
+
348
+
247
349
  class MemoryStats(BaseModel):
248
350
  """Statistics about stored memories"""
249
351