From e1f3c4bdd4d3f065edd560b148763bcd4e008a68 Mon Sep 17 00:00:00 2001 From: Vidit Ostwal <110953813+Vidit-Ostwal@users.noreply.github.com> Date: Fri, 11 Sep 2026 21:02:00 +0530 Subject: [PATCH] feat: expose CrewAI Platform application catalog (#7383) * feat: expose platform application catalog * refactor: centralize platform application catalog * fix: preserve platform application typing * chore: remove unused platform app export --- .../src/crewai_core/platform_apps.py | 25 +++++++++++++++++++ .../tools/crewai_platform_tools/__init__.py | 3 +++ .../crewai_platform_tools/test_constants.py | 22 ++++++++++++++++ .../crewai/agents/agent_builder/base_agent.py | 20 +-------------- 4 files changed, 51 insertions(+), 19 deletions(-) create mode 100644 lib/crewai-core/src/crewai_core/platform_apps.py create mode 100644 lib/crewai-tools/tests/tools/crewai_platform_tools/test_constants.py diff --git a/lib/crewai-core/src/crewai_core/platform_apps.py b/lib/crewai-core/src/crewai_core/platform_apps.py new file mode 100644 index 000000000..5817fb412 --- /dev/null +++ b/lib/crewai-core/src/crewai_core/platform_apps.py @@ -0,0 +1,25 @@ +"""CrewAI Platform application catalog.""" + +from typing import Final, Literal, get_args + + +PlatformApp = Literal[ + "asana", + "box", + "clickup", + "github", + "gmail", + "google_calendar", + "google_sheets", + "hubspot", + "jira", + "linear", + "notion", + "salesforce", + "shopify", + "slack", + "stripe", + "zendesk", +] + +PLATFORM_APPS: Final[tuple[str, ...]] = (*get_args(PlatformApp),) diff --git a/lib/crewai-tools/src/crewai_tools/tools/crewai_platform_tools/__init__.py b/lib/crewai-tools/src/crewai_tools/tools/crewai_platform_tools/__init__.py index 4eb9d7d43..89bb29366 100644 --- a/lib/crewai-tools/src/crewai_tools/tools/crewai_platform_tools/__init__.py +++ b/lib/crewai-tools/src/crewai_tools/tools/crewai_platform_tools/__init__.py @@ -4,6 +4,8 @@ This module provides tools for integrating with various platform applications through the CrewAI platform API. """ +from crewai_core.platform_apps import PLATFORM_APPS + from crewai_tools.tools.crewai_platform_tools.crewai_platform_action_tool import ( CrewAIPlatformActionTool, ) @@ -13,6 +15,7 @@ from crewai_tools.tools.crewai_platform_tools.crewai_platform_tools import ( __all__ = [ + "PLATFORM_APPS", "CrewAIPlatformActionTool", "CrewaiPlatformTools", ] diff --git a/lib/crewai-tools/tests/tools/crewai_platform_tools/test_constants.py b/lib/crewai-tools/tests/tools/crewai_platform_tools/test_constants.py new file mode 100644 index 000000000..c1080223c --- /dev/null +++ b/lib/crewai-tools/tests/tools/crewai_platform_tools/test_constants.py @@ -0,0 +1,22 @@ +from crewai_core.platform_apps import PLATFORM_APPS + + +def test_platform_apps_contains_supported_application_catalog() -> None: + assert PLATFORM_APPS == ( + "asana", + "box", + "clickup", + "github", + "gmail", + "google_calendar", + "google_sheets", + "hubspot", + "jira", + "linear", + "notion", + "salesforce", + "shopify", + "slack", + "stripe", + "zendesk", + ) diff --git a/lib/crewai/src/crewai/agents/agent_builder/base_agent.py b/lib/crewai/src/crewai/agents/agent_builder/base_agent.py index 49fad6aac..a4b0e6675 100644 --- a/lib/crewai/src/crewai/agents/agent_builder/base_agent.py +++ b/lib/crewai/src/crewai/agents/agent_builder/base_agent.py @@ -9,6 +9,7 @@ import re from typing import TYPE_CHECKING, Annotated, Any, Final, Literal import uuid +from crewai_core.platform_apps import PlatformApp from pydantic import ( UUID4, BaseModel, @@ -180,25 +181,6 @@ _SLUG_RE: Final[re.Pattern[str]] = re.compile( ) -PlatformApp = Literal[ - "asana", - "box", - "clickup", - "github", - "gmail", - "google_calendar", - "google_sheets", - "hubspot", - "jira", - "linear", - "notion", - "salesforce", - "shopify", - "slack", - "stripe", - "zendesk", -] - PlatformAppOrAction = PlatformApp | str