File size: 1,534 Bytes
8a6ce4a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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}