MemoryOS 2.0.2__tar.gz → 2.0.4__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 (328) hide show
  1. {memoryos-2.0.2 → memoryos-2.0.4}/PKG-INFO +5 -2
  2. {memoryos-2.0.2 → memoryos-2.0.4}/pyproject.toml +8 -2
  3. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/__init__.py +1 -1
  4. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/config.py +56 -1
  5. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/handlers/chat_handler.py +5 -0
  6. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/handlers/component_init.py +24 -13
  7. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/handlers/config_builders.py +11 -1
  8. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/handlers/formatters_handler.py +14 -3
  9. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/handlers/memory_handler.py +39 -1
  10. memoryos-2.0.4/src/memos/api/handlers/search_handler.py +590 -0
  11. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/mcp_serve.py +61 -19
  12. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/product_models.py +18 -5
  13. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/routers/server_router.py +8 -0
  14. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/start_api.py +1 -1
  15. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/cli.py +1 -1
  16. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/embedder.py +17 -0
  17. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/mem_reader.py +9 -0
  18. memoryos-2.0.4/src/memos/embedders/universal_api.py +112 -0
  19. memoryos-2.0.4/src/memos/extras/nli_model/client.py +61 -0
  20. memoryos-2.0.4/src/memos/extras/nli_model/server/README.md +69 -0
  21. memoryos-2.0.4/src/memos/extras/nli_model/server/config.py +23 -0
  22. memoryos-2.0.4/src/memos/extras/nli_model/server/handler.py +186 -0
  23. memoryos-2.0.4/src/memos/extras/nli_model/server/serve.py +44 -0
  24. memoryos-2.0.4/src/memos/extras/nli_model/types.py +18 -0
  25. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/graph_dbs/neo4j.py +10 -1
  26. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/graph_dbs/neo4j_community.py +9 -0
  27. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/graph_dbs/polardb.py +48 -19
  28. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/llms/hf.py +1 -1
  29. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_feedback/feedback.py +9 -5
  30. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_feedback/simple_feedback.py +2 -0
  31. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/base.py +8 -1
  32. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/factory.py +5 -0
  33. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/multi_modal_struct.py +123 -60
  34. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/assistant_parser.py +2 -1
  35. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/base.py +2 -0
  36. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/image_parser.py +15 -17
  37. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/multi_modal_parser.py +1 -0
  38. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/user_parser.py +2 -1
  39. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/utils.py +1 -1
  40. memoryos-2.0.4/src/memos/mem_reader/read_skill_memory/process_skill_memory.py +765 -0
  41. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/simple_struct.py +34 -9
  42. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/utils.py +1 -1
  43. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/base_scheduler.py +8 -0
  44. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/general_modules/init_components_for_scheduler.py +1 -1
  45. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/general_scheduler.py +4 -0
  46. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/optimized_scheduler.py +27 -5
  47. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/orm_modules/api_redis_model.py +3 -2
  48. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/schemas/message_schemas.py +4 -0
  49. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/task_schedule_modules/redis_queue.py +9 -26
  50. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/base.py +3 -1
  51. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/item.py +1 -0
  52. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree.py +6 -1
  53. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/organize/manager.py +20 -4
  54. memoryos-2.0.4/src/memos/memories/textual/tree_text_memory/retrieve/pre_update.py +264 -0
  55. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/recall.py +1 -0
  56. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/retrieve_utils.py +7 -2
  57. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/searcher.py +124 -5
  58. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/multi_mem_cube/composite_cube.py +2 -1
  59. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/multi_mem_cube/single_cube.py +14 -5
  60. memoryos-2.0.4/src/memos/parsers/__init__.py +0 -0
  61. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/reranker/factory.py +4 -0
  62. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/reranker/http_bge.py +8 -0
  63. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/reranker/http_bge_strategy.py +8 -0
  64. memoryos-2.0.4/src/memos/templates/__init__.py +0 -0
  65. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/templates/mem_reader_prompts.py +65 -9
  66. memoryos-2.0.4/src/memos/templates/skill_mem_prompt.py +286 -0
  67. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/utils.py +2 -1
  68. memoryos-2.0.4/src/memos/vec_dbs/__init__.py +0 -0
  69. memoryos-2.0.2/src/memos/api/handlers/search_handler.py +0 -222
  70. memoryos-2.0.2/src/memos/embedders/universal_api.py +0 -51
  71. {memoryos-2.0.2 → memoryos-2.0.4}/LICENSE +0 -0
  72. {memoryos-2.0.2 → memoryos-2.0.4}/README.md +0 -0
  73. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/client.py +0 -0
  74. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/context/dependencies.py +0 -0
  75. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/exceptions.py +0 -0
  76. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/handlers/__init__.py +0 -0
  77. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/handlers/add_handler.py +0 -0
  78. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/handlers/base_handler.py +0 -0
  79. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/handlers/feedback_handler.py +0 -0
  80. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/handlers/scheduler_handler.py +0 -0
  81. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/handlers/suggestion_handler.py +0 -0
  82. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/middleware/request_context.py +0 -0
  83. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/product_api.py +0 -0
  84. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/routers/__init__.py +0 -0
  85. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/routers/product_router.py +0 -0
  86. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/api/server_api.py +0 -0
  87. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/chunkers/__init__.py +0 -0
  88. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/chunkers/base.py +0 -0
  89. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/chunkers/charactertext_chunker.py +0 -0
  90. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/chunkers/factory.py +0 -0
  91. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/chunkers/markdown_chunker.py +0 -0
  92. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/chunkers/sentence_chunker.py +0 -0
  93. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/chunkers/simple_chunker.py +0 -0
  94. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/__init__.py +0 -0
  95. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/base.py +0 -0
  96. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/chunker.py +0 -0
  97. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/graph_db.py +0 -0
  98. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/internet_retriever.py +0 -0
  99. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/llm.py +0 -0
  100. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/mem_agent.py +0 -0
  101. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/mem_chat.py +0 -0
  102. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/mem_cube.py +0 -0
  103. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/mem_os.py +0 -0
  104. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/mem_scheduler.py +0 -0
  105. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/mem_user.py +0 -0
  106. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/memory.py +0 -0
  107. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/parser.py +0 -0
  108. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/reranker.py +0 -0
  109. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/utils.py +0 -0
  110. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/configs/vec_db.py +0 -0
  111. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/context/context.py +0 -0
  112. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/dependency.py +0 -0
  113. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/deprecation.py +0 -0
  114. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/embedders/__init__.py +0 -0
  115. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/embedders/ark.py +0 -0
  116. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/embedders/base.py +0 -0
  117. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/embedders/factory.py +0 -0
  118. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/embedders/ollama.py +0 -0
  119. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/embedders/sentence_transformer.py +0 -0
  120. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/exceptions.py +0 -0
  121. {memoryos-2.0.2/src/memos/graph_dbs → memoryos-2.0.4/src/memos/extras}/__init__.py +0 -0
  122. {memoryos-2.0.2/src/memos/llms → memoryos-2.0.4/src/memos/extras/nli_model}/__init__.py +0 -0
  123. {memoryos-2.0.2/src/memos/mem_chat → memoryos-2.0.4/src/memos/extras/nli_model/server}/__init__.py +0 -0
  124. {memoryos-2.0.2/src/memos/mem_cube → memoryos-2.0.4/src/memos/graph_dbs}/__init__.py +0 -0
  125. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/graph_dbs/base.py +0 -0
  126. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/graph_dbs/factory.py +0 -0
  127. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/graph_dbs/item.py +0 -0
  128. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/graph_dbs/nebular.py +0 -0
  129. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/hello_world.py +0 -0
  130. {memoryos-2.0.2/src/memos/mem_reader → memoryos-2.0.4/src/memos/llms}/__init__.py +0 -0
  131. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/llms/base.py +0 -0
  132. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/llms/deepseek.py +0 -0
  133. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/llms/factory.py +0 -0
  134. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/llms/hf_singleton.py +0 -0
  135. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/llms/ollama.py +0 -0
  136. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/llms/openai.py +0 -0
  137. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/llms/openai_new.py +0 -0
  138. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/llms/qwen.py +0 -0
  139. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/llms/utils.py +0 -0
  140. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/llms/vllm.py +0 -0
  141. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/log.py +0 -0
  142. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_agent/base.py +0 -0
  143. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_agent/deepsearch_agent.py +0 -0
  144. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_agent/factory.py +0 -0
  145. {memoryos-2.0.2/src/memos/mem_scheduler → memoryos-2.0.4/src/memos/mem_chat}/__init__.py +0 -0
  146. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_chat/base.py +0 -0
  147. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_chat/factory.py +0 -0
  148. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_chat/simple.py +0 -0
  149. {memoryos-2.0.2/src/memos/mem_scheduler/analyzer → memoryos-2.0.4/src/memos/mem_cube}/__init__.py +0 -0
  150. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_cube/base.py +0 -0
  151. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_cube/general.py +0 -0
  152. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_cube/navie.py +0 -0
  153. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_cube/utils.py +0 -0
  154. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_feedback/base.py +0 -0
  155. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_feedback/utils.py +0 -0
  156. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_os/client.py +0 -0
  157. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_os/core.py +0 -0
  158. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_os/main.py +0 -0
  159. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_os/product.py +0 -0
  160. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_os/product_server.py +0 -0
  161. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_os/utils/default_config.py +0 -0
  162. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_os/utils/format_utils.py +0 -0
  163. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_os/utils/reference_utils.py +0 -0
  164. {memoryos-2.0.2/src/memos/mem_scheduler/general_modules → memoryos-2.0.4/src/memos/mem_reader}/__init__.py +0 -0
  165. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/memory.py +0 -0
  166. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/__init__.py +0 -0
  167. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/file_content_parser.py +0 -0
  168. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/string_parser.py +0 -0
  169. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/system_parser.py +0 -0
  170. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/text_content_parser.py +0 -0
  171. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/tool_parser.py +0 -0
  172. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_reader/strategy_struct.py +0 -0
  173. {memoryos-2.0.2/src/memos/mem_scheduler/monitors → memoryos-2.0.4/src/memos/mem_scheduler}/__init__.py +0 -0
  174. {memoryos-2.0.2/src/memos/mem_scheduler/orm_modules → memoryos-2.0.4/src/memos/mem_scheduler/analyzer}/__init__.py +0 -0
  175. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/analyzer/api_analyzer.py +0 -0
  176. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/analyzer/eval_analyzer.py +0 -0
  177. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/analyzer/mos_for_test_scheduler.py +0 -0
  178. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/analyzer/scheduler_for_eval.py +0 -0
  179. {memoryos-2.0.2/src/memos/mem_scheduler/schemas → memoryos-2.0.4/src/memos/mem_scheduler/general_modules}/__init__.py +0 -0
  180. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/general_modules/api_misc.py +0 -0
  181. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/general_modules/base.py +0 -0
  182. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/general_modules/misc.py +0 -0
  183. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/general_modules/scheduler_logger.py +0 -0
  184. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/general_modules/task_threads.py +0 -0
  185. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/memory_manage_modules/__init__.py +0 -0
  186. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/memory_manage_modules/memory_filter.py +0 -0
  187. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/memory_manage_modules/retriever.py +0 -0
  188. {memoryos-2.0.2/src/memos/mem_scheduler/task_schedule_modules → memoryos-2.0.4/src/memos/mem_scheduler/monitors}/__init__.py +0 -0
  189. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/monitors/dispatcher_monitor.py +0 -0
  190. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/monitors/general_monitor.py +0 -0
  191. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/monitors/task_schedule_monitor.py +0 -0
  192. {memoryos-2.0.2/src/memos/mem_scheduler/utils → memoryos-2.0.4/src/memos/mem_scheduler/orm_modules}/__init__.py +0 -0
  193. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/orm_modules/base_model.py +0 -0
  194. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/orm_modules/monitor_models.py +0 -0
  195. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/orm_modules/redis_model.py +0 -0
  196. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/scheduler_factory.py +0 -0
  197. {memoryos-2.0.2/src/memos/mem_scheduler/webservice_modules → memoryos-2.0.4/src/memos/mem_scheduler/schemas}/__init__.py +0 -0
  198. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/schemas/analyzer_schemas.py +0 -0
  199. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/schemas/api_schemas.py +0 -0
  200. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/schemas/general_schemas.py +0 -0
  201. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/schemas/monitor_schemas.py +0 -0
  202. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/schemas/task_schemas.py +0 -0
  203. {memoryos-2.0.2/src/memos/memories → memoryos-2.0.4/src/memos/mem_scheduler/task_schedule_modules}/__init__.py +0 -0
  204. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/task_schedule_modules/dispatcher.py +0 -0
  205. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/task_schedule_modules/local_queue.py +0 -0
  206. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/task_schedule_modules/orchestrator.py +0 -0
  207. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/task_schedule_modules/task_queue.py +0 -0
  208. {memoryos-2.0.2/src/memos/memories/activation → memoryos-2.0.4/src/memos/mem_scheduler/utils}/__init__.py +0 -0
  209. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/utils/api_utils.py +0 -0
  210. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/utils/config_utils.py +0 -0
  211. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/utils/db_utils.py +0 -0
  212. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/utils/filter_utils.py +0 -0
  213. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/utils/metrics.py +0 -0
  214. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/utils/misc_utils.py +0 -0
  215. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/utils/monitor_event_utils.py +0 -0
  216. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/utils/status_tracker.py +0 -0
  217. {memoryos-2.0.2/src/memos/memories/parametric → memoryos-2.0.4/src/memos/mem_scheduler/webservice_modules}/__init__.py +0 -0
  218. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/webservice_modules/rabbitmq_service.py +0 -0
  219. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_scheduler/webservice_modules/redis_service.py +0 -0
  220. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_user/factory.py +0 -0
  221. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_user/mysql_persistent_user_manager.py +0 -0
  222. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_user/mysql_user_manager.py +0 -0
  223. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_user/persistent_factory.py +0 -0
  224. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_user/persistent_user_manager.py +0 -0
  225. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_user/redis_persistent_user_manager.py +0 -0
  226. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/mem_user/user_manager.py +0 -0
  227. {memoryos-2.0.2/src/memos/memories/textual → memoryos-2.0.4/src/memos/memories}/__init__.py +0 -0
  228. {memoryos-2.0.2/src/memos/memories/textual/prefer_text_memory → memoryos-2.0.4/src/memos/memories/activation}/__init__.py +0 -0
  229. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/activation/base.py +0 -0
  230. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/activation/item.py +0 -0
  231. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/activation/kv.py +0 -0
  232. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/activation/vllmkv.py +0 -0
  233. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/base.py +0 -0
  234. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/factory.py +0 -0
  235. {memoryos-2.0.2/src/memos/memories/textual/tree_text_memory → memoryos-2.0.4/src/memos/memories/parametric}/__init__.py +0 -0
  236. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/parametric/base.py +0 -0
  237. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/parametric/item.py +0 -0
  238. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/parametric/lora.py +0 -0
  239. {memoryos-2.0.2/src/memos/memories/textual/tree_text_memory/organize → memoryos-2.0.4/src/memos/memories/textual}/__init__.py +0 -0
  240. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/general.py +0 -0
  241. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/naive.py +0 -0
  242. {memoryos-2.0.2/src/memos/memories/textual/tree_text_memory/retrieve → memoryos-2.0.4/src/memos/memories/textual/prefer_text_memory}/__init__.py +0 -0
  243. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/prefer_text_memory/adder.py +0 -0
  244. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/prefer_text_memory/config.py +0 -0
  245. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/prefer_text_memory/extractor.py +0 -0
  246. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/prefer_text_memory/factory.py +0 -0
  247. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/prefer_text_memory/retrievers.py +0 -0
  248. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/prefer_text_memory/spliter.py +0 -0
  249. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/prefer_text_memory/utils.py +0 -0
  250. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/preference.py +0 -0
  251. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/simple_preference.py +0 -0
  252. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/simple_tree.py +0 -0
  253. {memoryos-2.0.2/src/memos/multi_mem_cube → memoryos-2.0.4/src/memos/memories/textual/tree_text_memory}/__init__.py +0 -0
  254. {memoryos-2.0.2/src/memos/parsers → memoryos-2.0.4/src/memos/memories/textual/tree_text_memory/organize}/__init__.py +0 -0
  255. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/organize/handler.py +0 -0
  256. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py +0 -0
  257. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/organize/reorganizer.py +0 -0
  258. {memoryos-2.0.2/src/memos/templates → memoryos-2.0.4/src/memos/memories/textual/tree_text_memory/retrieve}/__init__.py +0 -0
  259. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/advanced_searcher.py +0 -0
  260. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/bm25_util.py +0 -0
  261. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/bochasearch.py +0 -0
  262. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py +0 -0
  263. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py +0 -0
  264. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/reasoner.py +0 -0
  265. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/reranker.py +0 -0
  266. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/retrieval_mid_structs.py +0 -0
  267. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/task_goal_parser.py +0 -0
  268. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/utils.py +0 -0
  269. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py +0 -0
  270. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memos_tools/dinding_report_bot.py +0 -0
  271. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memos_tools/lockfree_dict.py +0 -0
  272. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memos_tools/notification_service.py +0 -0
  273. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memos_tools/notification_utils.py +0 -0
  274. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memos_tools/singleton.py +0 -0
  275. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memos_tools/thread_safe_dict.py +0 -0
  276. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/memos_tools/thread_safe_dict_segment.py +0 -0
  277. {memoryos-2.0.2/src/memos/vec_dbs → memoryos-2.0.4/src/memos/multi_mem_cube}/__init__.py +0 -0
  278. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/multi_mem_cube/views.py +0 -0
  279. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/parsers/base.py +0 -0
  280. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/parsers/factory.py +0 -0
  281. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/parsers/markitdown.py +0 -0
  282. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/reranker/__init__.py +0 -0
  283. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/reranker/base.py +0 -0
  284. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/reranker/concat.py +0 -0
  285. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/reranker/cosine_local.py +0 -0
  286. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/reranker/noop.py +0 -0
  287. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/reranker/strategies/__init__.py +0 -0
  288. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/reranker/strategies/base.py +0 -0
  289. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/reranker/strategies/concat_background.py +0 -0
  290. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/reranker/strategies/concat_docsource.py +0 -0
  291. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/reranker/strategies/dialogue_common.py +0 -0
  292. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/reranker/strategies/factory.py +0 -0
  293. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/reranker/strategies/single_turn.py +0 -0
  294. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/reranker/strategies/singleturn_outmem.py +0 -0
  295. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/settings.py +0 -0
  296. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/templates/advanced_search_prompts.py +0 -0
  297. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/templates/cloud_service_prompt.py +0 -0
  298. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/templates/instruction_completion.py +0 -0
  299. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/templates/mem_agent_prompts.py +0 -0
  300. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/templates/mem_feedback_prompts.py +0 -0
  301. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/templates/mem_reader_strategy_prompts.py +0 -0
  302. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/templates/mem_scheduler_prompts.py +0 -0
  303. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/templates/mem_search_prompts.py +0 -0
  304. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/templates/mos_prompts.py +0 -0
  305. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/templates/prefer_complete_prompt.py +0 -0
  306. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/templates/tool_mem_prompts.py +0 -0
  307. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/templates/tree_reorganize_prompts.py +0 -0
  308. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/types/__init__.py +0 -0
  309. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/types/general_types.py +0 -0
  310. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/__init__.py +0 -0
  311. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_assistant_message_param.py +0 -0
  312. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_image_param.py +0 -0
  313. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_input_audio_param.py +0 -0
  314. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_param.py +0 -0
  315. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_refusal_param.py +0 -0
  316. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_text_param.py +0 -0
  317. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_message_custom_tool_call_param.py +0 -0
  318. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_message_function_tool_call_param.py +0 -0
  319. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_message_param.py +0 -0
  320. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_message_tool_call_union_param.py +0 -0
  321. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_system_message_param.py +0 -0
  322. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_tool_message_param.py +0 -0
  323. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_user_message_param.py +0 -0
  324. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/vec_dbs/base.py +0 -0
  325. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/vec_dbs/factory.py +0 -0
  326. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/vec_dbs/item.py +0 -0
  327. {memoryos-2.0.2 → memoryos-2.0.4}/src/memos/vec_dbs/milvus.py +0 -0
  328. {memoryos-2.0.2 → memoryos-2.0.4}/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.2
