vibe/vibe/core/session/session_migration.py
Mathias Gesbert d33db9fff8 2.0.0
Co-Authored-By: Quentin Torroba <quentin.torroba@mistral.ai>
Co-Authored-By: Michel Thomazo <michel.thomazo@mistral.ai>
Co-Authored-By: Clément Drouin <clement.drouin@mistral.ai>
Co-Authored-By: Vincent Guilloux <vincent.guilloux@mistral.ai>
Co-Authored-By: Clément Siriex <clement.sirieix@mistral.ai>
Co-Authored-By: Kim-Adeline Miguel <kimadeline.miguel@mistral.ai>
Co-Authored-By: Thaddee Tyl <thaddee.tyl@gmail.com>
Co-Authored-By: David Brochart <david.brochart@gmail.com>
Co-Authored-By: Joseph Guhlin <joseph.guhlin@gmail.com>
Co-Authored-By: Thomas Kenbeek <thomaskenbeek@gmail.com>
Co-Authored-By: Remenby31 <baptiste.cruvellier31@gmail.com>
2026-01-27 16:44:55 +01:00

41 lines
1.4 KiB
Python

from __future__ import annotations
import asyncio
import json
from pathlib import Path
from vibe.core.config import SessionLoggingConfig
from vibe.core.session.session_logger import SessionLogger
def migrate_sessions_entrypoint(session_config: SessionLoggingConfig) -> int:
return asyncio.run(migrate_sessions(session_config))
async def migrate_sessions(session_config: SessionLoggingConfig) -> int:
"""Helper for migrating session data from singular JSON files to the format introduced in Vibe 2.0 with per-session folders with split metadata and message files."""
save_dir = session_config.save_dir
if not save_dir or not session_config.enabled:
return 0
successful_migrations = 0
session_files = list(Path(save_dir).glob(f"{session_config.session_prefix}_*.json"))
for session_file in session_files:
try:
with open(session_file) as f:
session_data = f.read()
session_json = json.loads(session_data)
metadata = session_json["metadata"]
messages = session_json["messages"]
session_dir = Path(save_dir) / session_file.stem
session_dir.mkdir()
await SessionLogger.persist_metadata(metadata, session_dir)
await SessionLogger.persist_messages(messages, session_dir)
session_file.unlink()
successful_migrations += 1
except Exception:
continue
return successful_migrations