memmachine-server 0.3.6__tar.gz → 0.3.8__tar.gz

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 (345) hide show
  1. {memmachine_server-0.3.6/src/memmachine_server.egg-info → memmachine_server-0.3.8}/PKG-INFO +9 -1
  2. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/pyproject.toml +10 -0
  3. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/configuration/test_database_conf.py +158 -4
  4. memmachine_server-0.3.8/server_tests/memmachine_server/common/embedder/test_embedder.py +91 -0
  5. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/episode_store/test_episode_model.py +49 -0
  6. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/episode_store/test_sqlalchemy_episode_store_startup.py +2 -2
  7. memmachine_server-0.3.8/server_tests/memmachine_server/common/filter/test_sql_filter_util.py +612 -0
  8. memmachine_server-0.3.8/server_tests/memmachine_server/common/payload_codec/__init__.py +1 -0
  9. memmachine_server-0.3.8/server_tests/memmachine_server/common/payload_codec/test_payload_codec.py +16 -0
  10. memmachine_server-0.3.8/server_tests/memmachine_server/common/payload_codec/test_payload_codec_config.py +18 -0
  11. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/reranker/fake_embedder.py +8 -4
  12. memmachine_server-0.3.8/server_tests/memmachine_server/common/resource_manager/test_database_manager.py +812 -0
  13. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/session_manager/test_session_manager.py +46 -0
  14. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/session_manager/test_session_manager_migration.py +64 -0
  15. memmachine_server-0.3.8/server_tests/memmachine_server/common/test_properties_json.py +146 -0
  16. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/test_rw_locks.py +35 -5
  17. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/vector_graph_store/test_nebula_graph_vector_graph_store.py +4 -1
  18. memmachine_server-0.3.8/server_tests/memmachine_server/common/vector_store/in_memory_vector_store_collection.py +213 -0
  19. memmachine_server-0.3.8/server_tests/memmachine_server/common/vector_store/test_qdrant_vector_store.py +1255 -0
  20. memmachine_server-0.3.8/server_tests/memmachine_server/common/vector_store/test_sqlite_vec_vector_store.py +1013 -0
  21. memmachine_server-0.3.8/server_tests/memmachine_server/common/vector_store/test_sqlite_vector_store.py +1485 -0
  22. memmachine_server-0.3.8/server_tests/memmachine_server/common/vector_store/vector_search_engine/test_hnswlib_engine.py +853 -0
  23. memmachine_server-0.3.8/server_tests/memmachine_server/common/vector_store/vector_search_engine/test_usearch_engine.py +320 -0
  24. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/conftest.py +44 -6
  25. memmachine_server-0.3.8/server_tests/memmachine_server/episodic_memory/declarative_memory/test_string_from_episode_context.py +79 -0
  26. memmachine_server-0.3.8/server_tests/memmachine_server/episodic_memory/event_memory/conftest.py +253 -0
  27. memmachine_server-0.3.8/server_tests/memmachine_server/episodic_memory/event_memory/deriver/__init__.py +1 -0
  28. memmachine_server-0.3.8/server_tests/memmachine_server/episodic_memory/event_memory/deriver/test_text_deriver.py +167 -0
  29. memmachine_server-0.3.8/server_tests/memmachine_server/episodic_memory/event_memory/segment_store/__init__.py +1 -0
  30. memmachine_server-0.3.8/server_tests/memmachine_server/episodic_memory/event_memory/segment_store/test_data_types.py +32 -0
  31. memmachine_server-0.3.8/server_tests/memmachine_server/episodic_memory/event_memory/segment_store/test_sqlalchemy_segment_store.py +992 -0
  32. memmachine_server-0.3.8/server_tests/memmachine_server/episodic_memory/event_memory/segmenter/__init__.py +1 -0
  33. memmachine_server-0.3.8/server_tests/memmachine_server/episodic_memory/event_memory/segmenter/test_text_segmenter.py +148 -0
  34. memmachine_server-0.3.8/server_tests/memmachine_server/episodic_memory/event_memory/test_data_types.py +181 -0
  35. memmachine_server-0.3.8/server_tests/memmachine_server/episodic_memory/event_memory/test_event_memory.py +950 -0
  36. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/episodic_memory/short_term_memory/test_short_term_memory.py +15 -0
  37. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/episodic_memory/test_episodic_memory_manager.py +49 -0
  38. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/main/test_memachine.py +8 -1
  39. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/main/test_memmachine_delete_session.py +13 -4
  40. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/main/test_memmachine_mock.py +91 -0
  41. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/config_store/test_caching_semantic_config_storage.py +3 -3
  42. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/mock_semantic_memory_objects.py +4 -3
  43. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/semantic_test_utils.py +6 -4
  44. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/storage/in_memory_semantic_storage.py +1 -1
  45. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/storage/test_semantic_storage.py +9 -9
  46. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/test_cluster_splitter.py +1 -1
  47. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/test_semantic_llm.py +130 -0
  48. memmachine_server-0.3.8/server_tests/memmachine_server/server/__init__.py +0 -0
  49. memmachine_server-0.3.8/server_tests/memmachine_server/server/api_v2/__init__.py +0 -0
  50. memmachine_server-0.3.8/server_tests/memmachine_server/server/prompt/__init__.py +0 -0
  51. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/configuration/database_conf.py +172 -39
  52. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/configuration/embedder_conf.py +14 -0
  53. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/configuration/retrieval_config.py +9 -1
  54. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/embedder/amazon_bedrock_embedder.py +7 -3
  55. memmachine_server-0.3.8/src/memmachine_server/common/embedder/embedder.py +93 -0
  56. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/embedder/openai_embedder.py +7 -3
  57. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/embedder/sentence_transformer_embedder.py +10 -4
  58. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/episode_store/episode_model.py +4 -2
  59. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/episode_store/episode_sqlalchemy_store.py +19 -16
  60. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/errors.py +21 -0
  61. memmachine_server-0.3.8/src/memmachine_server/common/filter/sql_filter_util.py +205 -0
  62. memmachine_server-0.3.8/src/memmachine_server/common/payload_codec/__init__.py +15 -0
  63. memmachine_server-0.3.8/src/memmachine_server/common/payload_codec/payload_codec.py +41 -0
  64. memmachine_server-0.3.8/src/memmachine_server/common/payload_codec/payload_codec_config.py +36 -0
  65. memmachine_server-0.3.8/src/memmachine_server/common/payload_codec/plaintext_payload_codec.py +17 -0
  66. memmachine_server-0.3.8/src/memmachine_server/common/properties_json.py +138 -0
  67. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/resource_manager/__init__.py +5 -0
  68. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/resource_manager/database_manager.py +277 -4
  69. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/resource_manager/embedder_manager.py +9 -1
  70. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/resource_manager/language_model_manager.py +12 -2
  71. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/resource_manager/resource_manager.py +5 -0
  72. memmachine_server-0.3.8/src/memmachine_server/common/rw_locks.py +94 -0
  73. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/session_manager/session_data_manager.py +26 -0
  74. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/session_manager/session_data_manager_sql_impl.py +67 -5
  75. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/utils.py +107 -6
  76. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/vector_store/data_types.py +19 -7
  77. memmachine_server-0.3.8/src/memmachine_server/common/vector_store/qdrant_vector_store.py +963 -0
  78. memmachine_server-0.3.8/src/memmachine_server/common/vector_store/sqlite_vec_vector_store.py +720 -0
  79. memmachine_server-0.3.8/src/memmachine_server/common/vector_store/sqlite_vector_store.py +1065 -0
  80. memmachine_server-0.3.8/src/memmachine_server/common/vector_store/vector_search_engine/__init__.py +9 -0
  81. memmachine_server-0.3.8/src/memmachine_server/common/vector_store/vector_search_engine/hnswlib_engine.py +340 -0
  82. memmachine_server-0.3.8/src/memmachine_server/common/vector_store/vector_search_engine/usearch_engine.py +194 -0
  83. memmachine_server-0.3.8/src/memmachine_server/common/vector_store/vector_search_engine/vector_search_engine.py +140 -0
  84. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/vector_store/vector_store.py +14 -7
  85. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/episodic_memory/declarative_memory/declarative_memory.py +1 -1
  86. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/episodic_memory/episodic_memory_manager.py +11 -1
  87. memmachine_server-0.3.8/src/memmachine_server/episodic_memory/event_memory/__init__.py +1 -0
  88. memmachine_server-0.3.8/src/memmachine_server/episodic_memory/event_memory/data_types.py +220 -0
  89. memmachine_server-0.3.8/src/memmachine_server/episodic_memory/event_memory/deriver/__init__.py +7 -0
  90. memmachine_server-0.3.8/src/memmachine_server/episodic_memory/event_memory/deriver/deriver.py +17 -0
  91. memmachine_server-0.3.8/src/memmachine_server/episodic_memory/event_memory/deriver/text_deriver.py +80 -0
  92. memmachine_server-0.3.8/src/memmachine_server/episodic_memory/event_memory/event_memory.py +863 -0
  93. memmachine_server-0.3.8/src/memmachine_server/episodic_memory/event_memory/segment_store/__init__.py +19 -0
  94. memmachine_server-0.3.8/src/memmachine_server/episodic_memory/event_memory/segment_store/data_types.py +75 -0
  95. memmachine_server-0.3.8/src/memmachine_server/episodic_memory/event_memory/segment_store/segment_store.py +228 -0
  96. memmachine_server-0.3.8/src/memmachine_server/episodic_memory/event_memory/segment_store/sqlalchemy_segment_store.py +1076 -0
  97. memmachine_server-0.3.8/src/memmachine_server/episodic_memory/event_memory/segmenter/__init__.py +7 -0
  98. memmachine_server-0.3.8/src/memmachine_server/episodic_memory/event_memory/segmenter/segmenter.py +17 -0
  99. memmachine_server-0.3.8/src/memmachine_server/episodic_memory/event_memory/segmenter/text_segmenter.py +92 -0
  100. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/episodic_memory/instance_lru_cache.py +2 -2
  101. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/main/memmachine.py +87 -44
  102. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/semantic_llm.py +4 -2
  103. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/storage/neo4j_semantic_storage.py +22 -1
  104. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/storage/sqlalchemy_pgvector_semantic.py +23 -28
  105. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/api_v2/mcp.py +2 -1
  106. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/api_v2/service.py +6 -0
  107. {memmachine_server-0.3.6 → memmachine_server-0.3.8/src/memmachine_server.egg-info}/PKG-INFO +9 -1
  108. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server.egg-info/SOURCES.txt +50 -0
  109. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server.egg-info/requires.txt +10 -0
  110. memmachine_server-0.3.6/server_tests/memmachine_server/common/filter/test_sql_filter_util.py +0 -263
  111. memmachine_server-0.3.6/server_tests/memmachine_server/common/resource_manager/test_database_manager.py +0 -256
  112. memmachine_server-0.3.6/src/memmachine_server/common/embedder/embedder.py +0 -46
  113. memmachine_server-0.3.6/src/memmachine_server/common/filter/sql_filter_util.py +0 -114
  114. memmachine_server-0.3.6/src/memmachine_server/common/rw_locks.py +0 -90
  115. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/LICENSE +0 -0
  116. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/README.md +0 -0
  117. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/__init__.py +0 -0
  118. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/__init__.py +0 -0
  119. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/__init__.py +0 -0
  120. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/api/__init__.py +0 -0
  121. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/api/test_version.py +0 -0
  122. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/configuration/__init__.py +0 -0
  123. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/configuration/test_configuration.py +0 -0
  124. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/configuration/test_embedder_conf.py +0 -0
  125. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/configuration/test_episodic_config.py +0 -0
  126. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/configuration/test_language_model_conf.py +0 -0
  127. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/configuration/test_log_conf.py +0 -0
  128. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/configuration/test_mixin_confs.py +0 -0
  129. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/configuration/test_prompt_conf.py +0 -0
  130. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/configuration/test_reranker_conf.py +0 -0
  131. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/configuration/test_semantic_conf.py +0 -0
  132. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/configuration/test_server_conf.py +0 -0
  133. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/embedder/__init__.py +0 -0
  134. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/embedder/test_amazon_bedrock_embedder.py +0 -0
  135. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/embedder/test_openai_embedder.py +0 -0
  136. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/embedder/test_sentence_transformer_embedder.py +0 -0
  137. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/episode_store/__init__.py +0 -0
  138. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/episode_store/test_count_caching_episode_storage.py +0 -0
  139. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/episode_store/test_episode_storage.py +0 -0
  140. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/filter/__init__.py +0 -0
  141. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/filter/test_filter_parser.py +0 -0
  142. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/language_model/__init__.py +0 -0
  143. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/language_model/test_openai_chat_completions_language_model.py +0 -0
  144. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/language_model/test_openai_responses_language_model.py +0 -0
  145. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/reranker/__init__.py +0 -0
  146. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/reranker/test_amazon_bedrock_reranker.py +0 -0
  147. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/reranker/test_bm25_reranker.py +0 -0
  148. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/reranker/test_cohere_reranker.py +0 -0
  149. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/reranker/test_cross_encoder_reranker.py +0 -0
  150. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/reranker/test_embedder_reranker.py +0 -0
  151. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/reranker/test_identity_reranker.py +0 -0
  152. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/reranker/test_rrf_hybrid_reranker.py +0 -0
  153. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/resource_manager/__init__.py +0 -0
  154. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/resource_manager/test_embedder_manager.py +0 -0
  155. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/resource_manager/test_language_model_manager.py +0 -0
  156. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/resource_manager/test_reranker_manager.py +0 -0
  157. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/resource_manager/test_resource_manager.py +0 -0
  158. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/session_manager/__init__.py +0 -0
  159. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/test_utils.py +0 -0
  160. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/vector_graph_store/__init__.py +0 -0
  161. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/common/vector_graph_store/test_neo4j_vector_graph_store.py +0 -0
  162. {memmachine_server-0.3.6/server_tests/memmachine_server/episodic_memory → memmachine_server-0.3.8/server_tests/memmachine_server/common/vector_store}/__init__.py +0 -0
  163. {memmachine_server-0.3.6/server_tests/memmachine_server/episodic_memory/declarative_memory → memmachine_server-0.3.8/server_tests/memmachine_server/common/vector_store/vector_search_engine}/__init__.py +0 -0
  164. {memmachine_server-0.3.6/server_tests/memmachine_server/episodic_memory/long_term_memory → memmachine_server-0.3.8/server_tests/memmachine_server/episodic_memory}/__init__.py +0 -0
  165. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/episodic_memory/conftest.py +0 -0
  166. {memmachine_server-0.3.6/server_tests/memmachine_server/episodic_memory/short_term_memory → memmachine_server-0.3.8/server_tests/memmachine_server/episodic_memory/declarative_memory}/__init__.py +0 -0
  167. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/episodic_memory/declarative_memory/test_declarative_memory.py +0 -0
  168. {memmachine_server-0.3.6/server_tests/memmachine_server/installation → memmachine_server-0.3.8/server_tests/memmachine_server/episodic_memory/event_memory}/__init__.py +0 -0
  169. {memmachine_server-0.3.6/server_tests/memmachine_server/main → memmachine_server-0.3.8/server_tests/memmachine_server/episodic_memory/long_term_memory}/__init__.py +0 -0
  170. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/episodic_memory/long_term_memory/test_long_term_memory.py +0 -0
  171. {memmachine_server-0.3.6/server_tests/memmachine_server/semantic_memory → memmachine_server-0.3.8/server_tests/memmachine_server/episodic_memory/short_term_memory}/__init__.py +0 -0
  172. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/episodic_memory/test_episodic_memory.py +0 -0
  173. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/episodic_memory/test_instance_lru_cache.py +0 -0
  174. {memmachine_server-0.3.6/server_tests/memmachine_server/semantic_memory/config_store → memmachine_server-0.3.8/server_tests/memmachine_server/installation}/__init__.py +0 -0
  175. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/installation/test_configuration_wizard.py +0 -0
  176. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/installation/test_memmachine_configure.py +0 -0
  177. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/installation/test_utilities.py +0 -0
  178. {memmachine_server-0.3.6/server_tests/memmachine_server/semantic_memory/storage → memmachine_server-0.3.8/server_tests/memmachine_server/main}/__init__.py +0 -0
  179. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/main/conftest.py +0 -0
  180. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/main/test_memmachine_integration.py +0 -0
  181. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/retrieval_agent/__init__.py +0 -0
  182. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/retrieval_agent/test_retrieval_agent.py +0 -0
  183. {memmachine_server-0.3.6/server_tests/memmachine_server/semantic_memory/storage/alembic_pg → memmachine_server-0.3.8/server_tests/memmachine_server/semantic_memory}/__init__.py +0 -0
  184. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/cluster_store/__init__.py +0 -0
  185. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/cluster_store/test_cluster_state_storage.py +0 -0
  186. {memmachine_server-0.3.6/server_tests/memmachine_server/server → memmachine_server-0.3.8/server_tests/memmachine_server/semantic_memory/config_store}/__init__.py +0 -0
  187. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/config_store/test_semantic_config_storage.py +0 -0
  188. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/conftest.py +0 -0
  189. {memmachine_server-0.3.6/server_tests/memmachine_server/server/api_v2 → memmachine_server-0.3.8/server_tests/memmachine_server/semantic_memory/storage}/__init__.py +0 -0
  190. {memmachine_server-0.3.6/server_tests/memmachine_server/server/prompt → memmachine_server-0.3.8/server_tests/memmachine_server/semantic_memory/storage/alembic_pg}/__init__.py +0 -0
  191. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/storage/alembic_pg/helpers.py +0 -0
  192. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/storage/alembic_pg/original_schema.sql +0 -0
  193. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/storage/alembic_pg/test_set_id_migration.py +0 -0
  194. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/storage/alembic_pg/test_sqlalchemy_vs_alembic.py +0 -0
  195. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/storage/conftest.py +0 -0
  196. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/storage/test_text_sanitizer.py +0 -0
  197. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/test_cluster_manager.py +0 -0
  198. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/test_semantic_history_cleanup.py +0 -0
  199. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/test_semantic_ingestion.py +0 -0
  200. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/test_semantic_llm_integration.py +0 -0
  201. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/test_semantic_memory.py +0 -0
  202. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/test_semantic_memory_background.py +0 -0
  203. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/test_semantic_memory_integration.py +0 -0
  204. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/test_semantic_model.py +0 -0
  205. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/semantic_memory/test_semantic_session_manager.py +0 -0
  206. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/server/api_v2/test_config_router.py +0 -0
  207. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/server/api_v2/test_config_service.py +0 -0
  208. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/server/api_v2/test_mcp.py +0 -0
  209. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/server/api_v2/test_router.py +0 -0
  210. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/server/api_v2/test_service.py +0 -0
  211. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/server/api_v2/test_spec.py +0 -0
  212. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/server/prompt/test_prompt_utilities.py +0 -0
  213. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/server/test_middleware.py +0 -0
  214. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/server_tests/memmachine_server/test_data/longmemeval_snippet.json +0 -0
  215. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/setup.cfg +0 -0
  216. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/__init__.py +0 -0
  217. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/__init__.py +0 -0
  218. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/api/__init__.py +0 -0
  219. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/api/version.py +0 -0
  220. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/configuration/__init__.py +0 -0
  221. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/configuration/default_episode_summary_system_prompt.txt +0 -0
  222. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/configuration/default_episode_summary_user_prompt.txt +0 -0
  223. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/configuration/episodic_config.py +0 -0
  224. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/configuration/language_model_conf.py +0 -0
  225. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/configuration/log_conf.py +0 -0
  226. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/configuration/mixin_confs.py +0 -0
  227. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/configuration/reranker_conf.py +0 -0
  228. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/data_types.py +0 -0
  229. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/embedder/__init__.py +0 -0
  230. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/episode_store/__init__.py +0 -0
  231. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/episode_store/count_caching_episode_storage.py +0 -0
  232. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/episode_store/episode_storage.py +0 -0
  233. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/filter/__init__.py +0 -0
  234. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/filter/filter_parser.py +0 -0
  235. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/language_model/__init__.py +0 -0
  236. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/language_model/amazon_bedrock_language_model.py +0 -0
  237. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/language_model/language_model.py +0 -0
  238. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/language_model/openai_chat_completions_language_model.py +0 -0
  239. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/language_model/openai_responses_language_model.py +0 -0
  240. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/metrics_factory/__init__.py +0 -0
  241. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/metrics_factory/metrics_factory.py +0 -0
  242. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/metrics_factory/operation_tracker.py +0 -0
  243. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/metrics_factory/prometheus_metrics_factory.py +0 -0
  244. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/neo4j_utils.py +0 -0
  245. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/reranker/__init__.py +0 -0
  246. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/reranker/amazon_bedrock_reranker.py +0 -0
  247. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/reranker/bm25_reranker.py +0 -0
  248. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/reranker/cohere_reranker.py +0 -0
  249. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/reranker/cross_encoder_reranker.py +0 -0
  250. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/reranker/embedder_reranker.py +0 -0
  251. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/reranker/identity_reranker.py +0 -0
  252. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/reranker/reranker.py +0 -0
  253. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/reranker/rrf_hybrid_reranker.py +0 -0
  254. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/resource_manager/base_manager.py +0 -0
  255. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/resource_manager/reranker_manager.py +0 -0
  256. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/resource_manager/semantic_manager.py +0 -0
  257. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/session_manager/__init__.py +0 -0
  258. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/vector_graph_store/__init__.py +0 -0
  259. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/vector_graph_store/data_types.py +0 -0
  260. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/vector_graph_store/nebula_graph_vector_graph_store.py +0 -0
  261. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/vector_graph_store/neo4j_vector_graph_store.py +0 -0
  262. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/vector_graph_store/vector_graph_store.py +0 -0
  263. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/vector_store/__init__.py +0 -0
  264. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/common/vector_store/utils.py +0 -0
  265. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/episodic_memory/__init__.py +0 -0
  266. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/episodic_memory/declarative_memory/__init__.py +0 -0
  267. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/episodic_memory/declarative_memory/data_types.py +0 -0
  268. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/episodic_memory/episodic_memory.py +0 -0
  269. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/episodic_memory/long_term_memory/__init__.py +0 -0
  270. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/episodic_memory/long_term_memory/long_term_memory.py +0 -0
  271. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/episodic_memory/long_term_memory/service_locator.py +0 -0
  272. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/episodic_memory/service_locator.py +0 -0
  273. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/episodic_memory/short_term_memory/__init__.py +0 -0
  274. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/episodic_memory/short_term_memory/service_locator.py +0 -0
  275. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/episodic_memory/short_term_memory/short_term_memory.py +0 -0
  276. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/installation/__init__.py +0 -0
  277. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/installation/configuration_wizard.py +0 -0
  278. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/installation/memmachine_configure.py +0 -0
  279. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/installation/utilities.py +0 -0
  280. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/main/__init__.py +0 -0
  281. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/retrieval_agent/__init__.py +0 -0
  282. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/retrieval_agent/agents/__init__.py +0 -0
  283. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/retrieval_agent/agents/coq_agent.py +0 -0
  284. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/retrieval_agent/agents/memmachine_retriever.py +0 -0
  285. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/retrieval_agent/agents/split_query_agent.py +0 -0
  286. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/retrieval_agent/agents/tool_select_agent.py +0 -0
  287. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/retrieval_agent/common/__init__.py +0 -0
  288. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/retrieval_agent/common/agent_api.py +0 -0
  289. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/retrieval_agent/service_locator.py +0 -0
  290. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/__init__.py +0 -0
  291. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/cluster_manager.py +0 -0
  292. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/cluster_splitter.py +0 -0
  293. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/cluster_store/__init__.py +0 -0
  294. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/cluster_store/cluster_store.py +0 -0
  295. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/cluster_store/cluster_store_sqlalchemy.py +0 -0
  296. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/cluster_store/in_memory_cluster_store.py +0 -0
  297. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/config_store/__init__.py +0 -0
  298. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/config_store/caching_semantic_config_storage.py +0 -0
  299. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/config_store/config_store.py +0 -0
  300. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/config_store/config_store_sqlalchemy.py +0 -0
  301. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/semantic_ingestion.py +0 -0
  302. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/semantic_memory.py +0 -0
  303. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/semantic_model.py +0 -0
  304. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/semantic_session_manager.py +0 -0
  305. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/storage/__init__.py +0 -0
  306. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/storage/alembic_pg/__init__.py +0 -0
  307. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/storage/alembic_pg/env.py +0 -0
  308. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/storage/alembic_pg/script.py.mako +0 -0
  309. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/storage/alembic_pg/versions/001_initial_migration.py +0 -0
  310. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/storage/alembic_pg/versions/3d6aaebdc526_sync_sqlalchemy_schema.py +0 -0
  311. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/storage/alembic_pg/versions/62dff1150a46_add_created_at_to_history_add.py +0 -0
  312. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/storage/alembic_pg/versions/79f00a9f2409_change_history_id_to_string.py +0 -0
  313. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/storage/alembic_pg/versions/843f6d216d10_rename_semantic_type_to_semantic_.py +0 -0
  314. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/storage/alembic_pg/versions/__init__.py +0 -0
  315. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/storage/alembic_pg/versions/adb5618bd4ee_remove_history_table.py +0 -0
  316. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/storage/alembic_pg/versions/b65f7f4a9d2c_migrate_legacy_set_ids.py +0 -0
  317. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/storage/alembic_pg/versions/c7a2f8e31b90_add_ingested_composite_index.py +0 -0
  318. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/storage/alembic_pg/versions/d1a9df11343b_add_indexes.py +0 -0
  319. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/storage/storage_base.py +0 -0
  320. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/storage/text_sanitizer.py +0 -0
  321. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/util/__init__.py +0 -0
  322. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/semantic_memory/util/semantic_prompt_template.py +0 -0
  323. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/__init__.py +0 -0
  324. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/api_v2/__init__.py +0 -0
  325. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/api_v2/config_router.py +0 -0
  326. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/api_v2/config_service.py +0 -0
  327. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/api_v2/exceptions.py +0 -0
  328. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/api_v2/router.py +0 -0
  329. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/app.py +0 -0
  330. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/diagnostics.py +0 -0
  331. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/mcp_http.py +0 -0
  332. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/mcp_stdio.py +0 -0
  333. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/middleware.py +0 -0
  334. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/prompt/__init__.py +0 -0
  335. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/prompt/coding_style_prompt.py +0 -0
  336. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/prompt/crm_prompt.py +0 -0
  337. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/prompt/default_prompts.py +0 -0
  338. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/prompt/financial_analyst_prompt.py +0 -0
  339. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/prompt/health_assistant_prompt.py +0 -0
  340. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/prompt/profile_prompt.py +0 -0
  341. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/prompt/prompt_utilities.py +0 -0
  342. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server/server/prompt/writing_assistant_prompt.py +0 -0
  343. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server.egg-info/dependency_links.txt +0 -0
  344. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server.egg-info/entry_points.txt +0 -0
  345. {memmachine_server-0.3.6 → memmachine_server-0.3.8}/src/memmachine_server.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: memmachine-server
