MemoryOS 2.0.17__tar.gz → 2.0.20__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 (383) hide show
  1. {memoryos-2.0.17 → memoryos-2.0.20}/PKG-INFO +123 -1
  2. {memoryos-2.0.17 → memoryos-2.0.20}/README.md +122 -0
  3. {memoryos-2.0.17 → memoryos-2.0.20}/pyproject.toml +1 -1
  4. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/__init__.py +1 -1
  5. memoryos-2.0.20/src/memos/api/handlers/cube_handler.py +128 -0
  6. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/handlers/formatters_handler.py +11 -2
  7. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/handlers/search_handler.py +17 -0
  8. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/mcp_serve.py +8 -1
  9. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/product_models.py +78 -0
  10. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/routers/server_router.py +57 -0
  11. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/read_multi_modal/system_parser.py +28 -42
  12. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/dispatcher.py +4 -1
  13. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/utils/misc_utils.py +1 -0
  14. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/retrieve/searcher.py +79 -21
  15. memoryos-2.0.20/src/memos/plugins/README.md +448 -0
  16. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/plugins/hook_defs.py +16 -0
  17. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/search/search_service.py +1 -0
  18. {memoryos-2.0.17 → memoryos-2.0.20}/LICENSE +0 -0
  19. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/__init__.py +0 -0
  20. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/client.py +0 -0
  21. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/config.py +0 -0
  22. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/context/dependencies.py +0 -0
  23. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/exceptions.py +0 -0
  24. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/handlers/__init__.py +0 -0
  25. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/handlers/add_handler.py +0 -0
  26. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/handlers/base_handler.py +0 -0
  27. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/handlers/chat_handler.py +0 -0
  28. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/handlers/component_init.py +0 -0
  29. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/handlers/config_builders.py +0 -0
  30. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/handlers/feedback_handler.py +0 -0
  31. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/handlers/memory_handler.py +0 -0
  32. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/handlers/scheduler_handler.py +0 -0
  33. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/handlers/suggestion_handler.py +0 -0
  34. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/middleware/__init__.py +0 -0
  35. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/middleware/auth.py +0 -0
  36. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/middleware/rate_limit.py +0 -0
  37. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/middleware/request_context.py +0 -0
  38. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/routers/__init__.py +0 -0
  39. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/routers/admin_router.py +0 -0
  40. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/server_api.py +0 -0
  41. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/server_api_ext.py +0 -0
  42. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/utils/__init__.py +0 -0
  43. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/api/utils/api_keys.py +0 -0
  44. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/chunkers/__init__.py +0 -0
  45. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/chunkers/base.py +0 -0
  46. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/chunkers/charactertext_chunker.py +0 -0
  47. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/chunkers/factory.py +0 -0
  48. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/chunkers/markdown_chunker.py +0 -0
  49. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/chunkers/sentence_chunker.py +0 -0
  50. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/chunkers/simple_chunker.py +0 -0
  51. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/cli.py +0 -0
  52. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/__init__.py +0 -0
  53. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/base.py +0 -0
  54. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/chunker.py +0 -0
  55. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/embedder.py +0 -0
  56. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/graph_db.py +0 -0
  57. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/internet_retriever.py +0 -0
  58. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/llm.py +0 -0
  59. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/mem_agent.py +0 -0
  60. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/mem_chat.py +0 -0
  61. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/mem_cube.py +0 -0
  62. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/mem_os.py +0 -0
  63. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/mem_reader.py +0 -0
  64. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/mem_scheduler.py +0 -0
  65. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/mem_user.py +0 -0
  66. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/memory.py +0 -0
  67. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/parser.py +0 -0
  68. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/reranker.py +0 -0
  69. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/utils.py +0 -0
  70. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/configs/vec_db.py +0 -0
  71. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/context/context.py +0 -0
  72. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dependency.py +0 -0
  73. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/deprecation.py +0 -0
  74. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/__init__.py +0 -0
  75. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/contextualization.py +0 -0
  76. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/enrichment.py +0 -0
  77. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/hook_defs.py +0 -0
  78. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/hooks.py +0 -0
  79. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/maintenance.py +0 -0
  80. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/pipeline/__init__.py +0 -0
  81. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/pipeline/base.py +0 -0
  82. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/pipeline/diary.py +0 -0
  83. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/pipeline/motive.py +0 -0
  84. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/pipeline/persistence.py +0 -0
  85. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/pipeline/reasoning.py +0 -0
  86. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/pipeline/recall.py +0 -0
  87. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/plugin.py +0 -0
  88. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/prompts/__init__.py +0 -0
  89. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/prompts/context_binding_prompt.py +0 -0
  90. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/prompts/context_summary_prompt.py +0 -0
  91. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/prompts/motive_prompt.py +0 -0
  92. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/prompts/reasoning_prompt.py +0 -0
  93. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/routers/__init__.py +0 -0
  94. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/routers/diary_router.py +0 -0
  95. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/routers/trigger_router.py +0 -0
  96. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/routes.py +0 -0
  97. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/search.py +0 -0
  98. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/signal_store.py +0 -0
  99. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/dream/types.py +0 -0
  100. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/embedders/__init__.py +0 -0
  101. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/embedders/ark.py +0 -0
  102. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/embedders/base.py +0 -0
  103. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/embedders/factory.py +0 -0
  104. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/embedders/ollama.py +0 -0
  105. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/embedders/sentence_transformer.py +0 -0
  106. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/embedders/universal_api.py +0 -0
  107. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/exceptions.py +0 -0
  108. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/extras/__init__.py +0 -0
  109. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/graph_dbs/__init__.py +0 -0
  110. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/graph_dbs/base.py +0 -0
  111. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/graph_dbs/factory.py +0 -0
  112. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/graph_dbs/item.py +0 -0
  113. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/graph_dbs/neo4j.py +0 -0
  114. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/graph_dbs/neo4j_community.py +0 -0
  115. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/graph_dbs/polardb.py +0 -0
  116. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/graph_dbs/postgres.py +0 -0
  117. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/hello_world.py +0 -0
  118. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/llms/__init__.py +0 -0
  119. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/llms/base.py +0 -0
  120. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/llms/deepseek.py +0 -0
  121. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/llms/factory.py +0 -0
  122. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/llms/hf.py +0 -0
  123. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/llms/hf_singleton.py +0 -0
  124. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/llms/minimax.py +0 -0
  125. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/llms/ollama.py +0 -0
  126. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/llms/openai.py +0 -0
  127. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/llms/openai_new.py +0 -0
  128. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/llms/qwen.py +0 -0
  129. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/llms/utils.py +0 -0
  130. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/llms/vllm.py +0 -0
  131. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/log.py +0 -0
  132. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_agent/base.py +0 -0
  133. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_agent/deepsearch_agent.py +0 -0
  134. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_agent/factory.py +0 -0
  135. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_chat/__init__.py +0 -0
  136. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_chat/base.py +0 -0
  137. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_chat/factory.py +0 -0
  138. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_chat/simple.py +0 -0
  139. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_cube/__init__.py +0 -0
  140. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_cube/base.py +0 -0
  141. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_cube/general.py +0 -0
  142. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_cube/navie.py +0 -0
  143. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_cube/utils.py +0 -0
  144. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_feedback/base.py +0 -0
  145. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_feedback/feedback.py +0 -0
  146. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_feedback/simple_feedback.py +0 -0
  147. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_feedback/utils.py +0 -0
  148. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_os/core.py +0 -0
  149. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_os/main.py +0 -0
  150. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_os/utils/default_config.py +0 -0
  151. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_os/utils/format_utils.py +0 -0
  152. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_os/utils/reference_utils.py +0 -0
  153. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/__init__.py +0 -0
  154. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/base.py +0 -0
  155. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/factory.py +0 -0
  156. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/memory.py +0 -0
  157. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/multi_modal_struct.py +0 -0
  158. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/read_multi_modal/__init__.py +0 -0
  159. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/read_multi_modal/assistant_parser.py +0 -0
  160. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/read_multi_modal/base.py +0 -0
  161. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/read_multi_modal/file_content_parser.py +0 -0
  162. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/read_multi_modal/image_parser.py +0 -0
  163. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/read_multi_modal/multi_modal_parser.py +0 -0
  164. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/read_multi_modal/string_parser.py +0 -0
  165. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/read_multi_modal/text_content_parser.py +0 -0
  166. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/read_multi_modal/tool_parser.py +0 -0
  167. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/read_multi_modal/user_parser.py +0 -0
  168. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/read_multi_modal/utils.py +0 -0
  169. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/read_pref_memory/process_preference_memory.py +0 -0
  170. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/read_skill_memory/process_skill_memory.py +0 -0
  171. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/read_skill_memory/upload_skill_memory.py +0 -0
  172. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/simple_struct.py +0 -0
  173. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/strategy_struct.py +0 -0
  174. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_reader/utils.py +0 -0
  175. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/__init__.py +0 -0
  176. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/analyzer/__init__.py +0 -0
  177. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/analyzer/api_analyzer.py +0 -0
  178. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/analyzer/eval_analyzer.py +0 -0
  179. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/analyzer/mos_for_test_scheduler.py +0 -0
  180. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/analyzer/scheduler_for_eval.py +0 -0
  181. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/base_mixins/__init__.py +0 -0
  182. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/base_mixins/memory_ops.py +0 -0
  183. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/base_mixins/queue_ops.py +0 -0
  184. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/base_mixins/web_log_ops.py +1 -1
  185. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/base_scheduler.py +0 -0
  186. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/general_modules/__init__.py +0 -0
  187. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/general_modules/api_misc.py +0 -0
  188. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/general_modules/base.py +0 -0
  189. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/general_modules/init_components_for_scheduler.py +0 -0
  190. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/general_modules/misc.py +0 -0
  191. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/general_modules/scheduler_logger.py +1 -1
  192. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/general_modules/task_threads.py +0 -0
  193. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/general_scheduler.py +0 -0
  194. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/memory_manage_modules/__init__.py +0 -0
  195. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/memory_manage_modules/activation_memory_manager.py +0 -0
  196. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/memory_manage_modules/enhancement_pipeline.py +0 -0
  197. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/memory_manage_modules/filter_pipeline.py +0 -0
  198. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/memory_manage_modules/memory_filter.py +0 -0
  199. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/memory_manage_modules/post_processor.py +0 -0
  200. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/memory_manage_modules/rerank_pipeline.py +0 -0
  201. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/memory_manage_modules/retriever.py +0 -0
  202. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/memory_manage_modules/search_pipeline.py +0 -0
  203. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/memory_manage_modules/search_service.py +0 -0
  204. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/monitors/__init__.py +0 -0
  205. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/monitors/dispatcher_monitor.py +0 -0
  206. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/monitors/general_monitor.py +0 -0
  207. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/monitors/task_schedule_monitor.py +0 -0
  208. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/optimized_scheduler.py +0 -0
  209. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/orm_modules/__init__.py +0 -0
  210. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/orm_modules/api_redis_model.py +0 -0
  211. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/orm_modules/base_model.py +0 -0
  212. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/orm_modules/monitor_models.py +0 -0
  213. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/orm_modules/redis_model.py +0 -0
  214. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/scheduler_factory.py +0 -0
  215. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/schemas/__init__.py +0 -0
  216. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/schemas/analyzer_schemas.py +0 -0
  217. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/schemas/api_schemas.py +0 -0
  218. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/schemas/general_schemas.py +0 -0
  219. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/schemas/message_schemas.py +0 -0
  220. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/schemas/monitor_schemas.py +0 -0
  221. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/schemas/task_schemas.py +0 -0
  222. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/__init__.py +0 -0
  223. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/base_handler.py +0 -0
  224. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/context.py +0 -0
  225. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/handlers/__init__.py +0 -0
  226. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/handlers/add_handler.py +0 -0
  227. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/handlers/answer_handler.py +0 -0
  228. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/handlers/feedback_handler.py +0 -0
  229. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_dream_handler.py +0 -0
  230. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_read_handler.py +0 -0
  231. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_reorganize_handler.py +0 -0
  232. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/handlers/memory_update_handler.py +0 -0
  233. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/handlers/pref_add_handler.py +0 -0
  234. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/handlers/query_handler.py +0 -0
  235. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/local_queue.py +0 -0
  236. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/orchestrator.py +0 -0
  237. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/redis_queue.py +0 -0
  238. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/registry.py +0 -0
  239. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/task_schedule_modules/task_queue.py +0 -0
  240. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/utils/__init__.py +0 -0
  241. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/utils/api_utils.py +0 -0
  242. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/utils/config_utils.py +0 -0
  243. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/utils/db_utils.py +0 -0
  244. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/utils/filter_utils.py +0 -0
  245. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/utils/metrics.py +0 -0
  246. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/utils/monitor_event_utils.py +0 -0
  247. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/utils/status_tracker.py +0 -0
  248. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/webservice_modules/__init__.py +0 -0
  249. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/webservice_modules/rabbitmq_service.py +0 -0
  250. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_scheduler/webservice_modules/redis_service.py +0 -0
  251. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_user/factory.py +0 -0
  252. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_user/mysql_persistent_user_manager.py +0 -0
  253. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_user/mysql_user_manager.py +0 -0
  254. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_user/persistent_factory.py +0 -0
  255. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_user/persistent_user_manager.py +0 -0
  256. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_user/redis_persistent_user_manager.py +0 -0
  257. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/mem_user/user_manager.py +0 -0
  258. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/__init__.py +0 -0
  259. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/activation/__init__.py +0 -0
  260. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/activation/base.py +0 -0
  261. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/activation/item.py +0 -0
  262. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/activation/kv.py +0 -0
  263. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/activation/vllmkv.py +0 -0
  264. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/base.py +0 -0
  265. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/factory.py +0 -0
  266. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/parametric/__init__.py +0 -0
  267. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/parametric/base.py +0 -0
  268. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/parametric/item.py +0 -0
  269. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/parametric/lora.py +0 -0
  270. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/__init__.py +0 -0
  271. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/base.py +0 -0
  272. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/general.py +0 -0
  273. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/item.py +0 -0
  274. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/naive.py +0 -0
  275. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/prefer_text_memory/__init__.py +0 -0
  276. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/prefer_text_memory/adder.py +0 -0
  277. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/prefer_text_memory/config.py +0 -0
  278. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/prefer_text_memory/extractor.py +0 -0
  279. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/prefer_text_memory/factory.py +0 -0
  280. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/prefer_text_memory/retrievers.py +0 -0
  281. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/prefer_text_memory/spliter.py +0 -0
  282. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/prefer_text_memory/utils.py +0 -0
  283. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/preference.py +0 -0
  284. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/simple_preference.py +0 -0
  285. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/simple_tree.py +0 -0
  286. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree.py +0 -0
  287. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/__init__.py +0 -0
  288. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/organize/__init__.py +0 -0
  289. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/organize/handler.py +0 -0
  290. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/organize/manager.py +0 -0
  291. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py +0 -0
  292. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/organize/reorganizer.py +0 -0
  293. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/retrieve/__init__.py +0 -0
  294. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/retrieve/advanced_searcher.py +0 -0
  295. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/retrieve/bm25_util.py +0 -0
  296. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/retrieve/bochasearch.py +0 -0
  297. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py +0 -0
  298. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py +0 -0
  299. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/retrieve/reasoner.py +0 -0
  300. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/retrieve/recall.py +0 -0
  301. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/retrieve/reranker.py +0 -0
  302. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/retrieve/retrieval_mid_structs.py +0 -0
  303. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/retrieve/retrieve_utils.py +0 -0
  304. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/retrieve/task_goal_parser.py +0 -0
  305. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/retrieve/tavilysearch.py +0 -0
  306. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/retrieve/utils.py +0 -0
  307. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py +0 -0
  308. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memos_tools/dinding_report_bot.py +0 -0
  309. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memos_tools/lockfree_dict.py +0 -0
  310. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memos_tools/notification_service.py +0 -0
  311. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memos_tools/notification_utils.py +0 -0
  312. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memos_tools/singleton.py +0 -0
  313. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memos_tools/thread_safe_dict.py +0 -0
  314. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/memos_tools/thread_safe_dict_segment.py +0 -0
  315. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/multi_mem_cube/__init__.py +0 -0
  316. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/multi_mem_cube/composite_cube.py +0 -0
  317. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/multi_mem_cube/single_cube.py +0 -0
  318. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/multi_mem_cube/views.py +0 -0
  319. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/parsers/__init__.py +0 -0
  320. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/parsers/base.py +0 -0
  321. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/parsers/factory.py +0 -0
  322. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/parsers/markitdown.py +0 -0
  323. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/plugins/__init__.py +0 -0
  324. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/plugins/base.py +0 -0
  325. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/plugins/component_bootstrap.py +0 -0
  326. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/plugins/hooks.py +0 -0
  327. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/plugins/manager.py +0 -0
  328. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/reranker/__init__.py +0 -0
  329. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/reranker/base.py +0 -0
  330. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/reranker/concat.py +0 -0
  331. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/reranker/cosine_local.py +0 -0
  332. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/reranker/factory.py +0 -0
  333. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/reranker/http_bge.py +0 -0
  334. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/reranker/http_bge_strategy.py +0 -0
  335. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/reranker/noop.py +0 -0
  336. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/reranker/strategies/__init__.py +0 -0
  337. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/reranker/strategies/base.py +0 -0
  338. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/reranker/strategies/concat_background.py +0 -0
  339. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/reranker/strategies/concat_docsource.py +0 -0
  340. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/reranker/strategies/dialogue_common.py +0 -0
  341. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/reranker/strategies/factory.py +0 -0
  342. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/reranker/strategies/single_turn.py +0 -0
  343. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/reranker/strategies/singleturn_outmem.py +0 -0
  344. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/search/__init__.py +0 -0
  345. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/settings.py +0 -0
  346. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/templates/__init__.py +0 -0
  347. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/templates/advanced_search_prompts.py +0 -0
  348. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/templates/cloud_service_prompt.py +0 -0
  349. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/templates/instruction_completion.py +0 -0
  350. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/templates/mem_agent_prompts.py +0 -0
  351. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/templates/mem_feedback_prompts.py +0 -0
  352. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/templates/mem_reader_prompts.py +0 -0
  353. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/templates/mem_reader_strategy_prompts.py +0 -0
  354. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/templates/mem_scheduler_prompts.py +0 -0
  355. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/templates/mem_search_prompts.py +0 -0
  356. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/templates/mos_prompts.py +0 -0
  357. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/templates/prefer_complete_prompt.py +0 -0
  358. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/templates/skill_mem_prompt.py +0 -0
  359. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/templates/tool_mem_prompts.py +0 -0
  360. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/templates/tree_reorganize_prompts.py +0 -0
  361. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/types/__init__.py +0 -0
  362. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/types/general_types.py +0 -0
  363. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/types/openai_chat_completion_types/__init__.py +0 -0
  364. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/types/openai_chat_completion_types/chat_completion_assistant_message_param.py +0 -0
  365. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_image_param.py +0 -0
  366. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_input_audio_param.py +0 -0
  367. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_param.py +0 -0
  368. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_refusal_param.py +0 -0
  369. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_text_param.py +0 -0
  370. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/types/openai_chat_completion_types/chat_completion_message_custom_tool_call_param.py +0 -0
  371. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/types/openai_chat_completion_types/chat_completion_message_function_tool_call_param.py +0 -0
  372. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/types/openai_chat_completion_types/chat_completion_message_param.py +0 -0
  373. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/types/openai_chat_completion_types/chat_completion_message_tool_call_union_param.py +0 -0
  374. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/types/openai_chat_completion_types/chat_completion_system_message_param.py +0 -0
  375. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/types/openai_chat_completion_types/chat_completion_tool_message_param.py +0 -0
  376. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/types/openai_chat_completion_types/chat_completion_user_message_param.py +0 -0
  377. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/utils.py +0 -0
  378. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/vec_dbs/__init__.py +0 -0
  379. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/vec_dbs/base.py +0 -0
  380. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/vec_dbs/factory.py +0 -0
  381. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/vec_dbs/item.py +0 -0
  382. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/vec_dbs/milvus.py +0 -0
  383. {memoryos-2.0.17 → memoryos-2.0.20}/src/memos/vec_dbs/qdrant.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: MemoryOS
