Toggle Menu
Prev Up Next

# Source code for langchain_community.agent_toolkits.clickup.toolkit

    from typing import Dict, List

    from langchain_core.tools import BaseToolkit

    from langchain_community.tools import BaseTool
    from langchain_community.tools.clickup.prompt import (
        CLICKUP_FOLDER_CREATE_PROMPT,
        CLICKUP_GET_ALL_TEAMS_PROMPT,
        CLICKUP_GET_FOLDERS_PROMPT,
        CLICKUP_GET_LIST_PROMPT,
        CLICKUP_GET_SPACES_PROMPT,
        CLICKUP_GET_TASK_ATTRIBUTE_PROMPT,
        CLICKUP_GET_TASK_PROMPT,
        CLICKUP_LIST_CREATE_PROMPT,
        CLICKUP_TASK_CREATE_PROMPT,
        CLICKUP_UPDATE_TASK_ASSIGNEE_PROMPT,
        CLICKUP_UPDATE_TASK_PROMPT,
    )
    from langchain_community.tools.clickup.tool import ClickupAction
    from langchain_community.utilities.clickup import ClickupAPIWrapper

    class ClickupToolkit(BaseToolkit):
        """Clickup Toolkit.

        *Security Note*: This toolkit contains tools that can read and modify
            the state of a service; e.g., by reading, creating, updating, deleting
            data associated with this service.

            See https://python.langchain.com/docs/security for more information.
        """

        tools: List[BaseTool] = []

        @classmethod
        def from_clickup_api_wrapper(
            cls, clickup_api_wrapper: ClickupAPIWrapper
        ) -> "ClickupToolkit":
            operations: List[Dict] = [
                {
                    "mode": "get_task",
                    "name": "Get task",
                    "description": CLICKUP_GET_TASK_PROMPT,
                },
                {
                    "mode": "get_task_attribute",
                    "name": "Get task attribute",
                    "description": CLICKUP_GET_TASK_ATTRIBUTE_PROMPT,
                },
                {
                    "mode": "get_teams",
                    "name": "Get Teams",
                    "description": CLICKUP_GET_ALL_TEAMS_PROMPT,
                },
                {
                    "mode": "create_task",
                    "name": "Create Task",
                    "description": CLICKUP_TASK_CREATE_PROMPT,
                },
                {
                    "mode": "create_list",
                    "name": "Create List",
                    "description": CLICKUP_LIST_CREATE_PROMPT,
                },
                {
                    "mode": "create_folder",
                    "name": "Create Folder",
                    "description": CLICKUP_FOLDER_CREATE_PROMPT,
                },
                {
                    "mode": "get_list",
                    "name": "Get all lists in the space",
                    "description": CLICKUP_GET_LIST_PROMPT,
                },
                {
                    "mode": "get_folders",
                    "name": "Get all folders in the workspace",
                    "description": CLICKUP_GET_FOLDERS_PROMPT,
                },
                {
                    "mode": "get_spaces",
                    "name": "Get all spaces in the workspace",
                    "description": CLICKUP_GET_SPACES_PROMPT,
                },
                {
                    "mode": "update_task",
                    "name": "Update task",
                    "description": CLICKUP_UPDATE_TASK_PROMPT,
                },
                {
                    "mode": "update_task_assignees",
                    "name": "Update task assignees",
                    "description": CLICKUP_UPDATE_TASK_ASSIGNEE_PROMPT,
                },
            ]
            tools = [
                ClickupAction(
                    name=action["name"],
                    description=action["description"],
                    mode=action["mode"],
                    api_wrapper=clickup_api_wrapper,
                )
                for action in operations
            ]
            return cls(tools=tools)

        def get_tools(self) -> List[BaseTool]:
            """Get the tools in the toolkit."""
            return self.tools