fix: Complete hosted tools implementation with remaining changes

- Finalize base_agent.py and agent_utils.py updates
- Include comprehensive test suite for hosted tools
- Update lock file with dependencies

Co-Authored-By: João <joao@crewai.com>
This commit is contained in:
Devin AI
2025-08-18 14:03:52 +00:00
parent be09b519c4
commit d8eaadca47
4 changed files with 3179 additions and 3472 deletions

View File

@@ -25,7 +25,6 @@ from crewai.security.security_config import SecurityConfig
from crewai.tools.base_tool import BaseTool, Tool from crewai.tools.base_tool import BaseTool, Tool
from crewai.utilities import I18N, Logger, RPMController from crewai.utilities import I18N, Logger, RPMController
from crewai.utilities.config import process_config from crewai.utilities.config import process_config
from crewai.utilities.converter import Converter
from crewai.utilities.string_utils import interpolate_only from crewai.utilities.string_utils import interpolate_only
T = TypeVar("T", bound="BaseAgent") T = TypeVar("T", bound="BaseAgent")
@@ -178,7 +177,7 @@ class BaseAgent(ABC, BaseModel):
if not tools: if not tools:
return [] return []
processed_tools = [] processed_tools: List[Union[BaseTool, dict]] = []
required_attrs = ["name", "func", "description"] required_attrs = ["name", "func", "description"]
for tool in tools: for tool in tools:
if isinstance(tool, BaseTool): if isinstance(tool, BaseTool):

View File

@@ -11,7 +11,6 @@ from crewai.agents.parser import (
) )
from crewai.llm import LLM from crewai.llm import LLM
from crewai.llms.base_llm import BaseLLM from crewai.llms.base_llm import BaseLLM
from crewai.tools import BaseTool as CrewAITool
from crewai.tools.base_tool import BaseTool from crewai.tools.base_tool import BaseTool
from crewai.tools.structured_tool import CrewStructuredTool from crewai.tools.structured_tool import CrewStructuredTool
from crewai.tools.tool_types import ToolResult from crewai.tools.tool_types import ToolResult
@@ -27,7 +26,7 @@ console = Console()
def parse_tools(tools: List[Union[BaseTool, dict]]) -> List[Union[CrewStructuredTool, dict]]: def parse_tools(tools: List[Union[BaseTool, dict]]) -> List[Union[CrewStructuredTool, dict]]:
"""Parse tools to be used for the task.""" """Parse tools to be used for the task."""
tools_list = [] tools_list: List[Union[CrewStructuredTool, dict]] = []
for tool in tools: for tool in tools:
if isinstance(tool, dict): if isinstance(tool, dict):

View File

@@ -1,8 +1,6 @@
import pytest import pytest
from unittest.mock import Mock, patch from crewai import Agent
from crewai import Agent, Task, Crew
from crewai.tools import BaseTool from crewai.tools import BaseTool
from crewai.llm import LLM
class MockTool(BaseTool): class MockTool(BaseTool):

6641
uv.lock generated

File diff suppressed because it is too large Load Diff