3
+ Version: 2.0.4
4
4
  Summary: Intelligence Begins with Memory
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -25,7 +25,10 @@ Provides-Extra: mem-reader
25
25
  Provides-Extra: mem-scheduler
26
26
  Provides-Extra: mem-user
27
27
  Provides-Extra: pref-mem
28
+ Provides-Extra: skill-mem
28
29
  Provides-Extra: tree-mem
30
+ Requires-Dist: alibabacloud-oss-v2 (>=1.2.2,<1.2.3) ; extra == "all"
31
+ Requires-Dist: alibabacloud-oss-v2 (>=1.2.2,<1.2.3) ; extra == "skill-mem"
29
32
  Requires-Dist: cachetools (>=6.0.0) ; extra == "all"
30
33
  Requires-Dist: chonkie (>=1.0.7,<2.0.0) ; extra == "all"
31
34
  Requires-Dist: chonkie (>=1.0.7,<2.0.0) ; extra == "mem-reader"
@@ -42,7 +45,7 @@ Requires-Dist: markitdown[docx,pdf,pptx,xls,xlsx] (>=0.1.1,<0.2.0) ; extra == "m
42
45
  Requires-Dist: neo4j (>=5.28.1,<6.0.0) ; extra == "all"
43
46
  Requires-Dist: neo4j (>=5.28.1,<6.0.0) ; extra == "tree-mem"
