import asyncio
from langchain.tools import BaseTool, tool
from pydantic import BaseModel, Field
from typing import Type

class HelloToolInput(BaseModel):
    name: str = Field(description="Kullanıcıya hitap edilecek isim")

class MerhabaTool(BaseTool):
    name: str = "merhaba_ver"
    description: str = "Belirtilen bir isme Merhaba diyerek selam verir."
    args_schema: Type[BaseModel] = HelloToolInput # type: ignore

    # Sadece async yol kullanılsın (LangGraph ile tam uyumlu)
    async def _arun(self, name: str) -> str:  # type: ignore[override]
        return f"Merhaba, {name}!"

    def _run(self, name: str = "all") -> str:
        # sync çağrı geldiğinde async sürümü çalıştır   
        
        return asyncio.run(self._arun(name))
    