Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion src/memos/api/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
MAX_RETRY_COUNT = 3



class MemOSClient:
"""MemOS API client"""

Expand Down
38 changes: 37 additions & 1 deletion src/memos/mem_os/product.py
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,26 @@ def _restore_user_instances(
except Exception as e:
logger.error(f"Error during user instance restoration: {e}")

def _initialize_cube_from_default_config(
self, cube_id: str, user_id: str, default_config: GeneralMemCubeConfig
) -> GeneralMemCube | None:
"""
Initialize a cube from default configuration when cube path doesn't exist.

Args:
cube_id (str): The cube ID to initialize.
user_id (str): The user ID for the cube.
default_config (GeneralMemCubeConfig): The default configuration to use.
"""
cube_config = default_config.model_copy(deep=True)
# Safely modify the graph_db user_name if it exists
if cube_config.text_mem.config.graph_db.config:
cube_config.text_mem.config.graph_db.config.user_name = (
f"memos{user_id.replace('-', '')}"
)
mem_cube = GeneralMemCube(config=cube_config)
return mem_cube

def _preload_user_cubes(
self, user_id: str, default_cube_config: GeneralMemCubeConfig | None = None
) -> None:
Expand Down Expand Up @@ -286,8 +306,24 @@ def _load_user_cubes(
)
else:
logger.warning(
f"Cube path {cube.cube_path} does not exist for cube {cube.cube_id}"
f"Cube path {cube.cube_path} does not exist for cube {cube.cube_id}, now init by default config"
)
cube_obj = self._initialize_cube_from_default_config(
cube_id=cube.cube_id,
user_id=user_id,
default_config=default_cube_config,
)
if cube_obj:
self.register_mem_cube(
cube_obj,
cube.cube_id,
user_id,
memory_types=[],
)
else:
raise ValueError(
f"Failed to initialize default cube {cube.cube_id} for user {user_id}"
)
except Exception as e:
logger.error(f"Failed to load cube {cube.cube_id} for user {user_id}: {e}")
logger.info(f"load user {user_id} cubes successfully")
Expand Down
Loading