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.

Files changed (94) hide show
  1. {memoryos-1.0.0.dist-info → memoryos-1.1.1.dist-info}/METADATA +8 -2
  2. {memoryos-1.0.0.dist-info → memoryos-1.1.1.dist-info}/RECORD +92 -69
  3. {memoryos-1.0.0.dist-info → memoryos-1.1.1.dist-info}/WHEEL +1 -1
  4. memos/__init__.py +1 -1
  5. memos/api/client.py +109 -0
  6. memos/api/config.py +35 -8
  7. memos/api/context/dependencies.py +15 -66
  8. memos/api/middleware/request_context.py +63 -0
  9. memos/api/product_api.py +5 -2
  10. memos/api/product_models.py +107 -16
  11. memos/api/routers/product_router.py +62 -19
  12. memos/api/start_api.py +13 -0
  13. memos/configs/graph_db.py +4 -0
  14. memos/configs/mem_scheduler.py +38 -3
  15. memos/configs/memory.py +13 -0
  16. memos/configs/reranker.py +18 -0
  17. memos/context/context.py +255 -0
  18. memos/embedders/factory.py +2 -0
  19. memos/graph_dbs/base.py +4 -2
  20. memos/graph_dbs/nebular.py +368 -223
  21. memos/graph_dbs/neo4j.py +49 -13
  22. memos/graph_dbs/neo4j_community.py +13 -3
  23. memos/llms/factory.py +2 -0
  24. memos/llms/openai.py +74 -2
  25. memos/llms/vllm.py +2 -0
  26. memos/log.py +128 -4
  27. memos/mem_cube/general.py +3 -1
  28. memos/mem_os/core.py +89 -23
  29. memos/mem_os/main.py +3 -6
  30. memos/mem_os/product.py +418 -154
  31. memos/mem_os/utils/reference_utils.py +20 -0
  32. memos/mem_reader/factory.py +2 -0
  33. memos/mem_reader/simple_struct.py +204 -82
  34. memos/mem_scheduler/analyzer/__init__.py +0 -0
  35. memos/mem_scheduler/analyzer/mos_for_test_scheduler.py +569 -0
  36. memos/mem_scheduler/analyzer/scheduler_for_eval.py +280 -0
  37. memos/mem_scheduler/base_scheduler.py +126 -56
  38. memos/mem_scheduler/general_modules/dispatcher.py +2 -2
  39. memos/mem_scheduler/general_modules/misc.py +99 -1
  40. memos/mem_scheduler/general_modules/scheduler_logger.py +17 -11
  41. memos/mem_scheduler/general_scheduler.py +40 -88
  42. memos/mem_scheduler/memory_manage_modules/__init__.py +5 -0
  43. memos/mem_scheduler/memory_manage_modules/memory_filter.py +308 -0
  44. memos/mem_scheduler/{general_modules → memory_manage_modules}/retriever.py +34 -7
  45. memos/mem_scheduler/monitors/dispatcher_monitor.py +9 -8
  46. memos/mem_scheduler/monitors/general_monitor.py +119 -39
  47. memos/mem_scheduler/optimized_scheduler.py +124 -0
  48. memos/mem_scheduler/orm_modules/__init__.py +0 -0
  49. memos/mem_scheduler/orm_modules/base_model.py +635 -0
  50. memos/mem_scheduler/orm_modules/monitor_models.py +261 -0
  51. memos/mem_scheduler/scheduler_factory.py +2 -0
  52. memos/mem_scheduler/schemas/monitor_schemas.py +96 -29
  53. memos/mem_scheduler/utils/config_utils.py +100 -0
  54. memos/mem_scheduler/utils/db_utils.py +33 -0
  55. memos/mem_scheduler/utils/filter_utils.py +1 -1
  56. memos/mem_scheduler/webservice_modules/__init__.py +0 -0
  57. memos/mem_user/mysql_user_manager.py +4 -2
  58. memos/memories/activation/kv.py +2 -1
  59. memos/memories/textual/item.py +96 -17
  60. memos/memories/textual/naive.py +1 -1
  61. memos/memories/textual/tree.py +57 -3
  62. memos/memories/textual/tree_text_memory/organize/handler.py +4 -2
  63. memos/memories/textual/tree_text_memory/organize/manager.py +28 -14
  64. memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py +1 -2
  65. memos/memories/textual/tree_text_memory/organize/reorganizer.py +75 -23
  66. memos/memories/textual/tree_text_memory/retrieve/bochasearch.py +10 -6
  67. memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py +6 -2
  68. memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py +2 -0
  69. memos/memories/textual/tree_text_memory/retrieve/recall.py +119 -21
  70. memos/memories/textual/tree_text_memory/retrieve/searcher.py +172 -44
  71. memos/memories/textual/tree_text_memory/retrieve/utils.py +6 -4
  72. memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py +5 -4
  73. memos/memos_tools/notification_utils.py +46 -0
  74. memos/memos_tools/singleton.py +174 -0
  75. memos/memos_tools/thread_safe_dict.py +22 -0
  76. memos/memos_tools/thread_safe_dict_segment.py +382 -0
  77. memos/parsers/factory.py +2 -0
  78. memos/reranker/__init__.py +4 -0
  79. memos/reranker/base.py +24 -0
  80. memos/reranker/concat.py +59 -0
  81. memos/reranker/cosine_local.py +96 -0
  82. memos/reranker/factory.py +48 -0
  83. memos/reranker/http_bge.py +312 -0
  84. memos/reranker/noop.py +16 -0
  85. memos/templates/mem_reader_prompts.py +289 -40
  86. memos/templates/mem_scheduler_prompts.py +242 -0
  87. memos/templates/mos_prompts.py +133 -60
  88. memos/types.py +4 -1
  89. memos/api/context/context.py +0 -147
  90. memos/mem_scheduler/mos_for_test_scheduler.py +0 -146
  91. {memoryos-1.0.0.dist-info → memoryos-1.1.1.dist-info}/entry_points.txt +0 -0
  92. {memoryos-1.0.0.dist-info → memoryos-1.1.1.dist-info/licenses}/LICENSE +0 -0
  93. /memos/mem_scheduler/{general_modules → webservice_modules}/rabbitmq_service.py +0 -0
  94. /memos/mem_scheduler/{general_modules → webservice_modules}/redis_service.py +0 -0