3
- Version: 0.3.6
3
+ Version: 0.3.8
4
4
  Summary: MemMachine Server - The complete MemMachine memory system server with episodic and profile memory
5
5
  Author-email: MemMachine <noreply@memmachine.ai>
6
6
  License-Expression: Apache-2.0
@@ -37,15 +37,23 @@ Requires-Dist: pydantic>=2.11.7
37
37
  Requires-Dist: pyyaml>=6.0.2
38
38
  Requires-Dist: rank-bm25>=0.2.2
39
39
  Requires-Dist: regex>=2023.0.0
40
+ Requires-Dist: sqlite-vec>=0.1.9
40
41
  Requires-Dist: sqlalchemy>=2.0.43
42
+ Requires-Dist: usearch>=2.25.1
41
43
  Requires-Dist: uvicorn>=0.35.0
42
44
  Requires-Dist: greenlet>=3.2.4
43
45
  Requires-Dist: tzdata>=2024.1; sys_platform == "win32"
44
46
  Requires-Dist: psutil>=7.1.0
47
+ Requires-Dist: langchain-text-splitters>=1.1.1
48
+ Requires-Dist: babel>=2.18.0
45
49
  Provides-Extra: gpu
46
50
  Requires-Dist: sentence-transformers>=5.1.0; extra == "gpu"
