from enum import Enum, auto from dataclasses import dataclass, field class EmmaState(Enum): IDLE = auto() # Venter på input OBSERVING = auto() # Analyserer kontekst REASONING = auto() # MCoT resonneringsloop ACTING = auto() # Utfører verktøykall/svar REFLECTING = auto() # Evaluerer eget output LEARNING = auto() # Oppdaterer resonans-minne class EmmaAction(Enum): CLARIFY = auto() # Be om mer info RETRIEVE = auto() # RAG-oppslag TOOLCALL = auto() # API/shell/fil RESPOND = auto() # Generer svar COMPRESS = auto() # Forenkle resonneringskjede (MCoT) STOREPATTERN = auto() # Lagre vellykket mønster i resonansminne @dataclass class EmmaContext: userinput: str history: list toolresults: list = field(default_factory=list) thoughtchain: list = field(default_factory=list) rewardacc: float = 0.0 stepcount: int = 0 complexityscore: float = 0.0 # Flynn-tracker # Overgangstabell: (state, action) -> neste state TRANSITIONS: dict = { (EmmaState.IDLE, EmmaAction.RETRIEVE): EmmaState.OBSERVING, (EmmaState.OBSERVING, EmmaAction.CLARIFY): EmmaState.IDLE, (EmmaState.OBSERVING, EmmaAction.TOOLCALL): EmmaState.ACTING, (EmmaState.OBSERVING, EmmaAction.RESPOND): EmmaState.REASONING, (EmmaState.REASONING, EmmaAction.COMPRESS): EmmaState.REASONING, (EmmaState.REASONING, EmmaAction.RESPOND): EmmaState.ACTING, (EmmaState.ACTING, EmmaAction.STOREPATTERN): EmmaState.REFLECTING, (EmmaState.REFLECTING, EmmaAction.RETRIEVE): EmmaState.LEARNING, (EmmaState.LEARNING, EmmaAction.STOREPATTERN): EmmaState.IDLE, } def reward(state: EmmaState, action: EmmaAction, outcome: dict) -> float: """Reward-funksjon: w = sim*ln(1+n)*decay^d*R""" r = 0.0 if outcome.get("task_completed"): r += 1.0 if outcome.get("user_confirmed"): r += 0.5 if outcome.get("steps_used", 99) < 5: r += 0.3 if outcome.get("tool_error"): r -= 0.4 if outcome.get("hallucination_flag"): r -= 0.8 return r