from __future__ import annotations from pathlib import Path from typing import List, Optional from core_agent.session import AgentRunResult, ConversationSession from providers.base import AgentProvider from tools.registry import ToolRegistry class CoreAgent: """Top-level assembly layer, aligned with the referenced my_agent project.""" def __init__( self, *, provider: AgentProvider, workspace: str | Path, skill_dirs: Optional[List[str | Path]] = None, tool_registry: Optional[ToolRegistry] = None, system_prompt: Optional[str] = None, max_iterations: int = 12, ) -> None: self.provider = provider self.workspace = Path(workspace).resolve() self.skill_dirs = list(skill_dirs or [self.workspace / "skills"]) self.tool_registry = tool_registry self.system_prompt = system_prompt self.max_iterations = max_iterations def run(self, user_message: str, *, active_skills: Optional[List[str]] = None) -> AgentRunResult: return self.new_session(active_skills=active_skills).ask(user_message) def new_session(self, *, active_skills: Optional[List[str]] = None, session_id: str = "default") -> ConversationSession: return ConversationSession( provider=self.provider, workspace=self.workspace, session_id=session_id, skill_dirs=self.skill_dirs, tool_registry=self.tool_registry, system_prompt=self.system_prompt, max_iterations=self.max_iterations, active_skills=active_skills, ) if __name__ == "__main__": from main_cli import main main()