diff --git a/src/crewai/utilities/agent_utils.py b/src/crewai/utilities/agent_utils.py index 94a0dc1bf..be0abd92c 100644 --- a/src/crewai/utilities/agent_utils.py +++ b/src/crewai/utilities/agent_utils.py @@ -20,7 +20,10 @@ from crewai.utilities.errors import AgentRepositoryError from crewai.utilities.exceptions.context_window_exceeding_exception import ( LLMContextLengthExceededException, ) +from rich.console import Console +from crewai.cli.config import Settings +console = Console() def parse_tools(tools: List[BaseTool]) -> List[CrewStructuredTool]: """Parse tools to be used for the task.""" @@ -435,6 +438,13 @@ def show_agent_logs( ) +def _print_current_organization(): + settings = Settings() + if settings.org_uuid: + console.print(f"Fetching agent from organization: {settings.org_name} ({settings.org_uuid})", style="bold blue") + else: + console.print("No organization currently set. We recommend setting one before using: `crewai org switch ` command.", style="yellow") + def load_agent_from_repository(from_repository: str) -> Dict[str, Any]: attributes: Dict[str, Any] = {} if from_repository: @@ -444,15 +454,18 @@ def load_agent_from_repository(from_repository: str) -> Dict[str, Any]: from crewai.cli.plus_api import PlusAPI client = PlusAPI(api_key=get_auth_token()) + _print_current_organization() response = client.get_agent(from_repository) if response.status_code == 404: raise AgentRepositoryError( - f"Agent {from_repository} does not exist, make sure the name is correct or the agent is available on your organization" + f"Agent {from_repository} does not exist, make sure the name is correct or the agent is available on your organization." + f"\nIf you are using the wrong organization, switch to the correct one using `crewai org switch ` command.", ) if response.status_code != 200: raise AgentRepositoryError( f"Agent {from_repository} could not be loaded: {response.text}" + f"\nIf you are using the wrong organization, switch to the correct one using `crewai org switch ` command.", ) agent = response.json() diff --git a/tests/agent_test.py b/tests/agent_test.py index ecbbbd4ee..56dac86bd 100644 --- a/tests/agent_test.py +++ b/tests/agent_test.py @@ -2126,3 +2126,60 @@ def test_agent_from_repository_agent_not_found(mock_get_agent, mock_get_auth_tok match="Agent test_agent does not exist, make sure the name is correct or the agent is available on your organization", ): Agent(from_repository="test_agent") + + +@patch("crewai.cli.plus_api.PlusAPI.get_agent") +@patch("crewai.utilities.agent_utils.Settings") +@patch("crewai.utilities.agent_utils.console") +def test_agent_from_repository_displays_org_info(mock_console, mock_settings, mock_get_agent): + mock_settings_instance = MagicMock() + mock_settings_instance.org_uuid = "test-org-uuid" + mock_settings_instance.org_name = "Test Organization" + mock_settings.return_value = mock_settings_instance + + mock_get_response = MagicMock() + mock_get_response.status_code = 200 + mock_get_response.json.return_value = { + "role": "test role", + "goal": "test goal", + "backstory": "test backstory", + "tools": [] + } + mock_get_agent.return_value = mock_get_response + + agent = Agent(from_repository="test_agent") + + mock_console.print.assert_any_call( + f"Fetching agent from organization: Test Organization (test-org-uuid)", + style="bold blue" + ) + + assert agent.role == "test role" + assert agent.goal == "test goal" + assert agent.backstory == "test backstory" + + +@patch("crewai.cli.plus_api.PlusAPI.get_agent") +@patch("crewai.utilities.agent_utils.Settings") +@patch("crewai.utilities.agent_utils.console") +def test_agent_from_repository_without_org_set(mock_console, mock_settings, mock_get_agent): + mock_settings_instance = MagicMock() + mock_settings_instance.org_uuid = None + mock_settings_instance.org_name = None + mock_settings.return_value = mock_settings_instance + + mock_get_response = MagicMock() + mock_get_response.status_code = 401 + mock_get_response.text = "Unauthorized access" + mock_get_agent.return_value = mock_get_response + + with pytest.raises( + AgentRepositoryError, + match="Agent test_agent could not be loaded: Unauthorized access" + ): + Agent(from_repository="test_agent") + + mock_console.print.assert_any_call( + "No organization currently set. We recommend setting one before using: `crewai org switch ` command.", + style="yellow" + )