44
47
  Requires-Dist: nltk (>=3.9.1,<4.0.0) ; extra == "all"
45
- Requires-Dist: ollama (>=0.4.8,<0.5.0)
48
+ Requires-Dist: ollama (>=0.5.0,<0.5.1)
46
49
  Requires-Dist: openai (>=1.77.0,<2.0.0)
47
50
  Requires-Dist: pika (>=1.3.2,<2.0.0) ; extra == "all"
48
51
  Requires-Dist: pika (>=1.3.2,<2.0.0) ; extra == "mem-scheduler"
@@ -4,7 +4,7 @@
4
4
  ##############################################################################
5
5
 
6
6
  name = "MemoryOS"
7
- version = "2.0.2"
7
+ version = "2.0.4"
8
8
  description = "Intelligence Begins with Memory"
9
9
  license = {text = "Apache-2.0"}
10
10
  readme = "README.md"
@@ -37,7 +37,7 @@ classifiers = [
37
37
  ]
38
38
  dependencies = [
39
39
  "openai (>=1.77.0,<2.0.0)",
40
- "ollama (>=0.4.8,<0.5.0)",
40
+ "ollama (>=0.5.0,<0.5.1)",
41
41
  "transformers (>=4.51.3,<5.0.0)",
42
42
  "tenacity (>=9.1.2,<10.0.0)", # Error handling and retrying library
43
43
  "fastapi[all] (>=0.115.12,<0.116.0)", # Web framework for building APIs
@@ -97,6 +97,11 @@ pref-mem = [
97
97
  "datasketch (>=1.6.5,<2.0.0)", # MinHash library
98
98
  ]
99
99
 
100
+ # SkillMemory
101
+ skill-mem = [
102
+ "alibabacloud-oss-v2 (>=1.2.2,<1.2.3)",
103
+ ]
104
+
100
105
  # All optional dependencies
101
106
  # Allow users to install with `pip install MemoryOS[all]`
102
107
  all = [
@@ -123,6 +128,7 @@ all = [
123
128
  "volcengine-python-sdk (>=4.0.4,<5.0.0)",
124
129
  "nltk (>=3.9.1,<4.0.0)",
125
130
  "rake-nltk (>=1.0.6,<1.1.0)",
131
+ "alibabacloud-oss-v2 (>=1.2.2,<1.2.3)",
126
132
 
127
133
  # Uncategorized dependencies
128
134
  ]
@@ -1,4 +1,4 @@
1
- __version__ = "2.0.2"
1
+ __version__ = "2.0.4"
2
2
 
3
3
  from memos.configs.mem_cube import GeneralMemCubeConfig
4
4
  from memos.configs.mem_os import MOSConfig
@@ -23,7 +23,7 @@ if TYPE_CHECKING:
23
23
 
24
24
 
25
25
  # Load environment variables
26
- load_dotenv()
26
+ load_dotenv(override=True)
27
27
 
28
28
  logger = logging.getLogger(__name__)
29
29
 
@@ -410,6 +410,8 @@ class APIConfig:
410
410
  "url": os.getenv("MOS_RERANKER_URL", "localhost:8000/v1/rerank"),
411
411
  "model": os.getenv("MOS_FEEDBACK_RERANKER_MODEL", "bge-reranker-v2-m3"),
412
412
  "timeout": 10,
413
+ "max_query_tokens": int(os.getenv("MOS_RERANKER_MAX_TOKENS", 8000)),
414
+ "concate_len": int(os.getenv("MOS_RERANKER_CONCAT_LEN", 1000)),
413
415
  "headers_extra": json.loads(os.getenv("MOS_RERANKER_HEADERS_EXTRA", "{}")),
414
416
  "rerank_source": os.getenv("MOS_RERANK_SOURCE"),
415
417
  "reranker_strategy": os.getenv("MOS_RERANKER_STRATEGY", "single_turn"),
@@ -438,6 +440,18 @@ class APIConfig:
438
440
  "model_name_or_path": os.getenv("MOS_EMBEDDER_MODEL", "text-embedding-3-large"),
439
441
  "headers_extra": json.loads(os.getenv("MOS_EMBEDDER_HEADERS_EXTRA", "{}")),
440
442
  "base_url": os.getenv("MOS_EMBEDDER_API_BASE", "http://openai.com"),
443
+ "backup_client": os.getenv("MOS_EMBEDDER_BACKUP_CLIENT", "false").lower()
444
+ == "true",
445
+ "backup_base_url": os.getenv(
446
+ "MOS_EMBEDDER_BACKUP_API_BASE", "http://openai.com"
447
+ ),
448
+ "backup_api_key": os.getenv("MOS_EMBEDDER_BACKUP_API_KEY", "sk-xxxx"),
449
+ "backup_headers_extra": json.loads(
450
+ os.getenv("MOS_EMBEDDER_BACKUP_HEADERS_EXTRA", "{}")
451
+ ),
452
+ "backup_model_name_or_path": os.getenv(
453
+ "MOS_EMBEDDER_BACKUP_MODEL", "text-embedding-3-large"
454
+ ),
441
455
  },
442
456
  }
