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
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: memorisdk
3
- Version: 1.0.2
3
+ Version: 2.0.1
4
4
  Summary: The Open-Source Memory Layer for AI Agents & Multi-Agent Systems
5
5
  Author-email: GibsonAI Team <noc@gibsonai.com>
6
6
  License: Apache-2.0
7
7
  Project-URL: Homepage, https://github.com/GibsonAI/memori
8
- Project-URL: Documentation, https://gibsonai.github.io/memori
8
+ Project-URL: Documentation, https://memori.gibsonai.com/docs
9
9
  Project-URL: Repository, https://github.com/GibsonAI/memori.git
10
10
  Project-URL: Bug Tracker, https://github.com/GibsonAI/memori/issues
11
11
  Project-URL: Changelog, https://github.com/GibsonAI/memori/blob/main/CHANGELOG.md
@@ -31,8 +31,9 @@ License-File: LICENSE
31
31
  Requires-Dist: loguru>=0.6.0
32
32
  Requires-Dist: pydantic>=2.0.0
33
33
  Requires-Dist: python-dotenv>=1.0.0
34
- Requires-Dist: click>=8.0.0
34
+ Requires-Dist: sqlalchemy>=2.0.0
35
35
  Requires-Dist: openai>=1.0.0
36
+ Requires-Dist: litellm>=1.0.0
36
37
  Provides-Extra: dev
37
38
  Requires-Dist: black>=23.0; extra == "dev"
38
39
  Requires-Dist: ruff>=0.1.0; extra == "dev"
@@ -40,6 +41,9 @@ Requires-Dist: isort>=5.9.0; extra == "dev"
40
41
  Requires-Dist: mypy>=1.0; extra == "dev"
41
42
  Requires-Dist: pre-commit>=2.15; extra == "dev"
42
43
  Requires-Dist: types-PyYAML>=6.0.0; extra == "dev"
44
+ Requires-Dist: pytest>=6.0; extra == "dev"
45
+ Requires-Dist: pytest-cov>=2.0; extra == "dev"
46
+ Requires-Dist: pytest-asyncio>=0.18.0; extra == "dev"
43
47
  Provides-Extra: docs
44
48
  Requires-Dist: mkdocs>=1.5.0; extra == "docs"
45
49
  Requires-Dist: mkdocs-material>=9.0.0; extra == "docs"
@@ -50,15 +54,31 @@ Provides-Extra: postgres
50
54
  Requires-Dist: psycopg2-binary>=2.9.0; extra == "postgres"
51
55
  Provides-Extra: mysql
52
56
  Requires-Dist: PyMySQL>=1.0.0; extra == "mysql"
57
+ Provides-Extra: databases
58
+ Requires-Dist: psycopg2-binary>=2.9.0; extra == "databases"
59
+ Requires-Dist: PyMySQL>=1.0.0; extra == "databases"
60
+ Provides-Extra: anthropic
61
+ Requires-Dist: anthropic>=0.3.0; extra == "anthropic"
62
+ Provides-Extra: litellm
63
+ Requires-Dist: litellm>=1.0.0; extra == "litellm"
53
64
  Provides-Extra: integrations
54
65
  Requires-Dist: litellm>=1.0.0; extra == "integrations"
55
66
  Requires-Dist: anthropic>=0.3.0; extra == "integrations"
67
+ Provides-Extra: demos
68
+ Requires-Dist: streamlit>=1.28.0; extra == "demos"
69
+ Requires-Dist: pandas>=2.0.0; extra == "demos"
70
+ Requires-Dist: plotly>=5.17.0; extra == "demos"
71
+ Requires-Dist: crewai>=0.152.0; extra == "demos"
72
+ Requires-Dist: crewai-tools>=0.59.0; extra == "demos"
56
73
  Provides-Extra: all
57
74
  Requires-Dist: black>=23.0; extra == "all"
