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