MemoryOS 0.2.0__py3-none-any.whl → 0.2.2__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 (114) hide show
  1. {memoryos-0.2.0.dist-info → memoryos-0.2.2.dist-info}/METADATA +67 -26
  2. memoryos-0.2.2.dist-info/RECORD +169 -0
  3. memoryos-0.2.2.dist-info/entry_points.txt +3 -0
  4. memos/__init__.py +1 -1
  5. memos/api/config.py +562 -0
  6. memos/api/context/context.py +147 -0
  7. memos/api/context/dependencies.py +90 -0
  8. memos/api/exceptions.py +28 -0
  9. memos/api/mcp_serve.py +502 -0
  10. memos/api/product_api.py +35 -0
  11. memos/api/product_models.py +163 -0
  12. memos/api/routers/__init__.py +1 -0
  13. memos/api/routers/product_router.py +386 -0
  14. memos/chunkers/sentence_chunker.py +8 -2
  15. memos/cli.py +113 -0
  16. memos/configs/embedder.py +27 -0
  17. memos/configs/graph_db.py +132 -3
  18. memos/configs/internet_retriever.py +6 -0
  19. memos/configs/llm.py +47 -0
  20. memos/configs/mem_cube.py +1 -1
  21. memos/configs/mem_os.py +5 -0
  22. memos/configs/mem_reader.py +9 -0
  23. memos/configs/mem_scheduler.py +107 -7
  24. memos/configs/mem_user.py +58 -0
  25. memos/configs/memory.py +5 -4
  26. memos/dependency.py +52 -0
  27. memos/embedders/ark.py +92 -0
  28. memos/embedders/factory.py +4 -0
  29. memos/embedders/sentence_transformer.py +8 -2
  30. memos/embedders/universal_api.py +32 -0
  31. memos/graph_dbs/base.py +11 -3
  32. memos/graph_dbs/factory.py +4 -0
  33. memos/graph_dbs/nebular.py +1364 -0
  34. memos/graph_dbs/neo4j.py +333 -124
  35. memos/graph_dbs/neo4j_community.py +300 -0
  36. memos/llms/base.py +9 -0
  37. memos/llms/deepseek.py +54 -0
  38. memos/llms/factory.py +10 -1
  39. memos/llms/hf.py +170 -13
  40. memos/llms/hf_singleton.py +114 -0
  41. memos/llms/ollama.py +4 -0
  42. memos/llms/openai.py +67 -1
  43. memos/llms/qwen.py +63 -0
  44. memos/llms/vllm.py +153 -0
  45. memos/log.py +1 -1
  46. memos/mem_cube/general.py +77 -16
  47. memos/mem_cube/utils.py +109 -0
  48. memos/mem_os/core.py +251 -51
  49. memos/mem_os/main.py +94 -12
  50. memos/mem_os/product.py +1220 -43
  51. memos/mem_os/utils/default_config.py +352 -0
  52. memos/mem_os/utils/format_utils.py +1401 -0
  53. memos/mem_reader/simple_struct.py +18 -10
  54. memos/mem_scheduler/base_scheduler.py +441 -40
  55. memos/mem_scheduler/general_scheduler.py +249 -248
  56. memos/mem_scheduler/modules/base.py +14 -5
  57. memos/mem_scheduler/modules/dispatcher.py +67 -4
  58. memos/mem_scheduler/modules/misc.py +104 -0
  59. memos/mem_scheduler/modules/monitor.py +240 -50
  60. memos/mem_scheduler/modules/rabbitmq_service.py +319 -0
  61. memos/mem_scheduler/modules/redis_service.py +32 -22
  62. memos/mem_scheduler/modules/retriever.py +167 -23
  63. memos/mem_scheduler/modules/scheduler_logger.py +255 -0
  64. memos/mem_scheduler/mos_for_test_scheduler.py +140 -0
  65. memos/mem_scheduler/schemas/__init__.py +0 -0
  66. memos/mem_scheduler/schemas/general_schemas.py +43 -0
  67. memos/mem_scheduler/{modules/schemas.py → schemas/message_schemas.py} +63 -61
  68. memos/mem_scheduler/schemas/monitor_schemas.py +329 -0
  69. memos/mem_scheduler/utils/__init__.py +0 -0
  70. memos/mem_scheduler/utils/filter_utils.py +176 -0
  71. memos/mem_scheduler/utils/misc_utils.py +61 -0
  72. memos/mem_user/factory.py +94 -0
  73. memos/mem_user/mysql_persistent_user_manager.py +271 -0
  74. memos/mem_user/mysql_user_manager.py +500 -0
  75. memos/mem_user/persistent_factory.py +96 -0
  76. memos/mem_user/persistent_user_manager.py +260 -0
  77. memos/mem_user/user_manager.py +4 -4
  78. memos/memories/activation/item.py +29 -0
  79. memos/memories/activation/kv.py +10 -3
  80. memos/memories/activation/vllmkv.py +219 -0
  81. memos/memories/factory.py +2 -0
  82. memos/memories/textual/base.py +1 -1
  83. memos/memories/textual/general.py +43 -97
  84. memos/memories/textual/item.py +5 -33
  85. memos/memories/textual/tree.py +22 -12
  86. memos/memories/textual/tree_text_memory/organize/conflict.py +9 -5
  87. memos/memories/textual/tree_text_memory/organize/manager.py +26 -18
  88. memos/memories/textual/tree_text_memory/organize/redundancy.py +25 -44
  89. memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py +50 -48
  90. memos/memories/textual/tree_text_memory/organize/reorganizer.py +81 -56
  91. memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py +6 -3
  92. memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py +2 -0
  93. memos/memories/textual/tree_text_memory/retrieve/recall.py +0 -1
  94. memos/memories/textual/tree_text_memory/retrieve/reranker.py +2 -2
  95. memos/memories/textual/tree_text_memory/retrieve/retrieval_mid_structs.py +2 -0
  96. memos/memories/textual/tree_text_memory/retrieve/searcher.py +52 -28
  97. memos/memories/textual/tree_text_memory/retrieve/task_goal_parser.py +42 -15
  98. memos/memories/textual/tree_text_memory/retrieve/utils.py +11 -7
  99. memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py +62 -58
  100. memos/memos_tools/dinding_report_bot.py +422 -0
  101. memos/memos_tools/notification_service.py +44 -0
  102. memos/memos_tools/notification_utils.py +96 -0
  103. memos/parsers/markitdown.py +8 -2
  104. memos/settings.py +3 -1
  105. memos/templates/mem_reader_prompts.py +66 -23
  106. memos/templates/mem_scheduler_prompts.py +126 -43
  107. memos/templates/mos_prompts.py +87 -0
  108. memos/templates/tree_reorganize_prompts.py +85 -30
  109. memos/vec_dbs/base.py +12 -0
  110. memos/vec_dbs/qdrant.py +46 -20
  111. memoryos-0.2.0.dist-info/RECORD +0 -128
  112. memos/mem_scheduler/utils.py +0 -26
  113. {memoryos-0.2.0.dist-info → memoryos-0.2.2.dist-info}/LICENSE +0 -0
  114. {memoryos-0.2.0.dist-info → memoryos-0.2.2.dist-info}/WHEEL +0 -0
