FerrellSyntheticIntelligence
Initial clean commit: Source code only
29cdc9d
raw
history blame
3.14 kB
import json, os, time, sys, logging
from .kernel import SovereignKernel
from .validator import KernelValidator
from .ledger import ProjectLedger
from .security import CDEPolicyEnforcer
# Append root to sys.path to allow imports from core
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from core.memory_bank import MemoryBank
logging.basicConfig(level=logging.INFO, format='%(asctime)s - [DAEMON] - %(message)s')
class KernelDaemon:
def __init__(self, workspace):
self.root = os.path.abspath(workspace)
self.task_file = os.path.join(self.root, "workspace_tasks.json")
self.kernel = SovereignKernel(self.root)
self.ledger = ProjectLedger(self.root)
self.enforcer = CDEPolicyEnforcer(os.path.join(self.root, "cde_policy.yaml"))
self.memory = MemoryBank(os.path.join(self.root, "vitalis_memory.json"))
def start(self):
logging.info("Vitalis Kernel Daemon active.")
while True:
if os.path.exists(self.task_file):
try:
with open(self.task_file, 'r') as f:
task = json.load(f)
except Exception as e:
logging.error(f"Failed to read task file: {e}")
os.remove(self.task_file)
continue
intent = task.get('intent', 'unknown')
# INTEGRITY GATE: The Security Gate
if not self.enforcer.check_task(task):
logging.warning(f"Task blocked by Security Gate: {intent}")
self.memory.record_event("SECURITY_BLOCK", task)
os.remove(self.task_file)
continue
# LOGGING: Record intent initiation
self.memory.record_event("TASK_START", task)
# EXECUTION: Scaffold or Write
if intent == 'scaffold':
res = self.kernel.scaffold_module(task.get('module_name'))
else:
res = self.kernel.write_code(task.get('file'), task.get('code'))
# VALIDATION: Execute pytests
target = self.root if intent == 'scaffold' else os.path.dirname(os.path.join(self.root, task.get('file', '')))
success, output = KernelValidator.run_tests(target, sys.executable)
# LEDGER & MEMORY COMMIT
if success:
self.ledger.update_state(intent, "Completed")
self.memory.record_event("TASK_SUCCESS", {"intent": intent})
logging.info(f"Task {intent} succeeded.")
else:
self.ledger.update_state(intent, "Failed")
self.memory.record_event("TASK_FAILED", {"intent": intent, "error": output})
logging.error(f"Task {intent} failed.")
os.remove(self.task_file)
time.sleep(0.5)
if __name__ == "__main__":
KernelDaemon(os.getcwd()).start()