MemoryOS 2.0.11__tar.gz → 2.0.13__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 (359) hide show
  1. {memoryos-2.0.11 → memoryos-2.0.13}/PKG-INFO +1 -1
  2. {memoryos-2.0.11 → memoryos-2.0.13}/pyproject.toml +1 -1
  3. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/__init__.py +1 -1
  4. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/base_mixins/queue_ops.py +24 -1
  5. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/dispatcher.py +9 -3
  6. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/local_queue.py +17 -3
  7. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/redis_queue.py +26 -9
  8. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/task_queue.py +32 -15
  9. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/multi_mem_cube/single_cube.py +8 -1
  10. memoryos-2.0.13/src/memos/search/__init__.py +14 -0
  11. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/search/search_service.py +29 -0
  12. memoryos-2.0.11/src/memos/search/__init__.py +0 -4
  13. {memoryos-2.0.11 → memoryos-2.0.13}/LICENSE +0 -0
  14. {memoryos-2.0.11 → memoryos-2.0.13}/README.md +0 -0
  15. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/README_api.md +0 -0
  16. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/__init__.py +0 -0
  17. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/client.py +0 -0
  18. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/config.py +0 -0
  19. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/context/dependencies.py +0 -0
  20. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/exceptions.py +0 -0
  21. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/__init__.py +0 -0
  22. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/add_handler.py +0 -0
  23. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/base_handler.py +0 -0
  24. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/chat_handler.py +0 -0
  25. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/component_init.py +0 -0
  26. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/config_builders.py +0 -0
  27. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/feedback_handler.py +0 -0
  28. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/formatters_handler.py +0 -0
  29. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/memory_handler.py +0 -0
  30. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/scheduler_handler.py +0 -0
  31. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/search_handler.py +0 -0
  32. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/suggestion_handler.py +0 -0
  33. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/mcp_serve.py +0 -0
  34. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/middleware/__init__.py +0 -0
  35. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/middleware/auth.py +0 -0
  36. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/middleware/rate_limit.py +0 -0
  37. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/middleware/request_context.py +0 -0
  38. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/product_models.py +0 -0
  39. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/routers/__init__.py +0 -0
  40. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/routers/admin_router.py +0 -0
  41. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/routers/server_router.py +0 -0
  42. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/server_api.py +0 -0
  43. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/server_api_ext.py +0 -0
  44. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/utils/__init__.py +0 -0
  45. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/utils/api_keys.py +0 -0
  46. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/chunkers/__init__.py +0 -0
  47. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/chunkers/base.py +0 -0
  48. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/chunkers/charactertext_chunker.py +0 -0
  49. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/chunkers/factory.py +0 -0
  50. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/chunkers/markdown_chunker.py +0 -0
  51. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/chunkers/sentence_chunker.py +0 -0
  52. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/chunkers/simple_chunker.py +0 -0
  53. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/cli.py +0 -0
  54. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/__init__.py +0 -0
  55. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/base.py +0 -0
  56. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/chunker.py +0 -0
  57. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/embedder.py +0 -0
  58. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/graph_db.py +0 -0
  59. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/internet_retriever.py +0 -0
  60. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/llm.py +0 -0
  61. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/mem_agent.py +0 -0
  62. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/mem_chat.py +0 -0
  63. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/mem_cube.py +0 -0
  64. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/mem_os.py +0 -0
  65. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/mem_reader.py +0 -0
  66. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/mem_scheduler.py +0 -0
  67. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/mem_user.py +0 -0
  68. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/memory.py +0 -0
  69. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/parser.py +0 -0
  70. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/reranker.py +0 -0
  71. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/utils.py +0 -0
  72. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/vec_db.py +0 -0
  73. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/context/context.py +0 -0
  74. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/dependency.py +0 -0
  75. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/deprecation.py +0 -0
  76. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/embedders/__init__.py +0 -0
  77. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/embedders/ark.py +0 -0
  78. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/embedders/base.py +0 -0
  79. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/embedders/factory.py +0 -0
  80. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/embedders/ollama.py +0 -0
  81. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/embedders/sentence_transformer.py +0 -0
  82. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/embedders/universal_api.py +0 -0
  83. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/exceptions.py +0 -0
  84. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/extras/__init__.py +0 -0
  85. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/extras/nli_model/__init__.py +0 -0
  86. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/extras/nli_model/client.py +0 -0
  87. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/extras/nli_model/server/README.md +0 -0
  88. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/extras/nli_model/server/__init__.py +0 -0
  89. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/extras/nli_model/server/config.py +0 -0
  90. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/extras/nli_model/server/handler.py +0 -0
  91. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/extras/nli_model/server/serve.py +0 -0
  92. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/extras/nli_model/types.py +0 -0
  93. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/graph_dbs/__init__.py +0 -0
  94. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/graph_dbs/base.py +0 -0
  95. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/graph_dbs/factory.py +0 -0
  96. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/graph_dbs/item.py +0 -0
  97. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/graph_dbs/neo4j.py +0 -0
  98. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/graph_dbs/neo4j_community.py +0 -0
  99. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/graph_dbs/polardb.py +0 -0
  100. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/graph_dbs/postgres.py +0 -0
  101. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/hello_world.py +0 -0
  102. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/__init__.py +0 -0
  103. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/base.py +0 -0
  104. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/deepseek.py +0 -0
  105. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/factory.py +0 -0
  106. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/hf.py +0 -0
  107. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/hf_singleton.py +0 -0
  108. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/minimax.py +0 -0
  109. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/ollama.py +0 -0
  110. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/openai.py +0 -0
  111. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/openai_new.py +0 -0
  112. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/qwen.py +0 -0
  113. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/utils.py +0 -0
  114. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/vllm.py +0 -0
  115. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/log.py +0 -0
  116. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_agent/base.py +0 -0
  117. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_agent/deepsearch_agent.py +0 -0
  118. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_agent/factory.py +0 -0
  119. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_chat/__init__.py +0 -0
  120. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_chat/base.py +0 -0
  121. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_chat/factory.py +0 -0
  122. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_chat/simple.py +0 -0
  123. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_cube/__init__.py +0 -0
  124. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_cube/base.py +0 -0
  125. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_cube/general.py +0 -0
  126. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_cube/navie.py +0 -0
  127. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_cube/utils.py +0 -0
  128. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_feedback/base.py +0 -0
  129. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_feedback/feedback.py +0 -0
  130. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_feedback/simple_feedback.py +0 -0
  131. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_feedback/utils.py +0 -0
  132. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_os/core.py +0 -0
  133. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_os/main.py +0 -0
  134. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_os/utils/default_config.py +0 -0
  135. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_os/utils/format_utils.py +0 -0
  136. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_os/utils/reference_utils.py +0 -0
  137. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/__init__.py +0 -0
  138. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/base.py +0 -0
  139. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/factory.py +0 -0
  140. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/memory.py +0 -0
  141. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/multi_modal_struct.py +0 -0
  142. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/__init__.py +0 -0
  143. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/assistant_parser.py +0 -0
  144. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/base.py +0 -0
  145. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/file_content_parser.py +0 -0
  146. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/image_parser.py +0 -0
  147. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/multi_modal_parser.py +0 -0
  148. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/string_parser.py +0 -0
  149. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/system_parser.py +0 -0
  150. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/text_content_parser.py +0 -0
  151. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/tool_parser.py +0 -0
  152. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/user_parser.py +0 -0
  153. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/utils.py +0 -0
  154. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_pref_memory/process_preference_memory.py +0 -0
  155. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_skill_memory/process_skill_memory.py +0 -0
  156. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/simple_struct.py +0 -0
  157. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/strategy_struct.py +0 -0
  158. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/utils.py +0 -0
  159. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/__init__.py +0 -0
  160. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/analyzer/__init__.py +0 -0
  161. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/analyzer/api_analyzer.py +0 -0
  162. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/analyzer/eval_analyzer.py +0 -0
  163. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/analyzer/mos_for_test_scheduler.py +0 -0
  164. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/analyzer/scheduler_for_eval.py +0 -0
  165. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/base_mixins/__init__.py +0 -0
  166. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/base_mixins/memory_ops.py +0 -0
  167. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/base_mixins/web_log_ops.py +0 -0
  168. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/base_scheduler.py +0 -0
  169. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/general_modules/__init__.py +0 -0
  170. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/general_modules/api_misc.py +0 -0
  171. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/general_modules/base.py +0 -0
  172. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/general_modules/init_components_for_scheduler.py +0 -0
  173. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/general_modules/misc.py +0 -0
  174. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/general_modules/scheduler_logger.py +0 -0
  175. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/general_modules/task_threads.py +0 -0
  176. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/general_scheduler.py +0 -0
  177. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/__init__.py +0 -0
  178. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/activation_memory_manager.py +0 -0
  179. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/enhancement_pipeline.py +0 -0
  180. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/filter_pipeline.py +0 -0
  181. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/memory_filter.py +0 -0
  182. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/post_processor.py +0 -0
  183. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/rerank_pipeline.py +0 -0
  184. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/retriever.py +0 -0
  185. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/search_pipeline.py +0 -0
  186. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/search_service.py +0 -0
  187. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/monitors/__init__.py +0 -0
  188. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/monitors/dispatcher_monitor.py +0 -0
  189. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/monitors/general_monitor.py +0 -0
  190. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/monitors/task_schedule_monitor.py +0 -0
  191. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/optimized_scheduler.py +0 -0
  192. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/orm_modules/__init__.py +0 -0
  193. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/orm_modules/api_redis_model.py +0 -0
  194. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/orm_modules/base_model.py +0 -0
  195. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/orm_modules/monitor_models.py +0 -0
  196. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/orm_modules/redis_model.py +0 -0
  197. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/scheduler_factory.py +0 -0
  198. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/schemas/__init__.py +0 -0
  199. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/schemas/analyzer_schemas.py +0 -0
  200. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/schemas/api_schemas.py +0 -0
  201. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/schemas/general_schemas.py +0 -0
  202. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/schemas/message_schemas.py +0 -0
  203. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/schemas/monitor_schemas.py +0 -0
  204. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/schemas/task_schemas.py +0 -0
  205. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/__init__.py +0 -0
  206. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/base_handler.py +0 -0
  207. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/context.py +0 -0
  208. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/handlers/__init__.py +0 -0
  209. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/handlers/add_handler.py +0 -0
  210. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/handlers/answer_handler.py +0 -0
  211. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/handlers/feedback_handler.py +0 -0
  212. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_read_handler.py +0 -0
  213. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_reorganize_handler.py +0 -0
  214. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/handlers/memory_update_handler.py +0 -0
  215. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/handlers/pref_add_handler.py +0 -0
  216. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/handlers/query_handler.py +0 -0
  217. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/orchestrator.py +0 -0
  218. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/registry.py +0 -0
  219. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/utils/__init__.py +0 -0
  220. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/utils/api_utils.py +0 -0
  221. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/utils/config_utils.py +0 -0
  222. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/utils/db_utils.py +0 -0
  223. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/utils/filter_utils.py +0 -0
  224. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/utils/metrics.py +0 -0
  225. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/utils/misc_utils.py +0 -0
  226. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/utils/monitor_event_utils.py +0 -0
  227. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/utils/status_tracker.py +0 -0
  228. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/webservice_modules/__init__.py +0 -0
  229. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/webservice_modules/rabbitmq_service.py +0 -0
  230. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/webservice_modules/redis_service.py +0 -0
  231. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_user/factory.py +0 -0
  232. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_user/mysql_persistent_user_manager.py +0 -0
  233. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_user/mysql_user_manager.py +0 -0
  234. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_user/persistent_factory.py +0 -0
  235. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_user/persistent_user_manager.py +0 -0
  236. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_user/redis_persistent_user_manager.py +0 -0
  237. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_user/user_manager.py +0 -0
  238. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/__init__.py +0 -0
  239. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/activation/__init__.py +0 -0
  240. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/activation/base.py +0 -0
  241. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/activation/item.py +0 -0
  242. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/activation/kv.py +0 -0
  243. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/activation/vllmkv.py +0 -0
  244. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/base.py +0 -0
  245. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/factory.py +0 -0
  246. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/parametric/__init__.py +0 -0
  247. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/parametric/base.py +0 -0
  248. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/parametric/item.py +0 -0
  249. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/parametric/lora.py +0 -0
  250. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/__init__.py +0 -0
  251. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/base.py +0 -0
  252. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/general.py +0 -0
  253. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/item.py +0 -0
  254. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/naive.py +0 -0
  255. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/prefer_text_memory/__init__.py +0 -0
  256. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/prefer_text_memory/adder.py +0 -0
  257. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/prefer_text_memory/config.py +0 -0
  258. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/prefer_text_memory/extractor.py +0 -0
  259. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/prefer_text_memory/factory.py +0 -0
  260. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/prefer_text_memory/retrievers.py +0 -0
  261. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/prefer_text_memory/spliter.py +0 -0
  262. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/prefer_text_memory/utils.py +0 -0
  263. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/preference.py +0 -0
  264. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/simple_preference.py +0 -0
  265. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/simple_tree.py +0 -0
  266. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree.py +0 -0
  267. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/__init__.py +0 -0
  268. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/organize/__init__.py +0 -0
  269. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/organize/handler.py +0 -0
  270. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/organize/history_manager.py +0 -0
  271. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/organize/manager.py +0 -0
  272. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py +0 -0
  273. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/organize/reorganizer.py +0 -0
  274. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/__init__.py +0 -0
  275. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/advanced_searcher.py +0 -0
  276. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/bm25_util.py +0 -0
  277. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/bochasearch.py +0 -0
  278. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py +0 -0
  279. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py +0 -0
  280. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/pre_update.py +0 -0
  281. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/reasoner.py +0 -0
  282. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/recall.py +0 -0
  283. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/reranker.py +0 -0
  284. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/retrieval_mid_structs.py +0 -0
  285. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/retrieve_utils.py +0 -0
  286. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/searcher.py +0 -0
  287. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/task_goal_parser.py +0 -0
  288. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/tavilysearch.py +0 -0
  289. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/utils.py +0 -0
  290. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py +0 -0
  291. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memos_tools/dinding_report_bot.py +0 -0
  292. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memos_tools/lockfree_dict.py +0 -0
  293. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memos_tools/notification_service.py +0 -0
  294. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memos_tools/notification_utils.py +0 -0
  295. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memos_tools/singleton.py +0 -0
  296. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memos_tools/thread_safe_dict.py +0 -0
  297. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memos_tools/thread_safe_dict_segment.py +0 -0
  298. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/multi_mem_cube/__init__.py +0 -0
  299. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/multi_mem_cube/composite_cube.py +0 -0
  300. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/multi_mem_cube/views.py +0 -0
  301. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/parsers/__init__.py +0 -0
  302. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/parsers/base.py +0 -0
  303. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/parsers/factory.py +0 -0
  304. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/parsers/markitdown.py +0 -0
  305. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/__init__.py +0 -0
  306. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/base.py +0 -0
  307. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/concat.py +0 -0
  308. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/cosine_local.py +0 -0
  309. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/factory.py +0 -0
  310. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/http_bge.py +0 -0
  311. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/http_bge_strategy.py +0 -0
  312. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/noop.py +0 -0
  313. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/strategies/__init__.py +0 -0
  314. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/strategies/base.py +0 -0
  315. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/strategies/concat_background.py +0 -0
  316. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/strategies/concat_docsource.py +0 -0
  317. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/strategies/dialogue_common.py +0 -0
  318. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/strategies/factory.py +0 -0
  319. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/strategies/single_turn.py +0 -0
  320. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/strategies/singleturn_outmem.py +0 -0
  321. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/settings.py +0 -0
  322. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/__init__.py +0 -0
  323. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/advanced_search_prompts.py +0 -0
  324. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/cloud_service_prompt.py +0 -0
  325. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/instruction_completion.py +0 -0
  326. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/mem_agent_prompts.py +0 -0
  327. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/mem_feedback_prompts.py +0 -0
  328. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/mem_reader_prompts.py +0 -0
  329. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/mem_reader_strategy_prompts.py +0 -0
  330. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/mem_scheduler_prompts.py +0 -0
  331. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/mem_search_prompts.py +0 -0
  332. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/mos_prompts.py +0 -0
  333. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/prefer_complete_prompt.py +0 -0
  334. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/skill_mem_prompt.py +0 -0
  335. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/tool_mem_prompts.py +0 -0
  336. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/tree_reorganize_prompts.py +0 -0
  337. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/__init__.py +0 -0
  338. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/general_types.py +0 -0
  339. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/__init__.py +0 -0
  340. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_assistant_message_param.py +0 -0
  341. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_image_param.py +0 -0
  342. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_input_audio_param.py +0 -0
  343. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_param.py +0 -0
  344. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_refusal_param.py +0 -0
  345. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_text_param.py +0 -0
  346. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_message_custom_tool_call_param.py +0 -0
  347. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_message_function_tool_call_param.py +0 -0
  348. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_message_param.py +0 -0
  349. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_message_tool_call_union_param.py +0 -0
  350. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_system_message_param.py +0 -0
  351. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_tool_message_param.py +0 -0
  352. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_user_message_param.py +0 -0
  353. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/utils.py +0 -0
  354. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/vec_dbs/__init__.py +0 -0
  355. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/vec_dbs/base.py +0 -0
  356. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/vec_dbs/factory.py +0 -0
  357. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/vec_dbs/item.py +0 -0
  358. {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/vec_dbs/milvus.py +0 -0
  359. {memoryos-2.0.11 → memoryos-2.0.13}/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.11
3
+ Version: 2.0.13
4
4
  Summary: Intelligence Begins with Memory
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -4,7 +4,7 @@
4
4
  ##############################################################################
5
5
 
6
6
  name = "MemoryOS"
7
- version = "2.0.11"
7
+ version = "2.0.13"
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.11"
1
+ __version__ = "2.0.13"
2
2
 
3
3
  from memos.configs.mem_cube import GeneralMemCubeConfig
4
4
  from memos.configs.mem_os import MOSConfig
@@ -65,7 +65,13 @@ class BaseSchedulerQueueMixin:
65
65
  logger.warning("status_tracker.task_submitted failed", exc_info=True)
66
66
 
67
67
  if self.disabled_handlers and msg.label in self.disabled_handlers:
68
- logger.info("Skipping disabled handler: %s - %s", msg.label, msg.content)
68
+ logger.debug(
69
+ "Skip disabled handler. label=%s item_id=%s user_id=%s mem_cube_id=%s",
70
+ msg.label,
71
+ msg.item_id,
72
+ msg.user_id,
73
+ msg.mem_cube_id,
74
+ )
69
75
  continue
70
76
 
71
77
  task_priority = self.orchestrator.get_task_priority(task_label=msg.label)
@@ -74,6 +80,14 @@ class BaseSchedulerQueueMixin:
74
80
  else:
75
81
  queued_msgs.append(msg)
76
82
 
83
+ logger.info(
84
+ "Submit scheduler messages summary. total=%s immediate=%s queued=%s queue_backend=%s",
85
+ len(messages),
86
+ len(immediate_msgs),
87
+ len(queued_msgs),
88
+ "redis_queue" if self.use_redis_queue else "local_queue",
89
+ )
90
+
77
91
  if immediate_msgs:
78
92
  for m in immediate_msgs:
79
93
  emit_monitor_event(
@@ -199,6 +213,15 @@ class BaseSchedulerQueueMixin:
199
213
  if messages:
200
214
  self.dispatcher.on_messages_enqueued(messages)
201
215
 
216
+ if len(messages) >= self.consume_batch:
217
+ unique_labels = sorted({msg.label for msg in messages})
218
+ logger.debug(
219
+ "Consumer dequeued batch. batch_size=%s consume_batch=%s unique_labels=%s queue_backend=%s",
220
+ len(messages),
221
+ self.consume_batch,
222
+ unique_labels,
223
+ "redis_queue" if self.use_redis_queue else "local_queue",
224
+ )
202
225
  self.dispatcher.dispatch(messages)
203
226
  except Exception as e:
204
227
  logger.error("Error dispatching messages: %s", e)
@@ -226,7 +226,7 @@ class SchedulerDispatcher(BaseSchedulerModule):
226
226
  if task_item.item_id in self._running_tasks:
227
227
  task_item.mark_completed(result)
228
228
  del self._running_tasks[task_item.item_id]
229
- logger.info(f"Task completed: {task_item.get_execution_info()}")
229
+ logger.debug(f"Task completed: {task_item.get_execution_info()}")
230
230
  return result
231
231
 
232
232
  except Exception as e:
@@ -630,12 +630,12 @@ class SchedulerDispatcher(BaseSchedulerModule):
630
630
  with self._task_lock:
631
631
  self._futures.add(future)
632
632
  future.add_done_callback(self._handle_future_result)
633
- logger.info(
633
+ logger.debug(
634
634
  f"Dispatch {len(msgs)} message(s) to {task_label} handler for user {user_id} and mem_cube {mem_cube_id}."
635
635
  )
636
636
  else:
637
637
  # For synchronous execution, the wrapper will run and remove the task upon completion
638
- logger.info(
638
+ logger.debug(
639
639
  f"Execute {len(msgs)} message(s) synchronously for {task_label} for user {user_id} and mem_cube {mem_cube_id}."
640
640
  )
641
641
  wrapped_handler(msgs)
@@ -653,6 +653,12 @@ class SchedulerDispatcher(BaseSchedulerModule):
653
653
 
654
654
  # Group messages by user_id and mem_cube_id first
655
655
  user_cube_groups = group_messages_by_user_and_mem_cube(msg_list)
656
+ logger.info(
657
+ "Dispatcher received batch. total_messages=%s user_groups=%s unique_labels=%s",
658
+ len(msg_list),
659
+ len(user_cube_groups),
660
+ sorted({msg.label for msg in msg_list}),
661
+ )
656
662
 
657
663
  # Process each user and mem_cube combination
658
664
  for user_id, cube_groups in user_cube_groups.items():
@@ -95,8 +95,12 @@ class SchedulerLocalQueue(RedisSchedulerModule):
95
95
 
96
96
  try:
97
97
  self.queue_streams[stream_key].put(item=message, block=block, timeout=timeout)
98
- logger.info(
99
- f"Message successfully put into queue '{stream_key}'. Current size: {self.queue_streams[stream_key].qsize()}"
98
+ logger.debug(
99
+ "Local queue enqueued. stream=%s size=%s label=%s item_id=%s",
100
+ stream_key,
101
+ self.queue_streams[stream_key].qsize(),
102
+ message.label,
103
+ message.item_id,
100
104
  )
101
105
  except Exception as e:
102
106
  logger.error(f"Failed to put message into queue '{stream_key}': {e}", exc_info=True)
@@ -117,7 +121,7 @@ class SchedulerLocalQueue(RedisSchedulerModule):
117
121
 
118
122
  # Return empty list if queue does not exist
119
123
  if stream_key not in self.queue_streams:
120
- logger.error(f"Stream {stream_key} does not exist when trying to get messages.")
124
+ logger.debug("Stream %s does not exist when trying to get messages", stream_key)
121
125
  return []
122
126
 
123
127
  # Ensure we always request a batch so we get a list back
@@ -174,6 +178,14 @@ class SchedulerLocalQueue(RedisSchedulerModule):
174
178
  fetched = self.get_nowait(stream_key=stream_key, batch_size=needed)
175
179
  messages.extend(fetched)
176
180
 
181
+ if messages and len(messages) >= batch_size:
182
+ logger.debug(
183
+ "Local queue dequeued batch. batch_size=%s requested_batch_size=%s active_streams=%s",
184
+ len(messages),
185
+ batch_size,
186
+ len(stream_keys),
187
+ )
188
+
177
189
  return messages
178
190
 
179
191
  def qsize(self) -> dict:
@@ -196,9 +208,11 @@ class SchedulerLocalQueue(RedisSchedulerModule):
196
208
  if stream_key:
197
209
  if stream_key in self.queue_streams:
198
210
  self.queue_streams[stream_key].clear()
211
+ logger.info("Cleared local queue stream: %s", stream_key)
199
212
  else:
200
213
  for queue in self.queue_streams.values():
201
214
  queue.clear()
215
+ logger.info("Cleared all local queue streams. stream_count=%s", len(self.queue_streams))
202
216
 
203
217
  @property
204
218
  def unfinished_tasks(self) -> int:
@@ -384,7 +384,16 @@ class SchedulerRedisQueue(RedisSchedulerModule):
384
384
  if len(self.message_pack_cache) == 0:
385
385
  return []
386
386
  else:
387
- return self.message_pack_cache.popleft()
387
+ batch = self.message_pack_cache.popleft()
388
+ if len(batch) >= batch_size:
389
+ logger.debug(
390
+ "[REDIS_QUEUE] Dequeued batch. batch_size=%s requested_batch_size=%s cache_packs_remaining=%s stream_count=%s",
391
+ len(batch),
392
+ batch_size,
393
+ len(self.message_pack_cache),
394
+ len(self.get_stream_keys()),
395
+ )
396
+ return batch
388
397
 
389
398
  def _ensure_consumer_group(self, stream_key) -> None:
390
399
  """Ensure the consumer group exists for the stream."""
@@ -449,9 +458,13 @@ class SchedulerRedisQueue(RedisSchedulerModule):
449
458
  message_id = self._redis_conn.xadd(
450
459
  stream_key, message_data, maxlen=self.max_len, approximate=True
451
460
  )
452
-
453
- logger.info(
454
- f"Added message {message_id} to Redis stream: {message.label} - {message.content[:100]}..."
461
+ logger.debug(
462
+ "[REDIS_QUEUE] Enqueued message. message_id=%s stream=%s label=%s item_id=%s stream_cache_size=%s",
463
+ message_id,
464
+ stream_key,
465
+ message.label,
466
+ message.item_id,
467
+ len(self._stream_keys_cache),
455
468
  )
456
469
 
457
470
  except Exception as e:
@@ -494,7 +507,11 @@ class SchedulerRedisQueue(RedisSchedulerModule):
494
507
  # Optionally delete the message from the stream to keep it clean
495
508
  try:
496
509
  self._redis_conn.xdel(stream_key, redis_message_id)
497
- logger.info(f"Successfully delete acknowledged message {redis_message_id}")
510
+ logger.debug(
511
+ "[REDIS_QUEUE] Ack/delete message. redis_message_id=%s stream=%s",
512
+ redis_message_id,
513
+ stream_key,
514
+ )
498
515
  except Exception as e:
499
516
  logger.warning(f"Failed to delete acknowledged message {redis_message_id}: {e}")
500
517
 
@@ -989,7 +1006,7 @@ class SchedulerRedisQueue(RedisSchedulerModule):
989
1006
  )
990
1007
  stream_keys = self.get_stream_keys(stream_key_prefix=effective_prefix)
991
1008
  if not stream_keys:
992
- logger.info(f"No Redis streams found for the configured prefix: {effective_prefix}")
1009
+ logger.debug(f"No Redis streams found for the configured prefix: {effective_prefix}")
993
1010
  return {}
994
1011
 
995
1012
  grouped: dict[str, dict[str, int]] = {}
@@ -1157,7 +1174,7 @@ class SchedulerRedisQueue(RedisSchedulerModule):
1157
1174
  self._redis_conn.ping()
1158
1175
  self._is_connected = True
1159
1176
  self._check_xautoclaim_support()
1160
- logger.debug("Redis connection established successfully")
1177
+ logger.info("Redis connection established successfully")
1161
1178
  # Start stream keys refresher when connected
1162
1179
  self._start_stream_keys_refresh_thread()
1163
1180
  except Exception as e:
@@ -1174,7 +1191,7 @@ class SchedulerRedisQueue(RedisSchedulerModule):
1174
1191
  self._stop_stream_keys_refresh_thread()
1175
1192
  if self._is_listening:
1176
1193
  self.stop_listening()
1177
- logger.debug("Disconnected from Redis")
1194
+ logger.info("Disconnected from Redis")
1178
1195
 
1179
1196
  def __enter__(self):
1180
1197
  """Context manager entry."""
@@ -1379,7 +1396,7 @@ class SchedulerRedisQueue(RedisSchedulerModule):
1379
1396
  self._stream_keys_cache = active_stream_keys
1380
1397
  self._stream_keys_last_refresh = time.time()
1381
1398
  cache_count = len(self._stream_keys_cache)
1382
- logger.info(
1399
+ logger.debug(
1383
1400
  f"Refreshed stream keys cache: {cache_count} active keys, "
1384
1401
  f"{deleted_count} deleted, {len(candidate_keys)} candidates examined."
1385
1402
  )
@@ -93,6 +93,9 @@ class ScheduleTaskQueue:
93
93
  """Submit messages to the message queue (either local queue or Redis)."""
94
94
  if isinstance(messages, ScheduleMessageItem):
95
95
  messages = [messages]
96
+ if len(messages) < 1:
97
+ logger.error("submit_messages called with empty payload")
98
+ return
96
99
 
97
100
  current_trace_id = get_current_trace_id()
98
101
 
@@ -104,18 +107,25 @@ class ScheduleTaskQueue:
104
107
  user_id=msg.user_id, mem_cube_id=msg.mem_cube_id, task_label=msg.label
105
108
  )
106
109
 
107
- if len(messages) < 1:
108
- logger.error("Submit empty")
109
- elif len(messages) == 1:
110
+ if len(messages) == 1:
110
111
  if getattr(messages[0], "timestamp", None) is None:
111
112
  messages[0].timestamp = get_utc_now()
112
- enqueue_ts = to_iso(getattr(messages[0], "timestamp", None))
113
- emit_monitor_event(
114
- "enqueue",
115
- messages[0],
116
- {"enqueue_ts": enqueue_ts, "event_duration_ms": 0, "total_duration_ms": 0},
117
- )
118
- self.memos_message_queue.put(messages[0])
113
+ if self.disabled_handlers and messages[0].label in self.disabled_handlers:
114
+ logger.debug(
115
+ "Skip disabled handler. label=%s item_id=%s user_id=%s mem_cube_id=%s",
116
+ messages[0].label,
117
+ messages[0].item_id,
118
+ messages[0].user_id,
119
+ messages[0].mem_cube_id,
120
+ )
121
+ else:
122
+ enqueue_ts = to_iso(getattr(messages[0], "timestamp", None))
123
+ emit_monitor_event(
124
+ "enqueue",
125
+ messages[0],
126
+ {"enqueue_ts": enqueue_ts, "event_duration_ms": 0, "total_duration_ms": 0},
127
+ )
128
+ self.memos_message_queue.put(messages[0])
119
129
  else:
120
130
  user_cube_groups = group_messages_by_user_and_mem_cube(messages)
121
131
 
@@ -132,8 +142,12 @@ class ScheduleTaskQueue:
132
142
  message.timestamp = get_utc_now()
133
143
 
134
144
  if self.disabled_handlers and message.label in self.disabled_handlers:
135
- logger.info(
136
- f"Skipping disabled handler: {message.label} - {message.content}"
145
+ logger.debug(
146
+ "Skip disabled handler. label=%s item_id=%s user_id=%s mem_cube_id=%s",
147
+ message.label,
148
+ message.item_id,
149
+ message.user_id,
150
+ message.mem_cube_id,
137
151
  )
138
152
  continue
139
153
 
@@ -148,9 +162,12 @@ class ScheduleTaskQueue:
148
162
  },
149
163
  )
150
164
  self.memos_message_queue.put(message)
151
- logger.info(
152
- f"Submitted message to local queue: {message.label} - {message.content}"
153
- )
165
+
166
+ logger.info(
167
+ "Queue submit completed. backend=%s total=%s",
168
+ "redis_queue" if self.use_redis_queue else "local_queue",
169
+ len(messages),
170
+ )
154
171
 
155
172
  def get_messages(self, batch_size: int) -> list[ScheduleMessageItem]:
156
173
  return self.memos_message_queue.get_messages(batch_size=batch_size)
@@ -22,7 +22,7 @@ from memos.mem_scheduler.schemas.task_schemas import (
22
22
  )
23
23
  from memos.memories.textual.item import TextualMemoryItem
24
24
  from memos.multi_mem_cube.views import MemCubeView
25
- from memos.search import search_text_memories
25
+ from memos.search import resolve_filter_for_cube, search_text_memories
26
26
  from memos.templates.mem_reader_prompts import PROMPT_MAPPING
27
27
  from memos.types.general_types import (
28
28
  FINE_STRATEGY,
@@ -91,6 +91,13 @@ class SingleCubeView(MemCubeView):
91
91
  Unified memory search handling (text + preference memories).
92
92
  Preference memories are now searched through the same _search_text flow.
93
93
  """
94
+ cube_filter = resolve_filter_for_cube(search_req.filter, self.cube_id)
95
+ if cube_filter is not search_req.filter:
96
+ import copy
97
+
98
+ search_req = copy.copy(search_req)
99
+ search_req.filter = cube_filter
100
+
94
101
  # Create UserContext object
95
102
  user_context = UserContext(
96
103
  user_id=search_req.user_id,
@@ -0,0 +1,14 @@
1
+ from .search_service import (
2
+ SearchContext,
3
+ build_search_context,
4
+ resolve_filter_for_cube,
5
+ search_text_memories,
6
+ )
7
+
8
+
9
+ __all__ = [
10
+ "SearchContext",
11
+ "build_search_context",
12
+ "resolve_filter_for_cube",
13
+ "search_text_memories",
14
+ ]
@@ -36,6 +36,35 @@ def build_search_context(
36
36
  )
37
37
 
38
38
 
39
+ def resolve_filter_for_cube(
40
+ raw_filter: dict[str, Any] | None, cube_id: str
41
+ ) -> dict[str, Any] | None:
42
+ """Resolve a multi-cube filter dict into the sub-filter for a single cube.
43
+
44
+ Supported forms:
45
+ - None → None (no filter)
46
+ - {"and": [...]} / {"or": [...]} → returned as-is (unified, all cubes share)
47
+ - {"cube_A": {...}, "cube_B": {...}} → return raw_filter[cube_id] or None
48
+ Mixed top-level (and/or + cube keys) is rejected.
49
+ """
50
+ if raw_filter is None:
51
+ return None
52
+
53
+ has_logic_key = "and" in raw_filter or "or" in raw_filter
54
+ other_keys = {k for k in raw_filter if k not in ("and", "or")}
55
+
56
+ if has_logic_key and other_keys:
57
+ raise ValueError(
58
+ "Invalid filter: top-level 'and'/'or' cannot coexist with per-cube keys "
59
+ f"{other_keys}. Use either a unified filter or per-cube filter, not both."
60
+ )
61
+
62
+ if has_logic_key:
63
+ return raw_filter
64
+
65
+ return raw_filter.get(cube_id)
66
+
67
+
39
68
  def search_text_memories(
40
69
  text_mem: Any,
41
70
  search_req: APISearchRequest,
@@ -1,4 +0,0 @@
1
- from .search_service import SearchContext, build_search_context, search_text_memories
2
-
3
-
4
- __all__ = ["SearchContext", "build_search_context", "search_text_memories"]
File without changes
File without changes
File without changes