mvi-ai-engine / reasoning /persona.py
Musombi's picture
Update reasoning/persona.py
98ef845
# reasoning/persona.py
"""
PersonaController
Controls the conversational persona mode of MVI-AI.
Handles switching between assistant and companion behavior.
"""
from typing import Dict, Optional
class PersonaController:
"""
Manages conversational personality mode for MVI-AI.
Modes:
- assistant : structured, task-focused, direct
- companion : supportive, empathetic, conversational
"""
VALID_MODES = ["assistant", "companion"]
def __init__(self):
self.mode: str = "assistant" # default mode
# ---------------------------------------------------
# Manual switching
# ---------------------------------------------------
def switch(self, mode: str) -> None:
"""
Manually switch persona mode.
:param mode: Desired persona mode ('assistant' or 'companion')
"""
if mode in self.VALID_MODES:
self.mode = mode
def get_mode(self) -> str:
"""
Returns the current persona mode.
:return: Current mode
"""
return self.mode
# ---------------------------------------------------
# Automatic adjustment
# ---------------------------------------------------
def adjust(
self,
intent: Optional[str] = None,
emotion: Optional[Dict[str, str]] = None
) -> str:
"""
Automatically adjust persona based on user intent and emotion.
:param intent: User intent string
:param emotion: Dict containing 'label' and optionally 'confidence'
:return: Current persona mode after adjustment
"""
if emotion:
label = emotion.get("label", "").lower()
# Trigger companion mode for emotional support
if label in ["sad", "lonely", "depressed", "fear", "anxiety"]:
self.mode = "companion"
# Trigger assistant mode for analytical or task-based intents
elif intent in ["code", "analysis", "debug", "explain", "solve"]:
self.mode = "assistant"
return self.mode