443
457
  else: # ollama
@@ -465,6 +479,35 @@ class APIConfig:
465
479
  }
466
480
 
467
481
  @staticmethod
482
+ def get_oss_config() -> dict[str, Any] | None:
483
+ """Get OSS configuration and validate connection."""
484
+
485
+ config = {
486
+ "endpoint": os.getenv("OSS_ENDPOINT", "http://oss-cn-shanghai.aliyuncs.com"),
487
+ "access_key_id": os.getenv("OSS_ACCESS_KEY_ID", ""),
488
+ "access_key_secret": os.getenv("OSS_ACCESS_KEY_SECRET", ""),
489
+ "region": os.getenv("OSS_REGION", ""),
490
+ "bucket_name": os.getenv("OSS_BUCKET_NAME", ""),
491
+ }
492
+
493
+ # Validate that all required fields have values
494
+ required_fields = [
495
+ "endpoint",
496
+ "access_key_id",
497
+ "access_key_secret",
498
+ "region",
499
+ "bucket_name",
500
+ ]
501
+ missing_fields = [field for field in required_fields if not config.get(field)]
502
+
503
+ if missing_fields:
504
+ logger.warning(
505
+ f"OSS configuration incomplete. Missing fields: {', '.join(missing_fields)}"
506
+ )
507
+ return None
508
+
509
+ return config
510
+
468
511
  def get_internet_config() -> dict[str, Any]:
