Spaces:
Runtime error
Runtime error

Add new agents and tools for Devid and BrowsingAgent; remove obsolete ResearchAndReportAgent
670dd87
import os | |
from dotenv import load_dotenv | |
from agency_swarm.tools import BaseTool | |
from pydantic import Field | |
load_dotenv() | |
notion_integration_secret = os.getenv("NOTION_INTEGRATION_SECRET") | |
notion_database_id = os.getenv("NOTION_DATABASE_ID") | |
class GetTasksTool(BaseTool): | |
""" | |
Tool for retrieving tasks from a Notion database. | |
This tool allows querying tasks with optional filtering and sorting capabilities | |
based on properties like Due Date, Status, Priority, and Task Name. | |
""" | |
# Add example_field with a default value to satisfy BaseTool validation | |
example_field: str = Field( | |
default="notion_tasks", | |
description="Identifier for this tool. Can be left at its default value.", | |
) | |
status: str = Field( | |
default=None, | |
description="Filter tasks by status. Options: Backlog, In Progress, Testing, Completed.", | |
) | |
priority: str = Field( | |
default=None, | |
description="Filter tasks by priority. Options: High, Medium, Low.", | |
) | |
due_date_before: str = Field( | |
default=None, | |
description="Filter tasks due before this date (format: YYYY-MM-DD).", | |
) | |
due_date_after: str = Field( | |
default=None, | |
description="Filter tasks due after this date (format: YYYY-MM-DD).", | |
) | |
sort_by: str = Field( | |
default="Due Date", | |
description="Property to sort by. Options: Due Date, Status, Priority, Task Name.", | |
) | |
sort_direction: str = Field( | |
default="ascending", | |
description="Sort direction. Options: ascending, descending.", | |
) | |
def run(self): | |
""" | |
Query a Notion database for tasks with optional filtering and sorting. | |
Returns: | |
dict: The JSON response from the Notion API containing the tasks. | |
""" | |
import requests | |
# Use the database ID from the environment variable | |
database_id = os.getenv("NOTION_DATABASE_ID") | |
# Set up the API endpoint | |
url = f"https://api.notion.com/v1/databases/{database_id}/query" | |
# Set up the headers | |
headers = { | |
"Authorization": f"Bearer {os.getenv('NOTION_INTEGRATION_SECRET')}", | |
"Notion-Version": "2022-06-28", | |
"Content-Type": "application/json", | |
} | |
# Prepare the request body | |
data = {} | |
# Build filter | |
filters = [] | |
if self.status: | |
filters.append({"property": "Status", "status": {"equals": self.status}}) | |
if self.priority: | |
filters.append( | |
{"property": "Priority", "select": {"equals": self.priority}} | |
) | |
if self.due_date_before: | |
filters.append( | |
{"property": "Due Date", "date": {"before": self.due_date_before}} | |
) | |
if self.due_date_after: | |
filters.append( | |
{"property": "Due Date", "date": {"after": self.due_date_after}} | |
) | |
if filters: | |
if len(filters) > 1: | |
data["filter"] = {"and": filters} | |
else: | |
data["filter"] = filters[0] | |
# Add sorting | |
if self.sort_by: | |
data["sorts"] = [ | |
{"property": self.sort_by, "direction": self.sort_direction} | |
] | |
# Make the request | |
response = requests.post(url, headers=headers, json=data) | |
# Return the JSON response | |
return response.json() | |