51
+ Provides-Extra: hnswlib
52
+ Requires-Dist: hnswlib>=0.8.0; extra == "hnswlib"
47
53
  Provides-Extra: nebula
48
54
  Requires-Dist: nebula5-python>=5.2.1; extra == "nebula"
55
+ Provides-Extra: qdrant
56
+ Requires-Dist: qdrant-client>=1.17.0; extra == "qdrant"
49
57
  Dynamic: license-file
50
58
 
51
59
  # MemMachine
@@ -28,11 +28,15 @@ dependencies = [
28
28
  "pyyaml>=6.0.2",
29
29
  "rank-bm25>=0.2.2",
30
30
  "regex>=2023.0.0",
31
+ "sqlite-vec>=0.1.9",
31
32
  "sqlalchemy>=2.0.43",
33
+ "usearch>=2.25.1",
32
34
  "uvicorn>=0.35.0",
33
35
  "greenlet>=3.2.4",
34
36
  "tzdata>=2024.1 ; sys_platform == 'win32'",
35
37
  "psutil>=7.1.0",
38
+ "langchain-text-splitters>=1.1.1",
39
+ "babel>=2.18.0",
36
40
  ]
37
41
  requires-python = ">= 3.12"
38
42
  authors = [
@@ -54,9 +58,15 @@ license = "Apache-2.0"
54
58
  gpu = [
55
59
  "sentence-transformers>=5.1.0",
56
60
  ]
61
+ hnswlib = [
62
+ "hnswlib>=0.8.0",
63
+ ]
57
64
  nebula = [
58
65
  "nebula5-python>=5.2.1",
59
66
  ]
67
+ qdrant = [
68
+ "qdrant-client>=1.17.0",
69
+ ]
60
70
 
61
71
  [project.scripts]
62
72
  memmachine-server = "memmachine_server.server.app:main"
@@ -5,7 +5,11 @@ from pydantic import SecretStr
5
5
  from memmachine_server.common.configuration.database_conf import (
6
6
  DatabasesConf,
7
7
  Neo4jConf,
8
+ QdrantConf,
8
9
  SqlAlchemyConf,
10
+ SQLiteVectorStoreConf,
11
+ SQLiteVectorStoreEngine,
12
+ SQLiteVecVectorStoreConf,
9
13
  SupportedDB,
10
14
  )
11
15
 
@@ -14,23 +18,44 @@ def test_parse_supported_db_enums():
14
18
  assert SupportedDB.from_provider("neo4j") == SupportedDB.NEO4J
15
19
  assert SupportedDB.from_provider("postgres") == SupportedDB.POSTGRES
16
20
  assert SupportedDB.from_provider("sqlite") == SupportedDB.SQLITE
21
+ assert SupportedDB.from_provider("qdrant") == SupportedDB.QDRANT
22
+ assert (
23
+ SupportedDB.from_provider("sqlite_vector_store")
24
+ == SupportedDB.SQLITE_VECTOR_STORE
25
+ )
26
+ assert (
27
+ SupportedDB.from_provider("sqlite_vec_vector_store")
28
+ == SupportedDB.SQLITE_VEC_VECTOR_STORE
29
+ )
17
30
 
18
31
  neo4j_db = SupportedDB.NEO4J
19
- assert neo4j_db.is_neo4j
20
32
  assert neo4j_db.conf_cls == Neo4jConf
21
33
 
22
34
  pg_db = SupportedDB.POSTGRES
23
- assert not pg_db.is_neo4j
24
35
  assert pg_db.conf_cls == SqlAlchemyConf
25
36
  assert pg_db.dialect == "postgresql"
26
37
  assert pg_db.driver == "asyncpg"
27
38
 
28
39
  sqlite_db = SupportedDB.SQLITE
29
- assert not sqlite_db.is_neo4j
30
40
  assert sqlite_db.conf_cls == SqlAlchemyConf
31
41
  assert sqlite_db.dialect == "sqlite"
32
42
  assert sqlite_db.driver == "aiosqlite"
33
43
 
44
+ qdrant_db = SupportedDB.QDRANT
45
+ assert qdrant_db.conf_cls == QdrantConf
46
+ assert qdrant_db.dialect is None
47
+ assert qdrant_db.driver is None
48
+
49
+ sqlite_vs_db = SupportedDB.SQLITE_VECTOR_STORE
50
+ assert sqlite_vs_db.conf_cls == SQLiteVectorStoreConf
51
+ assert sqlite_vs_db.dialect is None
52
+ assert sqlite_vs_db.driver is None
53
+
54
+ sqlite_vec_vs_db = SupportedDB.SQLITE_VEC_VECTOR_STORE
55
+ assert sqlite_vec_vs_db.conf_cls == SQLiteVecVectorStoreConf
56
+ assert sqlite_vec_vs_db.dialect is None
57
+ assert sqlite_vec_vs_db.driver is None
58
+
34
59
 
35
60
  def test_sqlite_without_path_raises():
36
61
  message = "non-empty 'path'"
@@ -80,6 +105,33 @@ def db_conf_dict() -> dict:
80
105
  "path": "local.db",
81
106
  },