58
75
  Requires-Dist: ruff>=0.1.0; extra == "all"
59
76
  Requires-Dist: isort>=5.9.0; extra == "all"
60
77
  Requires-Dist: mypy>=1.0; extra == "all"
61
78
  Requires-Dist: pre-commit>=2.15; extra == "all"
79
+ Requires-Dist: pytest>=6.0; extra == "all"
80
+ Requires-Dist: pytest-cov>=2.0; extra == "all"
81
+ Requires-Dist: pytest-asyncio>=0.18.0; extra == "all"
62
82
  Requires-Dist: mkdocs>=1.5.0; extra == "all"
63
83
  Requires-Dist: mkdocs-material>=9.0.0; extra == "all"
64
84
  Requires-Dist: mkdocs-git-revision-date-localized-plugin>=1.2.0; extra == "all"
@@ -68,6 +88,9 @@ Requires-Dist: psycopg2-binary>=2.9.0; extra == "all"
68
88
  Requires-Dist: PyMySQL>=1.0.0; extra == "all"
69
89
  Requires-Dist: litellm>=1.0.0; extra == "all"
70
90
  Requires-Dist: anthropic>=0.3.0; extra == "all"
91
+ Requires-Dist: streamlit>=1.28.0; extra == "all"
92
+ Requires-Dist: pandas>=2.0.0; extra == "all"
93
+ Requires-Dist: plotly>=5.17.0; extra == "all"
71
94
  Dynamic: license-file
72
95
 