@@ -1,8 +1,9 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: MemoryOS
3
- Version: 1.0.0
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=QI66SSrW4g7NoA88QjatThCfb04l9wOgmSamPL1zl1U,575
2
- memos/api/config.py,sha256=mK-OpSIsS2OBs4HuUTZ8R_oQuFTMQxb_NMrOGjgfJ6g,23605
3
- memos/api/context/context.py,sha256=HBMeg3-e-rOJXMU7aR0JCsEIECuefEx8eyFT-1sSG9c,4158
4
- memos/api/context/dependencies.py,sha256=8aa-xciqlG-THJnJ9YqhP5BtVIDIBGYpLQOuXK_DgQA,2652
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/product_api.py,sha256=pDsxxrw6sF03hmh6dGqahJjlWWKvg_GGs2-TZMy3e8I,954
8
- memos/api/product_models.py,sha256=HLhC-ggmDERarQCX7o24GEtz31JIKL6P8pgM6-bh2X8,5519
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=IyblquQN9y2EdtFm-EtEB9MGSpHwV8NfDP1GNv5NYD0,15765
11
- memos/api/start_api.py,sha256=vDKS3D8AEwlDAkpWxHiblzVqcQ3cvGSnnpP4Jhjm3GE,14656
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=800e8PqiXTaOBX-GQHRP9f3Gx-0Ma7fnO0pdA5WHJ0k,5868
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=kLE1JZM2IkzpsEdvJ0D0w3MNbjsqfB_--EvdZomHB5s,7644
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=ksLE6JoRhe0Sc_H-efbFFbjv7kzm9lQ9WMqqrn6WsS8,7171
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=tyWOvL2IZpWe-NMAvhBPsb4GqGcSUjoHJkZ65qaddEs,1027
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=hW3-2Gg_n178jrb7-T1BSHd42-3_fT5e9lYqqlnImFQ,8259
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=TObODgjQvNLzoRDc4UcKcfceIujtOnwZlOfVb4GhcOM,58097
49
- memos/graph_dbs/neo4j.py,sha256=grPBo91cZln2A9e13WkZk9rPuZSX5VLxERSgXT5p6wM,42605
50
- memos/graph_dbs/neo4j_community.py,sha256=6_1_m3gPl4TxGWdLRCu91vHH5G7E6iBteDQ952hQ844,11382
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=DVKMc9Pic36teO2fjIVu3qQulcXh8vYl2hPOJYY3vs4,1153
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=yOcdG320q0JFLi7ipHDXoPWpvyeOMFwbzrnXtk2xqec,3832
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=cBJx61j0InhoOacIinj3EJxFOfWh14a7_GMiFUmsPCk,5624
63
- memos/log.py,sha256=qf6x4SAHWm7FsxCpwF400ssPnye7eK8I3_05hXjATY0,2311
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=w1HbDIM7MD6Pu_Pbv4KHgQlxOMaCHvvJk_tmA9rZ_q8,8370
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=7EsAeI8FLeKrgtMG1GRIwdpGMJLHcN8g1hErkvkyVhc,44214
74
- memos/mem_os/main.py,sha256=zjgQy80QN70Xt6GHqn5zw-_2jOT6RWMCh9Yx-3zZuyw,24534
75
- memos/mem_os/product.py,sha256=3ge9x0miUrqYaApxNZ0KYIuocUZKn3-Zz4t3BEQQguA,50719
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=jlyqZrmCKjyeq5czamHH8J--jsJfgL3Np1nFKfKVhJY,5464
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=emKnId9BhScSkqCZyLSLWntixnU3wAMIOVdsRpHldJA,766
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=cZ-yaR95n8PkSRQJVPZ4pWZ8V_nECX8miZyDFIQwymk,10209
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/base_scheduler.py,sha256=wxBmdsJUmiufQLEfqflb4EUs9h9JE1EcMdsr_CA-LKE,23255
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=weDMAumIFJORJnpIm_8epz5d5pZ3XFx23O_0k-UONww,7375
89
- memos/mem_scheduler/general_modules/misc.py,sha256=qtHx_M3O0p01-bdje5xp4YbTYcU6rpoRsDvPikxOU-s,3574
90
- memos/mem_scheduler/general_modules/rabbitmq_service.py,sha256=kXfL8Q7eo8H2OMUDhAotbYG9cpL89HDJ5h7A64caKrw,12620
91
- memos/mem_scheduler/general_modules/redis_service.py,sha256=oHa9EvrpkknGAeygjmc8tExyCJVOU_7SZU6ScMOT9pY,5898
92
- memos/mem_scheduler/general_modules/retriever.py,sha256=6BiT-rxdXNnlDJjikQVwuy279W0tePo7tbb6j8c8j6s,7849
93
- memos/mem_scheduler/general_modules/scheduler_logger.py,sha256=8nzdjCd6I4-KRPwLjdf8eXcSQ0i_-xK6rAbQ3j1-GrA,9985
94
- memos/mem_scheduler/general_scheduler.py,sha256=oPGSvXKzFVYDr0YFnjS42zFYydHOXqlWd1woZ83CptA,14743
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=xy3fFa_vM5PpVHWweMTh3V3bZmnccWV49x0nBNFAVVw,10930
97
- memos/mem_scheduler/monitors/general_monitor.py,sha256=pv_T-olU0XTO44-rXgfqX43nmDEp8iq-rwlMyAA0Lxk,12962
98
- memos/mem_scheduler/mos_for_test_scheduler.py,sha256=kioG5V27V8jfXxFA9OHpKoULNF697eGToVo7z-U3mqQ,5950
99
- memos/mem_scheduler/scheduler_factory.py,sha256=pw6FKO0EuxFRipMnD22DvcjbM6pdmVfJmRjUvdTaU5E,800
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=OvFwchhFCvkHnp8k7NYAQQ5Lq7N0cNKA0mSEasNRLkU,12715
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/filter_utils.py,sha256=GsEsVjB6zZbF2gITxXN1DWTLoLG-d8A3TFnGzy1uIaQ,6286
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=gpNYr9XZhtr1fVV-y5zsduEOKStqAFUSf5BE0B6WQKM,16285
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=c3rhOowxqmYnUnVKGT1XqsHQurl44Ht98wCDz42laP8,8903
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=xhyjuL6QfZaf33OaWb2v96QWlZ01_WLkWkWKDh5N9LU,5249
129
- memos/memories/textual/naive.py,sha256=Z_gfbxI6cQGJ_raOTQic4fnpo493Xq3yEQ8qDV4xplo,6954
130
- memos/memories/textual/tree.py,sha256=8K_x5zv3CV8kmQa6lfhXk4OgcmbRUtSy8hZ7JvbJFmU,13787
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=l7WuwWvubGzgaOSUBS0VNjSQU2JxtjwLMtKHxpms8NQ,8139
134
- memos/memories/textual/tree_text_memory/organize/manager.py,sha256=r-0O9hS3y3oQrTaKOulLmbsquk_FW6eEPse6tf7AuVM,9783
135
- memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py,sha256=udqQEFZb6TiarB-Rya1N7fKiWHtXiLkggh8bFKIlDjU,8816
136
- memos/memories/textual/tree_text_memory/organize/reorganizer.py,sha256=txBC6uo3fId4RaTJeTJEg4V3Q-jrIP0jBHqVQkjjAqc,22719
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=2TjlAJ5vLoOvBTlqRXul6elBUvvPuB9PsYy1xuqX-Ho,8196
139
- memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py,sha256=aD2bujlVBWzDa9ZfB9vdB9Hq2erCpc426AVcolItWIM,8656
140
- memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py,sha256=3-hJwpGrAAag7z772QBvW9ZBvNI_od5GO1nRv5Q3GbQ,3767
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=s8bTlTDsgnuqy-nIZ9-Mnp3LalXKaDqDEwn-GLo6ntw,6108
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=_ZEmupkjE9_Hu4X4DeQ1d2qKf2mYBdLRtKRROwqGN1U,10734
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=HuN4urTkrmlXJV7X3bw8LneyAt-azgqwlf2eCOev-ts,2072
148
- memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py,sha256=x-nlZJ84shgAq9FqQR3YvE6iTMY_B7Pc0YaiGEqM1rc,10518
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=5J8GUqgf3h8uo1qFvrWawtcqTtu1irxCfSVsFOQfO3I,2380
153
- memos/memos_tools/thread_safe_dict.py,sha256=5hhKndKntYIriTIkmaDaehmojuOMhEkVl4WAc2QLfHM,8252
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=hPKTR0wVgMQ5Z9ZL-a9FyHWCpz9UcrG2oSEDYBAoB3g,704
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=T6tJaGmHo7fqFxMSo6OOTY-GvITnv-Fa1CydYX40MiM,10095
161
- memos/templates/mem_scheduler_prompts.py,sha256=ty_H9TARf5sQogHSJoRYQmrS6w0xs51mMcKNjkExdFc,5034
162
- memos/templates/mos_prompts.py,sha256=sw_jAZOXEgmFHVA2xXfGb4nvhhr4IUkAi-rqFjX-HQ8,13793
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=N7XBYxDTdc50KEsS6YxHvYgs23ykGsZ-wNnaJBVdVi4,1791
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.0.0.dist-info/LICENSE,sha256=FU-b6N8tVc7dzUZGyNjUIG1Ihnrh2iuBziq4a1Gl8HU,11358
172
- memoryos-1.0.0.dist-info/METADATA,sha256=uXoscqVd6NEZGEwaGQn3NR-ezJ5RKp0X6n48KANAmAY,15608
173
- memoryos-1.0.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
174
- memoryos-1.0.0.dist-info/entry_points.txt,sha256=p54si8po81Yb-NK2lx5Z0lNr8QV7-5IECtkC6c8MJmI,40
175
- memoryos-1.0.0.dist-info/RECORD,,
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,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.1.3
2
+ Generator: poetry-core 2.2.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
memos/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
- __version__ = "1.0.0"
1
+ __version__ = "1.1.1"
2
2
 
3
3
  from memos.configs.mem_cube import GeneralMemCubeConfig
4
4
  from memos.configs.mem_os import MOSConfig
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("MOS_OPENAI_MODEL", "gpt-4o-mini"),
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", "shared-tree-textual-memory"),
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": True,
194
+ "auto_create": False,
170
195
  "use_multi_db": False,
171
- "embedding_dimension": int(os.getenv("EMBEDDING_DIMENSION", 3072)),
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", 3072)),
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": "general_scheduler",
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 fastapi import Depends, Header, Request
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 get_trace_id_from_header(
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
- if trace_id is None:
69
- trace_id = generate_trace_id()
70
-
71
- g = RequestContext(trace_id=trace_id)
72
- set_request_context(g)
73
- logger.info(f"Request g object created with trace_id: {g.trace_id}")
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
- from memos.context import require_context
100
-
101
- return require_context()
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