82
107
  },
108
+ "my_qdrant": {
109
+ "provider": "qdrant",
110
+ "config": {
111
+ "host": "qdrant.example.com",
112
+ "port": 6333,
113
+ "grpc_port": 6334,
114
+ "prefer_grpc": True,
115
+ "api_key": "test-key",
116
+ "is_distributed": True,
117
+ "registry_replication_factor": 3,
118
+ },
119
+ },
120
+ "my_sqlite_vs": {
121
+ "provider": "sqlite_vector_store",
122
+ "config": {
123
+ "path": "vs.db",
124
+ "vector_search_engine": "hnswlib",
125
+ "index_directory": "/tmp/vs_indexes",
126
+ "save_threshold": 500,
127
+ },
128
+ },
129
+ "my_sqlite_vec_vs": {
130
+ "provider": "sqlite_vec_vector_store",
131
+ "config": {
132
+ "path": "vec_vs.db",
133
+ },
134
+ },
83
135
  },
84
136
  }
85
137
 
@@ -122,6 +174,30 @@ def test_parse_valid_storage_dict(db_conf_dict):
122
174
  assert isinstance(sqlite_conf, SqlAlchemyConf)
123
175
  assert sqlite_conf.uri == "sqlite+aiosqlite:///local.db"
124
176
 
