| """Adapters exposing deterministic helpers to current smolagents APIs.""" |
|
|
| from __future__ import annotations |
|
|
| import os |
|
|
| from smolagents import tool |
|
|
| from .image_chess import analyze_chess_fen |
| from .markdown_logic import analyze_markdown_operation |
| from .spreadsheet import inspect_spreadsheet |
| from .web import fetch_url |
| from .youtube import fetch_youtube_transcript |
|
|
|
|
| @tool |
| def youtube_transcript(url: str) -> str: |
| """Fetch a timestamped transcript for a YouTube URL. |
| |
| Args: |
| url: Full YouTube watch or short URL. |
| """ |
| return fetch_youtube_transcript(url) |
|
|
|
|
| @tool |
| def spreadsheet_contents(path: str) -> str: |
| """Read all sheets in an Excel workbook as structured JSON. |
| |
| Args: |
| path: Local path to an xlsx or xls file. |
| """ |
| return inspect_spreadsheet(path) |
|
|
|
|
| @tool |
| def markdown_operation_analysis(markdown: str) -> str: |
| """Compute algebraic properties of a finite operation in a Markdown table. |
| |
| Args: |
| markdown: Question text containing a Markdown Cayley table. |
| """ |
| return analyze_markdown_operation(markdown) |
|
|
|
|
| @tool |
| def chess_fen_analysis(fen: str) -> str: |
| """Validate and calculate checks and mates for a chess position in FEN. |
| |
| Args: |
| fen: A complete Forsyth-Edwards Notation chess position. |
| """ |
| return analyze_chess_fen(fen, stockfish_path=os.getenv("STOCKFISH_PATH") or None) |
|
|
|
|
| @tool |
| def fetch_research_url(url: str) -> str: |
| """Fetch a webpage or PDF and return bounded clean Markdown/text. |
| |
| Args: |
| url: Absolute HTTP or HTTPS URL to retrieve. |
| """ |
| return fetch_url(url) |
|
|
|
|
| def custom_agent_tools() -> list: |
| return [ |
| youtube_transcript, |
| spreadsheet_contents, |
| markdown_operation_analysis, |
| chess_fen_analysis, |
| fetch_research_url, |
| ] |
|
|