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 | |
| from typing import Dict, List, Optional, Any, Union | |
| load_dotenv() | |
| notion_integration_secret = os.getenv("NOTION_INTEGRATION_SECRET") | |
| class UpdateTaskTool(BaseTool): | |
| """ | |
| Tool for updating an existing task (page) in Notion. | |
| This tool allows modifying task properties such as title, status, priority, due date, and assignments. | |
| Note that this tool only updates properties, not the content blocks of the page. | |
| """ | |
| # Add example_field with a default value to satisfy BaseTool validation | |
| example_field: str = Field( | |
| default="notion_update_task", | |
| description="Identifier for this tool. Can be left at its default value.", | |
| ) | |
| page_id: str = Field( | |
| ..., | |
| description="The ID of the Notion page (task) to update. This is a required field.", | |
| ) | |
| title: str = Field( | |
| default=None, | |
| description="The new title of the task.", | |
| ) | |
| task_description: str = Field( | |
| default=None, | |
| description="The new text description of the task.", | |
| ) | |
| status: str = Field( | |
| default=None, | |
| description="New status of the task. Options: Backlog, In Progress, Testing, Completed.", | |
| ) | |
| priority: str = Field( | |
| default=None, | |
| description="New priority of the task. Options: High, Medium, Low.", | |
| ) | |
| due_date: str = Field( | |
| default=None, | |
| description="New due date of the task in YYYY-MM-DD format. Use 'null' to remove the date.", | |
| ) | |
| def run(self): | |
| """ | |
| Update an existing Notion page (task) with the specified properties. | |
| Returns: | |
| dict: The JSON response from the Notion API containing the updated page. | |
| """ | |
| import requests | |
| # Set up the API endpoint | |
| url = f"https://api.notion.com/v1/pages/{self.page_id}" | |
| # 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 = {"properties": self._build_properties()} | |
| # Make the request (PATCH method for updates) | |
| response = requests.patch(url, headers=headers, json=data) | |
| # Return the JSON response | |
| return response.json() | |
| def _build_properties(self) -> Dict[str, Any]: | |
| """ | |
| Build the properties object based on provided parameters. | |
| Only includes properties that were specified for update. | |
| Returns: | |
| dict: A dictionary containing the page properties to update in Notion API format. | |
| """ | |
| properties = {} | |
| # Add title if provided | |
| if self.title is not None: | |
| properties["Task Name"] = { | |
| "title": [{"type": "text", "text": {"content": self.title}}] | |
| } | |
| # Add task description if provided | |
| if self.task_description is not None: | |
| properties["Task Description"] = { | |
| "rich_text": [ | |
| {"type": "text", "text": {"content": self.task_description}} | |
| ] | |
| } | |
| # Add status if provided | |
| if self.status is not None: | |
| properties["Status"] = {"status": {"name": self.status}} | |
| # Add priority if provided | |
| if self.priority is not None: | |
| properties["Priority"] = {"select": {"name": self.priority}} | |
| # Add due date if provided | |
| if self.due_date is not None: | |
| # Check if we're clearing the date | |
| if self.due_date.lower() == "null": | |
| properties["Due Date"] = {"date": None} | |
| else: | |
| properties["Due Date"] = {"date": {"start": self.due_date}} | |
| # Add assigned people if provided | |
| # if self.assigned_to is not None: | |
| # properties["Assigned to"] = { | |
| # "people": [{"id": user_id} for user_id in self.assigned_to] | |
| # } | |
| return properties | |