177
+ # Qdrant check
178
+ qdrant_conf = storage_conf.qdrant_confs["my_qdrant"]
179
+ assert isinstance(qdrant_conf, QdrantConf)
180
+ assert qdrant_conf.host == "qdrant.example.com"
181
+ assert qdrant_conf.port == 6333
182
+ assert qdrant_conf.grpc_port == 6334
183
+ assert qdrant_conf.prefer_grpc is True
184
+ assert qdrant_conf.api_key == SecretStr("test-key")
185
+ assert qdrant_conf.is_distributed is True
186
+ assert qdrant_conf.registry_replication_factor == 3
187
+
188
+ # SQLiteVectorStore (hnswlib engine)
189
+ sqlite_vs_conf = storage_conf.sqlite_vector_store_confs["my_sqlite_vs"]
190
+ assert isinstance(sqlite_vs_conf, SQLiteVectorStoreConf)
191
+ assert sqlite_vs_conf.path == "vs.db"
192
+ assert sqlite_vs_conf.vector_search_engine == SQLiteVectorStoreEngine.HNSWLIB
193
+ assert sqlite_vs_conf.index_directory == "/tmp/vs_indexes"
194
+ assert sqlite_vs_conf.save_threshold == 500
195
+
196
+ # SQLiteVecVectorStore
197
+ sqlite_vec_vs_conf = storage_conf.sqlite_vec_vector_store_confs["my_sqlite_vec_vs"]
198
+ assert isinstance(sqlite_vec_vs_conf, SQLiteVecVectorStoreConf)
199
+ assert sqlite_vec_vs_conf.path == "vec_vs.db"
200
+
125
201
 