3
- Version: 2.0.17
3
+ Version: 2.0.20
4
4
  Summary: Intelligence Begins with Memory
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -134,6 +134,8 @@ Your lobsters and Hermes Agents now have **the best** memory system — choose *
134
134
  | 🧠 [**memos-local-plugin 2.0**](https://github.com/hijzy/MemOS/tree/main/apps/memos-local-plugin) | <ul><li>One local-first memory core for **Hermes Agent** and **OpenClaw**.</li><li>Self-evolving memory: L1 trace, L2 policy, L3 world model,<br>and crystallized Skills driven by feedback.</li></ul> | 🌐 [Website](https://memos-claw.openmem.net/) · 📖 [Docs](https://memos-docs.openmem.net/cn/openclaw/local_plugin) · 🐙 [GitHub](https://github.com/hijzy/MemOS/tree/main/apps/memos-local-plugin) · 📦 [NPM](https://www.npmjs.com/package/@memtensor/memos-local-plugin) |
135
135
  | ☁️ [**OpenClaw Cloud Plugin**](https://x.com/MemOS_dev/status/2019254160919769171?s=20) | <ul><li>[Reduces token usage by 72%.](https://x.com/MemOS_dev/status/2020854044583924111)</li><li>[Multi-agent memory sharing by `user_id`.](https://x.com/MemOS_dev/status/2020538135487062094)</li></ul> | 🖥️ [MemOS Dashboard](https://memos-dashboard.openmem.net/login/) · 📖 [Full Tutorial](https://memos-docs.openmem.net/openclaw/guide#_4-update-plugin) |
136
136
 
137
+ > **🐳 Docker Deployment Note**: When running memos-local-plugin in Docker containers, you must specify the config location using `MEMOS_HOME` environment variable or `--home` CLI flag. See [Docker Configuration Guide](./apps/memos-local-plugin/README.md#docker-deployment) for details.
138
+
137
139
  </div>
138
140
  <br>
139
141
 
@@ -346,6 +348,126 @@ Your lobsters and Hermes Agents now have **the best** memory system — choose *
346
348
 
347
349
  <br>
348
350
 
351
+
352
+ ## FAQ
353
+
354
+ ### What is MemOS?
355
+
356
+ MemOS is a **Memory Operating System** for LLMs and AI agents that unifies store/retrieve/manage for long-term memory. It enables context-aware and personalized interactions with knowledge base (KB), multi-modal memory, tool memory, and enterprise-grade optimizations built in.
357
+
358
+ ### What are the benchmark results?
359
+
360
+ | Benchmark | MemOS Result | Improvement |
361
+ |-----------|--------------|-------------|
362
+ | LoCoMo | 75.80 | - |
363
+ | LongMemEval | +40.43% vs baseline | - |
364
+ | PrefEval-10 | +2568% | - |
365
+ | PersonaMem | +40.75% | - |
366
+ | **vs OpenAI Memory** | +43.70% Accuracy | - |
367
+ | **Token Savings** | 35.24% | - |
368
+
369
+ ### How does MemOS compare to other memory solutions?
370
+
371
+ | Feature | MemOS | mem0 | LangChain Memory | Letta |
372
+ |---------|-------|------|------------------|-------|
373
+ | Multi-Modal Memory | ✅ Text/Images/Tools | ❌ Text only | ❌ Text only | ❌ Text only |
374
+ | Knowledge Base | ✅ Multi-Cube KB | ❌ No KB | ⚠️ RAG only | ❌ No KB |
375
+ | Memory Feedback | ✅ Natural language | ❌ No | ❌ No | ❌ No |
376
+ | Graph Memory | ✅ Inspectable/Editable | ❌ Black-box | ❌ Black-box | ❌ Limited |
377
+ | Async Ingestion | ✅ MemScheduler | ❌ No | ❌ No | ❌ No |
378
+ | Open Source | ✅ Apache 2.0 | ✅ MIT | ✅ Apache | ✅ MIT |
379
+ | ArXiv Paper | ✅ 2507.03724 | ❌ No | ❌ No | ❌ No |
380
+
381
+ ### What are the key features?
382
+
383
+ | Feature | Description |
384
+ |---------|-------------|
385
+ | **Unified Memory API** | Single API for add/retrieve/edit/delete, graph-structured, inspectable |
386
+ | **Multi-Modal Memory** | Text, images, tool traces, personas retrieved together |
387
+ | **Multi-Cube KB** | Composable memory cubes for users/projects/agents |
388
+ | **Async Ingestion** | MemScheduler with millisecond latency |
389
+ | **Memory Feedback** | Natural-language correction/supplement/replacement |
390
+ | **Self-evolving Memory** | L1 traces, L2 policies, L3 world model, crystallized Skills |
391
+
392
+ ### What deployment options are available?
393
+
394
+ | Option | Description |
395
+ |--------|-------------|
396
+ | **Cloud API** | Hosted service at memos.openmem.net |
397
+ | **Self-Hosted** | Local/private deployment via Docker |
398
+ | **Quick Mode** | Lightweight deployment |
399
+ | **Full Mode** | Complete deployment |
400
+
401
+ ### How do I get started with Cloud API?
402
+
403
+ 1. Sign up at [MemOS dashboard](https://memos-dashboard.openmem.net/)
404
+ 2. Go to **API Keys** and copy your key
405
+ 3. Use the Cloud API for memory operations
406
+
407
+ See [Cloud Getting Started](https://memos-docs.openmem.net/memos_cloud/quick_start/).
408
+
409
+ ### How do I self-host MemOS?
410
+
411
+ ```bash
412
+ # Clone
413
+ git clone https://github.com/MemTensor/MemOS.git
414
+ cd MemOS
415
+
416
+ # Install dependencies
417
+ pip install -r ./docker/requirements.txt
418
+
419
+ # Configure .env (OPENAI_API_KEY, etc.)
420
+ cp docker/.env.example MemOS/.env
421
+
422
+ # Start service
423
+ # See docs for full setup
424
+ ```
425
+
426
+ ### What LLM providers are supported?
427
+
428
+ | Provider | Setting |
429
+ |----------|---------|
430
+ | OpenAI | `MOS_CHAT_MODEL_PROVIDER=openai` |
431
+ | Azure OpenAI | `MOS_CHAT_MODEL_PROVIDER=azure` |
432
+ | Qwen (DashScope) | `MOS_CHAT_MODEL_PROVIDER=qwen` |
433
+ | DeepSeek | `MOS_CHAT_MODEL_PROVIDER=deepseek` |
434
+ | MiniMax | `MOS_CHAT_MODEL_PROVIDER=minimax` |
435
+ | Ollama | `MOS_CHAT_MODEL_PROVIDER=ollama` |
436
+ | HuggingFace | `MOS_CHAT_MODEL_PROVIDER=huggingface` |
437
+ | vLLM | `MOS_CHAT_MODEL_PROVIDER=vllm` |
438
+
439
+ ### What plugins are available?
440
+
441
+ | Plugin | Purpose |
442
+ |--------|---------|
443
+ | **memos-local-plugin 2.0** | Local-first memory for Hermes Agent & OpenClaw |
444
+ | **OpenClaw Cloud Plugin** | Hosted memory service, 72% token reduction |
445
+ | **OpenClaw Local Plugin** | 100% on-device SQLite memory |
446
+
447
+ ### What is the memory architecture?
448
+
449
+ | Layer | Purpose |
450
+ |-------|---------|
451
+ | **L1 Traces** | Raw interaction history |
452
+ | **L2 Policies** | Learned preferences/behaviors |
453
+ | **L3 World Model** | User understanding |
454
+ | **Crystallized Skills** | Reusable patterns |
455
+
456
+ ### What license does MemOS use?
457
+
458
+ Apache 2.0 License (see [LICENSE](./LICENSE)).
459
+
460
+ ### Where can I get help?
461
+
462
+ | Resource | Link |
463
+ |----------|------|
464
+ | Documentation | [memos-docs.openmem.net](https://memos-docs.openmem.net/home/overview/) |
465
+ | ArXiv Paper | [2507.03724](https://arxiv.org/abs/2507.03724) |
466
+ | Discord | [Join Server](https://discord.gg/Txbx3gebZR) |
467
+ | X/Twitter | [@MemOS_dev](https://x.com/MemOS_dev) |
468
+ | GitHub Issues | [Submit issues](https://github.com/MemTensor/MemOS/issues) |
469
+ | Awesome-AI-Memory | [IAAR-Shanghai/Awesome-AI-Memory](https://github.com/IAAR-Shanghai/Awesome-AI-Memory) |
470
+
349
471
  ## 📚 Resources
350
472
 
351
473
  - **Awesome-AI-Memory**
@@ -50,6 +50,8 @@ Your lobsters and Hermes Agents now have **the best** memory system — choose *
50
50
  | 🧠 [**memos-local-plugin 2.0**](https://github.com/hijzy/MemOS/tree/main/apps/memos-local-plugin) | <ul><li>One local-first memory core for **Hermes Agent** and **OpenClaw**.</li><li>Self-evolving memory: L1 trace, L2 policy, L3 world model,<br>and crystallized Skills driven by feedback.</li></ul> | 🌐 [Website](https://memos-claw.openmem.net/) · 📖 [Docs](https://memos-docs.openmem.net/cn/openclaw/local_plugin) · 🐙 [GitHub](https://github.com/hijzy/MemOS/tree/main/apps/memos-local-plugin) · 📦 [NPM](https://www.npmjs.com/package/@memtensor/memos-local-plugin) |
51
51
  | ☁️ [**OpenClaw Cloud Plugin**](https://x.com/MemOS_dev/status/2019254160919769171?s=20) | <ul><li>[Reduces token usage by 72%.](https://x.com/MemOS_dev/status/2020854044583924111)</li><li>[Multi-agent memory sharing by `user_id`.](https://x.com/MemOS_dev/status/2020538135487062094)</li></ul> | 🖥️ [MemOS Dashboard](https://memos-dashboard.openmem.net/login/) · 📖 [Full Tutorial](https://memos-docs.openmem.net/openclaw/guide#_4-update-plugin) |
52
52
 
53
+ > **🐳 Docker Deployment Note**: When running memos-local-plugin in Docker containers, you must specify the config location using `MEMOS_HOME` environment variable or `--home` CLI flag. See [Docker Configuration Guide](./apps/memos-local-plugin/README.md#docker-deployment) for details.
54
+
53
55
  </div>
54
56
  <br>
55
57
 
@@ -262,6 +264,126 @@ Your lobsters and Hermes Agents now have **the best** memory system — choose *
262
264
 
263
265
  <br>
264
266
 
267
+
268
+ ## FAQ
269
+
270
+ ### What is MemOS?
271
+
272
+ MemOS is a **Memory Operating System** for LLMs and AI agents that unifies store/retrieve/manage for long-term memory. It enables context-aware and personalized interactions with knowledge base (KB), multi-modal memory, tool memory, and enterprise-grade optimizations built in.
273
+
274
+ ### What are the benchmark results?
275
+
276
+ | Benchmark | MemOS Result | Improvement |
277
+ |-----------|--------------|-------------|
278
+ | LoCoMo | 75.80 | - |
279
+ | LongMemEval | +40.43% vs baseline | - |
280
+ | PrefEval-10 | +2568% | - |
281
+ | PersonaMem | +40.75% | - |
282
+ | **vs OpenAI Memory** | +43.70% Accuracy | - |
283
+ | **Token Savings** | 35.24% | - |
284
+
285
+ ### How does MemOS compare to other memory solutions?
286
+
287
+ | Feature | MemOS | mem0 | LangChain Memory | Letta |
288
+ |---------|-------|------|------------------|-------|
289
+ | Multi-Modal Memory | ✅ Text/Images/Tools | ❌ Text only | ❌ Text only | ❌ Text only |
290
+ | Knowledge Base | ✅ Multi-Cube KB | ❌ No KB | ⚠️ RAG only | ❌ No KB |
291
+ | Memory Feedback | ✅ Natural language | ❌ No | ❌ No | ❌ No |
292
+ | Graph Memory | ✅ Inspectable/Editable | ❌ Black-box | ❌ Black-box | ❌ Limited |
293
+ | Async Ingestion | ✅ MemScheduler | ❌ No | ❌ No | ❌ No |
294
+ | Open Source | ✅ Apache 2.0 | ✅ MIT | ✅ Apache | ✅ MIT |
295
+ | ArXiv Paper | ✅ 2507.03724 | ❌ No | ❌ No | ❌ No |
296
+
297
+ ### What are the key features?
298
+
299
+ | Feature | Description |
300
+ |---------|-------------|
301
+ | **Unified Memory API** | Single API for add/retrieve/edit/delete, graph-structured, inspectable |
302
+ | **Multi-Modal Memory** | Text, images, tool traces, personas retrieved together |
303
+ | **Multi-Cube KB** | Composable memory cubes for users/projects/agents |
304
+ | **Async Ingestion** | MemScheduler with millisecond latency |
305
+ | **Memory Feedback** | Natural-language correction/supplement/replacement |
306
+ | **Self-evolving Memory** | L1 traces, L2 policies, L3 world model, crystallized Skills |
307
+
308
+ ### What deployment options are available?
309
+
310
+ | Option | Description |
311
+ |--------|-------------|
312
+ | **Cloud API** | Hosted service at memos.openmem.net |
313
+ | **Self-Hosted** | Local/private deployment via Docker |
314
+ | **Quick Mode** | Lightweight deployment |
315
+ | **Full Mode** | Complete deployment |
316
+
317
+ ### How do I get started with Cloud API?
318
+
319
+ 1. Sign up at [MemOS dashboard](https://memos-dashboard.openmem.net/)
320
+ 2. Go to **API Keys** and copy your key
321
+ 3. Use the Cloud API for memory operations
322
+
323
+ See [Cloud Getting Started](https://memos-docs.openmem.net/memos_cloud/quick_start/).
324
+
325
+ ### How do I self-host MemOS?
326
+
327
+ ```bash
328
+ # Clone
329
+ git clone https://github.com/MemTensor/MemOS.git
330
+ cd MemOS
331
+
332
+ # Install dependencies
333
+ pip install -r ./docker/requirements.txt
334
+
335
+ # Configure .env (OPENAI_API_KEY, etc.)
336
+ cp docker/.env.example MemOS/.env
337
+
338
+ # Start service
339
+ # See docs for full setup
340
+ ```
341
+
342
+ ### What LLM providers are supported?
343
+
344
+ | Provider | Setting |
345
+ |----------|---------|
346
+ | OpenAI | `MOS_CHAT_MODEL_PROVIDER=openai` |
347
+ | Azure OpenAI | `MOS_CHAT_MODEL_PROVIDER=azure` |
348
+ | Qwen (DashScope) | `MOS_CHAT_MODEL_PROVIDER=qwen` |
349
+ | DeepSeek | `MOS_CHAT_MODEL_PROVIDER=deepseek` |
350
+ | MiniMax | `MOS_CHAT_MODEL_PROVIDER=minimax` |
351
+ | Ollama | `MOS_CHAT_MODEL_PROVIDER=ollama` |
352
+ | HuggingFace | `MOS_CHAT_MODEL_PROVIDER=huggingface` |
353
+ | vLLM | `MOS_CHAT_MODEL_PROVIDER=vllm` |
354
+
355
+ ### What plugins are available?
356
+
357
+ | Plugin | Purpose |
358
+ |--------|---------|
359
+ | **memos-local-plugin 2.0** | Local-first memory for Hermes Agent & OpenClaw |
360
+ | **OpenClaw Cloud Plugin** | Hosted memory service, 72% token reduction |
361
+ | **OpenClaw Local Plugin** | 100% on-device SQLite memory |
362
+
363
+ ### What is the memory architecture?
364
+
365
+ | Layer | Purpose |
366
+ |-------|---------|
367
+ | **L1 Traces** | Raw interaction history |
368
+ | **L2 Policies** | Learned preferences/behaviors |
369
+ | **L3 World Model** | User understanding |
370
+ | **Crystallized Skills** | Reusable patterns |
371
+
372
+ ### What license does MemOS use?
373
+
374
+ Apache 2.0 License (see [LICENSE](./LICENSE)).
375
+
376
+ ### Where can I get help?
377
+
378
+ | Resource | Link |
379
+ |----------|------|
380
+ | Documentation | [memos-docs.openmem.net](https://memos-docs.openmem.net/home/overview/) |
381
+ | ArXiv Paper | [2507.03724](https://arxiv.org/abs/2507.03724) |
382
+ | Discord | [Join Server](https://discord.gg/Txbx3gebZR) |
383
+ | X/Twitter | [@MemOS_dev](https://x.com/MemOS_dev) |
384
+ | GitHub Issues | [Submit issues](https://github.com/MemTensor/MemOS/issues) |
385
+ | Awesome-AI-Memory | [IAAR-Shanghai/Awesome-AI-Memory](https://github.com/IAAR-Shanghai/Awesome-AI-Memory) |
386
+
265
387
  ## 📚 Resources
266
388
 
267
389
  - **Awesome-AI-Memory**
@@ -4,7 +4,7 @@
4
4
  ##############################################################################
5
5
 
6
6
  name = "MemoryOS"
7
- version = "2.0.17"
7
+ version = "2.0.20"
8
8
  description = "Intelligence Begins with Memory"
9
9
  license = {text = "Apache-2.0"}
10
10
  readme = "README.md"
@@ -1,4 +1,4 @@
1
- __version__ = "2.0.17"
1
+ __version__ = "2.0.20"
2
2
 
3
3
  from memos.configs.mem_cube import GeneralMemCubeConfig
4
4
  from memos.configs.mem_os import MOSConfig
@@ -0,0 +1,128 @@
1
+ """
2
+ Cube handler for memory cube management operations.
3
+
4
+ This module handles cube creation and registration through the HTTP API.
5
+ """
6
+
7
+ from fastapi import HTTPException
8
+
9
+ from memos.api.handlers.base_handler import BaseHandler
10
+ from memos.api.product_models import (
11
+ CreateCubeRequest,
12
+ CreateCubeResponse,
13
+ CreateCubeResponseData,
14
+ RegisterCubeRequest,
15
+ RegisterCubeResponse,
16
+ RegisterCubeResponseData,
17
+ )
18
+ from memos.log import get_logger
19
+ from memos.mem_user.user_manager import UserManager
20
+
21
+
22
+ logger = get_logger(__name__)
23
+
24
+
25
+ class CubeHandler(BaseHandler):
26
+ """Handler for memory cube management operations."""
27
+
28
+ def __init__(self, *args, **kwargs):
29
+ """Initialize CubeHandler with dependencies."""
30
+ super().__init__(*args, **kwargs)
31
+ # Initialize UserManager for cube operations
32
+ # Use graph_db as the backend for user/cube management
33
+ self.user_manager = UserManager()
34
+
35
+ async def create_cube(self, request: CreateCubeRequest) -> CreateCubeResponse:
36
+ """Create a new memory cube for a user.
37
+
38
+ Args:
39
+ request: Cube creation request
40
+
41
+ Returns:
42
+ CreateCubeResponse with created cube details
43
+
44
+ Raises:
45
+ HTTPException: If cube creation fails
46
+ """
47
+ try:
48
+ # Validate owner exists
49
+ if not self.user_manager.validate_user(request.owner_id):
50
+ raise ValueError(f"Owner user '{request.owner_id}' does not exist or is inactive")
51
+
52
+ # Create cube via UserManager
53
+ created_cube_id = self.user_manager.create_cube(
54
+ cube_name=request.cube_name,
55
+ owner_id=request.owner_id,
56
+ cube_path=request.cube_path,
57
+ cube_id=request.cube_id,
58
+ )
59
+
60
+ logger.info(f"Created cube: {created_cube_id} for owner: {request.owner_id}")
61
+
62
+ return CreateCubeResponse(
63
+ code=200,
64
+ message="Cube created successfully",
65
+ data=CreateCubeResponseData(
66
+ cube_id=created_cube_id,
67
+ cube_name=request.cube_name,
68
+ owner_id=request.owner_id,
69
+ ),
70
+ )
71
+
72
+ except ValueError as e:
73
+ logger.error(f"Validation error creating cube: {e}")
74
+ raise HTTPException(status_code=400, detail=str(e)) from e
75
+ except Exception as e:
76
+ logger.error(f"Failed to create cube: {e}", exc_info=True)
77
+ raise HTTPException(status_code=500, detail=f"Failed to create cube: {e!s}") from e
78
+
79
+ async def register_cube(self, request: RegisterCubeRequest) -> RegisterCubeResponse:
80
+ """Register an existing memory cube with the system.
81
+
82
+ Note: This endpoint currently validates the request but the actual registration
83
+ logic requires integration with MOSCore.register_mem_cube(), which is not
84
+ directly available in the API server context. This is a placeholder that
85
+ validates inputs and could be enhanced when the architecture supports it.
86
+
87
+ Args:
88
+ request: Cube registration request
89
+
90
+ Returns:
91
+ RegisterCubeResponse with registration details
92
+
93
+ Raises:
94
+ HTTPException: If registration fails
95
+ """
96
+ try:
97
+ # Validate user exists if provided
98
+ if request.user_id and not self.user_manager.validate_user(request.user_id):
99
+ raise ValueError(f"User '{request.user_id}' does not exist or is inactive")
100
+
101
+ # Note: Full registration logic requires MOSCore which isn't available
102
+ # in the current API architecture. This validates the request.
103
+ # Future work: integrate with MOSCore.register_mem_cube()
104
+
105
+ # Use provided cube_id or fall back to name_or_path as identifier
106
+ final_cube_id = request.mem_cube_id or request.mem_cube_name_or_path
107
+
108
+ logger.info(f"Cube registration validated: {final_cube_id}")
109
+ logger.warning(
110
+ "register_cube endpoint validates inputs but full registration "
111
+ "requires MOSCore integration (not yet available in API context)"
112
+ )
113
+
114
+ return RegisterCubeResponse(
115
+ code=200,
116
+ message="Cube registration request validated (full registration pending architecture support)",
117
+ data=RegisterCubeResponseData(
118
+ cube_id=final_cube_id,
119
+ cube_name_or_path=request.mem_cube_name_or_path,
120
+ ),
121
+ )
122
+
123
+ except ValueError as e:
124
+ logger.error(f"Validation error registering cube: {e}")
125
+ raise HTTPException(status_code=400, detail=str(e)) from e
126
+ except Exception as e:
127
+ logger.error(f"Failed to register cube: {e}", exc_info=True)
128
+ raise HTTPException(status_code=500, detail=f"Failed to register cube: {e!s}") from e
@@ -13,6 +13,13 @@ from memos.templates.instruction_completion import instruct_completion
13
13
 
14
14
  logger = get_logger(__name__)
15
15
 
16
+ __all__ = [
17
+ "format_memory_item",
18
+ "post_process_textual_mem",
19
+ "rerank_knowledge_mem",
20
+ "to_iter",
21
+ ]
22
+
16
23
 
17
24
  def to_iter(running: Any) -> list[Any]:
18
25
  """
@@ -164,6 +171,7 @@ def rerank_knowledge_mem(
164
171
  text_mem: list[dict[str, Any]],
165
172
  top_k: int,
166
173
  file_mem_proportion: float = 0.5,
174
+ strip_conversation_sources: bool = False,
167
175
  ) -> list[dict[str, Any]]:
168
176
  """
169
177
  Rerank knowledge memories and keep conversation memories.
@@ -193,8 +201,9 @@ def rerank_knowledge_mem(
193
201
  item["memory"] = item["metadata"]["sources"][0]["content"]
194
202
  item["metadata"]["sources"] = []
195
203
 
196
- for item in conversation_mem:
197
- item.setdefault("metadata", {})["sources"] = []
204
+ if strip_conversation_sources:
205
+ for item in conversation_mem:
206
+ item.setdefault("metadata", {})["sources"] = []
198
207
 
199
208
  # deduplicate: remove items with duplicate memory content
200
209
  original_count = len(reranked_knowledge_mem)
@@ -118,6 +118,23 @@ class SearchHandler(BaseHandler):
118
118
  top_k=search_req_local.top_k,
119
119
  file_mem_proportion=0.5,
120
120
  )
121
+ hooked_results = trigger_hook(
122
+ H.SEARCH_RESULTS_AFTER_RERANK,
123
+ handler=self,
124
+ search_req=search_req_local,
125
+ results=results,
126
+ )
127
+ if hooked_results is not None:
128
+ results = hooked_results
129
+
130
+ hooked_results = trigger_hook(
131
+ H.SEARCH_CONTEXT_RENDER,
132
+ handler=self,
133
+ search_req=search_req_local,
134
+ results=results,
135
+ )
136
+ if hooked_results is not None:
137
+ results = hooked_results
121
138
 
122
139
  self.logger.info(
123
140
  f"[SearchHandler] Final search results: count={len(results)} results={results}"
@@ -270,7 +270,10 @@ class MOSMCPServer:
270
270
 
271
271
  @self.mcp.tool()
272
272
  async def search_memories(
273
- query: str, user_id: str | None = None, cube_ids: list[str] | None = None
273
+ query: str,
274
+ user_id: str | None = None,
275
+ cube_ids: list[str] | None = None,
276
+ filter: dict[str, Any] | None = None,
274
277
  ) -> dict[str, Any]:
275
278
  """
276
279
  Search for memories across user's accessible memory cubes.
@@ -282,11 +285,15 @@ class MOSMCPServer:
282
285
  query (str): Search query to find relevant memories
283
286
  user_id (str, optional): User ID whose cubes to search. If not provided, uses default user
284
287
  cube_ids (list[str], optional): Specific cube IDs to search. If not provided, searches all user's cubes
288
+ filter (dict, optional): Filter conditions for the search. An empty dict is treated as no filter.
285
289
 
286
290
  Returns:
287
291
  dict: Search results containing text_mem, act_mem, and para_mem categories with relevant memories
288
292
  """
289
293
  try:
294
+ # Some MCP clients always send filter:{} in conversation mode; treat it as no filter
295
+ if not filter:
296
+ filter = None
290
297
  result = self.mos_core.search(query, user_id, cube_ids)
291
298
  return result
292
299
  except Exception as e:
@@ -68,6 +68,71 @@ class MemCubeRegister(BaseRequest):
68
68
  mem_cube_id: str | None = Field(None, description="ID for the MemCube")
69
69
 
70
70
 
71
+ class CreateCubeRequest(BaseRequest):
72
+ """Request model for creating a new memory cube."""
73
+
74
+ cube_name: str = Field(..., description="Human-readable name for the memory cube")
75
+ owner_id: str = Field(..., description="User ID of the cube owner")
76
+ cube_path: str | None = Field(
77
+ None, description="File system path where cube data will be stored"
78
+ )
79
+ cube_id: str | None = Field(
80
+ None,
81
+ description=(
82
+ "Custom unique identifier for the cube. If not provided, one will be generated. "
83
+ "Note: cube_id is also referred to as mem_cube_id throughout the API."
84
+ ),
85
+ )
86
+
87
+
88
+ class CreateCubeResponseData(BaseModel):
89
+ """Data model for cube creation response."""
90
+
91
+ cube_id: str = Field(..., description="The created cube ID (also called mem_cube_id)")
92
+ cube_name: str = Field(..., description="Name of the created cube")
93
+ owner_id: str = Field(..., description="Owner user ID")
94
+
95
+
96
+ class CreateCubeResponse(BaseResponse[CreateCubeResponseData]):
97
+ """Response model for cube creation."""
98
+
99
+ message: str = "Cube created successfully"
100
+
101
+
102
+ class RegisterCubeRequest(BaseRequest):
103
+ """Request model for registering an existing memory cube.
104
+
105
+ This allows loading a cube from disk or creating a new one if the path doesn't exist.
106
+ """
107
+
108
+ mem_cube_name_or_path: str = Field(
109
+ ..., description="File path to the memory cube or name for a new cube"
110
+ )
111
+ mem_cube_id: str | None = Field(
112
+ None,
113
+ description=(
114
+ "Custom identifier for the cube (also called cube_id). "
115
+ "If not provided, one will be generated."
116
+ ),
117
+ )
118
+ user_id: str | None = Field(
119
+ None, description="User ID to associate with the cube. If not provided, uses default user"
120
+ )
121
+
122
+
123
+ class RegisterCubeResponseData(BaseModel):
124
+ """Data model for cube registration response."""
125
+
126
+ cube_id: str = Field(..., description="The registered cube ID (also called mem_cube_id)")
127
+ cube_name_or_path: str = Field(..., description="Name or path of the registered cube")
128
+
129
+
130
+ class RegisterCubeResponse(BaseResponse[RegisterCubeResponseData]):
131
+ """Response model for cube registration."""
132
+
133
+ message: str = "Cube registered successfully"
134
+
135
+
71
136
  class ChatRequest(BaseRequest):
72
137
  """Request model for chat operations.
73
138
 
@@ -357,6 +422,14 @@ class APISearchRequest(BaseRequest):
357
422
  ),
358
423
  )
359
424
 
425
+ rerank: bool = Field(
426
+ True,
427
+ description=(
428
+ "Whether to apply the textual memory reranker during search. "
429
+ "Set false to return retrieval-order candidates before post-search dedup/formatting."
430
+ ),
431
+ )
432
+
360
433
  pref_top_k: int = Field(
361
434
  6,
362
435
  ge=0,
@@ -399,6 +472,11 @@ class APISearchRequest(BaseRequest):
399
472
  description="Number of skill memories to retrieve (top-K). Default: 3.",
400
473
  )
401
474
 
475
+ context_format: str = Field(
476
+ "memory",
477
+ description="Optional search context format passed through to installed plugins.",
478
+ )
479
+
402
480
  # ==== Filter conditions ====
403
481
  # TODO: maybe add detailed description later
404
482
  filter: dict[str, Any] | None = Field(