ams-core-api / core /agent_runtime.py
Amssou's picture
Update core/agent_runtime.py
a7091f8 verified
Raw
History Blame Contribute Delete
3.5 kB
import logging
from datetime import datetime
from core.context import PipelineContext
logger = logging.getLogger("ONYX")
class AgentRuntime:
def __init__(
self,
planner,
strategy_engine,
message_parser,
trend_engine,
executor,
memory,
knowledge_engine
):
self.planner = planner
self.strategy_engine = strategy_engine
self.message_parser = message_parser
self.trend_engine = trend_engine
self.executor = executor
self.memory = memory
self.knowledge_engine = knowledge_engine
# =========================
# PROCESS REQUEST
# =========================
def process(self, message):
try:
clean_message = message.strip()
if not clean_message:
return {"script": None, "image": None}
# =========================
# PLANNER
# =========================
plan = self.planner.plan(clean_message)
logger.info(f"Runtime plan: {plan}")
# =========================
# STRATEGY
# =========================
try:
strategy = self.strategy_engine.build_strategy(clean_message)
logger.info(f"Runtime strategy: {strategy}")
except Exception:
strategy = None
# =========================
# THEME
# =========================
theme = clean_message
# =========================
# KNOWLEDGE SEARCH
# =========================
try:
previous_knowledge = self.knowledge_engine.search(theme)
except Exception:
previous_knowledge = []
# =========================
# TREND (désactivé pour les images)
# =========================
# On garde le thème original pour éviter
# des phrases comme :
# "Ce que la psychologie révèle sur ..."
trend_theme = theme
# =========================
# CONTEXT
# =========================
context = PipelineContext(trend_theme)
context.metadata["knowledge"] = previous_knowledge
# =========================
# EXECUTION
# =========================
result = self.executor.execute(plan, context)
if not result:
return {"script": None, "image": None}
script = result.get("script")
image = result.get("image")
# =========================
# SAVE MEMORY
# =========================
if script:
try:
self.memory.add_exchange(clean_message, script)
self.knowledge_engine.store({
"timestamp": datetime.utcnow().isoformat(),
"theme": theme,
"request": clean_message,
"result": script
})
except Exception:
pass
return {
"script": script,
"image": image
}
except Exception as e:
logger.error(f"Runtime error: {e}")
return {
"script": None,
"image": None
}