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.
- {memoryos-2.0.11 → memoryos-2.0.13}/PKG-INFO +1 -1
- {memoryos-2.0.11 → memoryos-2.0.13}/pyproject.toml +1 -1
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/__init__.py +1 -1
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/base_mixins/queue_ops.py +24 -1
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/dispatcher.py +9 -3
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/local_queue.py +17 -3
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/redis_queue.py +26 -9
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/task_queue.py +32 -15
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/multi_mem_cube/single_cube.py +8 -1
- memoryos-2.0.13/src/memos/search/__init__.py +14 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/search/search_service.py +29 -0
- memoryos-2.0.11/src/memos/search/__init__.py +0 -4
- {memoryos-2.0.11 → memoryos-2.0.13}/LICENSE +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/README.md +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/README_api.md +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/client.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/config.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/context/dependencies.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/exceptions.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/add_handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/base_handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/chat_handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/component_init.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/config_builders.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/feedback_handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/formatters_handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/memory_handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/scheduler_handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/search_handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/handlers/suggestion_handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/mcp_serve.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/middleware/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/middleware/auth.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/middleware/rate_limit.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/middleware/request_context.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/product_models.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/routers/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/routers/admin_router.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/routers/server_router.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/server_api.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/server_api_ext.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/utils/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/api/utils/api_keys.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/chunkers/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/chunkers/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/chunkers/charactertext_chunker.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/chunkers/factory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/chunkers/markdown_chunker.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/chunkers/sentence_chunker.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/chunkers/simple_chunker.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/cli.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/chunker.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/embedder.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/graph_db.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/internet_retriever.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/llm.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/mem_agent.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/mem_chat.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/mem_cube.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/mem_os.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/mem_reader.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/mem_scheduler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/mem_user.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/memory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/parser.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/reranker.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/configs/vec_db.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/context/context.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/dependency.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/deprecation.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/embedders/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/embedders/ark.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/embedders/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/embedders/factory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/embedders/ollama.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/embedders/sentence_transformer.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/embedders/universal_api.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/exceptions.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/extras/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/extras/nli_model/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/extras/nli_model/client.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/extras/nli_model/server/README.md +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/extras/nli_model/server/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/extras/nli_model/server/config.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/extras/nli_model/server/handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/extras/nli_model/server/serve.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/extras/nli_model/types.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/graph_dbs/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/graph_dbs/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/graph_dbs/factory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/graph_dbs/item.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/graph_dbs/neo4j.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/graph_dbs/neo4j_community.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/graph_dbs/polardb.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/graph_dbs/postgres.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/hello_world.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/deepseek.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/factory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/hf.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/hf_singleton.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/minimax.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/ollama.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/openai.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/openai_new.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/qwen.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/llms/vllm.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/log.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_agent/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_agent/deepsearch_agent.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_agent/factory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_chat/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_chat/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_chat/factory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_chat/simple.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_cube/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_cube/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_cube/general.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_cube/navie.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_cube/utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_feedback/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_feedback/feedback.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_feedback/simple_feedback.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_feedback/utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_os/core.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_os/main.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_os/utils/default_config.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_os/utils/format_utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_os/utils/reference_utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/factory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/memory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/multi_modal_struct.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/assistant_parser.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/file_content_parser.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/image_parser.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/multi_modal_parser.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/string_parser.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/system_parser.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/text_content_parser.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/tool_parser.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/user_parser.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_multi_modal/utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_pref_memory/process_preference_memory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/read_skill_memory/process_skill_memory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/simple_struct.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/strategy_struct.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_reader/utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/analyzer/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/analyzer/api_analyzer.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/analyzer/eval_analyzer.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/analyzer/mos_for_test_scheduler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/analyzer/scheduler_for_eval.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/base_mixins/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/base_mixins/memory_ops.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/base_mixins/web_log_ops.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/base_scheduler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/general_modules/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/general_modules/api_misc.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/general_modules/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/general_modules/init_components_for_scheduler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/general_modules/misc.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/general_modules/scheduler_logger.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/general_modules/task_threads.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/general_scheduler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/activation_memory_manager.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/enhancement_pipeline.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/filter_pipeline.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/memory_filter.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/post_processor.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/rerank_pipeline.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/retriever.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/search_pipeline.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/memory_manage_modules/search_service.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/monitors/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/monitors/dispatcher_monitor.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/monitors/general_monitor.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/monitors/task_schedule_monitor.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/optimized_scheduler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/orm_modules/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/orm_modules/api_redis_model.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/orm_modules/base_model.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/orm_modules/monitor_models.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/orm_modules/redis_model.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/scheduler_factory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/schemas/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/schemas/analyzer_schemas.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/schemas/api_schemas.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/schemas/general_schemas.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/schemas/message_schemas.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/schemas/monitor_schemas.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/schemas/task_schemas.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/base_handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/context.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/handlers/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/handlers/add_handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/handlers/answer_handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/handlers/feedback_handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_read_handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_reorganize_handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/handlers/memory_update_handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/handlers/pref_add_handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/handlers/query_handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/orchestrator.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/registry.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/utils/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/utils/api_utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/utils/config_utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/utils/db_utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/utils/filter_utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/utils/metrics.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/utils/misc_utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/utils/monitor_event_utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/utils/status_tracker.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/webservice_modules/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/webservice_modules/rabbitmq_service.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/webservice_modules/redis_service.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_user/factory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_user/mysql_persistent_user_manager.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_user/mysql_user_manager.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_user/persistent_factory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_user/persistent_user_manager.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_user/redis_persistent_user_manager.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_user/user_manager.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/activation/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/activation/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/activation/item.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/activation/kv.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/activation/vllmkv.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/factory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/parametric/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/parametric/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/parametric/item.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/parametric/lora.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/general.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/item.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/naive.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/prefer_text_memory/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/prefer_text_memory/adder.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/prefer_text_memory/config.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/prefer_text_memory/extractor.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/prefer_text_memory/factory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/prefer_text_memory/retrievers.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/prefer_text_memory/spliter.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/prefer_text_memory/utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/preference.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/simple_preference.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/simple_tree.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/organize/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/organize/handler.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/organize/history_manager.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/organize/manager.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/organize/reorganizer.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/advanced_searcher.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/bm25_util.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/bochasearch.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/pre_update.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/reasoner.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/recall.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/reranker.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/retrieval_mid_structs.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/retrieve_utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/searcher.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/task_goal_parser.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/tavilysearch.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memos_tools/dinding_report_bot.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memos_tools/lockfree_dict.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memos_tools/notification_service.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memos_tools/notification_utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memos_tools/singleton.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memos_tools/thread_safe_dict.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/memos_tools/thread_safe_dict_segment.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/multi_mem_cube/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/multi_mem_cube/composite_cube.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/multi_mem_cube/views.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/parsers/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/parsers/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/parsers/factory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/parsers/markitdown.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/concat.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/cosine_local.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/factory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/http_bge.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/http_bge_strategy.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/noop.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/strategies/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/strategies/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/strategies/concat_background.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/strategies/concat_docsource.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/strategies/dialogue_common.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/strategies/factory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/strategies/single_turn.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/reranker/strategies/singleturn_outmem.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/settings.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/advanced_search_prompts.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/cloud_service_prompt.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/instruction_completion.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/mem_agent_prompts.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/mem_feedback_prompts.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/mem_reader_prompts.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/mem_reader_strategy_prompts.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/mem_scheduler_prompts.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/mem_search_prompts.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/mos_prompts.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/prefer_complete_prompt.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/skill_mem_prompt.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/tool_mem_prompts.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/templates/tree_reorganize_prompts.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/general_types.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_assistant_message_param.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_image_param.py +0 -0
- {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
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_param.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_refusal_param.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_text_param.py +0 -0
- {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
- {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
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_message_param.py +0 -0
- {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
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_system_message_param.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_tool_message_param.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/types/openai_chat_completion_types/chat_completion_user_message_param.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/utils.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/vec_dbs/__init__.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/vec_dbs/base.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/vec_dbs/factory.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/vec_dbs/item.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/vec_dbs/milvus.py +0 -0
- {memoryos-2.0.11 → memoryos-2.0.13}/src/memos/vec_dbs/qdrant.py +0 -0
|
@@ -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.
|
|
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)
|
{memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/dispatcher.py
RENAMED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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():
|
{memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/local_queue.py
RENAMED
|
@@ -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.
|
|
99
|
-
|
|
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.
|
|
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:
|
{memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/redis_queue.py
RENAMED
|
@@ -384,7 +384,16 @@ class SchedulerRedisQueue(RedisSchedulerModule):
|
|
|
384
384
|
if len(self.message_pack_cache) == 0:
|
|
385
385
|
return []
|
|
386
386
|
else:
|
|
387
|
-
|
|
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
|
-
|
|
454
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
)
|
{memoryos-2.0.11 → memoryos-2.0.13}/src/memos/mem_scheduler/task_schedule_modules/task_queue.py
RENAMED
|
@@ -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)
|
|
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
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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.
|
|
136
|
-
|
|
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
|
-
|
|
152
|
-
|
|
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,
|
|
@@ -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,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|