memos/vec_dbs/qdrant.py CHANGED
@@ -1,17 +1,7 @@
1
1
  from typing import Any
2
2
 
3
- from qdrant_client import QdrantClient
4
- from qdrant_client.http import models
5
- from qdrant_client.http.models import (
6
- Distance,
7
- FieldCondition,
8
- Filter,
9
- MatchValue,
10
- PointStruct,
11
- VectorParams,
12
- )
13
-
14
3
  from memos.configs.vec_db import QdrantVecDBConfig
4
+ from memos.dependency import require_python_package
15
5
  from memos.log import get_logger
16
6
  from memos.vec_dbs.base import BaseVecDB
17
7
  from memos.vec_dbs.item import VecDBItem
@@ -23,8 +13,15 @@ logger = get_logger(__name__)
23
13
  class QdrantVecDB(BaseVecDB):
24
14
  """Qdrant vector database implementation."""
25
15
 
16
+ @require_python_package(
17
+ import_name="qdrant_client",
18
+ install_command="pip install qdrant-client",
19
+ install_link="https://python-client.qdrant.tech/",
20
+ )
26
21
  def __init__(self, config: QdrantVecDBConfig):
27
22
  """Initialize the Qdrant vector database and the collection."""
23
+ from qdrant_client import QdrantClient
24
+
28
25
  self.config = config
