MemoryOS 2.0.3__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.3 → memoryos-2.0.4}/PKG-INFO +5 -2
  2. {memoryos-2.0.3 → memoryos-2.0.4}/pyproject.toml +8 -2
  3. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/__init__.py +1 -1
  4. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/config.py +53 -0
  5. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/handlers/chat_handler.py +5 -0
  6. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/handlers/component_init.py +8 -0
  7. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/handlers/config_builders.py +10 -0
  8. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/handlers/formatters_handler.py +12 -1
  9. {memoryos-2.0.3 → 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.3 → memoryos-2.0.4}/src/memos/api/product_models.py +18 -5
  12. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/routers/server_router.py +8 -0
  13. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/embedder.py +17 -0
  14. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/mem_reader.py +9 -0
  15. memoryos-2.0.4/src/memos/embedders/universal_api.py +112 -0
  16. memoryos-2.0.4/src/memos/extras/nli_model/client.py +61 -0
  17. memoryos-2.0.4/src/memos/extras/nli_model/server/README.md +69 -0
  18. memoryos-2.0.4/src/memos/extras/nli_model/server/config.py +23 -0
  19. memoryos-2.0.4/src/memos/extras/nli_model/server/handler.py +186 -0
  20. memoryos-2.0.4/src/memos/extras/nli_model/server/serve.py +44 -0
  21. memoryos-2.0.4/src/memos/extras/nli_model/types.py +18 -0
  22. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/graph_dbs/polardb.py +13 -16
  23. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/base.py +8 -1
  24. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/factory.py +5 -0
  25. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/multi_modal_struct.py +123 -60
  26. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/assistant_parser.py +2 -1
  27. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/base.py +2 -0
  28. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/multi_modal_parser.py +1 -0
  29. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/user_parser.py +2 -1
  30. memoryos-2.0.4/src/memos/mem_reader/read_skill_memory/process_skill_memory.py +765 -0
  31. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/simple_struct.py +10 -2
  32. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/general_scheduler.py +4 -0
  33. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/schemas/message_schemas.py +4 -0
  34. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/base.py +3 -1
  35. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/item.py +1 -0
  36. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree.py +6 -1
  37. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/organize/manager.py +20 -4
  38. memoryos-2.0.4/src/memos/memories/textual/tree_text_memory/retrieve/pre_update.py +264 -0
  39. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/recall.py +1 -0
  40. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/retrieve_utils.py +7 -2
  41. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/searcher.py +124 -5
  42. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/multi_mem_cube/composite_cube.py +2 -1
  43. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/multi_mem_cube/single_cube.py +14 -5
  44. memoryos-2.0.4/src/memos/parsers/__init__.py +0 -0
  45. memoryos-2.0.4/src/memos/templates/__init__.py +0 -0
  46. memoryos-2.0.4/src/memos/templates/skill_mem_prompt.py +286 -0
  47. memoryos-2.0.4/src/memos/vec_dbs/__init__.py +0 -0
  48. memoryos-2.0.3/src/memos/api/handlers/search_handler.py +0 -222
  49. memoryos-2.0.3/src/memos/embedders/universal_api.py +0 -51
  50. {memoryos-2.0.3 → memoryos-2.0.4}/LICENSE +0 -0
  51. {memoryos-2.0.3 → memoryos-2.0.4}/README.md +0 -0
  52. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/client.py +0 -0
  53. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/context/dependencies.py +0 -0
  54. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/exceptions.py +0 -0
  55. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/handlers/__init__.py +0 -0
  56. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/handlers/add_handler.py +0 -0
  57. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/handlers/base_handler.py +0 -0
  58. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/handlers/feedback_handler.py +0 -0
  59. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/handlers/scheduler_handler.py +0 -0
  60. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/handlers/suggestion_handler.py +0 -0
  61. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/mcp_serve.py +0 -0
  62. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/middleware/request_context.py +0 -0
  63. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/product_api.py +0 -0
  64. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/routers/__init__.py +0 -0
  65. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/routers/product_router.py +0 -0
  66. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/server_api.py +0 -0
  67. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/api/start_api.py +0 -0
  68. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/chunkers/__init__.py +0 -0
  69. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/chunkers/base.py +0 -0
  70. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/chunkers/charactertext_chunker.py +0 -0
  71. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/chunkers/factory.py +0 -0
  72. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/chunkers/markdown_chunker.py +0 -0
  73. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/chunkers/sentence_chunker.py +0 -0
  74. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/chunkers/simple_chunker.py +0 -0
  75. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/cli.py +0 -0
  76. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/__init__.py +0 -0
  77. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/base.py +0 -0
  78. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/chunker.py +0 -0
  79. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/graph_db.py +0 -0
  80. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/internet_retriever.py +0 -0
  81. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/llm.py +0 -0
  82. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/mem_agent.py +0 -0
  83. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/mem_chat.py +0 -0
  84. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/mem_cube.py +0 -0
  85. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/mem_os.py +0 -0
  86. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/mem_scheduler.py +0 -0
  87. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/mem_user.py +0 -0
  88. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/memory.py +0 -0
  89. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/parser.py +0 -0
  90. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/reranker.py +0 -0
  91. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/utils.py +0 -0
  92. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/configs/vec_db.py +0 -0
  93. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/context/context.py +0 -0
  94. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/dependency.py +0 -0
  95. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/deprecation.py +0 -0
  96. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/embedders/__init__.py +0 -0
  97. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/embedders/ark.py +0 -0
  98. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/embedders/base.py +0 -0
  99. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/embedders/factory.py +0 -0
  100. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/embedders/ollama.py +0 -0
  101. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/embedders/sentence_transformer.py +0 -0
  102. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/exceptions.py +0 -0
  103. {memoryos-2.0.3/src/memos/graph_dbs → memoryos-2.0.4/src/memos/extras}/__init__.py +0 -0
  104. {memoryos-2.0.3/src/memos/llms → memoryos-2.0.4/src/memos/extras/nli_model}/__init__.py +0 -0
  105. {memoryos-2.0.3/src/memos/mem_chat → memoryos-2.0.4/src/memos/extras/nli_model/server}/__init__.py +0 -0
  106. {memoryos-2.0.3/src/memos/mem_cube → memoryos-2.0.4/src/memos/graph_dbs}/__init__.py +0 -0
  107. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/graph_dbs/base.py +0 -0
  108. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/graph_dbs/factory.py +0 -0
  109. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/graph_dbs/item.py +0 -0
  110. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/graph_dbs/nebular.py +0 -0
  111. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/graph_dbs/neo4j.py +0 -0
  112. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/graph_dbs/neo4j_community.py +0 -0
  113. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/hello_world.py +0 -0
  114. {memoryos-2.0.3/src/memos/mem_reader → memoryos-2.0.4/src/memos/llms}/__init__.py +0 -0
  115. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/llms/base.py +0 -0
  116. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/llms/deepseek.py +0 -0
  117. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/llms/factory.py +0 -0
  118. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/llms/hf.py +0 -0
  119. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/llms/hf_singleton.py +0 -0
  120. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/llms/ollama.py +0 -0
  121. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/llms/openai.py +0 -0
  122. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/llms/openai_new.py +0 -0
  123. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/llms/qwen.py +0 -0
  124. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/llms/utils.py +0 -0
  125. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/llms/vllm.py +0 -0
  126. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/log.py +0 -0
  127. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_agent/base.py +0 -0
  128. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_agent/deepsearch_agent.py +0 -0
  129. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_agent/factory.py +0 -0
  130. {memoryos-2.0.3/src/memos/mem_scheduler → memoryos-2.0.4/src/memos/mem_chat}/__init__.py +0 -0
  131. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_chat/base.py +0 -0
  132. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_chat/factory.py +0 -0
  133. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_chat/simple.py +0 -0
  134. {memoryos-2.0.3/src/memos/mem_scheduler/analyzer → memoryos-2.0.4/src/memos/mem_cube}/__init__.py +0 -0
  135. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_cube/base.py +0 -0
  136. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_cube/general.py +0 -0
  137. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_cube/navie.py +0 -0
  138. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_cube/utils.py +0 -0
  139. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_feedback/base.py +0 -0
  140. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_feedback/feedback.py +0 -0
  141. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_feedback/simple_feedback.py +0 -0
  142. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_feedback/utils.py +0 -0
  143. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_os/client.py +0 -0
  144. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_os/core.py +0 -0
  145. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_os/main.py +0 -0
  146. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_os/product.py +0 -0
  147. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_os/product_server.py +0 -0
  148. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_os/utils/default_config.py +0 -0
  149. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_os/utils/format_utils.py +0 -0
  150. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_os/utils/reference_utils.py +0 -0
  151. {memoryos-2.0.3/src/memos/mem_scheduler/general_modules → memoryos-2.0.4/src/memos/mem_reader}/__init__.py +0 -0
  152. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/memory.py +0 -0
  153. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/__init__.py +0 -0
  154. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/file_content_parser.py +0 -0
  155. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/image_parser.py +0 -0
  156. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/string_parser.py +0 -0
  157. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/system_parser.py +0 -0
  158. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/text_content_parser.py +0 -0
  159. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/tool_parser.py +0 -0
  160. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/read_multi_modal/utils.py +0 -0
  161. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/strategy_struct.py +0 -0
  162. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_reader/utils.py +0 -0
  163. {memoryos-2.0.3/src/memos/mem_scheduler/monitors → memoryos-2.0.4/src/memos/mem_scheduler}/__init__.py +0 -0
  164. {memoryos-2.0.3/src/memos/mem_scheduler/orm_modules → memoryos-2.0.4/src/memos/mem_scheduler/analyzer}/__init__.py +0 -0
  165. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/analyzer/api_analyzer.py +0 -0
  166. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/analyzer/eval_analyzer.py +0 -0
  167. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/analyzer/mos_for_test_scheduler.py +0 -0
  168. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/analyzer/scheduler_for_eval.py +0 -0
  169. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/base_scheduler.py +0 -0
  170. {memoryos-2.0.3/src/memos/mem_scheduler/schemas → memoryos-2.0.4/src/memos/mem_scheduler/general_modules}/__init__.py +0 -0
  171. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/general_modules/api_misc.py +0 -0
  172. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/general_modules/base.py +0 -0
  173. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/general_modules/init_components_for_scheduler.py +0 -0
  174. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/general_modules/misc.py +0 -0
  175. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/general_modules/scheduler_logger.py +0 -0
  176. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/general_modules/task_threads.py +0 -0
  177. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/memory_manage_modules/__init__.py +0 -0
  178. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/memory_manage_modules/memory_filter.py +0 -0
  179. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/memory_manage_modules/retriever.py +0 -0
  180. {memoryos-2.0.3/src/memos/mem_scheduler/task_schedule_modules → memoryos-2.0.4/src/memos/mem_scheduler/monitors}/__init__.py +0 -0
  181. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/monitors/dispatcher_monitor.py +0 -0
  182. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/monitors/general_monitor.py +0 -0
  183. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/monitors/task_schedule_monitor.py +0 -0
  184. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/optimized_scheduler.py +0 -0
  185. {memoryos-2.0.3/src/memos/mem_scheduler/utils → memoryos-2.0.4/src/memos/mem_scheduler/orm_modules}/__init__.py +0 -0
  186. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/orm_modules/api_redis_model.py +0 -0
  187. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/orm_modules/base_model.py +0 -0
  188. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/orm_modules/monitor_models.py +0 -0
  189. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/orm_modules/redis_model.py +0 -0
  190. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/scheduler_factory.py +0 -0
  191. {memoryos-2.0.3/src/memos/mem_scheduler/webservice_modules → memoryos-2.0.4/src/memos/mem_scheduler/schemas}/__init__.py +0 -0
  192. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/schemas/analyzer_schemas.py +0 -0
  193. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/schemas/api_schemas.py +0 -0
  194. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/schemas/general_schemas.py +0 -0
  195. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/schemas/monitor_schemas.py +0 -0
  196. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/schemas/task_schemas.py +0 -0
  197. {memoryos-2.0.3/src/memos/memories → memoryos-2.0.4/src/memos/mem_scheduler/task_schedule_modules}/__init__.py +0 -0
  198. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/task_schedule_modules/dispatcher.py +0 -0
  199. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/task_schedule_modules/local_queue.py +0 -0
  200. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/task_schedule_modules/orchestrator.py +0 -0
  201. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/task_schedule_modules/redis_queue.py +0 -0
  202. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/task_schedule_modules/task_queue.py +0 -0
  203. {memoryos-2.0.3/src/memos/memories/activation → memoryos-2.0.4/src/memos/mem_scheduler/utils}/__init__.py +0 -0
  204. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/utils/api_utils.py +0 -0
  205. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/utils/config_utils.py +0 -0
  206. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/utils/db_utils.py +0 -0
  207. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/utils/filter_utils.py +0 -0
  208. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/utils/metrics.py +0 -0
  209. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/utils/misc_utils.py +0 -0
  210. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/utils/monitor_event_utils.py +0 -0
  211. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/utils/status_tracker.py +0 -0
  212. {memoryos-2.0.3/src/memos/memories/parametric → memoryos-2.0.4/src/memos/mem_scheduler/webservice_modules}/__init__.py +0 -0
  213. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/webservice_modules/rabbitmq_service.py +0 -0
  214. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_scheduler/webservice_modules/redis_service.py +0 -0
  215. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_user/factory.py +0 -0
  216. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_user/mysql_persistent_user_manager.py +0 -0
  217. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_user/mysql_user_manager.py +0 -0
  218. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_user/persistent_factory.py +0 -0
  219. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_user/persistent_user_manager.py +0 -0
  220. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_user/redis_persistent_user_manager.py +0 -0
  221. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/mem_user/user_manager.py +0 -0
  222. {memoryos-2.0.3/src/memos/memories/textual → memoryos-2.0.4/src/memos/memories}/__init__.py +0 -0
  223. {memoryos-2.0.3/src/memos/memories/textual/prefer_text_memory → memoryos-2.0.4/src/memos/memories/activation}/__init__.py +0 -0
  224. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/activation/base.py +0 -0
  225. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/activation/item.py +0 -0
  226. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/activation/kv.py +0 -0
  227. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/activation/vllmkv.py +0 -0
  228. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/base.py +0 -0
  229. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/factory.py +0 -0
  230. {memoryos-2.0.3/src/memos/memories/textual/tree_text_memory → memoryos-2.0.4/src/memos/memories/parametric}/__init__.py +0 -0
  231. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/parametric/base.py +0 -0
  232. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/parametric/item.py +0 -0
  233. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/parametric/lora.py +0 -0
  234. {memoryos-2.0.3/src/memos/memories/textual/tree_text_memory/organize → memoryos-2.0.4/src/memos/memories/textual}/__init__.py +0 -0
  235. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/general.py +0 -0
  236. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/naive.py +0 -0
  237. {memoryos-2.0.3/src/memos/memories/textual/tree_text_memory/retrieve → memoryos-2.0.4/src/memos/memories/textual/prefer_text_memory}/__init__.py +0 -0
  238. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/prefer_text_memory/adder.py +0 -0
  239. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/prefer_text_memory/config.py +0 -0
  240. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/prefer_text_memory/extractor.py +0 -0
  241. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/prefer_text_memory/factory.py +0 -0
  242. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/prefer_text_memory/retrievers.py +0 -0
  243. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/prefer_text_memory/spliter.py +0 -0
  244. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/prefer_text_memory/utils.py +0 -0
  245. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/preference.py +0 -0
  246. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/simple_preference.py +0 -0
  247. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/simple_tree.py +0 -0
  248. {memoryos-2.0.3/src/memos/multi_mem_cube → memoryos-2.0.4/src/memos/memories/textual/tree_text_memory}/__init__.py +0 -0
  249. {memoryos-2.0.3/src/memos/parsers → memoryos-2.0.4/src/memos/memories/textual/tree_text_memory/organize}/__init__.py +0 -0
  250. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/organize/handler.py +0 -0
  251. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py +0 -0
  252. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/organize/reorganizer.py +0 -0
  253. {memoryos-2.0.3/src/memos/templates → memoryos-2.0.4/src/memos/memories/textual/tree_text_memory/retrieve}/__init__.py +0 -0
  254. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/advanced_searcher.py +0 -0
  255. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/bm25_util.py +0 -0
  256. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/bochasearch.py +0 -0
  257. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py +0 -0
  258. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py +0 -0
  259. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/reasoner.py +0 -0
  260. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/reranker.py +0 -0
  261. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/retrieval_mid_structs.py +0 -0
  262. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/task_goal_parser.py +0 -0
  263. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/utils.py +0 -0
  264. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py +0 -0
  265. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memos_tools/dinding_report_bot.py +0 -0
  266. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memos_tools/lockfree_dict.py +0 -0
  267. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memos_tools/notification_service.py +0 -0
  268. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memos_tools/notification_utils.py +0 -0
  269. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memos_tools/singleton.py +0 -0
  270. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memos_tools/thread_safe_dict.py +0 -0
  271. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/memos_tools/thread_safe_dict_segment.py +0 -0
  272. {memoryos-2.0.3/src/memos/vec_dbs → memoryos-2.0.4/src/memos/multi_mem_cube}/__init__.py +0 -0
  273. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/multi_mem_cube/views.py +0 -0
  274. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/parsers/base.py +0 -0
  275. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/parsers/factory.py +0 -0
  276. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/parsers/markitdown.py +0 -0
  277. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/reranker/__init__.py +0 -0
  278. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/reranker/base.py +0 -0
  279. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/reranker/concat.py +0 -0
  280. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/reranker/cosine_local.py +0 -0
  281. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/reranker/factory.py +0 -0
  282. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/reranker/http_bge.py +0 -0
  283. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/reranker/http_bge_strategy.py +0 -0
  284. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/reranker/noop.py +0 -0
  285. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/reranker/strategies/__init__.py +0 -0
  286. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/reranker/strategies/base.py +0 -0
  287. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/reranker/strategies/concat_background.py +0 -0
  288. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/reranker/strategies/concat_docsource.py +0 -0
  289. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/reranker/strategies/dialogue_common.py +0 -0
  290. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/reranker/strategies/factory.py +0 -0
  291. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/reranker/strategies/single_turn.py +0 -0
  292. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/reranker/strategies/singleturn_outmem.py +0 -0
  293. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/settings.py +0 -0
  294. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/templates/advanced_search_prompts.py +0 -0
  295. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/templates/cloud_service_prompt.py +0 -0
  296. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/templates/instruction_completion.py +0 -0
  297. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/templates/mem_agent_prompts.py +0 -0
  298. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/templates/mem_feedback_prompts.py +0 -0
  299. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/templates/mem_reader_prompts.py +0 -0
  300. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/templates/mem_reader_strategy_prompts.py +0 -0
  301. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/templates/mem_scheduler_prompts.py +0 -0
  302. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/templates/mem_search_prompts.py +0 -0
  303. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/templates/mos_prompts.py +0 -0
  304. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/templates/prefer_complete_prompt.py +0 -0
  305. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/templates/tool_mem_prompts.py +0 -0
  306. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/templates/tree_reorganize_prompts.py +0 -0
  307. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/types/__init__.py +0 -0
  308. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/types/general_types.py +0 -0
  309. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/__init__.py +0 -0
  310. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_assistant_message_param.py +0 -0
  311. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_image_param.py +0 -0
  312. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_input_audio_param.py +0 -0
  313. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_param.py +0 -0
  314. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_refusal_param.py +0 -0
  315. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_text_param.py +0 -0
  316. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_message_custom_tool_call_param.py +0 -0
  317. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_message_function_tool_call_param.py +0 -0
  318. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_message_param.py +0 -0
  319. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_message_tool_call_union_param.py +0 -0
  320. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_system_message_param.py +0 -0
  321. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_tool_message_param.py +0 -0
  322. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/types/openai_chat_completion_types/chat_completion_user_message_param.py +0 -0
  323. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/utils.py +0 -0
  324. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/vec_dbs/base.py +0 -0
  325. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/vec_dbs/factory.py +0 -0
  326. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/vec_dbs/item.py +0 -0
  327. {memoryos-2.0.3 → memoryos-2.0.4}/src/memos/vec_dbs/milvus.py +0 -0
  328. {memoryos-2.0.3 → 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.3
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.3"
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.3"
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
@@ -440,6 +440,18 @@ class APIConfig:
440
440
  "model_name_or_path": os.getenv("MOS_EMBEDDER_MODEL", "text-embedding-3-large"),
441
441
  "headers_extra": json.loads(os.getenv("MOS_EMBEDDER_HEADERS_EXTRA", "{}")),
442
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
+ ),
443
455
  },