126
202
  def test_read_db_password_from_env(monkeypatch, db_conf_dict):
127
203
  monkeypatch.setenv("MY_DB_PASSWORD", "env-db-password")
@@ -147,7 +223,10 @@ def test_parse_unknown_provider_raises():
147
223
  input_dict = {
148
224
  "databases": {"bad_storage": {"provider": "unknown_db", "host": "localhost"}},
149
225
  }
150
- message = "Supported providers are: neo4j, postgres, sqlite"
226
+ message = (
227
+ "Supported providers are: neo4j, postgres, sqlite, nebula_graph, qdrant, "
228
+ "sqlite_vector_store, sqlite_vec_vector_store"
229
+ )
151
230
  with pytest.raises(ValueError, match=message):
152
231
  DatabasesConf.parse(input_dict)
153
232
 
@@ -157,6 +236,10 @@ def test_parse_empty_storage_returns_empty_conf():
157
236
  storage_conf = DatabasesConf.parse(input_dict)
158
237
  assert storage_conf.neo4j_confs == {}
159
238
  assert storage_conf.relational_db_confs == {}
239
+ assert storage_conf.nebula_graph_confs == {}
240
+ assert storage_conf.qdrant_confs == {}
241
+ assert storage_conf.sqlite_vector_store_confs == {}
242
+ assert storage_conf.sqlite_vec_vector_store_confs == {}
160
243
 