469
512
  """Get embedder configuration."""
470
513
  reader_config = APIConfig.get_reader_config()
@@ -507,6 +550,13 @@ class APIConfig:
507
550
  },
508
551
  }
509
552
 
553
+ @staticmethod
554
+ def get_nli_config() -> dict[str, Any]:
555
+ """Get NLI model configuration."""
556
+ return {
557
+ "base_url": os.getenv("NLI_MODEL_BASE_URL", "http://localhost:32532"),
558
+ }
559
+
510
560
  @staticmethod
511
561
  def get_neo4j_community_config(user_id: str | None = None) -> dict[str, Any]:
512
562
  """Get Neo4j community configuration."""
@@ -744,6 +794,11 @@ class APIConfig:
744
794
  ).split(",")
745
795
  if h.strip()
746
796
  ],
797
+ "oss_config": APIConfig.get_oss_config(),
798
+ "skills_dir_config": {
799
+ "skills_oss_dir": os.getenv("SKILLS_OSS_DIR", "skill_memory/"),
800
+ "skills_local_dir": os.getenv("SKILLS_LOCAL_DIR", "/tmp/skill_memory/"),
801
+ },
747
802
  },
748
803
  },
749
804
  "enable_textual_memory": True,
@@ -110,6 +110,7 @@ class ChatHandler(BaseHandler):
110
110
  Raises:
111
111
  HTTPException: If chat fails
112
112
  """
113
+ self.logger.info(f"[ChatHandler] Chat Req is: {chat_req}")
113
114
  try:
114
115
  # Resolve readable cube IDs (for search)
115
116
  readable_cube_ids = chat_req.readable_cube_ids or [chat_req.user_id]
@@ -241,6 +242,7 @@ class ChatHandler(BaseHandler):
241
242
  Raises:
242
243
  HTTPException: If stream initialization fails
243
244
  """
245
+ self.logger.info(f"[ChatHandler] Chat Req is: {chat_req}")
244
246
  try:
245
247
 
246
248
  def generate_chat_response() -> Generator[str, None, None]:
@@ -422,6 +424,7 @@ class ChatHandler(BaseHandler):
422
424
  Raises:
423
425
  HTTPException: If stream initialization fails
424
426
  """
427
+ self.logger.info(f"[ChatHandler] Chat Req is: {chat_req}")
425
428
  try:
426
429
 
427
430
  def generate_chat_response() -> Generator[str, None, None]:
@@ -585,6 +588,8 @@ class ChatHandler(BaseHandler):
585
588
  # get internet reference
586
589
  internet_reference = self._get_internet_reference(
587
590
  search_response.data.get("text_mem")[0]["memories"]
591
+ if search_response.data.get("text_mem")
592
+ else []
588
593
  )
589
594
  yield f"data: {json.dumps({'type': 'reference', 'data': reference}, ensure_ascii=False)}\n\n"
590
595
 
@@ -18,6 +18,7 @@ from memos.api.handlers.config_builders import (
18
18
  build_internet_retriever_config,
19
19
  build_llm_config,
20
20
  build_mem_reader_config,
21
+ build_nli_client_config,
21
22
  build_pref_adder_config,
22
23
  build_pref_extractor_config,
23
24
  build_pref_retriever_config,
@@ -48,6 +49,7 @@ from memos.memories.textual.tree_text_memory.retrieve.retrieve_utils import Fast
48
49
 
49
50
  if TYPE_CHECKING:
50
51
  from memos.memories.textual.tree import TreeTextMemory
52
+ from memos.extras.nli_model.client import NLIClient
51
53
  from memos.mem_agent.deepsearch_agent import DeepSearchMemAgent
52
54
  from memos.memories.textual.tree_text_memory.retrieve.internet_retriever_factory import (
53
55
  InternetRetrieverFactory,
@@ -133,19 +135,22 @@ def init_server() -> dict[str, Any]:
133
135
  logger.info("Initializing MemOS server components...")
134
136
 
135
137
  # Initialize Redis client first as it is a core dependency for features like scheduler status tracking
136
- try:
137
- from memos.mem_scheduler.orm_modules.api_redis_model import APIRedisDBManager
138
-
139
- redis_client = APIRedisDBManager.load_redis_engine_from_env()
140
- if redis_client:
141
- logger.info("Redis client initialized successfully.")
142
- else:
143
- logger.error(
144
- "Failed to initialize Redis client. Check REDIS_HOST etc. in environment variables."
145
- )
146
- except Exception as e:
147
- logger.error(f"Failed to initialize Redis client: {e}", exc_info=True)
148
- redis_client = None # Ensure redis_client exists even on failure
138
+ if os.getenv("MEMSCHEDULER_USE_REDIS_QUEUE", "False").lower() == "true":
139
+ try:
140
+ from memos.mem_scheduler.orm_modules.api_redis_model import APIRedisDBManager
141
+
142
+ redis_client = APIRedisDBManager.load_redis_engine_from_env()
143
+ if redis_client:
144
+ logger.info("Redis client initialized successfully.")
145
+ else:
146
+ logger.error(
147
+ "Failed to initialize Redis client. Check REDIS_HOST etc. in environment variables."
148
+ )
149
+ except Exception as e:
150
+ logger.error(f"Failed to initialize Redis client: {e}", exc_info=True)
151
+ redis_client = None # Ensure redis_client exists even on failure
152
+ else:
153
+ redis_client = None
149
154
 
150
155
  # Get default cube configuration
151
156
  default_cube_config = APIConfig.get_default_cube_config()
@@ -158,6 +163,7 @@ def init_server() -> dict[str, Any]:
158
163
  llm_config = build_llm_config()
159
164
  chat_llm_config = build_chat_llm_config()
160
165
  embedder_config = build_embedder_config()
166
+ nli_client_config = build_nli_client_config()
161
167
  mem_reader_config = build_mem_reader_config()
162
168
  reranker_config = build_reranker_config()
163
169
  feedback_reranker_config = build_feedback_reranker_config()
@@ -183,6 +189,7 @@ def init_server() -> dict[str, Any]:
183
189
  else None
184
190
  )
185
191
  embedder = EmbedderFactory.from_config(embedder_config)
192
+ nli_client = NLIClient(base_url=nli_client_config["base_url"])
186
193
  # Pass graph_db to mem_reader for recall operations (deduplication, conflict detection)
187
194
  mem_reader = MemReaderFactory.from_config(mem_reader_config, graph_db=graph_db)
188
195
  reranker = RerankerFactory.from_config(reranker_config)
@@ -304,6 +311,9 @@ def init_server() -> dict[str, Any]:
304
311
  )
305
312
  logger.debug("Searcher created")
306
313
 
314
+ # Set searcher to mem_reader
315
+ mem_reader.set_searcher(searcher)
316
+
307
317
  # Initialize feedback server
308
318
  feedback_server = SimpleMemFeedback(
309
319
  llm=llm,
@@ -382,4 +392,5 @@ def init_server() -> dict[str, Any]:
382
392
  "feedback_server": feedback_server,
383
393
  "redis_client": redis_client,
384
394
  "deepsearch_agent": deepsearch_agent,
395
+ "nli_client": nli_client,
385
396
  }
@@ -89,7 +89,7 @@ def build_chat_llm_config() -> list[dict[str, Any]]:
89
89
  Returns:
90
90
  Validated chat LLM configuration dictionary
91
91
  """
