from typing import Any, Optional
from smolagents.tools import Tool

class GetNewsTool(Tool):
    name = "Get_News"
    description = "Fetches the latest NYTimes RSS feed and returns the headlines and URLs of the most recent 5 stories."
    inputs = {}  # This tool does not require any inputs.
    output_type = "string"

    def __init__(self, feed_url: str = "https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml", max_results: int = 5, **kwargs):
        super().__init__()
        self.feed_url = feed_url
        self.max_results = max_results
        try:
            import feedparser
        except ImportError as e:
            raise ImportError(
                "You must install package `feedparser` to run this tool: for instance run `pip install feedparser`."
            ) from e
        self.feedparser = feedparser

    def forward(self) -> str:
        feed = self.feedparser.parse(self.feed_url)
        if not feed.entries:
            raise Exception("No entries found in the feed.")
        latest_entries = feed.entries[:self.max_results]
        # Format each entry with its headline as a clickable link pointing to the URL.
        result = "## NYTimes Latest Headlines and URLs\n\n" + "\n".join(
            f"- [{entry.title}]({entry.link})" for entry in latest_entries
        )
        return result