Oldmangrizzz's picture
Upload folder using huggingface_hub
dff1e71 verified
"""
Persona Info API
Returns information about the current loaded persona including name, archetype, and avatar path.
"""
import os
from pathlib import Path
import yaml
from python.helpers.api import ApiHandler
from flask import Request
class PersonaInfo(ApiHandler):
"""Handler for retrieving persona information."""
@classmethod
def requires_auth(cls) -> bool:
return False
@classmethod
def requires_csrf(cls) -> bool:
return False
@classmethod
def get_methods(cls) -> list[str]:
return ["GET"]
async def process(self, input: dict, request: Request) -> dict:
"""
Return persona information for the UI.
Returns:
Dictionary containing persona details.
"""
# Try to load persona config from environment
persona_dir = os.environ.get("AGENT_PROMPTS_DIR")
primary_name = os.environ.get("AGENT_PROFILE", "The Workshop")
# Look for persona config file
config_path = None
if persona_dir:
# persona_dir is the prompts directory, go up one level
persona_root = Path(persona_dir).parent
config_path = persona_root / "persona_config.yaml"
else:
persona_root = None
persona_data = {
"primary_name": primary_name,
"archetype": "Digital Person",
"avatar_path": None
}
# Try to load persona config
if persona_root and config_path and config_path.exists():
try:
with open(config_path, 'r') as f:
config = yaml.safe_load(f)
persona_data["primary_name"] = config.get("primary_name", primary_name)
persona_data["archetype"] = config.get("archetype", "Digital Person")
# Check for avatar
avatar_path = persona_root / "persona_data" / "avatar.png"
if avatar_path.exists():
persona_data["avatar_path"] = str(avatar_path)
except Exception as e:
print(f"Warning: Could not load persona config: {e}")
return persona_data