MemoryOS 2.0.23__tar.gz → 2.0.24__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 (385) hide show
  1. {memoryos-2.0.23 → memoryos-2.0.24}/PKG-INFO +2 -2
  2. {memoryos-2.0.23 → memoryos-2.0.24}/README.md +1 -1
  3. {memoryos-2.0.23 → memoryos-2.0.24}/pyproject.toml +1 -1
  4. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/__init__.py +1 -1
  5. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/client.py +304 -46
  6. memoryos-2.0.24/src/memos/api/lifecycle.py +26 -0
  7. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/product_models.py +57 -4
  8. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/server_api.py +14 -2
  9. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/server_api_ext.py +14 -3
  10. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/log.py +22 -1
  11. {memoryos-2.0.23 → memoryos-2.0.24}/LICENSE +0 -0
  12. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/__init__.py +0 -0
  13. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/config.py +0 -0
  14. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/context/dependencies.py +0 -0
  15. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/exceptions.py +0 -0
  16. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/handlers/__init__.py +0 -0
  17. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/handlers/add_handler.py +0 -0
  18. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/handlers/base_handler.py +0 -0
  19. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/handlers/chat_handler.py +0 -0
  20. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/handlers/component_init.py +0 -0
  21. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/handlers/config_builders.py +0 -0
  22. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/handlers/cube_handler.py +0 -0
  23. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/handlers/feedback_handler.py +0 -0
  24. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/handlers/formatters_handler.py +0 -0
  25. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/handlers/memory_handler.py +0 -0
  26. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/handlers/scheduler_handler.py +0 -0
  27. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/handlers/search_handler.py +0 -0
  28. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/handlers/suggestion_handler.py +0 -0
  29. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/mcp_serve.py +0 -0
  30. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/middleware/__init__.py +0 -0
  31. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/middleware/auth.py +0 -0
  32. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/middleware/rate_limit.py +0 -0
  33. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/middleware/request_context.py +0 -0
  34. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/routers/__init__.py +0 -0
  35. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/routers/admin_router.py +0 -0
  36. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/routers/server_router.py +0 -0
  37. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/utils/__init__.py +0 -0
  38. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/api/utils/api_keys.py +0 -0
  39. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/chunkers/__init__.py +0 -0
  40. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/chunkers/base.py +0 -0
  41. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/chunkers/charactertext_chunker.py +0 -0
  42. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/chunkers/factory.py +0 -0
  43. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/chunkers/markdown_chunker.py +0 -0
  44. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/chunkers/sentence_chunker.py +0 -0
  45. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/chunkers/simple_chunker.py +0 -0
  46. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/cli.py +0 -0
  47. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/__init__.py +0 -0
  48. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/base.py +0 -0
  49. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/chunker.py +0 -0
  50. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/embedder.py +0 -0
  51. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/graph_db.py +0 -0
  52. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/internet_retriever.py +0 -0
  53. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/llm.py +0 -0
  54. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/mem_agent.py +0 -0
  55. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/mem_chat.py +0 -0
  56. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/mem_cube.py +0 -0
  57. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/mem_os.py +0 -0
  58. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/mem_reader.py +0 -0
  59. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/mem_scheduler.py +0 -0
  60. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/mem_user.py +0 -0
  61. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/memory.py +0 -0
  62. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/parser.py +0 -0
  63. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/reranker.py +0 -0
  64. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/utils.py +0 -0
  65. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/configs/vec_db.py +0 -0
  66. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/context/context.py +0 -0
  67. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dependency.py +0 -0
  68. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/deprecation.py +0 -0
  69. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/README.md +0 -0
  70. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/__init__.py +0 -0
  71. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/contextualization.py +0 -0
  72. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/enrichment.py +0 -0
  73. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/hook_defs.py +0 -0
  74. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/hooks.py +0 -0
  75. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/maintenance.py +0 -0
  76. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/pipeline/__init__.py +0 -0
  77. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/pipeline/base.py +0 -0
  78. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/pipeline/diary.py +0 -0
  79. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/pipeline/motive.py +0 -0
  80. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/pipeline/persistence.py +0 -0
  81. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/pipeline/reasoning.py +0 -0
  82. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/pipeline/recall.py +0 -0
  83. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/plugin.py +0 -0
  84. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/prompts/__init__.py +0 -0
  85. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/prompts/context_binding_prompt.py +0 -0
  86. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/prompts/context_summary_prompt.py +0 -0
  87. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/prompts/motive_prompt.py +0 -0
  88. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/prompts/reasoning_prompt.py +0 -0
  89. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/routers/__init__.py +0 -0
  90. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/routers/diary_router.py +0 -0
  91. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/routers/trigger_router.py +0 -0
  92. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/routes.py +0 -0
  93. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/search.py +0 -0
  94. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/signal_store.py +0 -0
  95. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/dream/types.py +0 -0
  96. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/embedders/__init__.py +0 -0
  97. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/embedders/ark.py +0 -0
  98. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/embedders/base.py +0 -0
  99. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/embedders/factory.py +0 -0
  100. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/embedders/ollama.py +0 -0
  101. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/embedders/sentence_transformer.py +0 -0
  102. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/embedders/universal_api.py +0 -0
  103. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/exceptions.py +0 -0
  104. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/extras/__init__.py +0 -0
  105. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/graph_dbs/__init__.py +0 -0
  106. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/graph_dbs/base.py +0 -0
  107. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/graph_dbs/factory.py +0 -0
  108. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/graph_dbs/item.py +0 -0
  109. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/graph_dbs/neo4j.py +0 -0
  110. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/graph_dbs/neo4j_community.py +0 -0
  111. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/graph_dbs/polardb.py +0 -0
  112. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/graph_dbs/postgres.py +0 -0
  113. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/hello_world.py +0 -0
  114. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/llms/__init__.py +0 -0
  115. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/llms/base.py +0 -0
  116. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/llms/deepseek.py +0 -0
  117. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/llms/factory.py +0 -0
  118. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/llms/hf.py +0 -0
  119. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/llms/hf_singleton.py +0 -0
  120. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/llms/minimax.py +0 -0
  121. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/llms/ollama.py +0 -0
  122. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/llms/openai.py +0 -0
  123. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/llms/openai_new.py +0 -0
  124. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/llms/qwen.py +0 -0
  125. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/llms/utils.py +0 -0
  126. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/llms/vllm.py +0 -0
  127. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_agent/base.py +0 -0
  128. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_agent/deepsearch_agent.py +0 -0
  129. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_agent/factory.py +0 -0
  130. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_chat/__init__.py +0 -0
  131. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_chat/base.py +0 -0
  132. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_chat/factory.py +0 -0
  133. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_chat/simple.py +0 -0
  134. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_cube/__init__.py +0 -0
  135. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_cube/base.py +0 -0
  136. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_cube/general.py +0 -0
  137. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_cube/navie.py +0 -0
  138. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_cube/utils.py +0 -0
  139. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_feedback/base.py +0 -0
  140. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_feedback/feedback.py +0 -0
  141. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_feedback/simple_feedback.py +0 -0
  142. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_feedback/utils.py +0 -0
  143. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_os/core.py +0 -0
  144. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_os/main.py +0 -0
  145. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_os/utils/default_config.py +0 -0
  146. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_os/utils/format_utils.py +0 -0
  147. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_os/utils/reference_utils.py +0 -0
  148. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/__init__.py +0 -0
  149. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/base.py +0 -0
  150. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/factory.py +0 -0
  151. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/memory.py +0 -0
  152. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/multi_modal_struct.py +0 -0
  153. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/read_multi_modal/__init__.py +0 -0
  154. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/read_multi_modal/assistant_parser.py +0 -0
  155. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/read_multi_modal/base.py +0 -0
  156. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/read_multi_modal/file_content_parser.py +0 -0
  157. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/read_multi_modal/image_parser.py +0 -0
  158. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/read_multi_modal/multi_modal_parser.py +0 -0
  159. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/read_multi_modal/string_parser.py +0 -0
  160. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/read_multi_modal/system_parser.py +0 -0
  161. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/read_multi_modal/text_content_parser.py +0 -0
  162. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/read_multi_modal/tool_parser.py +0 -0
  163. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/read_multi_modal/user_parser.py +0 -0
  164. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/read_multi_modal/utils.py +0 -0
  165. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/read_pref_memory/process_preference_memory.py +0 -0
  166. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/read_skill_memory/process_skill_memory.py +0 -0
  167. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/read_skill_memory/upload_skill_memory.py +0 -0
  168. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/simple_struct.py +0 -0
  169. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/strategy_struct.py +0 -0
  170. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_reader/utils.py +0 -0
  171. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/__init__.py +0 -0
  172. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/analyzer/__init__.py +0 -0
  173. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/analyzer/api_analyzer.py +0 -0
  174. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/analyzer/eval_analyzer.py +0 -0
  175. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/analyzer/mos_for_test_scheduler.py +0 -0
  176. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/analyzer/scheduler_for_eval.py +0 -0
  177. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/base_mixins/__init__.py +0 -0
  178. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/base_mixins/memory_ops.py +0 -0
  179. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/base_mixins/queue_ops.py +0 -0
  180. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/base_mixins/web_log_ops.py +0 -0
  181. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/base_scheduler.py +0 -0
  182. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/general_modules/__init__.py +0 -0
  183. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/general_modules/api_misc.py +0 -0
  184. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/general_modules/base.py +0 -0
  185. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/general_modules/init_components_for_scheduler.py +0 -0
  186. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/general_modules/misc.py +0 -0
  187. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/general_modules/scheduler_logger.py +0 -0
  188. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/general_modules/task_threads.py +0 -0
  189. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/general_scheduler.py +0 -0
  190. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/memory_manage_modules/__init__.py +0 -0
  191. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/memory_manage_modules/activation_memory_manager.py +0 -0
  192. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/memory_manage_modules/enhancement_pipeline.py +0 -0
  193. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/memory_manage_modules/filter_pipeline.py +0 -0
  194. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/memory_manage_modules/memory_filter.py +0 -0
  195. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/memory_manage_modules/post_processor.py +0 -0
  196. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/memory_manage_modules/rerank_pipeline.py +0 -0
  197. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/memory_manage_modules/retriever.py +0 -0
  198. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/memory_manage_modules/search_pipeline.py +0 -0
  199. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/memory_manage_modules/search_service.py +0 -0
  200. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/monitors/__init__.py +0 -0
  201. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/monitors/dispatcher_monitor.py +0 -0
  202. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/monitors/general_monitor.py +0 -0
  203. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/monitors/task_schedule_monitor.py +0 -0
  204. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/optimized_scheduler.py +0 -0
  205. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/orm_modules/__init__.py +0 -0
  206. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/orm_modules/api_redis_model.py +0 -0
  207. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/orm_modules/base_model.py +0 -0
  208. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/orm_modules/monitor_models.py +0 -0
  209. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/orm_modules/redis_model.py +0 -0
  210. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/scheduler_factory.py +0 -0
  211. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/schemas/__init__.py +0 -0
  212. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/schemas/analyzer_schemas.py +0 -0
  213. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/schemas/api_schemas.py +0 -0
  214. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/schemas/general_schemas.py +0 -0
  215. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/schemas/message_schemas.py +0 -0
  216. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/schemas/monitor_schemas.py +0 -0
  217. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/schemas/task_schemas.py +0 -0
  218. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/__init__.py +0 -0
  219. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/base_handler.py +0 -0
  220. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/context.py +0 -0
  221. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/dispatcher.py +0 -0
  222. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/handlers/__init__.py +0 -0
  223. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/handlers/add_handler.py +0 -0
  224. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/handlers/answer_handler.py +0 -0
  225. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/handlers/feedback_handler.py +0 -0
  226. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_dream_handler.py +0 -0
  227. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_read_handler.py +0 -0
  228. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_reorganize_handler.py +0 -0
  229. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/handlers/memory_update_handler.py +0 -0
  230. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/handlers/pref_add_handler.py +0 -0
  231. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/handlers/query_handler.py +0 -0
  232. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/local_queue.py +0 -0
  233. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/orchestrator.py +0 -0
  234. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/redis_queue.py +0 -0
  235. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/registry.py +0 -0
  236. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/task_schedule_modules/task_queue.py +0 -0
  237. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/utils/__init__.py +0 -0
  238. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/utils/api_utils.py +0 -0
  239. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/utils/config_utils.py +0 -0
  240. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/utils/db_utils.py +0 -0
  241. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/utils/filter_utils.py +0 -0
  242. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/utils/metrics.py +0 -0
  243. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/utils/misc_utils.py +0 -0
  244. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/utils/monitor_event_utils.py +0 -0
  245. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/utils/status_tracker.py +0 -0
  246. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/webservice_modules/__init__.py +0 -0
  247. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/webservice_modules/rabbitmq_service.py +0 -0
  248. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_scheduler/webservice_modules/redis_service.py +0 -0
  249. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_user/factory.py +0 -0
  250. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_user/mysql_persistent_user_manager.py +0 -0
  251. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_user/mysql_user_manager.py +0 -0
  252. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_user/persistent_factory.py +0 -0
  253. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_user/persistent_user_manager.py +0 -0
  254. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_user/redis_persistent_user_manager.py +0 -0
  255. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/mem_user/user_manager.py +0 -0
  256. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/__init__.py +0 -0
  257. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/activation/__init__.py +0 -0
  258. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/activation/base.py +0 -0
  259. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/activation/item.py +0 -0
  260. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/activation/kv.py +0 -0
  261. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/activation/vllmkv.py +0 -0
  262. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/base.py +0 -0
  263. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/factory.py +0 -0
  264. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/parametric/__init__.py +0 -0
  265. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/parametric/base.py +0 -0
  266. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/parametric/item.py +0 -0
  267. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/parametric/lora.py +0 -0
  268. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/__init__.py +0 -0
  269. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/base.py +0 -0
  270. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/general.py +0 -0
  271. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/item.py +0 -0
  272. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/naive.py +0 -0
  273. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/prefer_text_memory/__init__.py +0 -0
  274. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/prefer_text_memory/adder.py +0 -0
  275. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/prefer_text_memory/config.py +0 -0
  276. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/prefer_text_memory/extractor.py +0 -0
  277. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/prefer_text_memory/factory.py +0 -0
  278. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/prefer_text_memory/retrievers.py +0 -0
  279. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/prefer_text_memory/spliter.py +0 -0
  280. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/prefer_text_memory/utils.py +0 -0
  281. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/preference.py +0 -0
  282. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/simple_preference.py +0 -0
  283. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/simple_tree.py +0 -0
  284. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree.py +0 -0
  285. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/__init__.py +0 -0
  286. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/organize/__init__.py +0 -0
  287. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/organize/handler.py +0 -0
  288. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/organize/manager.py +0 -0
  289. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py +0 -0
  290. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/organize/reorganizer.py +0 -0
  291. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/retrieve/__init__.py +0 -0
  292. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/retrieve/advanced_searcher.py +0 -0
  293. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/retrieve/bm25_util.py +0 -0
  294. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/retrieve/bochasearch.py +0 -0
  295. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py +0 -0
  296. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py +0 -0
  297. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/retrieve/reasoner.py +0 -0
  298. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/retrieve/recall.py +0 -0
  299. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/retrieve/reranker.py +0 -0
  300. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/retrieve/retrieval_mid_structs.py +0 -0
  301. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/retrieve/retrieve_utils.py +0 -0
  302. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/retrieve/searcher.py +0 -0
  303. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/retrieve/task_goal_parser.py +0 -0
  304. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/retrieve/tavilysearch.py +0 -0
  305. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/retrieve/utils.py +0 -0
  306. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py +0 -0
  307. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memos_tools/dinding_report_bot.py +0 -0
  308. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memos_tools/lockfree_dict.py +0 -0
  309. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memos_tools/notification_service.py +0 -0
  310. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memos_tools/notification_utils.py +0 -0
  311. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memos_tools/singleton.py +0 -0
  312. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memos_tools/thread_safe_dict.py +0 -0
  313. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/memos_tools/thread_safe_dict_segment.py +0 -0
  314. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/multi_mem_cube/__init__.py +0 -0
  315. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/multi_mem_cube/composite_cube.py +0 -0
  316. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/multi_mem_cube/single_cube.py +0 -0
  317. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/multi_mem_cube/views.py +0 -0
  318. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/parsers/__init__.py +0 -0
  319. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/parsers/base.py +0 -0
  320. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/parsers/factory.py +0 -0
  321. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/parsers/markitdown.py +0 -0
  322. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/plugins/README.md +0 -0
  323. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/plugins/__init__.py +0 -0
  324. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/plugins/base.py +0 -0
  325. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/plugins/component_bootstrap.py +0 -0
  326. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/plugins/hook_defs.py +0 -0
  327. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/plugins/hooks.py +0 -0
  328. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/plugins/manager.py +0 -0
  329. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/reranker/__init__.py +0 -0
  330. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/reranker/base.py +0 -0
  331. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/reranker/concat.py +0 -0
  332. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/reranker/cosine_local.py +0 -0
  333. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/reranker/factory.py +0 -0
  334. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/reranker/http_bge.py +0 -0
  335. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/reranker/http_bge_strategy.py +0 -0
  336. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/reranker/noop.py +0 -0
  337. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/reranker/strategies/__init__.py +0 -0
  338. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/reranker/strategies/base.py +0 -0
  339. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/reranker/strategies/concat_background.py +0 -0
  340. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/reranker/strategies/concat_docsource.py +0 -0
  341. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/reranker/strategies/dialogue_common.py +0 -0
  342. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/reranker/strategies/factory.py +0 -0
  343. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/reranker/strategies/single_turn.py +0 -0
  344. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/reranker/strategies/singleturn_outmem.py +0 -0
  345. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/search/__init__.py +0 -0
  346. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/search/search_service.py +0 -0
  347. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/settings.py +0 -0
  348. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/templates/__init__.py +0 -0
  349. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/templates/advanced_search_prompts.py +0 -0
  350. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/templates/cloud_service_prompt.py +0 -0
  351. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/templates/instruction_completion.py +0 -0
  352. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/templates/mem_agent_prompts.py +0 -0
  353. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/templates/mem_feedback_prompts.py +0 -0
  354. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/templates/mem_reader_prompts.py +0 -0
  355. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/templates/mem_reader_strategy_prompts.py +0 -0
  356. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/templates/mem_scheduler_prompts.py +0 -0
  357. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/templates/mem_search_prompts.py +0 -0
  358. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/templates/mos_prompts.py +0 -0
  359. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/templates/prefer_complete_prompt.py +0 -0
  360. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/templates/skill_mem_prompt.py +0 -0
  361. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/templates/tool_mem_prompts.py +0 -0
  362. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/templates/tree_reorganize_prompts.py +0 -0
  363. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/types/__init__.py +0 -0
  364. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/types/general_types.py +0 -0
  365. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/types/openai_chat_completion_types/__init__.py +0 -0
  366. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/types/openai_chat_completion_types/chat_completion_assistant_message_param.py +0 -0
  367. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_image_param.py +0 -0
  368. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_input_audio_param.py +0 -0
  369. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_param.py +0 -0
  370. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_refusal_param.py +0 -0
  371. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_text_param.py +0 -0
  372. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/types/openai_chat_completion_types/chat_completion_message_custom_tool_call_param.py +0 -0
  373. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/types/openai_chat_completion_types/chat_completion_message_function_tool_call_param.py +0 -0
  374. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/types/openai_chat_completion_types/chat_completion_message_param.py +0 -0
  375. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/types/openai_chat_completion_types/chat_completion_message_tool_call_union_param.py +0 -0
  376. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/types/openai_chat_completion_types/chat_completion_system_message_param.py +0 -0
  377. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/types/openai_chat_completion_types/chat_completion_tool_message_param.py +0 -0
  378. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/types/openai_chat_completion_types/chat_completion_user_message_param.py +0 -0
  379. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/utils.py +0 -0
  380. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/vec_dbs/__init__.py +0 -0
  381. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/vec_dbs/base.py +0 -0
  382. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/vec_dbs/factory.py +0 -0
  383. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/vec_dbs/item.py +0 -0
  384. {memoryos-2.0.23 → memoryos-2.0.24}/src/memos/vec_dbs/milvus.py +0 -0
  385. {memoryos-2.0.23 → memoryos-2.0.24}/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.23