92
- configs = json.loads(os.getenv("CHAT_MODEL_LIST"))
92
+ configs = json.loads(os.getenv("CHAT_MODEL_LIST", "[]"))
93
93
  return [
94
94
  {
95
95
  "config_class": LLMConfigFactory.model_validate(
@@ -188,3 +188,13 @@ def build_pref_retriever_config() -> dict[str, Any]:
188
188
  Validated retriever configuration dictionary
189
189
  """
190
190
  return RetrieverConfigFactory.model_validate({"backend": "naive", "config": {}})
191
+
192
+
193
+ def build_nli_client_config() -> dict[str, Any]:
194
+ """
195
+ Build NLI client configuration.
196
+
197
+ Returns:
198
+ NLI client configuration dictionary
199
+ """
200
+ return APIConfig.get_nli_config()
@@ -112,13 +112,17 @@ def post_process_textual_mem(
112
112
  fact_mem = [
113
113
  mem
114
114
  for mem in text_formatted_mem
115
- if mem["metadata"]["memory_type"] not in ["ToolSchemaMemory", "ToolTrajectoryMemory"]
115
+ if mem["metadata"]["memory_type"]
116
+ in ["WorkingMemory", "LongTermMemory", "UserMemory", "OuterMemory"]
116
117
  ]
117
118
  tool_mem = [
118
119
  mem
119
120
  for mem in text_formatted_mem
120
121
  if mem["metadata"]["memory_type"] in ["ToolSchemaMemory", "ToolTrajectoryMemory"]
121
122
  ]
123
+ skill_mem = [
124
+ mem for mem in text_formatted_mem if mem["metadata"]["memory_type"] == "SkillMemory"
125
+ ]
122
126
 
123
127
  memories_result["text_mem"].append(
124
128
  {
@@ -134,6 +138,13 @@ def post_process_textual_mem(
134
138
  "total_nodes": len(tool_mem),
135
139
  }
136
140
  )
141
+ memories_result["skill_mem"].append(
142
+ {
143
+ "cube_id": mem_cube_id,
144
+ "memories": skill_mem,
145
+ "total_nodes": len(skill_mem),
146
+ }
147
+ )
137
148
  return memories_result
138
149
 
139
150
 
@@ -144,7 +155,7 @@ def separate_knowledge_and_conversation_mem(memories: list[dict[str, Any]]):
144
155
  knowledge_mem = []
145
156
  conversation_mem = []
146
157
  for item in memories:
147
- sources = item["metadata"]["sources"]
158
+ sources = item.get("metadata", {}).get("sources", [])
148
159
  if (
149
160
  len(sources) > 0
150
161
  and "type" in sources[0]
@@ -199,7 +210,7 @@ def rerank_knowledge_mem(
199
210
  item["metadata"]["sources"] = []
200
211
 
201
212
  for item in conversation_mem:
202
- item["metadata"]["sources"] = []
213
+ item.setdefault("metadata", {})["sources"] = []
203
214
 
204
215
  # deduplicate: remove items with duplicate memory content
205
216
  original_count = len(reranked_knowledge_mem)
@@ -210,10 +210,45 @@ def handle_get_memory(memory_id: str, naive_mem_cube: NaiveMemCube) -> GetMemory
210
210
  )
211
211
 
212
212
 
213
+ def handle_get_memory_by_ids(
214
+ memory_ids: list[str], naive_mem_cube: NaiveMemCube
215
+ ) -> GetMemoryResponse:
216
+ """
217
+ Handler for getting multiple memories by their IDs.
218
+
219
+ Retrieves multiple memories and formats them as a list of dictionaries.
220
+ """
221
+ try:
222
+ memories = naive_mem_cube.text_mem.get_by_ids(memory_ids=memory_ids)
223
+ except Exception:
224
+ memories = []
225
+
226
+ # Ensure memories is not None
227
+ if memories is None:
228
+ memories = []
229
+
230
+ if naive_mem_cube.pref_mem is not None:
231
+ collection_names = ["explicit_preference", "implicit_preference"]
232
+ for collection_name in collection_names:
233
+ try:
234
+ result = naive_mem_cube.pref_mem.get_by_ids_with_collection_name(
235
+ collection_name, memory_ids
236
+ )
237
+ if result is not None:
238
+ result = [format_memory_item(item, save_sources=False) for item in result]
239
+ memories.extend(result)
240
+ except Exception:
241
+ continue
242
+
243
+ return GetMemoryResponse(
244
+ message="Memories retrieved successfully", code=200, data={"memories": memories}
245
+ )
246
+
247
+
213
248
  def handle_get_memories(
214
249
  get_mem_req: GetMemoryRequest, naive_mem_cube: NaiveMemCube
215
250
  ) -> GetMemoryResponse:
216
- results: dict[str, Any] = {"text_mem": [], "pref_mem": [], "tool_mem": []}
251
+ results: dict[str, Any] = {"text_mem": [], "pref_mem": [], "tool_mem": [], "skill_mem": []}
217
252
  memories = naive_mem_cube.text_mem.get_all(
218
253
  user_name=get_mem_req.mem_cube_id,
219
254
  user_id=get_mem_req.user_id,
@@ -226,6 +261,8 @@ def handle_get_memories(
226
261
 
227
262
  if not get_mem_req.include_tool_memory:
228
263
  results["tool_mem"] = []
264
+ if not get_mem_req.include_skill_memory:
265
+ results["skill_mem"] = []
229
266
 
230
267
  preferences: list[TextualMemoryItem] = []
231
268
 
@@ -270,6 +307,7 @@ def handle_get_memories(
270
307
  "text_mem": results.get("text_mem", []),
271
308
  "pref_mem": results.get("pref_mem", []),
272
309
  "tool_mem": results.get("tool_mem", []),
310
+ "skill_mem": results.get("skill_mem", []),
273
311
  }
274
312
 
275
313
  return GetMemoryResponse(message="Memories retrieved successfully", data=filtered_results)