| | from __future__ import annotations |
| |
|
| | import logging |
| | from typing import Optional |
| |
|
| | from config.settings import AppSettings, get_settings |
| | from backend.storage import SQLiteRunStore, SQLitePersonaStore |
| | from backend.core.persona_seed import seed_defaults_overwrite |
| | from backend.core.persona_system import get_persona_system |
| |
|
| | logger = logging.getLogger(__name__) |
| |
|
| | run_store: Optional[SQLiteRunStore] = None |
| | persona_store: Optional[SQLitePersonaStore] = None |
| |
|
| |
|
| | def get_run_store() -> SQLiteRunStore: |
| | if run_store is None: |
| | raise RuntimeError("RunStore not initialized") |
| | return run_store |
| |
|
| |
|
| | def get_persona_store() -> SQLitePersonaStore: |
| | if persona_store is None: |
| | raise RuntimeError("PersonaStore not initialized") |
| | return persona_store |
| |
|
| |
|
| | async def seed_personas_and_settings(*, overwrite_defaults: bool = False) -> None: |
| | store = get_persona_store() |
| | if overwrite_defaults: |
| | await seed_defaults_overwrite(store=store) |
| | else: |
| | |
| | await seed_defaults_overwrite(store=store) |
| |
|
| | await refresh_persona_cache() |
| |
|
| |
|
| | async def refresh_persona_cache() -> None: |
| | store = get_persona_store() |
| | records = await store.list_persona_records(include_deleted=False) |
| | personas: list = [] |
| | for rec in records: |
| | personas.append( |
| | { |
| | "id": rec.persona_id, |
| | "kind": rec.kind, |
| | "name": rec.name, |
| | "is_default": rec.is_default, |
| | "version_id": rec.current_version_id, |
| | "attributes": rec.attributes, |
| | "question_bank_items": rec.question_bank_items, |
| | } |
| | ) |
| | get_persona_system().set_personas(personas) |
| |
|
| |
|
| | async def initialize_run_store(settings: Optional[AppSettings] = None) -> None: |
| | global run_store, persona_store |
| | resolved = settings or get_settings() |
| | db_path = resolved.db.path |
| |
|
| | rs = SQLiteRunStore(db_path) |
| | await rs.init() |
| | run_store = rs |
| |
|
| | ps = SQLitePersonaStore(db_path) |
| | await ps.init() |
| | persona_store = ps |
| |
|
| | logger.info("RunStore + PersonaStore initialized") |
| |
|