MemoryOS 1.0.0__py3-none-any.whl → 1.1.1__py3-none-any.whl
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.
Potentially problematic release.
This version of MemoryOS might be problematic. Click here for more details.
- {memoryos-1.0.0.dist-info → memoryos-1.1.1.dist-info}/METADATA +8 -2
- {memoryos-1.0.0.dist-info → memoryos-1.1.1.dist-info}/RECORD +92 -69
- {memoryos-1.0.0.dist-info → memoryos-1.1.1.dist-info}/WHEEL +1 -1
- memos/__init__.py +1 -1
- memos/api/client.py +109 -0
- memos/api/config.py +35 -8
- memos/api/context/dependencies.py +15 -66
- memos/api/middleware/request_context.py +63 -0
- memos/api/product_api.py +5 -2
- memos/api/product_models.py +107 -16
- memos/api/routers/product_router.py +62 -19
- memos/api/start_api.py +13 -0
- memos/configs/graph_db.py +4 -0
- memos/configs/mem_scheduler.py +38 -3
- memos/configs/memory.py +13 -0
- memos/configs/reranker.py +18 -0
- memos/context/context.py +255 -0
- memos/embedders/factory.py +2 -0
- memos/graph_dbs/base.py +4 -2
- memos/graph_dbs/nebular.py +368 -223
- memos/graph_dbs/neo4j.py +49 -13
- memos/graph_dbs/neo4j_community.py +13 -3
- memos/llms/factory.py +2 -0
- memos/llms/openai.py +74 -2
- memos/llms/vllm.py +2 -0
- memos/log.py +128 -4
- memos/mem_cube/general.py +3 -1
- memos/mem_os/core.py +89 -23
- memos/mem_os/main.py +3 -6
- memos/mem_os/product.py +418 -154
- memos/mem_os/utils/reference_utils.py +20 -0
- memos/mem_reader/factory.py +2 -0
- memos/mem_reader/simple_struct.py +204 -82
- memos/mem_scheduler/analyzer/__init__.py +0 -0
- memos/mem_scheduler/analyzer/mos_for_test_scheduler.py +569 -0
- memos/mem_scheduler/analyzer/scheduler_for_eval.py +280 -0
- memos/mem_scheduler/base_scheduler.py +126 -56
- memos/mem_scheduler/general_modules/dispatcher.py +2 -2
- memos/mem_scheduler/general_modules/misc.py +99 -1
- memos/mem_scheduler/general_modules/scheduler_logger.py +17 -11
- memos/mem_scheduler/general_scheduler.py +40 -88
- memos/mem_scheduler/memory_manage_modules/__init__.py +5 -0
- memos/mem_scheduler/memory_manage_modules/memory_filter.py +308 -0
- memos/mem_scheduler/{general_modules → memory_manage_modules}/retriever.py +34 -7
- memos/mem_scheduler/monitors/dispatcher_monitor.py +9 -8
- memos/mem_scheduler/monitors/general_monitor.py +119 -39
- memos/mem_scheduler/optimized_scheduler.py +124 -0
- memos/mem_scheduler/orm_modules/__init__.py +0 -0
- memos/mem_scheduler/orm_modules/base_model.py +635 -0
- memos/mem_scheduler/orm_modules/monitor_models.py +261 -0
- memos/mem_scheduler/scheduler_factory.py +2 -0
- memos/mem_scheduler/schemas/monitor_schemas.py +96 -29
- memos/mem_scheduler/utils/config_utils.py +100 -0
- memos/mem_scheduler/utils/db_utils.py +33 -0
- memos/mem_scheduler/utils/filter_utils.py +1 -1
- memos/mem_scheduler/webservice_modules/__init__.py +0 -0
- memos/mem_user/mysql_user_manager.py +4 -2
- memos/memories/activation/kv.py +2 -1
- memos/memories/textual/item.py +96 -17
- memos/memories/textual/naive.py +1 -1
- memos/memories/textual/tree.py +57 -3
- memos/memories/textual/tree_text_memory/organize/handler.py +4 -2
- memos/memories/textual/tree_text_memory/organize/manager.py +28 -14
- memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py +1 -2
- memos/memories/textual/tree_text_memory/organize/reorganizer.py +75 -23
- memos/memories/textual/tree_text_memory/retrieve/bochasearch.py +10 -6
- memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py +6 -2
- memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py +2 -0
- memos/memories/textual/tree_text_memory/retrieve/recall.py +119 -21
- memos/memories/textual/tree_text_memory/retrieve/searcher.py +172 -44
- memos/memories/textual/tree_text_memory/retrieve/utils.py +6 -4
- memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py +5 -4
- memos/memos_tools/notification_utils.py +46 -0
- memos/memos_tools/singleton.py +174 -0
- memos/memos_tools/thread_safe_dict.py +22 -0
- memos/memos_tools/thread_safe_dict_segment.py +382 -0
- memos/parsers/factory.py +2 -0
- memos/reranker/__init__.py +4 -0
- memos/reranker/base.py +24 -0
- memos/reranker/concat.py +59 -0
- memos/reranker/cosine_local.py +96 -0
- memos/reranker/factory.py +48 -0
- memos/reranker/http_bge.py +312 -0
- memos/reranker/noop.py +16 -0
- memos/templates/mem_reader_prompts.py +289 -40
- memos/templates/mem_scheduler_prompts.py +242 -0
- memos/templates/mos_prompts.py +133 -60
- memos/types.py +4 -1
- memos/api/context/context.py +0 -147
- memos/mem_scheduler/mos_for_test_scheduler.py +0 -146
- {memoryos-1.0.0.dist-info → memoryos-1.1.1.dist-info}/entry_points.txt +0 -0
- {memoryos-1.0.0.dist-info → memoryos-1.1.1.dist-info/licenses}/LICENSE +0 -0
- /memos/mem_scheduler/{general_modules → webservice_modules}/rabbitmq_service.py +0 -0
- /memos/mem_scheduler/{general_modules → webservice_modules}/redis_service.py +0 -0
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: MemoryOS
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.1.1
|
|
4
4
|
Summary: Intelligence Begins with Memory
|
|
5
5
|
License: Apache-2.0
|
|
6
|
+
License-File: LICENSE
|
|
6
7
|
Keywords: memory,llm,language model,memoryOS,agent,kv cache,lora
|
|
7
8
|
Author: MemTensor
|
|
8
9
|
Author-email: MemTensor@memtensor.cn
|
|
@@ -22,6 +23,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
22
23
|
Provides-Extra: all
|
|
23
24
|
Provides-Extra: mem-reader
|
|
24
25
|
Provides-Extra: mem-scheduler
|
|
26
|
+
Provides-Extra: mem-user
|
|
25
27
|
Provides-Extra: tree-mem
|
|
26
28
|
Requires-Dist: chonkie (>=1.0.7,<2.0.0) ; extra == "all"
|
|
27
29
|
Requires-Dist: chonkie (>=1.0.7,<2.0.0) ; extra == "mem-reader"
|
|
@@ -35,6 +37,9 @@ Requires-Dist: ollama (>=0.4.8,<0.5.0)
|
|
|
35
37
|
Requires-Dist: openai (>=1.77.0,<2.0.0)
|
|
36
38
|
Requires-Dist: pika (>=1.3.2,<2.0.0) ; extra == "all"
|
|
37
39
|
Requires-Dist: pika (>=1.3.2,<2.0.0) ; extra == "mem-scheduler"
|
|
40
|
+
Requires-Dist: pymysql (>=1.1.0,<2.0.0)
|
|
41
|
+
Requires-Dist: pymysql (>=1.1.0,<2.0.0) ; extra == "all"
|
|
42
|
+
Requires-Dist: pymysql (>=1.1.0,<2.0.0) ; extra == "mem-user"
|
|
38
43
|
Requires-Dist: python-dateutil (>=2.9.0.post0,<3.0.0)
|
|
39
44
|
Requires-Dist: qdrant-client (>=1.14.2,<2.0.0) ; extra == "all"
|
|
40
45
|
Requires-Dist: redis (>=6.2.0,<7.0.0) ; extra == "all"
|
|
@@ -311,6 +316,7 @@ MemOS is licensed under the [Apache 2.0 License](./LICENSE).
|
|
|
311
316
|
Stay up to date with the latest MemOS announcements, releases, and community highlights.
|
|
312
317
|
|
|
313
318
|
|
|
319
|
+
- **2025-09-10** - 🎉 *MemOS v1.0.1 (Group Q&A Bot)*: Group Q&A bot based on MemOS Cube, updated KV-Cache performance comparison data across different GPU deployment schemes, optimized test benchmarks and statistics, added plaintext memory Reranker sorting, optimized plaintext memory hallucination issues, and Playground version updates. [Try PlayGround](https://memos-playground.openmem.net/login/)
|
|
314
320
|
- **2025-08-07** - 🎉 *MemOS v1.0.0 (MemCube Release)*: First MemCube with word game demo, LongMemEval evaluation, BochaAISearchRetriever integration, NebulaGraph support, enhanced search capabilities, and official Playground launch.
|
|
315
321
|
- **2025-07-29** – 🎉 *MemOS v0.2.2 (Nebula Update)*: Internet search+Nebula DB integration, refactored memory scheduler, KV Cache stress tests, MemCube Cookbook release (CN/EN), and 4b/1.7b/0.6b memory ops models.
|
|
316
322
|
- **2025-07-21** – 🎉 *MemOS v0.2.1 (Neo Release)*: Lightweight Neo version with plaintext+KV Cache functionality, Docker/multi-tenant support, MCP expansion, and new Cookbook/Mud game examples.
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
memos/__init__.py,sha256=
|
|
2
|
-
memos/api/
|
|
3
|
-
memos/api/
|
|
4
|
-
memos/api/context/dependencies.py,sha256=
|
|
1
|
+
memos/__init__.py,sha256=0E7jrZOGR0aw3JCEa9F1EWfID8-x3pnihmFKkdQN_mM,575
|
|
2
|
+
memos/api/client.py,sha256=zaXBRlAlGX28b5xWKilal-zoR2DYLRIYxo47Q3LdEFU,4045
|
|
3
|
+
memos/api/config.py,sha256=SCUtLtYOebne73Bj3QHQR29L1JtftSWR4teTpd8A7gA,24732
|
|
4
|
+
memos/api/context/dependencies.py,sha256=G9vfMVEeQczSd7ma4hlXSk2S8K6txjXHVO27R6FlbjQ,1240
|
|
5
5
|
memos/api/exceptions.py,sha256=MfTNXwLwJE7tHwNVTHlJsB3kF14oA0JfA1-S8xrZEus,833
|
|
6
6
|
memos/api/mcp_serve.py,sha256=GtJDZYx4yxKMs4sCddKJbRAjgsbRunr6S2nAT-KeBMs,21270
|
|
7
|
-
memos/api/
|
|
8
|
-
memos/api/
|
|
7
|
+
memos/api/middleware/request_context.py,sha256=RNaeJt1AqmSfCB6lxkp8voyOjum7k6CrMV2w3cZgv10,2088
|
|
8
|
+
memos/api/product_api.py,sha256=OOrrJ8h4BuJWXD8L8wb22E0Zfa73X0PwLC51wF0d5sc,1178
|
|
9
|
+
memos/api/product_models.py,sha256=260EXHSHmnTXogVkARU4tsCfOklWKTYJ8hKo_vQYOmc,9291
|
|
9
10
|
memos/api/routers/__init__.py,sha256=nbduRsr-7RkfBIYEBkbYkpB-7GG7QZgNfEQwLHbDXpI,21
|
|
10
|
-
memos/api/routers/product_router.py,sha256=
|
|
11
|
-
memos/api/start_api.py,sha256=
|
|
11
|
+
memos/api/routers/product_router.py,sha256=63FzAgIpSNijSyRspk5ftHwhGzTM5D19IbP23xLU9C0,17568
|
|
12
|
+
memos/api/start_api.py,sha256=gR1vM7tYKiS1VNv9Jya9gvflhxeobFV4AQHTKCeW95Q,15185
|
|
12
13
|
memos/chunkers/__init__.py,sha256=7lZOTN3e9Yp5XBsDX5wnWJ3tY126cRU9GmfevzJXAtU,67
|
|
13
14
|
memos/chunkers/base.py,sha256=z0rG5vM7FGremQdSZ_3jlTGbsDtlkWAYWdtSAGqpaR4,655
|
|
14
15
|
memos/chunkers/factory.py,sha256=ixpYz41GG3SZW-1ynLvfbhOZ0aGnFi2wUIYT4_Uxh30,693
|
|
@@ -18,95 +19,108 @@ memos/configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
18
19
|
memos/configs/base.py,sha256=bOOhEU6HGFTq5jne_TXn8Br72rvAfJHYvYllFUPs12A,2588
|
|
19
20
|
memos/configs/chunker.py,sha256=Ulci0MyhS_FkuV95l7Pr9Vei179aEFEUigwVmtmSDfI,1593
|
|
20
21
|
memos/configs/embedder.py,sha256=e_aOkUamW2NYSBEzsKkw0jNqHERy5GU3A2cSH5G5y68,2750
|
|
21
|
-
memos/configs/graph_db.py,sha256=
|
|
22
|
+
memos/configs/graph_db.py,sha256=U_pNInRYW8iB-XG_5jLmPEcGKEmsGJmNIHPBN-m_Y80,5961
|
|
22
23
|
memos/configs/internet_retriever.py,sha256=yWU6avRU9Hqox8hmR0EyILUr4x9wDvcKkhwRwT3PROc,3749
|
|
23
24
|
memos/configs/llm.py,sha256=cso9ZBOdPzOAcgypp2nPFHdynswdG9MZZ-qdgOTEXL8,4175
|
|
24
25
|
memos/configs/mem_chat.py,sha256=TjEQHRG1HpLwCBo3hrn5aVK23rykNtV6Be5p4YIg7F4,2571
|
|
25
26
|
memos/configs/mem_cube.py,sha256=k95dvNxusnyS9w6ciWgNkUXwbHa4HTUEUS-PfPbR0BM,3105
|
|
26
27
|
memos/configs/mem_os.py,sha256=FGrBaFWGUdCKkb4MFDRz9hCE7hydLd0XEFgUrqEhQJw,2755
|
|
27
28
|
memos/configs/mem_reader.py,sha256=hTLFdmPhPIY70Fh_s4ptTGJ3LN-B9n111QG1kboxoNk,2307
|
|
28
|
-
memos/configs/mem_scheduler.py,sha256=
|
|
29
|
+
memos/configs/mem_scheduler.py,sha256=NfukLGW-fm7912tCzvN5NeOFQiALT_kE7fuiVAlTDRY,9158
|
|
29
30
|
memos/configs/mem_user.py,sha256=U0UzCvTacUOxeajJMfXAWWy3a0l52B4LUhH_L7U1VQ4,2036
|
|
30
|
-
memos/configs/memory.py,sha256=
|
|
31
|
+
memos/configs/memory.py,sha256=wWrDvO67evM4Pn-utqneliIsJlap0ddNhdEH1Vn8HbA,7636
|
|
31
32
|
memos/configs/parser.py,sha256=dy-QoevJbCnkJePKgpzR4oziOzYnS4jB6XH-YrpeMns,1145
|
|
33
|
+
memos/configs/reranker.py,sha256=8IbKPPNUcGq9uGhgXcx41eYjDJr1lZKv89UKrA9v-Ck,459
|
|
32
34
|
memos/configs/utils.py,sha256=X9NQ6-xURsZROAdS3WT96phVfHcOHgDPOo2Yq68QoKM,242
|
|
33
35
|
memos/configs/vec_db.py,sha256=Gjhhda94pyTDjyJGe2Z6rVEqH4FtViiwq1-7QWhjarM,2335
|
|
36
|
+
memos/context/context.py,sha256=3Sj0CW4H16MA2VvkGPrYfPVbRB0TmdUkEZfNrGBYyvc,7806
|
|
34
37
|
memos/dependency.py,sha256=T5jhi9J6EQvx41dP8ma6hdCNn86d1amEP1iMASnrVbA,1842
|
|
35
38
|
memos/deprecation.py,sha256=k2i4bBKqIwu20guwJmPPjOm7reOy19GzLwrTMrIqjPk,7408
|
|
36
39
|
memos/embedders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
40
|
memos/embedders/ark.py,sha256=i9dXR_lNXklxT8yUj_GiMIBDMR5tc40ltZMmX3CnJGk,3436
|
|
38
41
|
memos/embedders/base.py,sha256=zOYERcaqBVCyMVndcR6vhFC_O2itEuTM058odDfhTx8,449
|
|
39
|
-
memos/embedders/factory.py,sha256=
|
|
42
|
+
memos/embedders/factory.py,sha256=rZm4WP01_mqTbByv5g7Qc4OUCem4KP8YoEndmZv_9Lw,1110
|
|
40
43
|
memos/embedders/ollama.py,sha256=8lHeMCqxej44ZgeDsPGL-5almxRBWsYYYflu5LeAf7w,2361
|
|
41
44
|
memos/embedders/sentence_transformer.py,sha256=QJoW7qMbvAzmMUXzIhMHXVFnDFurfzxdoVUHIlslzec,1647
|
|
42
45
|
memos/embedders/universal_api.py,sha256=BpmLL18y2neEAIE4CdC-1qr0uOEOJ6o7V_zycdkJmZk,1270
|
|
43
46
|
memos/exceptions.py,sha256=UnBoZUYdwb1KoQPE-pXSLT4yOjkwxse9fx0rb_MhEzo,531
|
|
44
47
|
memos/graph_dbs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
45
|
-
memos/graph_dbs/base.py,sha256=
|
|
48
|
+
memos/graph_dbs/base.py,sha256=0NXdXII-UmX_bqUhBVpFdxRURLAK8sIFFZg51J9QzV0,8293
|
|
46
49
|
memos/graph_dbs/factory.py,sha256=N1NaABiNnYvnsB-L82LrQaLvND5seCabFdSDsD8LoyA,932
|
|
47
50
|
memos/graph_dbs/item.py,sha256=BfK17hA_hHu7I348jWugP_rb9GS5hpKfgqtYGGHBohk,1450
|
|
48
|
-
memos/graph_dbs/nebular.py,sha256=
|
|
49
|
-
memos/graph_dbs/neo4j.py,sha256=
|
|
50
|
-
memos/graph_dbs/neo4j_community.py,sha256=
|
|
51
|
+
memos/graph_dbs/nebular.py,sha256=hBDs3p2CLUp2vKOVX0VaVzHbFOh1Mfbngcl-Jlv8zS8,64462
|
|
52
|
+
memos/graph_dbs/neo4j.py,sha256=HI8ZgHJ5dnOQgA4EBtrRo-olGstLZErgnfwn0OepIyg,43872
|
|
53
|
+
memos/graph_dbs/neo4j_community.py,sha256=yvXhM7zvjvhdXHVoT_d2w6OaoK2Tqcl-rzAHuw0Wvgg,11851
|
|
51
54
|
memos/hello_world.py,sha256=RV1vXfK1_U_xAvSusqc-4A8wk3yr8WEQ9q88dmBxvnI,3057
|
|
52
55
|
memos/llms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
56
|
memos/llms/base.py,sha256=CF60OpXdSLf-B5bHhQTnomMEkrNCg-SHauu1vo8HpeU,798
|
|
54
57
|
memos/llms/deepseek.py,sha256=gXlInNa9Ts5-qw6nF4yD88vk5-UiW6-1C72DlE8Agok,1992
|
|
55
|
-
memos/llms/factory.py,sha256=
|
|
58
|
+
memos/llms/factory.py,sha256=6mrUKyZ85bE8Bxq9gRPe_tuy_nCafAHuxAPCSUd9hKw,1236
|
|
56
59
|
memos/llms/hf.py,sha256=zWz-7j2VnhOyytBbZnEJyNLezOFdV7vuMF6JRwbz9-g,15280
|
|
57
60
|
memos/llms/hf_singleton.py,sha256=oxG9rSFZT_MhOWImttDVZfRZvxmpwJ8FarjL8NpgpRM,3502
|
|
58
61
|
memos/llms/ollama.py,sha256=r1HMvSvG_m8gFfwLJhTriJdB6VzKEqz9f9JFs2RJGTw,2732
|
|
59
|
-
memos/llms/openai.py,sha256=
|
|
62
|
+
memos/llms/openai.py,sha256=lrNFCzr-8kbPjny7Vaafvt7EYPr71Ify1GlHZUNMqQk,6500
|
|
60
63
|
memos/llms/qwen.py,sha256=RFVoC_hxFe4dhCQ583fbTcT1AC3jDrKH0r6cDsZ0Cmo,2459
|
|
61
64
|
memos/llms/utils.py,sha256=OcbM9iSpFJpio7sTT5wvxVx-JnqjIx7eSgiRk7dt0ZI,292
|
|
62
|
-
memos/llms/vllm.py,sha256=
|
|
63
|
-
memos/log.py,sha256=
|
|
65
|
+
memos/llms/vllm.py,sha256=9ZEgTUyRk86Wp2deQH0o1oW2GbHQ7C3evi-McELyT2Q,5792
|
|
66
|
+
memos/log.py,sha256=Cpq6hHY8ETqOhC_l5xW-6n-qniCJ1TTrpl4yHyTkopQ,6761
|
|
64
67
|
memos/mem_chat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
65
68
|
memos/mem_chat/base.py,sha256=LICB_mwUkdCVKb_r33GEPbrEr-2v3dEnI54cAvhcEew,830
|
|
66
69
|
memos/mem_chat/factory.py,sha256=KKCDG9FrpfY2hD3iJ4GM9x8dN09dyhstP1cOUH_knrY,720
|
|
67
70
|
memos/mem_chat/simple.py,sha256=-DRlE8nKZcGuwEubALK-nUf-wWRbGXkDJXUg8Dxhoyo,7919
|
|
68
71
|
memos/mem_cube/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
69
72
|
memos/mem_cube/base.py,sha256=NoZKz16oO5AAnJ0alcY52Z1c3C1rbGRe8Znz0CCzDnw,864
|
|
70
|
-
memos/mem_cube/general.py,sha256=
|
|
73
|
+
memos/mem_cube/general.py,sha256=4n7LHe-KmeyZOdl0e4optSC9T7ut8IMcRJQEDC6sYV0,8490
|
|
71
74
|
memos/mem_cube/utils.py,sha256=gDwiRo9VEvaTaRDzjWOGAH13ALRRV9bvUG7A-wy4KTA,5522
|
|
72
75
|
memos/mem_os/client.py,sha256=0M-WRTlQr7fDAYtq4B8dsMR0PfmyvD-ySMhKcW3Umd0,43
|
|
73
|
-
memos/mem_os/core.py,sha256=
|
|
74
|
-
memos/mem_os/main.py,sha256=
|
|
75
|
-
memos/mem_os/product.py,sha256=
|
|
76
|
+
memos/mem_os/core.py,sha256=4qLdqBtL-1Ix5w5ulDtEK7onY6yX_-Kp4T3vF8IVTzM,47494
|
|
77
|
+
memos/mem_os/main.py,sha256=0L4-jqagpd9-5eHIScsyCTjPlOzsPiEwf9ca9r4LcgA,24526
|
|
78
|
+
memos/mem_os/product.py,sha256=msECenlI3z2On3jA4IhHNAwjFofQiYxWF4l_pR0OjL4,59996
|
|
76
79
|
memos/mem_os/utils/default_config.py,sha256=OdDCyrE3-duSK0vMfO4AelGUwMt14ffHKMrvki0YKlI,12273
|
|
77
80
|
memos/mem_os/utils/format_utils.py,sha256=QaxImCM0E27l2tkRLzWM1s8vSp3MO_LNaY0APHgV35o,49883
|
|
78
|
-
memos/mem_os/utils/reference_utils.py,sha256=
|
|
81
|
+
memos/mem_os/utils/reference_utils.py,sha256=RtVwcuG3zFaxtMxY4S1_S8XWKQ7hO5UtXMswORBxyy0,6129
|
|
79
82
|
memos/mem_reader/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
80
83
|
memos/mem_reader/base.py,sha256=SSuaD3J88XbHsME1Qa-EAgZ57xApPHPHppMSeeS3JZ4,957
|
|
81
|
-
memos/mem_reader/factory.py,sha256=
|
|
84
|
+
memos/mem_reader/factory.py,sha256=FWsNCHgsHrLb3__DP-uIB9oIZiualVY1Q-tEdP-mzXY,849
|
|
82
85
|
memos/mem_reader/memory.py,sha256=f3fAjrs8Jf6mBZWTgzkEZle7XjDwTJHxM1L2sOb85Tg,13288
|
|
83
|
-
memos/mem_reader/simple_struct.py,sha256=
|
|
86
|
+
memos/mem_reader/simple_struct.py,sha256=5YJ701brNJr7MlIPMji4aJ5BEHUe-tfifWeErxB_WuM,14085
|
|
84
87
|
memos/mem_scheduler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
85
|
-
memos/mem_scheduler/
|
|
88
|
+
memos/mem_scheduler/analyzer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
89
|
+
memos/mem_scheduler/analyzer/mos_for_test_scheduler.py,sha256=VDkoBDtFsSqVBbtizjcqCkQVc5EWYa-wZBp-VcPs7R8,24283
|
|
90
|
+
memos/mem_scheduler/analyzer/scheduler_for_eval.py,sha256=ThiSlO9QcQW0TH3bj161zZC7OQm0RQxkYmx_b0-j0_I,9984
|
|
91
|
+
memos/mem_scheduler/base_scheduler.py,sha256=-V5HsZX35qcLAOOwimpiML5QVYVvbk5AygtxEQjGiC4,26356
|
|
86
92
|
memos/mem_scheduler/general_modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
93
|
memos/mem_scheduler/general_modules/base.py,sha256=j2FfGl5mx0CflHGnzu2fFFfZT_WRAMzmmTW_HUxFRgw,2946
|
|
88
|
-
memos/mem_scheduler/general_modules/dispatcher.py,sha256=
|
|
89
|
-
memos/mem_scheduler/general_modules/misc.py,sha256=
|
|
90
|
-
memos/mem_scheduler/general_modules/
|
|
91
|
-
memos/mem_scheduler/
|
|
92
|
-
memos/mem_scheduler/
|
|
93
|
-
memos/mem_scheduler/
|
|
94
|
-
memos/mem_scheduler/
|
|
94
|
+
memos/mem_scheduler/general_modules/dispatcher.py,sha256=be8UDzX977rgy6NPrMsG3IzHV9ehq38umb0E7NpcQ6s,7392
|
|
95
|
+
memos/mem_scheduler/general_modules/misc.py,sha256=nQXGJJ6nZMl_ljmXbGIwuLt-9sLHdPkqBvR24ZBaDGs,7087
|
|
96
|
+
memos/mem_scheduler/general_modules/scheduler_logger.py,sha256=F4ZUkc5OBZZF4UwaKybf42UEQxgQz709NybpsUVRjWA,10132
|
|
97
|
+
memos/mem_scheduler/general_scheduler.py,sha256=0JYxo3uqmC9-69N2CHdbLQbXxm_qbLtWe_67BK3hHQ8,12780
|
|
98
|
+
memos/mem_scheduler/memory_manage_modules/__init__.py,sha256=S7IUj-mFYxytsfb072ugQGEpFdnfSsPTcXowsH8Z_Cc,133
|
|
99
|
+
memos/mem_scheduler/memory_manage_modules/memory_filter.py,sha256=K6wI_9ewvVuGY-PMtD6HzVO289ljXshTOTPvXeCd2L4,12440
|
|
100
|
+
memos/mem_scheduler/memory_manage_modules/retriever.py,sha256=Zl5M44lD7pihIwQ0T0iJ5udWL_bNAo-Kvt6jhtdiB1M,8929
|
|
95
101
|
memos/mem_scheduler/monitors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
96
|
-
memos/mem_scheduler/monitors/dispatcher_monitor.py,sha256=
|
|
97
|
-
memos/mem_scheduler/monitors/general_monitor.py,sha256=
|
|
98
|
-
memos/mem_scheduler/
|
|
99
|
-
memos/mem_scheduler/
|
|
102
|
+
memos/mem_scheduler/monitors/dispatcher_monitor.py,sha256=gAPuWoeWVm3338qamo8v7nfT0UVpFkpXb35ZshrTKbo,11177
|
|
103
|
+
memos/mem_scheduler/monitors/general_monitor.py,sha256=6JWXGTuv-udyIe_K0l_rMY1ITL8OgiXxnABGim9YFJ0,16718
|
|
104
|
+
memos/mem_scheduler/optimized_scheduler.py,sha256=J6L366nZBe8a9j6_nwvysUSPTr5mGVT1xi6mo7zHN9E,4997
|
|
105
|
+
memos/mem_scheduler/orm_modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
106
|
+
memos/mem_scheduler/orm_modules/base_model.py,sha256=oyWIL9ISx5qh759h8OPETOk1NKAmpjMX1ObG-uC1J7k,23880
|
|
107
|
+
memos/mem_scheduler/orm_modules/monitor_models.py,sha256=XUQdznlD29NQlRM-q1MSajaJNmBGL9AVa7o1VHuBWLE,9457
|
|
108
|
+
memos/mem_scheduler/scheduler_factory.py,sha256=fUEt9wlTwyhN0jeZO8fVdkbA0VZnV6zsyycw3acKCPI,922
|
|
100
109
|
memos/mem_scheduler/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
101
110
|
memos/mem_scheduler/schemas/general_schemas.py,sha256=r9Ew8KHTVxiDTTLKad1jw12uNMyLltFmn2htplSqbhk,1344
|
|
102
111
|
memos/mem_scheduler/schemas/message_schemas.py,sha256=ahTEY6x8gSXszURne1nKgHCkfEXfKOEXaTKTUsQ9IW0,5977
|
|
103
|
-
memos/mem_scheduler/schemas/monitor_schemas.py,sha256=
|
|
112
|
+
memos/mem_scheduler/schemas/monitor_schemas.py,sha256=wprD-O2LXW4nNVoTT-wR0bx0mH_VP0zW5RBck8NZm7I,15636
|
|
104
113
|
memos/mem_scheduler/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
105
|
-
memos/mem_scheduler/utils/
|
|
114
|
+
memos/mem_scheduler/utils/config_utils.py,sha256=x0Mp0wuoIQtDZkaXXJUTtesLWFq8eyh-hjkLEm4cOTM,3819
|
|
115
|
+
memos/mem_scheduler/utils/db_utils.py,sha256=Fba2OIDlQsYwydUyHlcZh7VFsUeeIkSpO0ogePOofps,1042
|
|
116
|
+
memos/mem_scheduler/utils/filter_utils.py,sha256=RoWrCf-qk2BJdV2-5ftWYM_UEQqYF6QZWtjPzfHskSc,6299
|
|
106
117
|
memos/mem_scheduler/utils/misc_utils.py,sha256=zOCpwzCrj0mfiW7BoWiTFEPj-dzdcYZnqMDtKDGO0kc,2765
|
|
118
|
+
memos/mem_scheduler/webservice_modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
119
|
+
memos/mem_scheduler/webservice_modules/rabbitmq_service.py,sha256=kXfL8Q7eo8H2OMUDhAotbYG9cpL89HDJ5h7A64caKrw,12620
|
|
120
|
+
memos/mem_scheduler/webservice_modules/redis_service.py,sha256=oHa9EvrpkknGAeygjmc8tExyCJVOU_7SZU6ScMOT9pY,5898
|
|
107
121
|
memos/mem_user/factory.py,sha256=zdC-208YYU4dpUaMpICzNbhMTiLaJDxLJoq4bl-6YiU,2956
|
|
108
122
|
memos/mem_user/mysql_persistent_user_manager.py,sha256=fSndxW6MR7u9ImWCPq-gsuFb2TYX1BXF6Kkv1FCS6Fw,9257
|
|
109
|
-
memos/mem_user/mysql_user_manager.py,sha256=
|
|
123
|
+
memos/mem_user/mysql_user_manager.py,sha256=Q_3FxNTw8Vf6uPotHk4YUooa8EVo0jBFTFBKJHPm_6o,16331
|
|
110
124
|
memos/mem_user/persistent_factory.py,sha256=0_k3KgvVESOAoD35ecwY77Dam-rfaFlly9oL-eMFmhk,3170
|
|
111
125
|
memos/mem_user/persistent_user_manager.py,sha256=oKQ6uXlT6v-bWTe99E5mNoPvs9FOxPtaMzNL4zujzP0,8760
|
|
112
126
|
memos/mem_user/user_manager.py,sha256=-Dwo8oR0AbnCGY9s3utm2ZqOvTJCpDTF5hlkvPRNiqA,15654
|
|
@@ -114,7 +128,7 @@ memos/memories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
114
128
|
memos/memories/activation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
115
129
|
memos/memories/activation/base.py,sha256=kiC35AOnuofgYMzLxZyVULsfOoVq03BGvi6AXtNvF-I,1151
|
|
116
130
|
memos/memories/activation/item.py,sha256=8oo3odhNnvg36NYLobwkehAHj74mo36IcH2MrlXSCEI,1720
|
|
117
|
-
memos/memories/activation/kv.py,sha256=
|
|
131
|
+
memos/memories/activation/kv.py,sha256=A1_dlJYrdcsLz_kJRD3dq614mw1FC4uiA_c6WVF54VU,8904
|
|
118
132
|
memos/memories/activation/vllmkv.py,sha256=QM6Y8a3dhqGa08_5rbE-JTR4EakNgoEEVfLdVcvmgms,7765
|
|
119
133
|
memos/memories/base.py,sha256=Sr-dEuDc982WwdVREQ2nL8L6rUc0KZPTaBJeYdgx8h8,577
|
|
120
134
|
memos/memories/factory.py,sha256=Z49DRF_VHQJI2UNiTJ_1ouPqg_iCcuV_Tcg5fXkKxlM,1418
|
|
@@ -125,51 +139,60 @@ memos/memories/parametric/lora.py,sha256=TqSI2OjmFi-XXCeM-MchSwh1sAhOwL7_JnOwSy9
|
|
|
125
139
|
memos/memories/textual/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
126
140
|
memos/memories/textual/base.py,sha256=5AQ0oR1rLd7yiwIKPxt2OmAlL6mWhwUl_U8zuafoDfI,2827
|
|
127
141
|
memos/memories/textual/general.py,sha256=exHPHejBE6jZNLm8pT951sIko8hAqNdOaHZdnNdfzBA,8877
|
|
128
|
-
memos/memories/textual/item.py,sha256=
|
|
129
|
-
memos/memories/textual/naive.py,sha256=
|
|
130
|
-
memos/memories/textual/tree.py,sha256=
|
|
142
|
+
memos/memories/textual/item.py,sha256=uzThiCAKGkIyG0hHL9ywWQNVEq6tr-yMCakoZBW7Dz8,8280
|
|
143
|
+
memos/memories/textual/naive.py,sha256=BjsDp3CdxcQzvKkGr1e_t4qdL_OFemwLjDf37yLRO-4,6964
|
|
144
|
+
memos/memories/textual/tree.py,sha256=Ch-oS_UDXhkYmH8q7pd2QKCF3T2tCyMQOUub-Y3nCu0,16189
|
|
131
145
|
memos/memories/textual/tree_text_memory/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
132
146
|
memos/memories/textual/tree_text_memory/organize/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
133
|
-
memos/memories/textual/tree_text_memory/organize/handler.py,sha256=
|
|
134
|
-
memos/memories/textual/tree_text_memory/organize/manager.py,sha256=
|
|
135
|
-
memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py,sha256=
|
|
136
|
-
memos/memories/textual/tree_text_memory/organize/reorganizer.py,sha256=
|
|
147
|
+
memos/memories/textual/tree_text_memory/organize/handler.py,sha256=zWkmm0ZdQjmuDUbmQkslGvjFrB-CWuq4y2h7uOTeUro,8135
|
|
148
|
+
memos/memories/textual/tree_text_memory/organize/manager.py,sha256=pkFGEi50xs8JA6M-MwB3EjC9vfJwUZ3683cM2L6x-XA,10319
|
|
149
|
+
memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py,sha256=h2vGAp_0l7xd60CIwc0bz5-FNAN9Sju7e_e7vzcj25s,8815
|
|
150
|
+
memos/memories/textual/tree_text_memory/organize/reorganizer.py,sha256=ONktG6-0DPg-PbAudnLfhh0ccah9cdtGr-cJyWxucuI,24581
|
|
137
151
|
memos/memories/textual/tree_text_memory/retrieve/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
138
|
-
memos/memories/textual/tree_text_memory/retrieve/bochasearch.py,sha256=
|
|
139
|
-
memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py,sha256=
|
|
140
|
-
memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py,sha256=
|
|
152
|
+
memos/memories/textual/tree_text_memory/retrieve/bochasearch.py,sha256=7IGL3QHLI74ZJmAIPLFrwxqSXkqubHAKiR7q4po5Tpw,8384
|
|
153
|
+
memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py,sha256=RRViVkwQAlXoqH9_0azIfGr2g2DsAybglXlxJqV27Ns,8719
|
|
154
|
+
memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py,sha256=ob1E-iXjCSSbb6KviZWXAO7LiMt5h9C7xi4bYjC_LiY,3850
|
|
141
155
|
memos/memories/textual/tree_text_memory/retrieve/reasoner.py,sha256=5csoGjviFbN9RJ8dm3B6kjvoC8xbPD8UMiGusefHaf0,2228
|
|
142
|
-
memos/memories/textual/tree_text_memory/retrieve/recall.py,sha256=
|
|
156
|
+
memos/memories/textual/tree_text_memory/retrieve/recall.py,sha256=DnK7aak5eeZpMf6pIwFpkW5IZ92FLtVQEnhf8Qan1Cw,9504
|
|
143
157
|
memos/memories/textual/tree_text_memory/retrieve/reranker.py,sha256=GIo_ZqA8Oea-L58Md724ak7Oq2fCnLfBWBUvMWiD7mY,3727
|
|
144
158
|
memos/memories/textual/tree_text_memory/retrieve/retrieval_mid_structs.py,sha256=CvGfdwtOwC78OWKb1nOg_tsPualirsRfbtA58_kxNpA,433
|
|
145
|
-
memos/memories/textual/tree_text_memory/retrieve/searcher.py,sha256=
|
|
159
|
+
memos/memories/textual/tree_text_memory/retrieve/searcher.py,sha256=gbfjsA6skRslhreDsFuARRTjyI0aZmhF7GpncnOJoBg,14772
|
|
146
160
|
memos/memories/textual/tree_text_memory/retrieve/task_goal_parser.py,sha256=vqgyczpS5As9zmljX9YF7TL0fgpl_T22FN5qV_AbcS8,3733
|
|
147
|
-
memos/memories/textual/tree_text_memory/retrieve/utils.py,sha256=
|
|
148
|
-
memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py,sha256=
|
|
161
|
+
memos/memories/textual/tree_text_memory/retrieve/utils.py,sha256=ISdSJEq_HqtPEqmTRQO6dXx7ioDWrbLi7mrrep4iQDw,2191
|
|
162
|
+
memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py,sha256=2NJTtVeLkqbNwCjwWkPw8haLWeUNpSifGa-BSiPpz9g,10611
|
|
149
163
|
memos/memos_tools/dinding_report_bot.py,sha256=kXmooO_wUpwErT6Obql-SQu8lbt0XnM_58znIeQt734,14735
|
|
150
164
|
memos/memos_tools/lockfree_dict.py,sha256=A2hFUSyjTIauiXONYzr7zFZfGlOF9J9cqrfzDNBaw_w,3811
|
|
151
165
|
memos/memos_tools/notification_service.py,sha256=CZ7tZI6m0A063ON0MVEOUb9uontggvrvBLOMzorD0cI,1125
|
|
152
|
-
memos/memos_tools/notification_utils.py,sha256=
|
|
153
|
-
memos/memos_tools/
|
|
166
|
+
memos/memos_tools/notification_utils.py,sha256=uHrDOXEW-WUJcoeR7gVhr2BVjNYUxIjz8cCve5F1PPs,3747
|
|
167
|
+
memos/memos_tools/singleton.py,sha256=k7D0cO65gnhWmYeXdQwQ6baBCSWtjH_T0niGE2ORWUw,6288
|
|
168
|
+
memos/memos_tools/thread_safe_dict.py,sha256=bM0UzyO2-1V0Uq94k828vGWTHUSj7oS4cA6K-DCLPus,8534
|
|
169
|
+
memos/memos_tools/thread_safe_dict_segment.py,sha256=zS9Nu06EThlttTrleZYkNN-bR0a3df-6imYWjPZSXTo,12478
|
|
154
170
|
memos/parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
155
171
|
memos/parsers/base.py,sha256=AWgWIZzReDiTqiv6z08_9aG2KHVzc4Bdr0Lowz0mWVI,435
|
|
156
|
-
memos/parsers/factory.py,sha256=
|
|
172
|
+
memos/parsers/factory.py,sha256=yRz-KIPRxBld2KOdHxh92SHQwHIevPzN9nLxqEz_pKY,787
|
|
157
173
|
memos/parsers/markitdown.py,sha256=SDwmZYC6LyiwdU79yuj6mWNMkQx9YrZzZEHU-4JzBwQ,863
|
|
174
|
+
memos/reranker/__init__.py,sha256=bq3LWhVg6LdK50Hx6jOM-eWEaNM0mX4_JuHNfYgUqE0,69
|
|
175
|
+
memos/reranker/base.py,sha256=bl9W-CqtlAs2k7loPvd3TRqq6Illybt6IosqrYw0DHw,573
|
|
176
|
+
memos/reranker/concat.py,sha256=7tZ-3VhkvMkPmUwqyzU4h_0EQ-PMQfdDwNl4B_VHlSA,1768
|
|
177
|
+
memos/reranker/cosine_local.py,sha256=vfDP9FkC0Cw6hvFZOeGlKz3q7J0fpI0Uh9fZFsRFGyY,2988
|
|
178
|
+
memos/reranker/factory.py,sha256=TvumTHbfjLsJs96S0rWHvCsmQJ4naGBMYWLvfJ61QzQ,1505
|
|
179
|
+
memos/reranker/http_bge.py,sha256=fl8HVGqBtPDCw-h84KgoJ0zFJp1vXZKvmS6oiBKnuSk,11357
|
|
180
|
+
memos/reranker/noop.py,sha256=OOy3d_AHydCm5BH4VNHEfq_vDE-D-WBgwSKIp8GQloo,414
|
|
158
181
|
memos/settings.py,sha256=BYOaqhzReu2yjbwrZqx9-uMwoipkj5Clc6VthnBYOvY,225
|
|
159
182
|
memos/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
160
|
-
memos/templates/mem_reader_prompts.py,sha256=
|
|
161
|
-
memos/templates/mem_scheduler_prompts.py,sha256=
|
|
162
|
-
memos/templates/mos_prompts.py,sha256=
|
|
183
|
+
memos/templates/mem_reader_prompts.py,sha256=B1sWIuZbIQM1zTv-VAWDsHUNLdO1O6fCy9WdhLMq2Aw,26875
|
|
184
|
+
memos/templates/mem_scheduler_prompts.py,sha256=GuLTsBSVvilYIU_dZZj7uWFnSSTDhlDxMjNIumRa4wY,14665
|
|
185
|
+
memos/templates/mos_prompts.py,sha256=yqpf8n0ObJPrJjXg4x-Nxsd0_pr0cDhdyCOopI7sgbI,18321
|
|
163
186
|
memos/templates/tree_reorganize_prompts.py,sha256=FJRIwT2A4d5EnoPhNuzDFdMWpbNLlJEIfLZP69RBlDM,12112
|
|
164
|
-
memos/types.py,sha256=
|
|
187
|
+
memos/types.py,sha256=GyeD3nBInBe0TVXjme-mMzhK_TGcWnhnH3HfmVbUM0c,2018
|
|
165
188
|
memos/utils.py,sha256=uB-8_5V16M7yNeAYXOIPaXwxeceUu4d_5yofLA6vbaE,428
|
|
166
189
|
memos/vec_dbs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
167
190
|
memos/vec_dbs/base.py,sha256=gbw7Gb_zs8Yx8kJIx6aTM-Ylsb4qLkVOFB-iwNJW6Sw,3564
|
|
168
191
|
memos/vec_dbs/factory.py,sha256=Noa4caqzPT9b59i2jzdpAHFCSHiMfDmgRox1POkRRfE,710
|
|
169
192
|
memos/vec_dbs/item.py,sha256=mLrcHF0nWtMCUjScBgaeeSqabQ3vJhKr_6wrU_g25ns,1425
|
|
170
193
|
memos/vec_dbs/qdrant.py,sha256=4KAiSZ64Ulz8EeT2o1DpNDRwnKRF4iiaJbZdq-xrn0c,11052
|
|
171
|
-
memoryos-1.
|
|
172
|
-
memoryos-1.
|
|
173
|
-
memoryos-1.
|
|
174
|
-
memoryos-1.
|
|
175
|
-
memoryos-1.
|
|
194
|
+
memoryos-1.1.1.dist-info/METADATA,sha256=7e_Oeocjq_tkPVwcfipprbx8U20va9KXo-MV823yD9Q,16217
|
|
195
|
+
memoryos-1.1.1.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
196
|
+
memoryos-1.1.1.dist-info/entry_points.txt,sha256=p54si8po81Yb-NK2lx5Z0lNr8QV7-5IECtkC6c8MJmI,40
|
|
197
|
+
memoryos-1.1.1.dist-info/licenses/LICENSE,sha256=FU-b6N8tVc7dzUZGyNjUIG1Ihnrh2iuBziq4a1Gl8HU,11358
|
|
198
|
+
memoryos-1.1.1.dist-info/RECORD,,
|
memos/__init__.py
CHANGED
memos/api/client.py
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
import requests
|
|
7
|
+
|
|
8
|
+
from memos.api.product_models import MemOSAddResponse, MemOSGetMessagesResponse, MemOSSearchResponse
|
|
9
|
+
from memos.log import get_logger
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
logger = get_logger(__name__)
|
|
13
|
+
|
|
14
|
+
MAX_RETRY_COUNT = 3
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class MemOSClient:
|
|
18
|
+
"""MemOS API client"""
|
|
19
|
+
|
|
20
|
+
def __init__(self, api_key: str | None = None, base_url: str | None = None):
|
|
21
|
+
self.base_url = (
|
|
22
|
+
base_url or os.getenv("MEMOS_BASE_URL") or "https://memos.memtensor.cn/api/openmem/v1"
|
|
23
|
+
)
|
|
24
|
+
api_key = api_key or os.getenv("MEMOS_API_KEY")
|
|
25
|
+
|
|
26
|
+
if not api_key:
|
|
27
|
+
raise ValueError("MemOS API key is required")
|
|
28
|
+
|
|
29
|
+
self.headers = {"Content-Type": "application/json", "Authorization": f"Token {api_key}"}
|
|
30
|
+
|
|
31
|
+
def _validate_required_params(self, **params):
|
|
32
|
+
"""Validate required parameters - if passed, they must not be empty"""
|
|
33
|
+
for param_name, param_value in params.items():
|
|
34
|
+
if not param_value:
|
|
35
|
+
raise ValueError(f"{param_name} is required")
|
|
36
|
+
|
|
37
|
+
def get_message(
|
|
38
|
+
self, user_id: str, conversation_id: str | None = None
|
|
39
|
+
) -> MemOSGetMessagesResponse:
|
|
40
|
+
"""Get messages"""
|
|
41
|
+
# Validate required parameters
|
|
42
|
+
self._validate_required_params(user_id=user_id)
|
|
43
|
+
|
|
44
|
+
url = f"{self.base_url}/get/message"
|
|
45
|
+
payload = {"user_id": user_id, "conversation_id": conversation_id}
|
|
46
|
+
for retry in range(MAX_RETRY_COUNT):
|
|
47
|
+
try:
|
|
48
|
+
response = requests.post(
|
|
49
|
+
url, data=json.dumps(payload), headers=self.headers, timeout=30
|
|
50
|
+
)
|
|
51
|
+
response.raise_for_status()
|
|
52
|
+
response_data = response.json()
|
|
53
|
+
return MemOSGetMessagesResponse(**response_data)
|
|
54
|
+
except Exception as e:
|
|
55
|
+
logger.error(f"Failed to get messages (retry {retry + 1}/3): {e}")
|
|
56
|
+
if retry == MAX_RETRY_COUNT - 1:
|
|
57
|
+
raise
|
|
58
|
+
|
|
59
|
+
def add_message(
|
|
60
|
+
self, messages: list[dict[str, Any]], user_id: str, conversation_id: str
|
|
61
|
+
) -> MemOSAddResponse:
|
|
62
|
+
"""Add memories"""
|
|
63
|
+
# Validate required parameters
|
|
64
|
+
self._validate_required_params(
|
|
65
|
+
messages=messages, user_id=user_id, conversation_id=conversation_id
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
url = f"{self.base_url}/add/message"
|
|
69
|
+
payload = {"messages": messages, "user_id": user_id, "conversation_id": conversation_id}
|
|
70
|
+
for retry in range(MAX_RETRY_COUNT):
|
|
71
|
+
try:
|
|
72
|
+
response = requests.post(
|
|
73
|
+
url, data=json.dumps(payload), headers=self.headers, timeout=30
|
|
74
|
+
)
|
|
75
|
+
response.raise_for_status()
|
|
76
|
+
response_data = response.json()
|
|
77
|
+
return MemOSAddResponse(**response_data)
|
|
78
|
+
except Exception as e:
|
|
79
|
+
logger.error(f"Failed to add memory (retry {retry + 1}/3): {e}")
|
|
80
|
+
if retry == MAX_RETRY_COUNT - 1:
|
|
81
|
+
raise
|
|
82
|
+
|
|
83
|
+
def search_memory(
|
|
84
|
+
self, query: str, user_id: str, conversation_id: str, memory_limit_number: int = 6
|
|
85
|
+
) -> MemOSSearchResponse:
|
|
86
|
+
"""Search memories"""
|
|
87
|
+
# Validate required parameters
|
|
88
|
+
self._validate_required_params(query=query, user_id=user_id)
|
|
89
|
+
|
|
90
|
+
url = f"{self.base_url}/search/memory"
|
|
91
|
+
payload = {
|
|
92
|
+
"query": query,
|
|
93
|
+
"user_id": user_id,
|
|
94
|
+
"conversation_id": conversation_id,
|
|
95
|
+
"memory_limit_number": memory_limit_number,
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
for retry in range(MAX_RETRY_COUNT):
|
|
99
|
+
try:
|
|
100
|
+
response = requests.post(
|
|
101
|
+
url, data=json.dumps(payload), headers=self.headers, timeout=30
|
|
102
|
+
)
|
|
103
|
+
response.raise_for_status()
|
|
104
|
+
response_data = response.json()
|
|
105
|
+
return MemOSSearchResponse(**response_data)
|
|
106
|
+
except Exception as e:
|
|
107
|
+
logger.error(f"Failed to search memory (retry {retry + 1}/3): {e}")
|
|
108
|
+
if retry == MAX_RETRY_COUNT - 1:
|
|
109
|
+
raise
|
memos/api/config.py
CHANGED
|
@@ -21,7 +21,7 @@ class APIConfig:
|
|
|
21
21
|
def get_openai_config() -> dict[str, Any]:
|
|
22
22
|
"""Get OpenAI configuration."""
|
|
23
23
|
return {
|
|
24
|
-
"model_name_or_path": os.getenv("
|
|
24
|
+
"model_name_or_path": os.getenv("MOS_CHAT_MODEL", "gpt-4o-mini"),
|
|
25
25
|
"temperature": float(os.getenv("MOS_CHAT_TEMPERATURE", "0.8")),
|
|
26
26
|
"max_tokens": int(os.getenv("MOS_MAX_TOKENS", "1024")),
|
|
27
27
|
"top_p": float(os.getenv("MOS_TOP_P", "0.9")),
|
|
@@ -90,6 +90,31 @@ class APIConfig:
|
|
|
90
90
|
},
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
+
@staticmethod
|
|
94
|
+
def get_reranker_config() -> dict[str, Any]:
|
|
95
|
+
"""Get embedder configuration."""
|
|
96
|
+
embedder_backend = os.getenv("MOS_RERANKER_BACKEND", "http_bge")
|
|
97
|
+
|
|
98
|
+
if embedder_backend == "http_bge":
|
|
99
|
+
return {
|
|
100
|
+
"backend": "http_bge",
|
|
101
|
+
"config": {
|
|
102
|
+
"url": os.getenv("MOS_RERANKER_URL"),
|
|
103
|
+
"model": os.getenv("MOS_RERANKER_MODEL", "bge-reranker-v2-m3"),
|
|
104
|
+
"timeout": 10,
|
|
105
|
+
"headers_extra": os.getenv("MOS_RERANKER_HEADERS_EXTRA"),
|
|
106
|
+
"rerank_source": os.getenv("MOS_RERANK_SOURCE"),
|
|
107
|
+
},
|
|
108
|
+
}
|
|
109
|
+
else:
|
|
110
|
+
return {
|
|
111
|
+
"backend": "cosine_local",
|
|
112
|
+
"config": {
|
|
113
|
+
"level_weights": {"topic": 1.0, "concept": 1.0, "fact": 1.0},
|
|
114
|
+
"level_field": "background",
|
|
115
|
+
},
|
|
116
|
+
}
|
|
117
|
+
|
|
93
118
|
@staticmethod
|
|
94
119
|
def get_embedder_config() -> dict[str, Any]:
|
|
95
120
|
"""Get embedder configuration."""
|
|
@@ -163,22 +188,22 @@ class APIConfig:
|
|
|
163
188
|
return {
|
|
164
189
|
"uri": os.getenv("NEO4J_URI", "bolt://localhost:7687"),
|
|
165
190
|
"user": os.getenv("NEO4J_USER", "neo4j"),
|
|
166
|
-
"db_name": os.getenv("NEO4J_DB_NAME", "
|
|
191
|
+
"db_name": os.getenv("NEO4J_DB_NAME", "neo4j"),
|
|
167
192
|
"password": os.getenv("NEO4J_PASSWORD", "12345678"),
|
|
168
193
|
"user_name": f"memos{user_id.replace('-', '')}",
|
|
169
|
-
"auto_create":
|
|
194
|
+
"auto_create": False,
|
|
170
195
|
"use_multi_db": False,
|
|
171
|
-
"embedding_dimension": int(os.getenv("EMBEDDING_DIMENSION",
|
|
196
|
+
"embedding_dimension": int(os.getenv("EMBEDDING_DIMENSION", 1024)),
|
|
172
197
|
"vec_config": {
|
|
173
198
|
# Pass nested config to initialize external vector DB
|
|
174
199
|
# If you use qdrant, please use Server instead of local mode.
|
|
175
200
|
"backend": "qdrant",
|
|
176
201
|
"config": {
|
|
177
202
|
"collection_name": "neo4j_vec_db",
|
|
178
|
-
"vector_dimension": int(os.getenv("EMBEDDING_DIMENSION",
|
|
203
|
+
"vector_dimension": int(os.getenv("EMBEDDING_DIMENSION", 1024)),
|
|
179
204
|
"distance_metric": "cosine",
|
|
180
|
-
"host": "localhost",
|
|
181
|
-
"port": 6333,
|
|
205
|
+
"host": os.getenv("QDRANT_HOST", "localhost"),
|
|
206
|
+
"port": int(os.getenv("QDRANT_PORT", "6333")),
|
|
182
207
|
},
|
|
183
208
|
},
|
|
184
209
|
}
|
|
@@ -248,7 +273,7 @@ class APIConfig:
|
|
|
248
273
|
def get_scheduler_config() -> dict[str, Any]:
|
|
249
274
|
"""Get scheduler configuration."""
|
|
250
275
|
return {
|
|
251
|
-
"backend": "
|
|
276
|
+
"backend": "optimized_scheduler",
|
|
252
277
|
"config": {
|
|
253
278
|
"top_k": int(os.getenv("MOS_SCHEDULER_TOP_K", "10")),
|
|
254
279
|
"act_mem_update_interval": int(
|
|
@@ -492,6 +517,7 @@ class APIConfig:
|
|
|
492
517
|
},
|
|
493
518
|
"embedder": APIConfig.get_embedder_config(),
|
|
494
519
|
"internet_retriever": internet_config,
|
|
520
|
+
"reranker": APIConfig.get_reranker_config(),
|
|
495
521
|
},
|
|
496
522
|
},
|
|
497
523
|
"act_mem": {}
|
|
@@ -545,6 +571,7 @@ class APIConfig:
|
|
|
545
571
|
"config": graph_db_backend_map[graph_db_backend],
|
|
546
572
|
},
|
|
547
573
|
"embedder": APIConfig.get_embedder_config(),
|
|
574
|
+
"reranker": APIConfig.get_reranker_config(),
|
|
548
575
|
"reorganize": os.getenv("MOS_ENABLE_REORGANIZE", "false").lower()
|
|
549
576
|
== "true",
|
|
550
577
|
"internet_retriever": internet_config,
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
import os
|
|
3
2
|
|
|
4
|
-
from
|
|
5
|
-
|
|
6
|
-
from memos.api.context.context import RequestContext, set_request_context
|
|
3
|
+
from memos.context.context import RequestContext, get_current_context
|
|
7
4
|
|
|
8
5
|
|
|
9
6
|
logger = logging.getLogger(__name__)
|
|
@@ -12,66 +9,17 @@ logger = logging.getLogger(__name__)
|
|
|
12
9
|
G = RequestContext
|
|
13
10
|
|
|
14
11
|
|
|
15
|
-
def
|
|
16
|
-
trace_id: str | None = Header(None, alias="trace-id"),
|
|
17
|
-
x_trace_id: str | None = Header(None, alias="x-trace-id"),
|
|
18
|
-
g_trace_id: str | None = Header(None, alias="g-trace-id"),
|
|
19
|
-
) -> str | None:
|
|
20
|
-
"""
|
|
21
|
-
Extract trace_id from various possible headers.
|
|
22
|
-
|
|
23
|
-
Priority: g-trace-id > x-trace-id > trace-id
|
|
24
|
-
"""
|
|
25
|
-
return g_trace_id or x_trace_id or trace_id
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
def generate_trace_id() -> str:
|
|
29
|
-
"""
|
|
30
|
-
Get a random trace_id.
|
|
31
|
-
"""
|
|
32
|
-
return os.urandom(16).hex()
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
def get_request_context(
|
|
36
|
-
request: Request, trace_id: str | None = Depends(get_trace_id_from_header)
|
|
37
|
-
) -> RequestContext:
|
|
38
|
-
"""
|
|
39
|
-
Get request context object with trace_id and request metadata.
|
|
40
|
-
|
|
41
|
-
This function creates a RequestContext and automatically sets it
|
|
42
|
-
in the global context for use throughout the request lifecycle.
|
|
43
|
-
"""
|
|
44
|
-
# Create context object
|
|
45
|
-
ctx = RequestContext(trace_id=trace_id)
|
|
46
|
-
|
|
47
|
-
# Set the context globally for this request
|
|
48
|
-
set_request_context(ctx)
|
|
49
|
-
|
|
50
|
-
# Log request start
|
|
51
|
-
logger.info(f"Request started with trace_id: {ctx.trace_id}")
|
|
52
|
-
|
|
53
|
-
# Add request metadata to context
|
|
54
|
-
ctx.set("method", request.method)
|
|
55
|
-
ctx.set("path", request.url.path)
|
|
56
|
-
ctx.set("client_ip", request.client.host if request.client else None)
|
|
57
|
-
|
|
58
|
-
return ctx
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
def get_g_object(trace_id: str | None = Depends(get_trace_id_from_header)) -> G:
|
|
12
|
+
def get_g_object() -> G:
|
|
62
13
|
"""
|
|
63
14
|
Get Flask g-like object for the current request.
|
|
64
|
-
|
|
65
|
-
This creates a RequestContext and sets it globally for access
|
|
66
|
-
throughout the request lifecycle.
|
|
15
|
+
Returns the context created by middleware.
|
|
67
16
|
"""
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
return g
|
|
17
|
+
ctx = get_current_context()
|
|
18
|
+
if ctx is None:
|
|
19
|
+
raise RuntimeError(
|
|
20
|
+
"No request context available. Make sure RequestContextMiddleware is properly configured."
|
|
21
|
+
)
|
|
22
|
+
return ctx
|
|
75
23
|
|
|
76
24
|
|
|
77
25
|
def get_current_g() -> G | None:
|
|
@@ -81,8 +29,6 @@ def get_current_g() -> G | None:
|
|
|
81
29
|
Returns:
|
|
82
30
|
The current request's g object if available, None otherwise.
|
|
83
31
|
"""
|
|
84
|
-
from memos.context import get_current_context
|
|
85
|
-
|
|
86
32
|
return get_current_context()
|
|
87
33
|
|
|
88
34
|
|
|
@@ -96,6 +42,9 @@ def require_g() -> G:
|
|
|
96
42
|
Raises:
|
|
97
43
|
RuntimeError: If called outside of a request context.
|
|
98
44
|
"""
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
45
|
+
ctx = get_current_context()
|
|
46
|
+
if ctx is None:
|
|
47
|
+
raise RuntimeError(
|
|
48
|
+
"No request context available. This function must be called within a request handler."
|
|
49
|
+
)
|
|
50
|
+
return ctx
|