from typing import Type, Any
from pydantic import BaseModel, PrivateAttr
from langchain.tools import BaseTool
from .web_search_tool import WebAraTool
from .website_summary_tool import SiteIncelemeTool

class WebAraVeOzetToolInput(BaseModel):
    konu: str

class WebAraVeOzetTool(BaseTool):
    name: str = "web_ara_ve_ozetle"
    description: str = "Konuya dair web araması yapar, linkleri ve özetleri getirir."
    args_schema: type[BaseModel] = WebAraVeOzetToolInput
    _agent: Any = PrivateAttr()

    def __init__(self, agent):
        super().__init__()
        self._agent = agent

    async def _arun(self, *, konu: str) -> list[dict]:
        arama_tool = WebAraTool()
        linkler = await arama_tool._arun(konu=konu)
        inceleme_tool = SiteIncelemeTool(agent=self._agent)
        for item in linkler:
            if item["link"]:
                summary = await inceleme_tool._arun(url=item["link"])
                item["summary"] = summary
            else:
                item["summary"] = "Link yok."
        return linkler