3
+ Version: 2.0.24
4
4
  Summary: Intelligence Begins with Memory
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -131,7 +131,7 @@ Description-Content-Type: text/markdown
131
131
  ### News
132
132
 
133
133
  - **2026-07-02** · 🏆 **MemOS Advances Agent and User Memory Benchmarks**
134
- With MemOS, **OpenClaw** improves average task completion from **36.63% to 50.87%** across five agent tasks. MemOS also achieves **92.34 on LoCoMo** and **93.40 on LongMemEval**, and leads in **OmniMemEval**, a unified evaluation of 14 commercial memory products across ten datasets.
134
+ With MemOS, **OpenClaw** improves average task completion from **36.63% to 50.87%** across five agent tasks. MemOS also achieves **88.83 on LoCoMo** and **89.20 on LongMemEval**, and leads in **OmniMemEval**, a unified evaluation of 14 commercial memory products across ten datasets.
135
135
 
136
136
  - **2026-05-09** · 🧠 **memos-local-plugin 2.0**
137
137
  Official local memory plugin for **Hermes Agent** and **OpenClaw**. One core powers self-evolving memory across L1 traces, L2 policies, L3 world models, and crystallized Skills, with local-first storage and feedback-driven retrieval.
@@ -47,7 +47,7 @@
47
47
  ### News
