From c6643d40717e9171d860cdef242b470bb7bf495f Mon Sep 17 00:00:00 2001 From: Greyson LaLonde Date: Thu, 21 May 2026 02:55:50 +0800 Subject: [PATCH] fix: apply source_type resolver to Crew/Agent knowledge_sources --- lib/crewai/src/crewai/agents/agent_builder/base_agent.py | 7 +++++-- lib/crewai/src/crewai/crew.py | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) 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 0ccb00dad..8b5e36ff4 100644 --- a/lib/crewai/src/crewai/agents/agent_builder/base_agent.py +++ b/lib/crewai/src/crewai/agents/agent_builder/base_agent.py @@ -31,7 +31,7 @@ from crewai.agents.tools_handler import ToolsHandler from crewai.events.base_events import set_emission_counter from crewai.events.event_bus import crewai_event_bus from crewai.events.event_context import restore_event_scope, set_last_event_id -from crewai.knowledge.knowledge import Knowledge +from crewai.knowledge.knowledge import Knowledge, _resolve_knowledge_sources from crewai.knowledge.knowledge_config import KnowledgeConfig from crewai.knowledge.source.base_knowledge_source import BaseKnowledgeSource from crewai.knowledge.storage.base_knowledge_storage import BaseKnowledgeStorage @@ -294,7 +294,10 @@ class BaseAgent(BaseModel, ABC, metaclass=AgentMeta): knowledge: Knowledge | None = Field( default=None, description="Knowledge for the agent." ) - knowledge_sources: list[BaseKnowledgeSource] | None = Field( + knowledge_sources: Annotated[ + list[BaseKnowledgeSource] | None, + BeforeValidator(_resolve_knowledge_sources), + ] = Field( default=None, description="Knowledge sources for the agent.", ) diff --git a/lib/crewai/src/crewai/crew.py b/lib/crewai/src/crewai/crew.py index bcdab43b9..9f69129f1 100644 --- a/lib/crewai/src/crewai/crew.py +++ b/lib/crewai/src/crewai/crew.py @@ -93,7 +93,7 @@ from crewai.events.types.crew_events import ( CrewTrainStartedEvent, ) from crewai.flow.flow_trackable import FlowTrackable -from crewai.knowledge.knowledge import Knowledge +from crewai.knowledge.knowledge import Knowledge, _resolve_knowledge_sources from crewai.knowledge.source.base_knowledge_source import BaseKnowledgeSource from crewai.llm import LLM from crewai.llms.base_llm import BaseLLM @@ -329,7 +329,10 @@ class Crew(FlowTrackable, BaseModel): default_factory=list, description="list of execution logs for tasks", ) - knowledge_sources: list[BaseKnowledgeSource] | None = Field( + knowledge_sources: Annotated[ + list[BaseKnowledgeSource] | None, + BeforeValidator(_resolve_knowledge_sources), + ] = Field( default=None, description=( "Knowledge sources for the crew. Add knowledge sources to the "