161
244
 
162
245
  def test_serialize_deserialize_database_conf(db_conf_dict):
@@ -212,3 +295,74 @@ def test_neo4j_uri_with_host_and_port():
212
295
  def test_neo4j_uri_with_special_host():
213
296
  conf = Neo4jConf(host="neo4j+s://xyz", port=3456)
214
297
  assert conf.get_uri() == "neo4j+s://xyz"
298
+
299
+
300
+ def test_qdrant_conf_defaults():
301
+ conf = QdrantConf()
302
+ assert conf.host == "localhost"
303
+ assert conf.port == 6333
304
+ assert conf.grpc_port == 6334
305
+ assert conf.prefer_grpc is False
306
+ assert conf.https is False
307
+ assert conf.is_distributed is False
308
+ assert conf.registry_replication_factor == 1
309
+ assert conf.api_key.get_secret_value() == ""
310
+
311
+
312
+ def test_qdrant_conf_api_key_from_env(monkeypatch):
313
+ monkeypatch.setenv("QDRANT_API_KEY", "env-qdrant-key")
314
+ conf = QdrantConf(api_key=SecretStr("$QDRANT_API_KEY"))
315
+ assert conf.api_key == SecretStr("env-qdrant-key")
316
+
317
+
318
+ def test_qdrant_build_config():
319
+ config = SupportedDB.QDRANT.build_config(
320
+ {"host": "qdrant.local", "port": 9333, "is_distributed": True}
321
+ )
322
+ assert isinstance(config, QdrantConf)
323
+ assert config.host == "qdrant.local"
324
+ assert config.port == 9333
325
+ assert config.is_distributed is True
326
+
327
+
328
+ def test_sqlite_vector_store_conf_defaults():
329
+ conf = SQLiteVectorStoreConf(path="local.db")
330
+ assert conf.path == "local.db"
331
+ # USearch is the default search engine provider.
332
+ assert conf.vector_search_engine == SQLiteVectorStoreEngine.USEARCH
333
+ # Index persistence is opt-in.
334
+ assert conf.index_directory is None
335
+ assert conf.save_threshold == 1000
336
+
337
+
338
+ def test_sqlite_vector_store_conf_does_not_expose_engine_tuning_knobs():
339
+ """Per-engine tuning knobs (M, ef_*) must not leak into configuration."""
340
+ fields = SQLiteVectorStoreConf.model_fields
341
+ assert "m" not in fields
342
+ assert "ef_construction" not in fields
343
+ assert "ef_search" not in fields
344
+
345
+
346
+ def test_sqlite_vector_store_conf_requires_path():
347
+ with pytest.raises(ValueError, match="non-empty 'path'"):
348
+ SQLiteVectorStoreConf(path="")
349
+
350
+
351
+ def test_sqlite_vec_vector_store_conf_requires_path():
352
+ with pytest.raises(ValueError, match="non-empty 'path'"):
353
+ SQLiteVecVectorStoreConf(path="")
354
+
355
+
356
+ def test_sqlite_vector_store_build_config():
357
+ config = SupportedDB.SQLITE_VECTOR_STORE.build_config(
358
+ {"path": "vs.db", "vector_search_engine": "hnswlib"}
359
+ )
360
+ assert isinstance(config, SQLiteVectorStoreConf)
361
+ assert config.path == "vs.db"
362
+ assert config.vector_search_engine == SQLiteVectorStoreEngine.HNSWLIB
363
+
364
+
365
+ def test_sqlite_vec_vector_store_build_config():
366
+ config = SupportedDB.SQLITE_VEC_VECTOR_STORE.build_config({"path": "vec.db"})
367
+ assert isinstance(config, SQLiteVecVectorStoreConf)
368
+ assert config.path == "vec.db"
@@ -0,0 +1,91 @@
1
+ """Unit tests for the Embedder base class."""
2
+
3
+ from typing import Any
4
+
5
+ import pytest
6
+
7
+ from memmachine_server.common.data_types import SimilarityMetric
8
+ from memmachine_server.common.embedder.embedder import Embedder
9
+
10
+
11
+ class MockEmbedder(Embedder):
12
+ """Mock implementation of Embedder for testing."""
13
+
14
+ def __init__(self, batch_size: int | None = None) -> None:
15
+ """Initialize the mock embedder."""
16
+ super().__init__(batch_size=batch_size)
17
+ self.ingest_calls: list[list[Any]] = []
18
+ self.search_calls: list[list[Any]] = []
19
+
20
+ async def _ingest_embed(
21
+ self,
22
+ inputs: list[Any],
23
+ max_attempts: int = 1,
24
+ ) -> list[list[float]]:
25
+ self.ingest_calls.append(inputs)
26
+ # Return dummy embeddings of dimension 2
27
+ return [[0.1, 0.2] for _ in inputs]
28
+
29
+ async def _search_embed(
30
+ self,
31
+ queries: list[Any],
32
+ max_attempts: int = 1,
33
+ ) -> list[list[float]]:
34
+ self.search_calls.append(queries)
35
+ # Return dummy embeddings of dimension 2
36
+ return [[0.3, 0.4] for _ in queries]
37
+
38
+ @property
39
+ def model_id(self) -> str:
40
+ return "mock-model"
41
+
42
+ @property
43
+ def dimensions(self) -> int:
44
+ return 2
45
+
46
+ @property
47
+ def similarity_metric(self) -> SimilarityMetric:
48
+ return SimilarityMetric.COSINE
49
+
50
+
51
+ @pytest.mark.asyncio
52
+ async def test_embedder_batching() -> None:
53
+ """Test that the embedder correctly batches inputs."""
54
+ batch_size = 2
55
+ embedder = MockEmbedder(batch_size=batch_size)
56
+
57
+ # Test ingest_embed batching
58
+ inputs = ["a", "b", "c", "d", "e"]
59
+ # Expected batches: ["a", "b"], ["c", "d"], ["e"]
60
+
61
+ embeddings = await embedder.ingest_embed(inputs)
62
+
63
+ assert len(embeddings) == 5
64
+ assert len(embedder.ingest_calls) == 3
65
+ assert embedder.ingest_calls[0] == ["a", "b"]
66
+ assert embedder.ingest_calls[1] == ["c", "d"]
67
+ assert embedder.ingest_calls[2] == ["e"]
68
+
69
+ # Test search_embed batching
70
+ queries = ["q1", "q2", "q3"]
71
+ # Expected batches: ["q1", "q2"], ["q3"]
72
+
73
+ search_embeddings = await embedder.search_embed(queries)
74
+
75
+ assert len(search_embeddings) == 3
76
+ assert len(embedder.search_calls) == 2
77
+ assert embedder.search_calls[0] == ["q1", "q2"]
78
+ assert embedder.search_calls[1] == ["q3"]
79
+
80
+
81
+ @pytest.mark.asyncio
82
+ async def test_embedder_no_batching() -> None:
83
+ """Test that the embedder works correctly without batching."""
84
+ embedder = MockEmbedder(batch_size=None)
85
+
86
+ inputs = ["a", "b", "c"]
87
+ embeddings = await embedder.ingest_embed(inputs)
88
+
89
+ assert len(embeddings) == 3
90
+ assert len(embedder.ingest_calls) == 1
91
+ assert embedder.ingest_calls[0] == ["a", "b", "c"]
@@ -1,5 +1,6 @@
1
1
  """Test for the Episode models."""