48
48
 
49
49
  - **2026-07-02** · 🏆 **MemOS Advances Agent and User Memory Benchmarks**
50
- With MemOS, **OpenClaw** improves average task completion from **36.63% to 50.87%** across five agent tasks. MemOS also achieves **92.34 on LoCoMo** and **93.40 on LongMemEval**, and leads in **OmniMemEval**, a unified evaluation of 14 commercial memory products across ten datasets.
50
+ With MemOS, **OpenClaw** improves average task completion from **36.63% to 50.87%** across five agent tasks. MemOS also achieves **88.83 on LoCoMo** and **89.20 on LongMemEval**, and leads in **OmniMemEval**, a unified evaluation of 14 commercial memory products across ten datasets.
51
51
 
52
52
  - **2026-05-09** · 🧠 **memos-local-plugin 2.0**
53
53
  Official local memory plugin for **Hermes Agent** and **OpenClaw**. One core powers self-evolving memory across L1 traces, L2 policies, L3 world models, and crystallized Skills, with local-first storage and feedback-driven retrieval.
@@ -4,7 +4,7 @@
4
4
  ##############################################################################
5
5
 
6
6
  name = "MemoryOS"
7
- version = "2.0.23"
7
+ version = "2.0.24"
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.23"
1
+ __version__ = "2.0.24"
2
2
 
