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