2
2
 
3
+ import json
3
4
  from datetime import UTC, datetime
4
5
 
5
6
  import pytest
@@ -60,3 +61,51 @@ def test_episodes_to_string_with_episode_response(base_episode_data):
60
61
  assert len(lines) == 1
61
62
  line0 = '[Wednesday, January 14, 2026 at 01:30 PM] user_1: "Hello world"'
62
63
  assert lines[0] == line0
64
+
65
+
66
+ def test_episodes_to_string_message_preserves_non_ascii(base_episode_data):
67
+ """Non-ASCII content must appear literally in the LLM context, not as
68
+ ``\\uXXXX`` escapes — escapes inflate the prompt token count and
69
+ obscure semantic content."""
70
+ base_episode_data["content"] = "寿司 café 🍕 Привет"
71
+ ep = Episode(**base_episode_data)
72
+ result = episodes_to_string([ep])
73
+
74
+ assert "寿司" in result
75
+ assert "café" in result
76
+ assert "🍕" in result
77
+ assert "Привет" in result
78
+ assert "\\u" not in result
79
+
80
+ # The JSON-quoted content must round-trip back to the original string.
81
+ line = result.rstrip("\n")
82
+ json_part = line.split(": ", 1)[1]
83
+ assert json.loads(json_part) == "寿司 café 🍕 Привет"
84
+
85
+
86
+ def test_episodes_to_string_non_message_preserves_non_ascii(base_episode_data):
87
+ """The ``case _:`` fallback (e.g. an EpisodeResponse with no episode
88
+ type) must also preserve Unicode literally."""
89
+ fallback_data = {k: v for k, v in base_episode_data.items() if k != "session_key"}
90
+ fallback_data["episode_type"] = None
91
+ fallback_data["content"] = "要約: ☕ résumé"
92
+ er = EpisodeResponse(**fallback_data)
93
+ result = episodes_to_string([er])
94
+
95
+ assert "要約" in result
96
+ assert "☕" in result
97
+ assert "résumé" in result
98
+ assert "\\u" not in result
99
+ assert json.loads(result.rstrip("\n")) == "要約: ☕ résumé"
100
+
101
+
102
+ def test_episodes_to_string_output_is_utf8_encodable(base_episode_data):
103
+ """The formatted string is the exact text fed to LanguageModel prompts;
104
+ it must be losslessly UTF-8 encodable (no surrogate pairs from broken
105
+ escaping)."""
106
+ base_episode_data["content"] = "ASCII + 中文 + 🚀 + emoji modifier 👨‍👩‍👧‍👦"
107
+ ep = Episode(**base_episode_data)
108
+ result = episodes_to_string([ep])
109
+
110
+ encoded = result.encode("utf-8")
111
+ assert encoded.decode("utf-8") == result
@@ -102,7 +102,7 @@ async def _cleanup(engine: AsyncEngine) -> None:
102
102
  @pytest.mark.asyncio
103
103
  async def test_startup_wraps_operational_error():
104
104
  engine = _FakeAsyncEngine(OperationalError("select 1", {}, Exception("db down")))
105
- store = SqlAlchemyEpisodeStore(engine) # type: ignore[arg-type]
105
+ store = SqlAlchemyEpisodeStore(engine) # type: ignore[arg-type] # ty: ignore[invalid-argument-type]
106
106
 
107
107
  with pytest.raises(ConfigurationError) as exc_info:
108
108
  await store.startup()
@@ -113,7 +113,7 @@ async def test_startup_wraps_operational_error():
113
113
  @pytest.mark.asyncio
114
114
  async def test_startup_wraps_socket_gaierror():
115
115
  engine = _FakeAsyncEngine(socket.gaierror(8, "dns lookup failed"))
116
- store = SqlAlchemyEpisodeStore(engine) # type: ignore[arg-type]
116
+ store = SqlAlchemyEpisodeStore(engine) # type: ignore[arg-type] # ty: ignore[invalid-argument-type]
117
117
 
118
118
  with pytest.raises(ConfigurationError) as exc_info:
119
119
  await store.startup()