3
3
  from memos.configs.mem_cube import GeneralMemCubeConfig
4
4
  from memos.configs.mem_os import MOSConfig
@@ -2,7 +2,9 @@ import json
2
2
  import mimetypes
3
3
  import os
4
4
 
5
+ from collections.abc import Iterator
5
6
  from typing import Any
7
+ from urllib.parse import quote
6
8
 
7
9
  import requests
8
10
 
@@ -65,17 +67,43 @@ class MemOSClient:
65
67
  if not param_value:
66
68
  raise ValueError(f"{param_name} is required")
67
69
 
70
+ def _validate_profile_subject(self, user_id: str | None, agent_id: str | None) -> None:
71
+ if bool(user_id) == bool(agent_id):
72
+ raise ValueError("exactly one of user_id or agent_id is required")
73
+
74
+ def _post_json_dict(
75
+ self, endpoint: str, payload: dict[str, Any], operation: str
76
+ ) -> dict[str, Any] | None:
77
+ url = f"{self.base_url}/{endpoint}"
78
+ for retry in range(MAX_RETRY_COUNT):
79
+ try:
80
+ response = requests.post(
81
+ url, data=json.dumps(payload), headers=self.headers, timeout=30
82
+ )
83
+ response.raise_for_status()
84
+ return response.json()
85
+ except Exception as e:
86
+ logger.error(
87
+ "Failed to %s (retry %s/%s): %s",
88
+ operation,
89
+ retry + 1,
90
+ MAX_RETRY_COUNT,
91
+ e,
92
+ )
93
+ if retry == MAX_RETRY_COUNT - 1:
94
+ raise
95
+
68
96
  def get_message(
69
97
  self,
70
98
  user_id: str,
71
99
  conversation_id: str | None = None,
72
- conversation_limit_number: int = 6,
73
- message_limit_number: int = 6,
100
+ conversation_limit_number: int | None = None,
101
+ message_limit_number: int | None = None,
74
102
  source: str | None = None,
75
103
  ) -> MemOSGetMessagesResponse | None:
