9692726db4
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: kartik-mem0 <kartik.labhshetwar@mem0.ai>
68 lines
2.0 KiB
Python
68 lines
2.0 KiB
Python
import json
|
|
import os
|
|
import uuid
|
|
|
|
# Set up the directory path
|
|
VECTOR_ID = str(uuid.uuid4())
|
|
home_dir = os.path.expanduser("~")
|
|
mem0_dir = os.environ.get("MEM0_DIR") or os.path.join(home_dir, ".mem0")
|
|
os.makedirs(mem0_dir, exist_ok=True)
|
|
|
|
|
|
def setup_config():
|
|
config_path = os.path.join(mem0_dir, "config.json")
|
|
if not os.path.exists(config_path):
|
|
user_id = str(uuid.uuid4())
|
|
config = {"user_id": user_id}
|
|
with open(config_path, "w") as config_file:
|
|
json.dump(config, config_file, indent=4)
|
|
|
|
|
|
def get_user_id():
|
|
config_path = os.path.join(mem0_dir, "config.json")
|
|
if not os.path.exists(config_path):
|
|
return "anonymous_user"
|
|
|
|
try:
|
|
with open(config_path, "r") as config_file:
|
|
config = json.load(config_file)
|
|
user_id = config.get("user_id")
|
|
return user_id
|
|
except Exception:
|
|
return "anonymous_user"
|
|
|
|
|
|
def get_or_create_user_id(vector_store=None):
|
|
"""Store user_id in vector store and return it.
|
|
|
|
If vector_store is None, simply returns the user_id from config.
|
|
This ensures telemetry initialization never fails due to missing vector store.
|
|
"""
|
|
user_id = get_user_id()
|
|
|
|
# If no vector store provided, just return the user_id
|
|
if vector_store is None:
|
|
return user_id
|
|
|
|
# Try to get existing user_id from vector store
|
|
try:
|
|
existing = vector_store.get(vector_id=user_id)
|
|
if existing and hasattr(existing, "payload") and existing.payload and "user_id" in existing.payload:
|
|
stored_id = existing.payload["user_id"]
|
|
# Ensure we never return None from vector store
|
|
if stored_id is not None:
|
|
return stored_id
|
|
except Exception:
|
|
pass
|
|
|
|
# If we get here, we need to insert the user_id
|
|
try:
|
|
dims = getattr(vector_store, "embedding_model_dims", 1536)
|
|
vector_store.insert(
|
|
vectors=[[0.1] * dims], payloads=[{"user_id": user_id, "type": "user_identity"}], ids=[user_id]
|
|
)
|
|
except Exception:
|
|
pass
|
|
|
|
return user_id
|