from resonance import ResonanceSimulator from mappings import IcosaMap, DodecaMap from music import MusicAdapter from memory import MemoryStore from self_improvement import SelfImprover from api_helpers import chat_refine import pandas as pd, json, os, time class SavantEngine: def __init__(self): self.memory = MemoryStore("SAVANT_memory.jsonl") self.icosa = IcosaMap() self.dodeca = DodecaMap() self.resonator = ResonanceSimulator() self.music = MusicAdapter() self.self_improver = SelfImprover(self.memory) def _classify(self, text): t = text.lower() if any(k in t for k in ("equation", "dirac", "hamiltoniano")): return "equation" if any(k in t for k in ("node", "icosahedron", "nodo")): return "node" if any(k in t for k in ("freq", "music", "nota", "resonance")): return "resonance" return "chat" def handle_query(self, text, base_output=None): kind = self._classify(text) if kind == "resonance": r = self.resonator.simulate(text) seq = self.music.adapt_text_to_music(text) response = f"🎵 Resonancia detectada. Frecuencia dominante: {r['summary']['dom_freq']:.4f} Hz. Secuencia inicial: {seq[:5]}" else: refined = chat_refine(text, base_output or "", self_improver=self.self_improver) response = refined self.memory.add({"type": kind, "query": text, "response": response, "_ts": time.time()}) return {"response": response}