29
26
 
30
27
  # If both host and port are None, we are running in local mode
@@ -43,6 +40,7 @@ class QdrantVecDB(BaseVecDB):
43
40
 
44
41
  def create_collection(self) -> None:
45
42
  """Create a new collection with specified parameters."""
43
+ from qdrant_client.http import models
46
44
 
47
45
  if self.collection_exists(self.config.collection_name):
48
46
  collection_info = self.client.get_collection(self.config.collection_name)
@@ -54,14 +52,14 @@ class QdrantVecDB(BaseVecDB):
54
52
 
55
53
  # Map string distance metric to Qdrant Distance enum
56
54
  distance_map = {
57
- "cosine": Distance.COSINE,
58
- "euclidean": Distance.EUCLID,
59
- "dot": Distance.DOT,
55
+ "cosine": models.Distance.COSINE,
56
+ "euclidean": models.Distance.EUCLID,
57
+ "dot": models.Distance.DOT,
60
58
  }
61
59
 
62
60
  self.client.create_collection(
63
61
  collection_name=self.config.collection_name,
64
- vectors_config=VectorParams(
62
+ vectors_config=models.VectorParams(
65
63
  size=self.config.vector_dimension,
66
64
  distance=distance_map[self.config.distance_metric],
67
65
  ),
@@ -122,16 +120,20 @@ class QdrantVecDB(BaseVecDB):
122
120
  for point in response
123
121
  ]
124
122
 
125
- def _dict_to_filter(self, filter_dict: dict[str, Any]) -> Filter:
123
+ def _dict_to_filter(self, filter_dict: dict[str, Any]) -> Any:
124
+ from qdrant_client.http import models
125
+
126
126
  """Convert a dictionary filter to a Qdrant Filter object."""
127
127
  conditions = []
128
128
 
129
129
  for field, value in filter_dict.items():
130
130
  # Simple exact match for now
131
131
  # TODO: Extend this to support more complex conditions
132
- conditions.append(FieldCondition(key=field, match=MatchValue(value=value)))
132
+ conditions.append(
133
+ models.FieldCondition(key=field, match=models.MatchValue(value=value))
134
+ )
133
135
 
134
- return Filter(must=conditions)
136
+ return models.Filter(must=conditions)
135
137
 
136
138
  def get_by_id(self, id: str) -> VecDBItem | None:
137
139
  """Get a single item by ID."""
@@ -235,6 +237,8 @@ class QdrantVecDB(BaseVecDB):
235
237
  return response.count
236
238
 
237
239
  def add(self, data: list[VecDBItem | dict[str, Any]]) -> None:
240
+ from qdrant_client.http import models
241
+
238
242
  """
239
243
  Add data to the vector database.
240
244
 
@@ -249,13 +253,14 @@ class QdrantVecDB(BaseVecDB):
249
253
  if isinstance(item, dict):
250
254
  item = item.copy()
251
255
  item = VecDBItem.from_dict(item)
252
- point = PointStruct(id=item.id, vector=item.vector, payload=item.payload)
256
+ point = models.PointStruct(id=item.id, vector=item.vector, payload=item.payload)
253
257
  points.append(point)
254
258
 
255
259
  self.client.upsert(collection_name=self.config.collection_name, points=points)
256
260
 
257
261
  def update(self, id: str, data: VecDBItem | dict[str, Any]) -> None:
258
262
  """Update an item in the vector database."""
263
+ from qdrant_client.http import models
259
264
 
260
265
  if isinstance(data, dict):
261
266
  data = data.copy()
@@ -265,7 +270,7 @@ class QdrantVecDB(BaseVecDB):
265
270
  # For vector updates (with or without payload), use upsert with the same ID
266
271
  self.client.upsert(
267
272
  collection_name=self.config.collection_name,
268
- points=[PointStruct(id=id, vector=data.vector, payload=data.payload)],
273
+ points=[models.PointStruct(id=id, vector=data.vector, payload=data.payload)],
269
274
  )
270
275
  else:
271
276
  # For payload-only updates
@@ -273,6 +278,25 @@ class QdrantVecDB(BaseVecDB):
273
278
  collection_name=self.config.collection_name, payload=data.payload, points=[id]
274
279
  )
275
280
 
281
+ def ensure_payload_indexes(self, fields: list[str]) -> None:
282
+ """
283
+ Create payload indexes for specified fields in the collection.
284
+ This is idempotent: it will skip if index already exists.
285
+
286
+ Args:
287
+ fields (list[str]): List of field names to index (as keyword).
288
+ """
289
+ for field in fields:
290
+ try:
291
+ self.client.create_payload_index(
292
+ collection_name=self.config.collection_name,
293
+ field_name=field,
294
+ field_schema="keyword", # Could be extended in future
295
+ )
296
+ logger.debug(f"Qdrant payload index on '{field}' ensured.")
297
+ except Exception as e:
298
+ logger.warning(f"Failed to create payload index on '{field}': {e}")
299
+
276
300
  def upsert(self, data: list[VecDBItem | dict[str, Any]]) -> None:
277
301
  """
278
302
  Add or update data in the vector database.
@@ -284,6 +308,8 @@ class QdrantVecDB(BaseVecDB):
284
308
  self.add(data)
285
309
 
286
310
  def delete(self, ids: list[str]) -> None:
311
+ from qdrant_client.http import models
312
+
287
313
  """Delete items from the vector database."""
288
314
  point_ids: list[str | int] = ids
289
315
  self.client.delete(
@@ -1,128 +0,0 @@
1
- memos/__init__.py,sha256=9C9wxypP0Ch_j6yjvoNgmbr8spHUAsdC1hd49UswG2U,575
2
- memos/api/start_api.py,sha256=vDKS3D8AEwlDAkpWxHiblzVqcQ3cvGSnnpP4Jhjm3GE,14656
3
- memos/chunkers/__init__.py,sha256=7lZOTN3e9Yp5XBsDX5wnWJ3tY126cRU9GmfevzJXAtU,67
4
- memos/chunkers/base.py,sha256=z0rG5vM7FGremQdSZ_3jlTGbsDtlkWAYWdtSAGqpaR4,655
5
- memos/chunkers/factory.py,sha256=ixpYz41GG3SZW-1ynLvfbhOZ0aGnFi2wUIYT4_Uxh30,693
6
- memos/chunkers/sentence_chunker.py,sha256=U0MpeaxONiz3daYXVwH7QiPvivhr2OeKGXdKMG2YJT0,1191
7
- memos/configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- memos/configs/base.py,sha256=bOOhEU6HGFTq5jne_TXn8Br72rvAfJHYvYllFUPs12A,2588
9
- memos/configs/chunker.py,sha256=Ulci0MyhS_FkuV95l7Pr9Vei179aEFEUigwVmtmSDfI,1593
10
- memos/configs/embedder.py,sha256=a7EbWB3tnqeK_pdK6-CneoKIwSqQg6sJrXuHX3J1PnI,1769
11
- memos/configs/graph_db.py,sha256=h5wz2lJSdB1IVaidzWHXDfvL4_IAjrjYrmypu1QCCq4,1432
12
- memos/configs/internet_retriever.py,sha256=7x1Sp--skifHQqWvcPFiEOkda6HCCocw6HSO5H127jk,3046
13
- memos/configs/llm.py,sha256=iNLGnZYbeqkLpjP4L0sGzoCnH4NH8SBUzBt6bTohxZI,2446
14
- memos/configs/mem_chat.py,sha256=TjEQHRG1HpLwCBo3hrn5aVK23rykNtV6Be5p4YIg7F4,2571
15
- memos/configs/mem_cube.py,sha256=AvffqpFC2WmzshouxLJbabuzt0PKLWSauQMnagP_EM0,3088
16
- memos/configs/mem_os.py,sha256=bUuyi6boIjjvYzrlFoCSqchbWF37IcA5BQi03feq7bg,2476
17
- memos/configs/mem_reader.py,sha256=m5pRr3DxtmOKBFdbnCki_XgG47oKfcasJNwZGXg9gN4,2022
18
- memos/configs/mem_scheduler.py,sha256=bTsBfl9GoXbjkiPDCenH8K2QY4RfAJNk-XN1UBl2W4Q,2959
19
- memos/configs/memory.py,sha256=kAGmniEgBdHgAsZGXeUF7J-ekwU5H9HnxQp_3jhUtLQ,6976
20
- memos/configs/parser.py,sha256=dy-QoevJbCnkJePKgpzR4oziOzYnS4jB6XH-YrpeMns,1145
21
- memos/configs/utils.py,sha256=X9NQ6-xURsZROAdS3WT96phVfHcOHgDPOo2Yq68QoKM,242
22
- memos/configs/vec_db.py,sha256=Gjhhda94pyTDjyJGe2Z6rVEqH4FtViiwq1-7QWhjarM,2335
23
- memos/deprecation.py,sha256=k2i4bBKqIwu20guwJmPPjOm7reOy19GzLwrTMrIqjPk,7408
24
- memos/embedders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- memos/embedders/base.py,sha256=zOYERcaqBVCyMVndcR6vhFC_O2itEuTM058odDfhTx8,449
26
- memos/embedders/factory.py,sha256=DkHl0z2GjLtxe0ASl7o9SDLtQg-hEgdmopuf6HdsudA,845
27
- memos/embedders/ollama.py,sha256=8lHeMCqxej44ZgeDsPGL-5almxRBWsYYYflu5LeAf7w,2361
28
- memos/embedders/sentence_transformer.py,sha256=lePjsdtNaf69HbOEsbG31Nj1BWgi0nCdkPtIYleLYWM,1377
29
- memos/exceptions.py,sha256=UnBoZUYdwb1KoQPE-pXSLT4yOjkwxse9fx0rb_MhEzo,531
30
- memos/graph_dbs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
- memos/graph_dbs/base.py,sha256=dTCdoYNS6FZQukpmpqhh8c_NwZ9Myql41g1Im8aDR6E,6873
32
- memos/graph_dbs/factory.py,sha256=9fS8w0GowWNMSupEyXyTRnivX-RJxTkxPy-tNHs15OM,732
33
- memos/graph_dbs/item.py,sha256=BfK17hA_hHu7I348jWugP_rb9GS5hpKfgqtYGGHBohk,1450
34
- memos/graph_dbs/neo4j.py,sha256=bOTBvHGw_65dudqIpQep9D95qBPyx-NHfTybsNAdjiM,33672
35
- memos/hello_world.py,sha256=RV1vXfK1_U_xAvSusqc-4A8wk3yr8WEQ9q88dmBxvnI,3057
36
- memos/llms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- memos/llms/base.py,sha256=E7qlIWUi_bxRwbKw0vGG7NjHksz45D_-gcrHKT3Ak1k,438
38
- memos/llms/factory.py,sha256=1JP2ZwUKN4ywaNgdZcRM6wSjahnEXqyuFiGzoxLCadY,792
39
- memos/llms/hf.py,sha256=rxcR8nAvhezsIQNeOeow-xn-z2h9j1poJO2jPNcJAg8,9008
40
- memos/llms/ollama.py,sha256=_nZYe0OauPWWcFFYVPSNtvyDGblrL49-EznApa-Mr5I,2565
41
- memos/llms/openai.py,sha256=agIFI58UXz-fOEth4EBTUlQ5p6ECBg9v2gFed6OVFzw,1192
42
- memos/llms/utils.py,sha256=OcbM9iSpFJpio7sTT5wvxVx-JnqjIx7eSgiRk7dt0ZI,292
43
- memos/log.py,sha256=ocQi2NWlpefgxOJi9EoB0as6tXhLA4dmXuVIgZT52FE,2234
44
- memos/mem_chat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
- memos/mem_chat/base.py,sha256=LICB_mwUkdCVKb_r33GEPbrEr-2v3dEnI54cAvhcEew,830
46
- memos/mem_chat/factory.py,sha256=KKCDG9FrpfY2hD3iJ4GM9x8dN09dyhstP1cOUH_knrY,720
47
- memos/mem_chat/simple.py,sha256=-DRlE8nKZcGuwEubALK-nUf-wWRbGXkDJXUg8Dxhoyo,7919
48
- memos/mem_cube/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
- memos/mem_cube/base.py,sha256=NoZKz16oO5AAnJ0alcY52Z1c3C1rbGRe8Znz0CCzDnw,864
50
- memos/mem_cube/general.py,sha256=ad7Qzshf-psBuu24BX_K0NDN0KDuwliAi06TG4wyH1M,5535
51
- memos/mem_cube/utils.py,sha256=-6KiCCzy1PehbGAZY20BVcelvdiKFSu4CXMXi8qNrGU,777
52
- memos/mem_os/client.py,sha256=0M-WRTlQr7fDAYtq4B8dsMR0PfmyvD-ySMhKcW3Umd0,43
53
- memos/mem_os/core.py,sha256=csZQqZfbdACapcA85Ahh8vBfi0VPFGM_6yilfmln008,34836
54
- memos/mem_os/main.py,sha256=sGMleiO1_CG8-v3ctIMFe1hx8Jy_OohFtqqpWgRMhbw,21099
55
- memos/mem_os/product.py,sha256=SFLFEleZISCeBU19b-uohFsaUNXB9tN-GGypuhDFx1I,3043
56
- memos/mem_reader/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
- memos/mem_reader/base.py,sha256=SSuaD3J88XbHsME1Qa-EAgZ57xApPHPHppMSeeS3JZ4,957
58
- memos/mem_reader/factory.py,sha256=emKnId9BhScSkqCZyLSLWntixnU3wAMIOVdsRpHldJA,766
59
- memos/mem_reader/memory.py,sha256=f3fAjrs8Jf6mBZWTgzkEZle7XjDwTJHxM1L2sOb85Tg,13288
60
- memos/mem_reader/simple_struct.py,sha256=SfFxtZ_YGcDh-A4Ztx4ouEBC6m0j8mLCVF2HN4oGRy8,9739
61
- memos/mem_scheduler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
- memos/mem_scheduler/base_scheduler.py,sha256=bYxLm6nUorJGm8DCiBOJ6DG8eqCK3cCIrm3cEe2be7M,6617
63
- memos/mem_scheduler/general_scheduler.py,sha256=Tp9Nh8qFVR9TklmmISSoBoeHoWTqM0P977gmb-HS6rM,12895
64
- memos/mem_scheduler/modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
- memos/mem_scheduler/modules/base.py,sha256=j2IJLiDGfen-JyJZSsVQ45s4kvdvPTvJEaqXeEN8Png,2824
66
- memos/mem_scheduler/modules/dispatcher.py,sha256=JFeqbSBRMfjkOP4ovL9DmB-MzRbOdaVo_GcuxL_0yuY,3902
67
- memos/mem_scheduler/modules/monitor.py,sha256=mZIJIPhRxd9aH02MFP9gGZ7RqbhZlSQGtfXTJCKYmKU,2683
68
- memos/mem_scheduler/modules/redis_service.py,sha256=sEgglO1fTpdEE39tl0e2GAA8Y0gXxNo3kqu5lDuyVx4,5479
69
- memos/mem_scheduler/modules/retriever.py,sha256=NJEFpX2ap4mSQZ9GYBvBr9QMD4QpgLEYaT1DkR1nyKA,1351
70
- memos/mem_scheduler/modules/schemas.py,sha256=J7Rv4M932Wdm-NoOWQne9txOK7j0V9ScdsRH7klPGTI,5301
71
- memos/mem_scheduler/scheduler_factory.py,sha256=pw6FKO0EuxFRipMnD22DvcjbM6pdmVfJmRjUvdTaU5E,800
72
- memos/mem_scheduler/utils.py,sha256=xa2BotLf7iAQ4bVJEujPvRjuzWItOA2gP2H3BkBM5XY,582
73
- memos/mem_user/user_manager.py,sha256=9XIt4Q2HA1fhh9dbjKRAXh-GTdT43WGYSx-IsST7jZM,15654
74
- memos/memories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
- memos/memories/activation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
- memos/memories/activation/base.py,sha256=kiC35AOnuofgYMzLxZyVULsfOoVq03BGvi6AXtNvF-I,1151
77
- memos/memories/activation/item.py,sha256=kjM7khcHn-7SJfOmOU9QXwPekRv5Y7xdRQABg_4arGU,757
78
- memos/memories/activation/kv.py,sha256=nFETbDZk84Tw6j2b123uFck5k3RGlOkYIHYr11Jk6fw,8061
79
- memos/memories/base.py,sha256=Sr-dEuDc982WwdVREQ2nL8L6rUc0KZPTaBJeYdgx8h8,577
80
- memos/memories/factory.py,sha256=PZ9OaEAgV2hDwo6UhyCe3OMplOYWefMyYEpXXc-hhGs,1311
81
- memos/memories/parametric/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
- memos/memories/parametric/base.py,sha256=RQK2LeaMRr2rVbfoa0M7RJx4r0dGD_uBXt73eizBVhI,667
83
- memos/memories/parametric/item.py,sha256=9FcY7kf53Uvl5FGXn23o2c0dI_9aUcYjUqTxKOMlbuI,219
84
- memos/memories/parametric/lora.py,sha256=TqSI2OjmFi-XXCeM-MchSwh1sAhOwL7_JnOwSy9qpis,1397
85
- memos/memories/textual/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
- memos/memories/textual/base.py,sha256=3XVeuXZY3ZFzZ6zHIE3l5hx7X2PiH7orxvCwrNZ1l3U,2812
87
- memos/memories/textual/general.py,sha256=7iektZA-_iR80sOlADW2EFkPT5Utbunu9hdZgT7Ocrk,11072
88
- memos/memories/textual/item.py,sha256=8tSsiDztsxfyNXWB1TG2E5a4nhIQcuYMJ_BrnPl6osQ,6323
89
- memos/memories/textual/naive.py,sha256=Z_gfbxI6cQGJ_raOTQic4fnpo493Xq3yEQ8qDV4xplo,6954
90
- memos/memories/textual/tree.py,sha256=xOc4yMO-tISHmndS-T3ZxGQDr3cARapiTU71PTZdJbQ,13514
91
- memos/memories/textual/tree_text_memory/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
- memos/memories/textual/tree_text_memory/organize/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
- memos/memories/textual/tree_text_memory/organize/conflict.py,sha256=AIJ3pZLPkYsOZE_AqqnCykaGsCk00wLZ8dAdpaz29uE,8462
94
- memos/memories/textual/tree_text_memory/organize/manager.py,sha256=ZT0VZnvR-Nd3P3f2eu6YumoauMUmp94NVP90JpI9C5w,13486
95
- memos/memories/textual/tree_text_memory/organize/redundancy.py,sha256=Z88OaNs5YvFY3liXDRFqPcdiIVdTTdlJ_esx3oOiRxI,9075
96
- memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py,sha256=gRG6iMT8Rm2Pk42UO1JzRaj3neIYmmOJmySi1knaGXA,8809
97
- memos/memories/textual/tree_text_memory/organize/reorganizer.py,sha256=fy1P_9RWIiKBDayAfCviRZzJx48TMY09ynE0OenMX-o,22932
98
- memos/memories/textual/tree_text_memory/retrieve/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
- memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py,sha256=asSzVcSVOiigN4-4NzFc7wzthGDK6P5sODIDF5W9egA,8467
100
- memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py,sha256=pBlufTc5-mdWcyKR_R0Syev3QPMtV83mydyIw0Saz4o,3192
101
- memos/memories/textual/tree_text_memory/retrieve/reasoner.py,sha256=5csoGjviFbN9RJ8dm3B6kjvoC8xbPD8UMiGusefHaf0,2228
102
- memos/memories/textual/tree_text_memory/retrieve/recall.py,sha256=a1P-L3ZER2wh6qTy6p2EhJ-6mSeSisbZgJnHjQv4XkM,5846
103
- memos/memories/textual/tree_text_memory/retrieve/reranker.py,sha256=U_O0uEKpWHAURhSvkzjYoR2LC8v8vzBjRo8MTeW_6i4,3680
104
- memos/memories/textual/tree_text_memory/retrieve/retrieval_mid_structs.py,sha256=jZs2S1jtd727gqDKs8clYCOwcqOBnrl_UmFU1FPE0w8,360
105
- memos/memories/textual/tree_text_memory/retrieve/searcher.py,sha256=2TQsYxWXxZns7jQo1_5rZxbdjqReaQIzGDYJb9eZ4RM,8367
106
- memos/memories/textual/tree_text_memory/retrieve/task_goal_parser.py,sha256=mAPxg5P3wmAvRVrutpeE3i2yC1R90egUUGdTWyWmq1U,2653
107
- memos/memories/textual/tree_text_memory/retrieve/utils.py,sha256=JU9_3OTRp1lXHWV6SuRUIO_GjRCPclEu9MrjNZX_kck,1406
108
- memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py,sha256=0bewmGoHE2n-inHDMlHY2wfpGUzTPSRBm9JkGl63rag,10437
109
- memos/parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
- memos/parsers/base.py,sha256=AWgWIZzReDiTqiv6z08_9aG2KHVzc4Bdr0Lowz0mWVI,435
111
- memos/parsers/factory.py,sha256=hPKTR0wVgMQ5Z9ZL-a9FyHWCpz9UcrG2oSEDYBAoB3g,704
112
- memos/parsers/markitdown.py,sha256=Yh7YAv8PFsz3WgegrwtA_hqaC9W4SOMZP7IRXxcnn_w,615
113
- memos/settings.py,sha256=HYNBFRW0CS2Kh4GmMRMA-Yrh3ZhJno4S4B6gx6P3T30,178
114
- memos/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
115
- memos/templates/mem_reader_prompts.py,sha256=tEsrlcYifQoSTZ0JXZr8Oo_--7zo3TPKAFoaHnDHTtE,7701
116
- memos/templates/mem_scheduler_prompts.py,sha256=53bcOCC32790tVJ7_s7o0jwu6hg7jUs-z8dyahlLv24,2417
117
- memos/templates/mos_prompts.py,sha256=QJrMb4FwMOAVb-SFSCGTuqqzvD_YhBTpdVBvpUIftK0,3595
118
- memos/templates/tree_reorganize_prompts.py,sha256=5nN5m8tlxxy46Xz4x9bGhzMPkywVFKDFqvSCjK3xnTA,6347
119
- memos/types.py,sha256=N7XBYxDTdc50KEsS6YxHvYgs23ykGsZ-wNnaJBVdVi4,1791
120
- memos/vec_dbs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
- memos/vec_dbs/base.py,sha256=a_-Gsh51C1_8R35mK7DykDxQTicmdgyz4fbEw8d5Mlg,3165
122
- memos/vec_dbs/factory.py,sha256=Noa4caqzPT9b59i2jzdpAHFCSHiMfDmgRox1POkRRfE,710
123
- memos/vec_dbs/item.py,sha256=mLrcHF0nWtMCUjScBgaeeSqabQ3vJhKr_6wrU_g25ns,1425
124
- memos/vec_dbs/qdrant.py,sha256=I_XFmz_7SgFojMTFaqkPvwQEdMBl0MsCKZ43qatwuV0,9858
125
- memoryos-0.2.0.dist-info/LICENSE,sha256=FU-b6N8tVc7dzUZGyNjUIG1Ihnrh2iuBziq4a1Gl8HU,11358
126
- memoryos-0.2.0.dist-info/METADATA,sha256=q0T0qM5v5Dkq9J5kKBtahtGWUHlSsu7R_dT3O_0Rb1A,12636
127
- memoryos-0.2.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
128
- memoryos-0.2.0.dist-info/RECORD,,
@@ -1,26 +0,0 @@
1
- import json
2
-
3
- from pathlib import Path
4
-
5
- import yaml
6
-
7
-
8
- def extract_json_dict(text: str):
9
- text = text.strip()
10
- patterns_to_remove = ["json'''", "latex'''", "'''"]
11
- for pattern in patterns_to_remove:
12
- text = text.replace(pattern, "")
13
- res = json.loads(text)
14
- return res
15
-
16
-
17
- def parse_yaml(yaml_file):
18
- yaml_path = Path(yaml_file)
19
- yaml_path = Path(yaml_file)
20
- if not yaml_path.is_file():
21
- raise FileNotFoundError(f"No such file: {yaml_file}")
22
-
23
- with yaml_path.open("r", encoding="utf-8") as fr:
24
- data = yaml.safe_load(fr)
25
-
26
- return data