76
104
  """Get message"""
77
105
  # Validate required parameters
78
- self._validate_required_params(user_id=user_id)
106
+ self._validate_required_params(user_id=user_id, conversation_id=conversation_id)
79
107
 
80
108
  url = f"{self.base_url}/get/message"
81
109
  payload = {
@@ -102,22 +130,23 @@ class MemOSClient:
102
130
  def add_message(
103
131
  self,
104
132
  messages: list[dict[str, Any]],
105
- user_id: str,
106
- conversation_id: str,
133
+ user_id: str | list[str] | None = None,
134
+ conversation_id: str | None = None,
107
135
  info: dict[str, Any] | None = None,
108
136
  source: str | None = None,
109
137
  app_id: str | None = None,
110
- agent_id: str | None = None,
138
+ agent_id: str | list[str] | None = None,
111
139
  async_mode: bool = True,
112
140
  tags: list[str] | None = None,
113
141
  allow_public: bool = False,
114
142
  allow_knowledgebase_ids: list[str] | None = None,
143
+ allow_memory_view: list[str] | None = None,
115
144
  ) -> MemOSAddResponse | None:
116
145
  """Add message"""
117
146
  # Validate required parameters
118
- self._validate_required_params(
119
- messages=messages, user_id=user_id, conversation_id=conversation_id
120
- )
147
+ self._validate_required_params(messages=messages)
148
+ if not user_id and not agent_id:
149
+ raise ValueError("user_id or agent_id is required")
121
150
 
122
151
  url = f"{self.base_url}/add/message"
123
152
  payload = {
@@ -130,8 +159,9 @@ class MemOSClient:
130
159
  "agent_id": agent_id,
131
160
  "allow_public": allow_public,
132
161
  "allow_knowledgebase_ids": allow_knowledgebase_ids,
162
+ "allow_memory_view": allow_memory_view,
133
163
  "tags": tags,
134
- "asyncMode": async_mode,
164
+ "async_mode": async_mode,
135
165
  }
136
166
  for retry in range(MAX_RETRY_COUNT):
137
167
  try:
@@ -150,8 +180,9 @@ class MemOSClient:
150
180
  def search_memory(
151
181
  self,
152
182
  query: str,
153
- user_id: str,
154
- conversation_id: str,
183
+ user_id: str | None = None,
184
+ conversation_id: str | None = None,
185
+ agent_id: str | None = None,
155
186
  memory_limit_number: int = 6,
156
187
  include_preference: bool = True,
157
188
  knowledgebase_ids: list[str] | None = None,
@@ -160,22 +191,34 @@ class MemOSClient:
160
191
  include_tool_memory: bool = False,
161
192
  preference_limit_number: int = 6,
162
193
  tool_memory_limit_number: int = 6,
194
+ relativity: float | None = None,
195
+ include_skill: bool = False,
196
+ skill_limit_number: int = 6,
197
+ include_memory_view: list[str] | None = None,
198
+ context_format: str = "memory",
163
199
  ) -> MemOSSearchResponse | None:
164
200
  """Search memories"""
165
201
  # Validate required parameters
166
- self._validate_required_params(query=query, user_id=user_id)
202
+ self._validate_required_params(query=query)
203
+ self._validate_profile_subject(user_id, agent_id)
167
204
 
168
205
  url = f"{self.base_url}/search/memory"
169
206
  payload = {
170
207
  "query": query,
171
208
  "user_id": user_id,
172
209
  "conversation_id": conversation_id,
210
+ "agent_id": agent_id,
173
211
  "memory_limit_number": memory_limit_number,
174
212
  "include_preference": include_preference,
175
213
  "knowledgebase_ids": knowledgebase_ids,
176
214
  "filter": filter,
177
215
  "preference_limit_number": preference_limit_number,
178
216
  "tool_memory_limit_number": tool_memory_limit_number,
217
+ "relativity": relativity,
218
+ "include_skill": include_skill,
219
+ "skill_limit_number": skill_limit_number,
220
+ "include_memory_view": include_memory_view,
221
+ "context_format": context_format,
179
222
  "source": source,
180
223
  "include_tool_memory": include_tool_memory,
181
224
  }
@@ -195,16 +238,30 @@ class MemOSClient:
195
238
  raise
196
239
 
197
240
  def get_memory(
198
- self, user_id: str, include_preference: bool = True, page: int = 1, size: int = 10
241
+ self,
242
+ user_id: str | None = None,
243
+ include_preference: bool = True,
244
+ page: int = 1,
245
+ size: int = 10,
246
+ agent_id: str | None = None,
247
+ include_tool_memory: bool = True,
248
+ include_memory_view: list[str] | None = None,
249
+ filter: dict[str, Any] | None = None,
199
250
  ) -> MemOSGetMemoryResponse | None:
200
251
  """get memories"""
201
252
  # Validate required parameters
202
- self._validate_required_params(include_preference=include_preference, user_id=user_id)
253
+ self._validate_profile_subject(user_id, agent_id)
254
+ if size > 50:
255
+ raise ValueError("size must be less than or equal to 50")
203
256
 
204
257
  url = f"{self.base_url}/get/memory"
205
258
  payload = {
206
259
  "include_preference": include_preference,
207
260
  "user_id": user_id,
261
+ "agent_id": agent_id,
262
+ "include_tool_memory": include_tool_memory,
263
+ "include_memory_view": include_memory_view,
264
+ "filter": filter,
208
265
  "page": page,
209
266
  "size": size,
210
267
  }
@@ -223,17 +280,47 @@ class MemOSClient:
223
280
  if retry == MAX_RETRY_COUNT - 1:
224
281
  raise
225
282
 
283
+ @staticmethod
284
+ def _iter_sse_data(response: requests.Response) -> Iterator[str]:
285
+ """Yield decoded data payloads from a Server-Sent Events response."""
286
+ try:
287
+ for line in response.iter_lines(decode_unicode=True):
288
+ if isinstance(line, bytes):
289
+ line = line.decode("utf-8")
290
+ if not line or not line.startswith("data:"):
291
+ continue
292
+ yield line.removeprefix("data:").lstrip()
293
+ finally:
294
+ response.close()
295
+
296
+ def get_memory_by_id(self, memid: str) -> dict[str, Any] | None:
297
+ """Get one memory detail by its memory ID."""
298
+ self._validate_required_params(memid=memid)
299
+
300
+ url = f"{self.base_url}/get/memory/{quote(memid, safe='')}"
301
+ for retry in range(MAX_RETRY_COUNT):
302
+ try:
303
+ response = requests.get(url, headers=self.headers, timeout=30)
304
+ response.raise_for_status()
305
+ return response.json()
306
+ except Exception as e:
307
+ logger.error(
308
+ "Failed to get memory by ID (retry %s/%s): %s",
309
+ retry + 1,
310
+ MAX_RETRY_COUNT,
311
+ e,
312
+ )
313
+ if retry == MAX_RETRY_COUNT - 1:
314
+ raise
315
+
226
316
  def create_knowledgebase(
227
- self, knowledgebase_name: str, knowledgebase_description: str
317
+ self, knowledgebase_name: str, knowledgebase_description: str | None = None
228
318
  ) -> MemOSCreateKnowledgebaseResponse | None:
229
319
  """
230
320
  Create knowledgebase
231
321
  """
232
322
  # Validate required parameters
233
- self._validate_required_params(
234
- knowledgebase_name=knowledgebase_name,
235
- knowledgebase_description=knowledgebase_description,
236
- )
323
+ self._validate_required_params(knowledgebase_name=knowledgebase_name)
237
324
 
238
325
  url = f"{self.base_url}/create/knowledgebase"
239
326
  payload = {
@@ -313,7 +400,7 @@ class MemOSClient:
313
400
  raise
314
401
 
315
402
  def add_knowledgebase_file_form(
316
- self, knowledgebase_id: str, files: list[str]
403
+ self, knowledgebase_id: str, files: list[str], type: str | None = None
317
404
  ) -> MemOSAddKnowledgebaseFileResponse | None:
318
405
  """
319
406
  add knowledgebase-file from form
@@ -321,12 +408,12 @@ class MemOSClient:
321
408
  # Validate required parameters
322
409
  self._validate_required_params(knowledgebase_id=knowledgebase_id, files=files)
323
410
 
324
- def build_file_form_param(file_path):
411
+ def build_file_form_param(file_path: str):
325
412
  """
326
413
  form-Automatically generate the structure required for the `files` parameter in requests based on the local file path
327
414
  """
328
415
  if not os.path.isfile(file_path):
329
- logger.warning(f"File {file_path} does not exist")
416
+ logger.warning("File %s does not exist", file_path)
330
417
  return None
331
418
  filename = os.path.basename(file_path)
332
419
 
@@ -335,31 +422,47 @@ class MemOSClient:
335
422
  mime_type = "application/octet-stream"
336
423
  return ("file", (filename, open(file_path, "rb"), mime_type))
337
424
 
425
+ def build_file_form_params() -> list:
426
+ file_params = [
427
+ file_param
428
+ for file_path in files
429
+ if (file_param := build_file_form_param(file_path)) is not None
430
+ ]
431
+ if not file_params:
432
+ raise ValueError("files must contain at least one valid file path")
433
+ return file_params
434
+
338
435
  url = f"{self.base_url}/add/knowledgebase-file"
339
436
  payload = {
340
437
  "knowledgebase_id": knowledgebase_id,
341
438
  }
439
+ if type is not None:
440
+ payload["type"] = type
342
441
  headers = {
343
442
  "Authorization": f"Token {self.api_key}",
344
443
  }
345
444
  for retry in range(MAX_RETRY_COUNT):
445
+ file_params = []
346
446
  try:
447
+ file_params = build_file_form_params()
347
448
  response = requests.post(
348
449
  url,
349
450
  params=payload,
350
451
  headers=headers,
351
452
  timeout=30,
352
- files=[build_file_form_param(file_path) for file_path in files],
453
+ files=file_params,
353
454
  )
354
455
  response.raise_for_status()
355
456
  response_data = response.json()
356
- print(response_data)
357
457
 
358
458
  return MemOSAddKnowledgebaseFileResponse(**response_data)
359
459
  except Exception as e:
360
460
  logger.error(f"Failed to add knowledgebase-file form (retry {retry + 1}/3): {e}")
361
461
  if retry == MAX_RETRY_COUNT - 1:
362
462
  raise
463
+ finally:
464
+ for file_param in file_params:
465
+ file_param[1][1].close()
363
466
 
364
467
  def delete_knowledgebase_file(
365
468
  self, file_ids: list[str]
@@ -390,17 +493,27 @@ class MemOSClient:
390
493
  raise
391
494
 
392
495
  def get_knowledgebase_file(
393
- self, file_ids: list[str]
496
+ self,
497
+ file_ids: list[str] | None = None,
498
+ knowledgebase_id: str | None = None,
499
+ type: str | None = None,
500
+ page: int | None = None,
501
+ page_size: int | None = None,
394
502
  ) -> MemOSGetKnowledgebaseFileResponse | None:
395
503
  """
396
504
  get knowledgebase-file
397
505
  """
398
506
  # Validate required parameters
399
- self._validate_required_params(file_ids=file_ids)
507
+ if bool(file_ids) == bool(knowledgebase_id):
508
+ raise ValueError("exactly one of file_ids or knowledgebase_id is required")
400
509
 
401
510
  url = f"{self.base_url}/get/knowledgebase-file"
402
511
  payload = {
403
512
  "file_ids": file_ids,
513
+ "knowledgebase_id": knowledgebase_id,
514
+ "type": type,
515
+ "page": page,
516
+ "page_size": page_size,
404
517
  }
405
518
 
406
519
  for retry in range(MAX_RETRY_COUNT):
@@ -446,8 +559,8 @@ class MemOSClient:
446
559
  def add_feedback(
447
560
  self,
448
561
  user_id: str,
449
- conversation_id: str,
450
- feedback_content: str,
562
+ conversation_id: str | None = None,
563
+ feedback_content: str | None = None,
451
564
  agent_id: str | None = None,
452
565
  app_id: str | None = None,
453
566
  feedback_time: str | None = None,
@@ -456,9 +569,7 @@ class MemOSClient:
456
569
  ) -> MemOSAddFeedBackResponse | None:
457
570
  """Add feedback"""
458
571
  # Validate required parameters
459
- self._validate_required_params(
460
- feedback_content=feedback_content, user_id=user_id, conversation_id=conversation_id
461
- )
572
+ self._validate_required_params(feedback_content=feedback_content, user_id=user_id)
462
573
 
463
574
  url = f"{self.base_url}/add/feedback"
464
575
  payload = {
@@ -486,17 +597,43 @@ class MemOSClient:
486
597
  raise
487
598
 
488
599
  def delete_memory(
489
- self, user_ids: list[str], memory_ids: list[str]
600
+ self,
601
+ user_ids: list[str] | None = None,
602
+ memory_ids: list[str] | None = None,
603
+ *,
604
+ user_id: str | None = None,
605
+ agent_id: str | None = None,
606
+ filter: dict[str, Any] | None = None,
607
+ memory_type: str | None = None,
490
608
  ) -> MemOSDeleteMemoryResponse | None:
491
609
  """delete_memory memories"""
492
- # Validate required parameters
493
- self._validate_required_params(user_ids=user_ids, memory_ids=memory_ids)
610
+ if user_id is None and user_ids:
611
+ if len(user_ids) != 1 and not memory_ids:
612
+ raise ValueError("current API supports a single user_id, not multiple user_ids")
613
+ if not memory_ids:
614
+ user_id = user_ids[0]
615
+
616
+ delete_modes = [
617
+ bool(memory_ids),
618
+ bool(user_id),
619
+ bool(agent_id),
620
+ filter is not None,
621
+ ]
622
+ if sum(delete_modes) != 1:
623
+ raise ValueError("exactly one delete condition is required")
494
624
 
495
625
  url = f"{self.base_url}/delete/memory"
496
- payload = {
497
- "user_ids": user_ids,
498
- "memory_ids": memory_ids,
499
- }
626
+ payload: dict[str, Any] = {}
627
+ if memory_ids:
628
+ payload["memory_ids"] = memory_ids
629
+ if user_id:
630
+ payload["user_id"] = user_id
631
+ if agent_id:
632
+ payload["agent_id"] = agent_id
633
+ if filter is not None:
634
+ payload["filter"] = filter
635
+ if memory_type is not None:
636
+ payload["memory_type"] = memory_type
500
637
 
501
638
  for retry in range(MAX_RETRY_COUNT):
502
639
  try:
@@ -512,6 +649,111 @@ class MemOSClient:
512
649
  if retry == MAX_RETRY_COUNT - 1:
513
650
  raise
514
651
 
652
+ def update_memory(
653
+ self,
654
+ memory_id: str,
655
+ content: str | None = None,
656
+ title: str | None = None,
657
+ status: str | None = None,
658
+ ) -> dict[str, Any] | None:
659
+ """Update an existing memory."""
660
+ self._validate_required_params(memory_id=memory_id)
661
+ if not content and not title and not status:
662
+ raise ValueError("content, title or status is required")
663
+
664
+ payload = {
665
+ "memory_id": memory_id,
666
+ "content": content,
667
+ "title": title,
668
+ "status": status,
669
+ }
670
+ return self._post_json_dict("update/memory", payload, "update memory")
671
+
672
+ def extract_memory(
673
+ self,
674
+ messages: list[dict[str, Any]],
675
+ extraction_types: list[str] | None = None,
676
+ model: str | None = None,
677
+ ) -> dict[str, Any] | None:
678
+ """Extract memory candidates from conversation messages."""
679
+ self._validate_required_params(messages=messages)
680
+
681
+ payload = {
682
+ "messages": messages,
683
+ "extraction_types": extraction_types,
684
+ "model": model,
685
+ }
686
+ return self._post_json_dict("extract/memory", payload, "extract memory")
687
+
688
+ def rerank(
689
+ self,
690
+ query: str,
691
+ documents: list[str],
692
+ model: str | None = None,
693
+ top_n: int | None = None,
694
+ ) -> dict[str, Any] | None:
695
+ """Rerank documents for a query."""
696
+ self._validate_required_params(query=query, documents=documents)
697
+ if top_n is not None and top_n <= 0:
698
+ raise ValueError("top_n must be greater than 0")
699
+
700
+ payload = {
701
+ "query": query,
702
+ "documents": documents,
703
+ "model": model,
704
+ "top_n": top_n,
705
+ }
706
+ return self._post_json_dict("rerank", payload, "rerank documents")
707
+
708
+ def bind_profile_template(self, bind_list: list[dict[str, Any]]) -> dict[str, Any] | None:
709
+ """Bind profile templates to user or agent subjects."""
710
+ self._validate_required_params(bind_list=bind_list)
711
+
712
+ payload = {
713
+ "bind_list": bind_list,
714
+ }
715
+ return self._post_json_dict("bind/profile_template", payload, "bind profile template")
716
+
717
+ def edit_profile(
718
+ self,
719
+ profile_template_id: str,
720
+ user_id: str | None = None,
721
+ agent_id: str | None = None,
722
+ metadata: dict[str, Any] | None = None,
723
+ remove_fields: list[str] | None = None,
724
+ ) -> dict[str, Any] | None:
725
+ """Edit a profile instance."""
726
+ self._validate_required_params(profile_template_id=profile_template_id)
727
+ self._validate_profile_subject(user_id, agent_id)
728
+ if metadata is None and not remove_fields:
729
+ raise ValueError("metadata or remove_fields is required")
730
+
731
+ payload = {
732
+ "user_id": user_id,
733
+ "agent_id": agent_id,
734
+ "profile_template_id": profile_template_id,
735
+ "metadata": metadata,
736
+ "remove_fields": remove_fields,
737
+ }
738
+ return self._post_json_dict("edit/profile", payload, "edit profile")
739
+
740
+ def delete_profile(
741
+ self,
742
+ profile_template_id: str,
743
+ user_id: str | None = None,
744
+ agent_id: str | None = None,
745
+ ) -> dict[str, Any] | None:
746
+ """Delete a profile instance."""
747
+ self._validate_required_params(profile_template_id=profile_template_id)
748
+ self._validate_profile_subject(user_id, agent_id)
749
+
750
+ payload = {
751
+ "user_id": user_id,
752
+ "agent_id": agent_id,
753
+ "profile_template_id": profile_template_id,
754
+ }
755
+ return self._post_json_dict("delete/profile", payload, "delete profile")
756
+
515
757
  def chat(
516
758
  self,
517
759
  user_id: str,
@@ -524,21 +766,26 @@ class MemOSClient:
524
766
  system_prompt: str | None = None,
525
767
  model_name: str | None = None,
526
768
  knowledgebase_ids: list[str] | None = None,
527
- filter: dict[str:Any] | None = None,
528
- add_message_on_answer: bool = False,
769
+ filter: dict[str, Any] | None = None,
770
+ add_message_on_answer: bool = True,
529
771
  app_id: str | None = None,
530
772
  agent_id: str | None = None,
531
773
  async_mode: bool = True,
532
774
  tags: list[str] | None = None,
533
- info: dict[str:Any] | None = None,
775
+ info: dict[str, Any] | None = None,
534
776
  allow_public: bool = False,
777
+ allow_knowledgebase_ids: list[str] | None = None,
535
778
  max_tokens: int = 8192,
536
- temperature: float | None = None,
537
- top_p: float | None = None,
779
+ temperature: float | None = 0.7,
780
+ top_p: float | None = 0.95,
538
781
  include_preference: bool = True,
539
782
  preference_limit_number: int = 6,
540
783
  memory_limit_number: int = 6,
541
- ) -> MemOSChatResponse | None:
784
+ stream: bool = False,
785
+ include_tool_memory: bool = False,
786
+ tool_memory_limit_number: int = 6,
787
+ relativity: float | None = None,
788
+ ) -> MemOSChatResponse | Iterator[str] | None:
542
789
  """chat"""
543
790
  # Validate required parameters
544
791
  self._validate_required_params(
@@ -565,20 +812,31 @@ class MemOSClient:
565
812
  "tags": tags,
566
813
  "info": info,
567
814
  "allow_public": allow_public,
815
+ "allow_knowledgebase_ids": allow_knowledgebase_ids,
568
816
  "max_tokens": max_tokens,
569
817
  "temperature": temperature,
570
818
  "top_p": top_p,
571
819
  "include_preference": include_preference,
572
820
  "preference_limit_number": preference_limit_number,
573
821
  "memory_limit_number": memory_limit_number,
822
+ "stream": stream,
823
+ "include_tool_memory": include_tool_memory,
824
+ "tool_memory_limit_number": tool_memory_limit_number,
825
+ "relativity": relativity,
574
826
  }
575
827
 
576
828
  for retry in range(MAX_RETRY_COUNT):
577
829
  try:
578
830
  response = requests.post(
579
- url, data=json.dumps(payload), headers=self.headers, timeout=30
831
+ url,
832
+ data=json.dumps(payload),
833
+ headers=self.headers,
834
+ timeout=30,
835
+ stream=stream,
580
836
  )
581
837
  response.raise_for_status()
838
+ if stream:
839
+ return self._iter_sse_data(response)
582
840
  response_data = response.json()
583
841
 
584
842
  return MemOSChatResponse(**response_data)
@@ -0,0 +1,26 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any
3
+
4
+ from memos.log import get_logger
5
+
6
+
7
+ logger = get_logger(__name__)
8
+
9
+
10
+ def shutdown_components(components: Mapping[str, Any] | None) -> None:
11
+ """Release long-lived API components before the logging system shuts down."""
12
+ if not components:
13
+ return
14
+
15
+ mem_scheduler = components.get("mem_scheduler")
16
+ if mem_scheduler is None:
17
+ return
18
+
19
+ for method_name in ("stop", "rabbitmq_close"):
20
+ method = getattr(mem_scheduler, method_name, None)
21
+ if not callable(method):
22
+ continue
23
+ try:
24
+ method()
25
+ except Exception:
26
+ logger.exception("Failed to run mem_scheduler.%s during API shutdown", method_name)