73
96
  [![GibsonAI](https://github.com/user-attachments/assets/878e341b-5a93-4489-a398-abeca91b6b11)](https://gibsonai.com/)
@@ -83,7 +106,7 @@ Dynamic: license-file
83
106
  </p>
84
107
 
85
108
  <p align="center">
86
- <a href="https://gibsonai.github.io/memori/">Learn more</a>
109
+ <a href="https://memori.gibsonai.com/docs">Learn more</a>
87
110
  ·
88
111
  <a href="https://www.gibsonai.com/discord">Join Discord</a>
89
112
  </p>
@@ -121,12 +144,12 @@ Install Memori:
121
144
  pip install memorisdk
122
145
  ```
123
146
 
124
- ### Example with LiteLLM
147
+ ### Example with OpenAI
125
148
 
126
- 1. Install LiteLLM:
149
+ 1. Install OpenAI:
127
150
 
128
151
  ```bash
129
- pip install litellm
152
+ pip install openai
130
153
  ```
131
154
 
132
155
  2. Set OpenAI API Key:
@@ -139,14 +162,17 @@ export OPENAI_API_KEY="sk-your-openai-key-here"
139
162
 
140
163
  ```python
141
164
  from memori import Memori
142
- from litellm import completion
165
+ from openai import OpenAI
166
+
167
+ # Initialize OpenAI client
168
+ openai_client = OpenAI()
143
169
 
144
170
  # Initialize memory
145
171
  memori = Memori(conscious_ingest=True)
146
172
  memori.enable()
147
173
 
148
174
  print("=== First Conversation - Establishing Context ===")
149
- response1 = completion(
175
+ response1 = openai_client.chat.completions.create(
150
176
  model="gpt-4o-mini",
151
177
  messages=[{
152
178
  "role": "user",
@@ -158,7 +184,7 @@ print("Assistant:", response1.choices[0].message.content)
158
184
  print("\n" + "="*50)
159
185
  print("=== Second Conversation - Memory Provides Context ===")
160
186
 
161
- response2 = completion(
187
+ response2 = openai_client.chat.completions.create(
162
188
  model="gpt-4o-mini",
163
189
  messages=[{
164
190
  "role": "user",
@@ -344,15 +370,15 @@ Works with **ANY** LLM library:
344
370
  ```python
345
371
  memori.enable() # Enable universal recording
346
372
 
347
- # LiteLLM (recommended)
348
- from litellm import completion
349
- completion(model="gpt-4", messages=[...])
350
-
351
373
  # OpenAI
352
- import openai
353
- client = openai.OpenAI()
374
+ from openai import OpenAI
375
+ client = OpenAI()
354
376
  client.chat.completions.create(...)
355
377
 
378
+ # LiteLLM
379
+ from litellm import completion
380
+ completion(model="gpt-4", messages=[...])
381
+
356
382
  # Anthropic
357
383
  import anthropic
358
384
  client = anthropic.Anthropic()
@@ -432,18 +458,25 @@ memori/
432
458
  - **[Memory Retrieval](./memory_retrival_example.py)** - Function calling with memory tools
433
459
  - **[Advanced Config](./examples/advanced_config.py)** - Production configuration
434
460
  - **[Interactive Demo](./memori_example.py)** - Live conscious ingestion showcase
461
+ - **[Simple Multi-User](./examples/multiple-users/simple_multiuser.py)** - Basic demonstration of user memory isolation with namespaces
462
+ - **[FastAPI Multi-User App](./examples/multiple-users/fastapi_multiuser_app.py)** - Full-featured REST API with Swagger UI for testing multi-user functionality
435
463
 
436
464
  ## Framework Integrations
437
465
 
438
466
  Memori works seamlessly with popular AI frameworks:
439
467
 
440
- | Framework | Description | Example | Features |
441
- |-----------|-------------|---------|----------|
442
- | 🤖 [Agno](./examples/integrations/agno_example.py) | Memory-enhanced agent framework integration with persistent conversations | Simple chat agent with memory search | Memory tools, conversation persistence, contextual responses |
443
- | 👥 [CrewAI](./examples/integrations/crewai_example.py) | Multi-agent system with shared memory across agent interactions | Collaborative agents with memory | Agent coordination, shared memory, task-based workflows |
444
- | 🌊 [Digital Ocean AI](./examples/integrations/digital_ocean_example.py) | Memory-enhanced customer support using Digital Ocean's AI platform | Customer support assistant with conversation history | Context injection, session continuity, support analytics |
445
- | 🔗 [LangChain](./examples/integrations/langchain_example.py) | Enterprise-grade agent framework with advanced memory integration | AI assistant with LangChain tools and memory | Custom tools, agent executors, memory persistence, error handling |
446
- | 🚀 [Swarms](./examples/integrations/swarms_example.py) | Multi-agent system framework with persistent memory capabilities | Memory-enhanced Swarms agents with auto/conscious ingestion | Agent memory persistence, multi-agent coordination, contextual awareness |
468
+ | Framework | Description | Example |
469
+ |-----------|-------------|---------|
470
+ | [AgentOps](./examples/integrations/agentops_example.py) | Track and monitor Memori memory operations with comprehensive observability | Memory operation tracking with AgentOps analytics |
471
+ | [Agno](./examples/integrations/agno_example.py) | Memory-enhanced agent framework integration with persistent conversations | Simple chat agent with memory search |
472
+ | [AWS Strands](./examples/integrations/aws_strands_example.py) | Professional development coach with Strands SDK and persistent memory | Career coaching agent with goal tracking |
473
+ | [Azure AI Foundry](./examples/integrations/azure_ai_foundry_example.py) | Azure AI Foundry agents with persistent memory across conversations | Enterprise AI agents with Azure integration |
474
+ | [CamelAI](./examples/integrations/camelai_example.py) | Multi-agent communication framework with automatic memory recording and retrieval | Memory-enhanced chat agents with conversation continuity |
475
+ | [CrewAI](./examples/integrations/crewai_example.py) | Multi-agent system with shared memory across agent interactions | Collaborative agents with memory |
476
+ | [Digital Ocean AI](./examples/integrations/digital_ocean_example.py) | Memory-enhanced customer support using Digital Ocean's AI platform | Customer support assistant with conversation history |
477
+ | [LangChain](./examples/integrations/langchain_example.py) | Enterprise-grade agent framework with advanced memory integration | AI assistant with LangChain tools and memory |
478
+ | [OpenAI Agent](./examples/integrations/openai_agent_example.py) | Memory-enhanced OpenAI Agent with function calling and user preference tracking | Interactive assistant with memory search and user info storage |
479
+ | [Swarms](./examples/integrations/swarms_example.py) | Multi-agent system framework with persistent memory capabilities | Memory-enhanced Swarms agents with auto/conscious ingestion |
447
480
 
448
481
  ## Interactive Demos
449
482
 
@@ -0,0 +1,66 @@
1
+ memori/__init__.py,sha256=1PEpzV75fNiOmS6aIsDAQOpkPzdW2xq64beYADfaG70,3676
2
+ memori/agents/__init__.py,sha256=9M3IG5R10FfVgT8tUzBZ2pZ0SypSpYkFfhtyvMyeTpE,261
3
+ memori/agents/conscious_agent.py,sha256=NQ-dEHRXutrkwo2ssPZ0ct7uHXU2gDa-PQ0d74mUFvk,13459
4
+ memori/agents/memory_agent.py,sha256=tBwkNMtlVDlQ88jATjuL96vQHPfU_HOz_XXOB3vd710,23552
5
+ memori/agents/retrieval_agent.py,sha256=FvGApAzljhubFvyMTM0rCs-JpROg34i0aOFeYh3Ru6s,40222
6
+ memori/config/__init__.py,sha256=tQAxopgOsea02u9iId-ocOY86nWWNGC3rvt3AOFcLn8,295
7
+ memori/config/manager.py,sha256=xi8d8xW3obyV6v9UHDG6idSAymge8yWxGW11e2mI0nQ,10388
8
+ memori/config/memory_manager.py,sha256=hxwkMpUaOkOcnnvgpHxR4PT6iHNj8yNda-o9OpM0Y-g,11020
9
+ memori/config/settings.py,sha256=nrrWD4hwdbtYlIPtJFHgGyMudGP-hz9sA-KBW_7ZZbE,9724
10
+ memori/core/__init__.py,sha256=jvhHn-KL3bzRHs11-4B0BCKH6gkAf6Gf_G59If8fD0M,157
11
+ memori/core/conversation.py,sha256=l1SRLyIrKrcSzqEdqnqLwSqYW6rXtGeH1Fhs7YBI0XU,15825
12
+ memori/core/database.py,sha256=RkBelmgDm_6WoTKISPTz_WYVsPvnVB7NKJuRFWOLbZM,40044
13
+ memori/core/memory.py,sha256=Wg1K8XUxGHwgkVi5nRDY7PhfVSRhAGMGN8xd8KnuQVg,105518
14
+ memori/core/providers.py,sha256=Ix8CEb_kw0Qur1E3_mxydh3RvUpyNy5qGAKK4wuGK6Y,7032
15
+ memori/database/__init__.py,sha256=kMLxwfRfTVvw0oV1kl9v-Dkyqm6ggcsMV6hltqdrN3k,189
16
+ memori/database/auto_creator.py,sha256=pQUKV9hO-wM-vocr-_2I-1kwCofd3z8-KpkHAxLREaM,12686
17
+ memori/database/connection_utils.py,sha256=iAxVvwP-_0UZwmc_y_GOs3-26YlPTmot6_bY8crIPxQ,6741
18
+ memori/database/models.py,sha256=jeC5JiVXjxzk3ABt7BeXfkAYOpyjcQ3OqnuLkfIIRyc,14832
19
+ memori/database/query_translator.py,sha256=oe_BCPamtT-LBBUKChbM0jK4rjI4ZDZtVp7ZUGnpDqs,7026
20
+ memori/database/search_service.py,sha256=9J6rqCY9R0cxJRssbii73s49VvZbMgdAFFJgasoaj9A,26902
21
+ memori/database/sqlalchemy_manager.py,sha256=KvVv3TcBxB-FTiL1YWolRlklDca-YCfdxCWaDhAHILw,34974
22
+ memori/database/adapters/__init__.py,sha256=lSvRPZXJoKTlj4iI8kW5I45OXjKZh8oFb6vqDpJ69sQ,366
23
+ memori/database/adapters/mysql_adapter.py,sha256=WOe-huYmrt-aeDn0YACnH3F5bhSTjG0SePjl4hThd-s,12944
24
+ memori/database/adapters/postgresql_adapter.py,sha256=tGBGoBo340bLluhb9DytflDdVnhkjbgaCY2SvvoUpfA,11358
25
+ memori/database/adapters/sqlite_adapter.py,sha256=FBeBgXlbB0I5vcjtT7rURNnHAkxXdlZ6e4OVEFVe78I,9170
26
+ memori/database/connectors/__init__.py,sha256=tG283nMRMWWM3B4WBfi7PMYnSUcH2Go5C88O91dOjcE,275
27
+ memori/database/connectors/base_connector.py,sha256=9fL4tSEQSPdnHnYbS6BbARrHztyIUy4DUZgZlgauFwo,9646
28
+ memori/database/connectors/mysql_connector.py,sha256=JE4nplaftn5SQI7DMXCe0qiVQyOE3OCIXHjnAUNa5C8,13380
29
+ memori/database/connectors/postgres_connector.py,sha256=sjD0ZjBNk0NZa-SkHRE5EnOqtTZ4z4ksL_-R2qKS7UY,16672
30
+ memori/database/connectors/sqlite_connector.py,sha256=FHPa33rPePkSWlhhYaHeKsjL64IbVyqFukx1le2HQo0,11717
31
+ memori/database/queries/__init__.py,sha256=BIxenJzxOosD2-myGfGrortbq18rQycxBfqdMJhm-Cc,319
32
+ memori/database/queries/base_queries.py,sha256=jUOGHETuPVGNfDPmWja3DSHgGSibP3YyrPRmP55ry4I,10598
33
+ memori/database/queries/chat_queries.py,sha256=gFsLLjAov502Pns9HAMr_MqLDETplZBQSPs9nqWFCnk,4431
34
+ memori/database/queries/entity_queries.py,sha256=no6bzXHNzRs4mmbi4MggW2F19XxfJ-0RQKv3iv84a64,7518
35
+ memori/database/queries/memory_queries.py,sha256=ehBikwSfP-3ClASUEJCmBlxVBI6BZpZHaheYBSSJ79c,9230
36
+ memori/database/schema_generators/__init__.py,sha256=0qN5FEmRgXaqT63HJXEnxaA8y1PebtyM-dZpSKkQfCI,152
37
+ memori/database/schema_generators/mysql_schema_generator.py,sha256=fWT4SR923eb9W2ri5ECLOcuGpBG-ehg1FTazDUjIcbY,8904
38
+ memori/database/search/__init__.py,sha256=3w82tn7AbHC7LewegaQCyU95zl28dZQUbJKBCqZ3eTE,222
39
+ memori/database/search/mysql_search_adapter.py,sha256=vZPA0BWIOsgu4dWsve8sbk0CPR8hULhPNz5vN4PyYW0,9301
40
+ memori/database/search/sqlite_search_adapter.py,sha256=zMkboGrJKkFyA6fx0kHBjUqKMCxaiVdD4F7jGEA8ssU,6840
41
+ memori/database/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
+ memori/database/templates/basic_template.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
+ memori/database/templates/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
+ memori/integrations/__init__.py,sha256=jlTI3TRBpclXXiqbigSUVqpfN9t64Q9B17EhlN543h8,2903
45
+ memori/integrations/anthropic_integration.py,sha256=IJtqPYTcMaYsXKWUabR4XDMpCabg9qMK7d-8T9A1CcY,8169
46
+ memori/integrations/litellm_integration.py,sha256=UWC5huyUMasfZDBzH7MxAVbTXoo70qvyGcrYZI7Gx_Y,12407
47
+ memori/integrations/openai_integration.py,sha256=iQKitY1JY_i-YldcAeePnVdYc6Ns0Gmk_zIoMV302RA,19977
48
+ memori/tools/__init__.py,sha256=0KPbWAFYmvEleacrby4RzhJGW5GPdFiXN6RWwFrbqf4,200
49
+ memori/tools/memory_tool.py,sha256=g4H774npQoYWB8vnTY5xdLrLbEq5i1lK8FDm8MfFtVU,25077
50
+ memori/utils/__init__.py,sha256=e3AN4KfomQBQDsr53HwfvOeTtI3QZMzGQMYpRp8l6ow,1757
51
+ memori/utils/exceptions.py,sha256=JGLo2S8ElG3gBjD4aJeVPWNsNB9OLPYAYzCdKfiEW74,12136
52
+ memori/utils/helpers.py,sha256=_lpGSsI2UkMyYUY6X9k_VEpACvyxwY51TzgYVPZTeBk,13059
53
+ memori/utils/input_validator.py,sha256=Jfk07lm7PkFwArzt7vYQBJfx1DMFA_LqU2D9Y2-ufDQ,13612
54
+ memori/utils/logging.py,sha256=HXf3UrE0cm72KvFwyCjE7237opIxdNqzqxQQauhrX34,7131
55
+ memori/utils/pydantic_models.py,sha256=oKQqvcFhmFdm_ldDqe5bM1xWJkSrv08o6gcz5Lgfs8o,12142
56
+ memori/utils/query_builder.py,sha256=3Srw9Ini6zBTOmIbIfYNwj5pZ3cyHr3hNiV9jLHHan4,21430
57
+ memori/utils/schemas.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ memori/utils/security_audit.py,sha256=BB9IwDdAiUgmuwjm8rEyHbthfTHr1sipcNlPdFpBs_g,22059
59
+ memori/utils/security_integration.py,sha256=TORuhOPEAQ1PRkt7xcBHhI1UbCd4LVLowdiv2UItwCY,13078
60
+ memori/utils/transaction_manager.py,sha256=ITSF1Gba4cEBJXW1woDyomhOsdfL8vwfGckqbYqAGok,18755
61
+ memori/utils/validators.py,sha256=2btILpEh2yBS_6rytp2B2epFxMT4876SibS0yNj6bKI,11287
62
+ memorisdk-2.0.1.dist-info/licenses/LICENSE,sha256=gyrDaYsSODngoYE1l68l_UfjppS-oYDrf1MvY1JGhgE,10430
63
+ memorisdk-2.0.1.dist-info/METADATA,sha256=sqUK-ZDWt9bYhI5VtLlTLCabZuNdem9ZPHO-JM6S308,18803
64
+ memorisdk-2.0.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
65
+ memorisdk-2.0.1.dist-info/top_level.txt,sha256=Nm3ad0isbJYBzTEce-O_gmkAEiTbAbyilgAhRt8IoGA,7
66
+ memorisdk-2.0.1.dist-info/RECORD,,
@@ -1,50 +0,0 @@
1
- import os
2
-
3
-
4
- def is_text_file(file_path):
5
- try:
6
- with open(file_path, encoding="utf-8") as f:
7
- f.read()
8
- return True
9
- except (UnicodeDecodeError, OSError):
10
- return False
11
-
12
-
13
- def ingest_folder_to_txt(
14
- input_path, output_file="ingested_data.txt", exclude_dirs=None
15
- ):
16
- if exclude_dirs is None:
17
- exclude_dirs = [".git", "node_modules", "__pycache__"]
18
-
19
- with open(output_file, "w", encoding="utf-8") as out_f:
20
- for root, dirs, files in os.walk(input_path):
21
- # Filter out excluded directories
22
- dirs[:] = [d for d in dirs if d not in exclude_dirs]
23
-
24
- for file in files:
25
- file_path = os.path.join(root, file)
26
-
27
- # Skip binary files or the output file itself
28
- if not is_text_file(file_path) or os.path.abspath(
29
- file_path
30
- ) == os.path.abspath(output_file):
31
- continue
32
-
33
- try:
34
- with open(file_path, encoding="utf-8") as in_f:
35
- content = in_f.read()
36
-
37
- relative_path = os.path.relpath(file_path, input_path)
38
- out_f.write(f"\n### FILE: {relative_path} ###\n")
39
- out_f.write(content + "\n")
40
-
41
- except Exception as e:
42
- print(f"Skipping {file_path}: {e}")
43
-
44
- print(f"\n✅ Ingested data written to: {output_file}")
45
-
46
-
47
- # ---- Run from CLI or script ----
48
- if __name__ == "__main__":
49
- folder_path = input("Enter the path to the folder: ").strip()
50
- ingest_folder_to_txt(folder_path)
@@ -1,44 +0,0 @@
1
- memori/__init__.py,sha256=EpqarE_UsvWNALb2YWk4XAc5SML5uRjZOr1DHIrXNgo,3202
2
- memori/agents/__init__.py,sha256=9M3IG5R10FfVgT8tUzBZ2pZ0SypSpYkFfhtyvMyeTpE,261
3
- memori/agents/conscious_agent.py,sha256=6sgoTOkSrRGTAdEKGZPa5V6DFdzVxm_InZS85OnsVLE,20478
4
- memori/agents/memory_agent.py,sha256=Sz3MsQ4aRUccN5YO86he3tAwyP43KXFAH7KXPOC7QFY,12891
5
- memori/agents/retrieval_agent.py,sha256=PofpjLvx7Y4M9ns6kkypwT2D9eFaO2xffSuPovi8zuw,21490
6
- memori/config/__init__.py,sha256=tQAxopgOsea02u9iId-ocOY86nWWNGC3rvt3AOFcLn8,295
7
- memori/config/manager.py,sha256=xi8d8xW3obyV6v9UHDG6idSAymge8yWxGW11e2mI0nQ,10388
8
- memori/config/settings.py,sha256=nrrWD4hwdbtYlIPtJFHgGyMudGP-hz9sA-KBW_7ZZbE,9724
9
- memori/core/__init__.py,sha256=jvhHn-KL3bzRHs11-4B0BCKH6gkAf6Gf_G59If8fD0M,157
10
- memori/core/database.py,sha256=eok8lvXvFbHk_H2TEiYnRAX5nVE0xQgE0TUigRfGovs,36248
11
- memori/core/memory.py,sha256=8xF7Yi1k13OkNGisc_ehY_iuU3E0qTHiSc_mnw2iouk,54955
12
- memori/database/__init__.py,sha256=kMLxwfRfTVvw0oV1kl9v-Dkyqm6ggcsMV6hltqdrN3k,189
13
- memori/database/connectors/__init__.py,sha256=tG283nMRMWWM3B4WBfi7PMYnSUcH2Go5C88O91dOjcE,275
14
- memori/database/connectors/mysql_connector.py,sha256=P9tahYczjgfm_0iZpD1OxekeXLXnbpKt9M9EEe9NAjU,4861
15
- memori/database/connectors/postgres_connector.py,sha256=30wMEeVbvAc30_OrA0MqjePEgCGd9ejtG2ycXZLlotM,5495
16
- memori/database/connectors/sqlite_connector.py,sha256=5KbOh0OrIt8e7NEw7aYSk7pl5PMLnMCvf_GbA0Wzsvk,4782
17
- memori/database/queries/__init__.py,sha256=BIxenJzxOosD2-myGfGrortbq18rQycxBfqdMJhm-Cc,319
18
- memori/database/queries/base_queries.py,sha256=ZBMxqt48j3ooF5OZIkKtBSh24Ex-Mnhg-3wnyL3cl-M,10595
19
- memori/database/queries/chat_queries.py,sha256=gFsLLjAov502Pns9HAMr_MqLDETplZBQSPs9nqWFCnk,4431
20
- memori/database/queries/entity_queries.py,sha256=no6bzXHNzRs4mmbi4MggW2F19XxfJ-0RQKv3iv84a64,7518
21
- memori/database/queries/memory_queries.py,sha256=hodLllgfLbQvdeOSCcZadPyAF3ro3O6Mbz0jAtDIXvc,5609
22
- memori/database/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
- memori/database/templates/basic_template.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- memori/database/templates/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- memori/integrations/__init__.py,sha256=9VVDvedcu4ZxK2Tt_fT5ZSRPV9xakfEloNhPibpvHA8,1978
26
- memori/integrations/anthropic_integration.py,sha256=IJtqPYTcMaYsXKWUabR4XDMpCabg9qMK7d-8T9A1CcY,8169
27
- memori/integrations/litellm_integration.py,sha256=fNQqov9TThFD9YRWLAFsZ1R4-Bsm4E70qYQ17Z4ZVik,351
28
- memori/integrations/openai_integration.py,sha256=e_CV-CGPhwhTvH5fiA1NDcKYGZiDtN74luRJP5r2OdQ,12033
29
- memori/scripts/llm_text.py,sha256=HDkuGMb527yupSbA3syBFA9WHBPnP2lVqEKW6trIZtU,1603
30
- memori/tools/__init__.py,sha256=0KPbWAFYmvEleacrby4RzhJGW5GPdFiXN6RWwFrbqf4,200
31
- memori/tools/memory_tool.py,sha256=j57j2-MbhC9oTQJxBOnEBssB536OAb7igFA-XnxtHy4,20917
32
- memori/utils/__init__.py,sha256=e3AN4KfomQBQDsr53HwfvOeTtI3QZMzGQMYpRp8l6ow,1757
33
- memori/utils/exceptions.py,sha256=JGLo2S8ElG3gBjD4aJeVPWNsNB9OLPYAYzCdKfiEW74,12136
34
- memori/utils/helpers.py,sha256=_lpGSsI2UkMyYUY6X9k_VEpACvyxwY51TzgYVPZTeBk,13059
35
- memori/utils/logging.py,sha256=HXf3UrE0cm72KvFwyCjE7237opIxdNqzqxQQauhrX34,7131
36
- memori/utils/pydantic_models.py,sha256=U9nVy3Dko1X_dS4PpA7z2aacqegSSwOmZvQzPuVRcA0,8047
37
- memori/utils/schemas.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
- memori/utils/validators.py,sha256=2btILpEh2yBS_6rytp2B2epFxMT4876SibS0yNj6bKI,11287
39
- memorisdk-1.0.2.dist-info/licenses/LICENSE,sha256=gyrDaYsSODngoYE1l68l_UfjppS-oYDrf1MvY1JGhgE,10430
40
- memorisdk-1.0.2.dist-info/METADATA,sha256=KlUMw305S5PF68k0fxmS4ByYTLmEPrguzlr3FyzgqbI,16784
41
- memorisdk-1.0.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
42
- memorisdk-1.0.2.dist-info/entry_points.txt,sha256=ir3aWDbFfKGKQlnJCW440GQ2saYNznptoXWheOUtu5c,43
43
- memorisdk-1.0.2.dist-info/top_level.txt,sha256=Nm3ad0isbJYBzTEce-O_gmkAEiTbAbyilgAhRt8IoGA,7
44
- memorisdk-1.0.2.dist-info/RECORD,,
@@ -1,2 +0,0 @@
1
- [console_scripts]
2
- memori = memori.cli:main