"""{{ agent_display_name }} — Tools.

Tools are functions exposed as LangChain tools that the LLM can invoke.
They are also DAG nodes like steps.

Register tools here with @agent.tool().
"""

from app import agent


# Example:
#
# @agent.tool(name="search_database")
# async def search_database(query: str):
#     """Search the database for relevant information."""
#     # Your implementation here
#     return {"results": []}


# The framework ships some ready-to-wrap capabilities in abi_core.common —
# no need to reimplement them per agent. For example, model availability:
#
# from abi_core.common.model_tools import find_model, pull_model
#
# @agent.tool(name="check_model_availability")
# async def check_model_availability(model: str):
#     """Is `model` available, and where?"""
#     return {"location": await find_model(model)}
#
# See abi_core.common.methodology_tools for the task-decomposition
# methodology registry (WBS/SMART/GTD/Polya) used by the Planner.
