| 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 |
|
|
| |
| |
| |
|
|
| def process(self, message): |
|
|
| try: |
|
|
| clean_message = message.strip() |
|
|
| if not clean_message: |
| return {"script": None, "image": None} |
|
|
| |
| |
| |
|
|
| plan = self.planner.plan(clean_message) |
| logger.info(f"Runtime plan: {plan}") |
|
|
| |
| |
| |
|
|
| try: |
| strategy = self.strategy_engine.build_strategy(clean_message) |
| logger.info(f"Runtime strategy: {strategy}") |
| except Exception: |
| strategy = None |
|
|
| |
| |
| |
|
|
| theme = clean_message |
|
|
| |
| |
| |
|
|
| try: |
| previous_knowledge = self.knowledge_engine.search(theme) |
| except Exception: |
| previous_knowledge = [] |
|
|
| |
| |
| |
|
|
| |
| |
| |
| trend_theme = theme |
|
|
| |
| |
| |
|
|
| context = PipelineContext(trend_theme) |
| context.metadata["knowledge"] = previous_knowledge |
|
|
| |
| |
| |
|
|
| result = self.executor.execute(plan, context) |
|
|
| if not result: |
| return {"script": None, "image": None} |
|
|
| script = result.get("script") |
| image = result.get("image") |
|
|
| |
| |
| |
|
|
| 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 |
| } |