444
456
  }
445
457
  else: # ollama
@@ -467,6 +479,35 @@ class APIConfig:
467
479
  }
468
480
 
469
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
+
470
511
  def get_internet_config() -> dict[str, Any]:
471
512
  """Get embedder configuration."""
472
513
  reader_config = APIConfig.get_reader_config()
@@ -509,6 +550,13 @@ class APIConfig:
509
550
  },
510
551
  }
511
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
+
512
560
  @staticmethod
513
561
  def get_neo4j_community_config(user_id: str | None = None) -> dict[str, Any]:
514
562
  """Get Neo4j community configuration."""
@@ -746,6 +794,11 @@ class APIConfig:
746
794
  ).split(",")
747
795
  if h.strip()
748
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
+ },
749
802
  },
750
803
  },
751
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,
@@ -161,6 +163,7 @@ def init_server() -> dict[str, Any]:
161
163
  llm_config = build_llm_config()
162
164
  chat_llm_config = build_chat_llm_config()
163
165
  embedder_config = build_embedder_config()
166
+ nli_client_config = build_nli_client_config()
164
167
  mem_reader_config = build_mem_reader_config()
165
168
  reranker_config = build_reranker_config()
166
169
  feedback_reranker_config = build_feedback_reranker_config()
@@ -186,6 +189,7 @@ def init_server() -> dict[str, Any]:
186
189
  else None
187
190
  )
188
191
  embedder = EmbedderFactory.from_config(embedder_config)
192
+ nli_client = NLIClient(base_url=nli_client_config["base_url"])
189
193
  # Pass graph_db to mem_reader for recall operations (deduplication, conflict detection)
190
194
  mem_reader = MemReaderFactory.from_config(mem_reader_config, graph_db=graph_db)
191
195
  reranker = RerankerFactory.from_config(reranker_config)
@@ -307,6 +311,9 @@ def init_server() -> dict[str, Any]:
307
311
  )
308
312
  logger.debug("Searcher created")
309
313
 
314
+ # Set searcher to mem_reader
315
+ mem_reader.set_searcher(searcher)
316
+
310
317
  # Initialize feedback server
311
318
  feedback_server = SimpleMemFeedback(
312
319
  llm=llm,
@@ -385,4 +392,5 @@ def init_server() -> dict[str, Any]:
385
392
  "feedback_server": feedback_server,
386
393
  "redis_client": redis_client,
387
394
  "deepsearch_agent": deepsearch_agent,
395
+ "nli_client": nli_client,
388
396
  }
@@ -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
 
@@ -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)