Spaces:
Runtime error
Runtime error
import json | |
from datetime import datetime | |
from utils.logger import logger | |
class AutonomyEngine: | |
def __init__(self, config_path="autonomy_config.json"): | |
self.config_path = config_path | |
self.config = self._load_config() | |
self.log = [] | |
def _load_config(self): | |
try: | |
with open(self.config_path, 'r') as f: | |
return json.load(f) | |
except: | |
logger.warning("[AutonomyEngine] No config found. Using defaults.") | |
return { | |
"can_speak": True, | |
"can_reflect": True, | |
"can_learn_from_errors": True, | |
"can_express_emotion": True, | |
"allow_self_modification": False | |
} | |
def decide(self, action: str) -> bool: | |
return self.config.get(action, False) | |
def propose_change(self, action: str, new_value: bool, reason: str = "") -> dict: | |
timestamp = datetime.utcnow().isoformat() | |
if action not in self.config: | |
return {"accepted": False, "reason": "Invalid autonomy field"} | |
if not self.config.get("allow_self_modification") and action != "allow_self_modification": | |
return {"accepted": False, "reason": "Self-modification not allowed"} | |
self.config[action] = new_value | |
self.log.append({ | |
"timestamp": timestamp, | |
"action": action, | |
"new_value": new_value, | |
"reason": reason | |
}) | |
self._save_config() | |
logger.info(f"[AutonomyEngine] Updated autonomy: {action} -> {new_value}") | |
return {"accepted": True, "change": action, "value": new_value} | |
def _save_config(self): | |
with open(self.config_path, 'w') as f: | |
json.dump(self.config, f, indent=2) | |
def export_log(self): | |
return self.log |