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