From fb2d7b8d39328f985566f6823a4f58928adc034c Mon Sep 17 00:00:00 2001 From: Iris Clawd Date: Wed, 22 Apr 2026 04:09:36 +0000 Subject: [PATCH 01/10] perf: defer MCP SDK import by fixing import path in agent/core.py - Change 'from crewai.mcp import MCPServerConfig' to direct path 'from crewai.mcp.config import MCPServerConfig' to avoid triggering mcp/__init__.py which eagerly loads the full mcp SDK (~300-400ms) - Move MCPToolResolver import into get_mcp_tools() method body since it's only used at runtime, not in type annotations Saves ~200ms on 'import crewai' cold start. --- UNKNOWN.egg-info/PKG-INFO | 5 + UNKNOWN.egg-info/SOURCES.txt | 761 ++++++++++++++++++++++++++ UNKNOWN.egg-info/dependency_links.txt | 1 + UNKNOWN.egg-info/top_level.txt | 1 + lib/crewai/src/crewai/agent/core.py | 5 +- 5 files changed, 771 insertions(+), 2 deletions(-) create mode 100644 UNKNOWN.egg-info/PKG-INFO create mode 100644 UNKNOWN.egg-info/SOURCES.txt create mode 100644 UNKNOWN.egg-info/dependency_links.txt create mode 100644 UNKNOWN.egg-info/top_level.txt diff --git a/UNKNOWN.egg-info/PKG-INFO b/UNKNOWN.egg-info/PKG-INFO new file mode 100644 index 0000000000..837c47839d --- /dev/null +++ b/UNKNOWN.egg-info/PKG-INFO @@ -0,0 +1,5 @@ +Metadata-Version: 2.4 +Name: UNKNOWN +Version: 0.0.0 +License-File: LICENSE +Dynamic: license-file diff --git a/UNKNOWN.egg-info/SOURCES.txt b/UNKNOWN.egg-info/SOURCES.txt new file mode 100644 index 0000000000..9ca28161f3 --- /dev/null +++ b/UNKNOWN.egg-info/SOURCES.txt @@ -0,0 +1,761 @@ +LICENSE +README.md +pyproject.toml +UNKNOWN.egg-info/PKG-INFO +UNKNOWN.egg-info/SOURCES.txt +UNKNOWN.egg-info/dependency_links.txt +UNKNOWN.egg-info/top_level.txt +lib/crewai/src/crewai/__init__.py +lib/crewai/src/crewai/context.py +lib/crewai/src/crewai/crew.py +lib/crewai/src/crewai/lite_agent.py +lib/crewai/src/crewai/lite_agent_output.py +lib/crewai/src/crewai/llm.py +lib/crewai/src/crewai/mypy.py +lib/crewai/src/crewai/process.py +lib/crewai/src/crewai/py.typed +lib/crewai/src/crewai/task.py +lib/crewai/src/crewai/a2a/__init__.py +lib/crewai/src/crewai/a2a/config.py +lib/crewai/src/crewai/a2a/errors.py +lib/crewai/src/crewai/a2a/task_helpers.py +lib/crewai/src/crewai/a2a/templates.py +lib/crewai/src/crewai/a2a/types.py +lib/crewai/src/crewai/a2a/wrapper.py +lib/crewai/src/crewai/a2a/auth/__init__.py +lib/crewai/src/crewai/a2a/auth/client_schemes.py +lib/crewai/src/crewai/a2a/auth/schemas.py +lib/crewai/src/crewai/a2a/auth/server_schemes.py +lib/crewai/src/crewai/a2a/auth/utils.py +lib/crewai/src/crewai/a2a/extensions/__init__.py +lib/crewai/src/crewai/a2a/extensions/base.py +lib/crewai/src/crewai/a2a/extensions/registry.py +lib/crewai/src/crewai/a2a/extensions/server.py +lib/crewai/src/crewai/a2a/extensions/a2ui/__init__.py +lib/crewai/src/crewai/a2a/extensions/a2ui/catalog.py +lib/crewai/src/crewai/a2a/extensions/a2ui/client_extension.py +lib/crewai/src/crewai/a2a/extensions/a2ui/models.py +lib/crewai/src/crewai/a2a/extensions/a2ui/prompt.py +lib/crewai/src/crewai/a2a/extensions/a2ui/server_extension.py +lib/crewai/src/crewai/a2a/extensions/a2ui/v0_9.py +lib/crewai/src/crewai/a2a/extensions/a2ui/validator.py +lib/crewai/src/crewai/a2a/extensions/a2ui/schema/__init__.py +lib/crewai/src/crewai/a2a/updates/__init__.py +lib/crewai/src/crewai/a2a/updates/base.py +lib/crewai/src/crewai/a2a/updates/polling/__init__.py +lib/crewai/src/crewai/a2a/updates/polling/config.py +lib/crewai/src/crewai/a2a/updates/polling/handler.py +lib/crewai/src/crewai/a2a/updates/push_notifications/__init__.py +lib/crewai/src/crewai/a2a/updates/push_notifications/config.py +lib/crewai/src/crewai/a2a/updates/push_notifications/handler.py +lib/crewai/src/crewai/a2a/updates/push_notifications/signature.py +lib/crewai/src/crewai/a2a/updates/streaming/__init__.py +lib/crewai/src/crewai/a2a/updates/streaming/config.py +lib/crewai/src/crewai/a2a/updates/streaming/handler.py +lib/crewai/src/crewai/a2a/updates/streaming/params.py +lib/crewai/src/crewai/a2a/utils/__init__.py +lib/crewai/src/crewai/a2a/utils/agent_card.py +lib/crewai/src/crewai/a2a/utils/agent_card_signing.py +lib/crewai/src/crewai/a2a/utils/content_type.py +lib/crewai/src/crewai/a2a/utils/delegation.py +lib/crewai/src/crewai/a2a/utils/logging.py +lib/crewai/src/crewai/a2a/utils/response_model.py +lib/crewai/src/crewai/a2a/utils/task.py +lib/crewai/src/crewai/a2a/utils/transport.py +lib/crewai/src/crewai/agent/__init__.py +lib/crewai/src/crewai/agent/core.py +lib/crewai/src/crewai/agent/planning_config.py +lib/crewai/src/crewai/agent/utils.py +lib/crewai/src/crewai/agent/internal/__init__.py +lib/crewai/src/crewai/agent/internal/meta.py +lib/crewai/src/crewai/agents/__init__.py +lib/crewai/src/crewai/agents/constants.py +lib/crewai/src/crewai/agents/crew_agent_executor.py +lib/crewai/src/crewai/agents/parser.py +lib/crewai/src/crewai/agents/planner_observer.py +lib/crewai/src/crewai/agents/step_executor.py +lib/crewai/src/crewai/agents/tools_handler.py +lib/crewai/src/crewai/agents/agent_adapters/__init__.py +lib/crewai/src/crewai/agents/agent_adapters/base_agent_adapter.py +lib/crewai/src/crewai/agents/agent_adapters/base_converter_adapter.py +lib/crewai/src/crewai/agents/agent_adapters/base_tool_adapter.py +lib/crewai/src/crewai/agents/agent_adapters/langgraph/__init__.py +lib/crewai/src/crewai/agents/agent_adapters/langgraph/langgraph_adapter.py +lib/crewai/src/crewai/agents/agent_adapters/langgraph/langgraph_tool_adapter.py +lib/crewai/src/crewai/agents/agent_adapters/langgraph/protocols.py +lib/crewai/src/crewai/agents/agent_adapters/langgraph/structured_output_converter.py +lib/crewai/src/crewai/agents/agent_adapters/openai_agents/__init__.py +lib/crewai/src/crewai/agents/agent_adapters/openai_agents/openai_adapter.py +lib/crewai/src/crewai/agents/agent_adapters/openai_agents/openai_agent_tool_adapter.py +lib/crewai/src/crewai/agents/agent_adapters/openai_agents/protocols.py +lib/crewai/src/crewai/agents/agent_adapters/openai_agents/structured_output_converter.py +lib/crewai/src/crewai/agents/agent_builder/__init__.py +lib/crewai/src/crewai/agents/agent_builder/base_agent.py +lib/crewai/src/crewai/agents/agent_builder/base_agent_executor.py +lib/crewai/src/crewai/agents/agent_builder/utilities/__init__.py +lib/crewai/src/crewai/agents/agent_builder/utilities/base_output_converter.py +lib/crewai/src/crewai/agents/agent_builder/utilities/base_token_process.py +lib/crewai/src/crewai/agents/cache/__init__.py +lib/crewai/src/crewai/agents/cache/cache_handler.py +lib/crewai/src/crewai/cli/__init__.py +lib/crewai/src/crewai/cli/add_crew_to_flow.py +lib/crewai/src/crewai/cli/checkpoint_cli.py +lib/crewai/src/crewai/cli/checkpoint_tui.py +lib/crewai/src/crewai/cli/cli.py +lib/crewai/src/crewai/cli/command.py +lib/crewai/src/crewai/cli/config.py +lib/crewai/src/crewai/cli/constants.py +lib/crewai/src/crewai/cli/create_crew.py +lib/crewai/src/crewai/cli/create_flow.py +lib/crewai/src/crewai/cli/crew_chat.py +lib/crewai/src/crewai/cli/evaluate_crew.py +lib/crewai/src/crewai/cli/git.py +lib/crewai/src/crewai/cli/install_crew.py +lib/crewai/src/crewai/cli/kickoff_flow.py +lib/crewai/src/crewai/cli/memory_tui.py +lib/crewai/src/crewai/cli/plot_flow.py +lib/crewai/src/crewai/cli/plus_api.py +lib/crewai/src/crewai/cli/provider.py +lib/crewai/src/crewai/cli/replay_from_task.py +lib/crewai/src/crewai/cli/reset_memories_command.py +lib/crewai/src/crewai/cli/run_crew.py +lib/crewai/src/crewai/cli/train_crew.py +lib/crewai/src/crewai/cli/update_crew.py +lib/crewai/src/crewai/cli/utils.py +lib/crewai/src/crewai/cli/version.py +lib/crewai/src/crewai/cli/authentication/__init__.py +lib/crewai/src/crewai/cli/authentication/constants.py +lib/crewai/src/crewai/cli/authentication/main.py +lib/crewai/src/crewai/cli/authentication/token.py +lib/crewai/src/crewai/cli/authentication/utils.py +lib/crewai/src/crewai/cli/authentication/providers/__init__.py +lib/crewai/src/crewai/cli/authentication/providers/auth0.py +lib/crewai/src/crewai/cli/authentication/providers/base_provider.py +lib/crewai/src/crewai/cli/authentication/providers/entra_id.py +lib/crewai/src/crewai/cli/authentication/providers/keycloak.py +lib/crewai/src/crewai/cli/authentication/providers/okta.py +lib/crewai/src/crewai/cli/authentication/providers/workos.py +lib/crewai/src/crewai/cli/deploy/__init__.py +lib/crewai/src/crewai/cli/deploy/main.py +lib/crewai/src/crewai/cli/deploy/validate.py +lib/crewai/src/crewai/cli/enterprise/__init__.py +lib/crewai/src/crewai/cli/enterprise/main.py +lib/crewai/src/crewai/cli/organization/__init__.py +lib/crewai/src/crewai/cli/organization/main.py +lib/crewai/src/crewai/cli/remote_template/__init__.py +lib/crewai/src/crewai/cli/remote_template/main.py +lib/crewai/src/crewai/cli/settings/__init__.py +lib/crewai/src/crewai/cli/settings/main.py +lib/crewai/src/crewai/cli/shared/__init__.py +lib/crewai/src/crewai/cli/shared/token_manager.py +lib/crewai/src/crewai/cli/templates/__init__.py +lib/crewai/src/crewai/cli/templates/crew/__init__.py +lib/crewai/src/crewai/cli/templates/crew/crew.py +lib/crewai/src/crewai/cli/templates/crew/main.py +lib/crewai/src/crewai/cli/templates/crew/tools/__init__.py +lib/crewai/src/crewai/cli/templates/crew/tools/custom_tool.py +lib/crewai/src/crewai/cli/templates/flow/__init__.py +lib/crewai/src/crewai/cli/templates/flow/main.py +lib/crewai/src/crewai/cli/templates/flow/crews/content_crew/content_crew.py +lib/crewai/src/crewai/cli/templates/flow/tools/__init__.py +lib/crewai/src/crewai/cli/templates/flow/tools/custom_tool.py +lib/crewai/src/crewai/cli/tools/__init__.py +lib/crewai/src/crewai/cli/tools/main.py +lib/crewai/src/crewai/cli/triggers/__init__.py +lib/crewai/src/crewai/cli/triggers/main.py +lib/crewai/src/crewai/core/__init__.py +lib/crewai/src/crewai/core/providers/__init__.py +lib/crewai/src/crewai/core/providers/content_processor.py +lib/crewai/src/crewai/core/providers/human_input.py +lib/crewai/src/crewai/crews/__init__.py +lib/crewai/src/crewai/crews/crew_output.py +lib/crewai/src/crewai/crews/utils.py +lib/crewai/src/crewai/events/__init__.py +lib/crewai/src/crewai/events/base_event_listener.py +lib/crewai/src/crewai/events/base_events.py +lib/crewai/src/crewai/events/depends.py +lib/crewai/src/crewai/events/event_bus.py +lib/crewai/src/crewai/events/event_context.py +lib/crewai/src/crewai/events/event_listener.py +lib/crewai/src/crewai/events/event_types.py +lib/crewai/src/crewai/events/handler_graph.py +lib/crewai/src/crewai/events/listeners/__init__.py +lib/crewai/src/crewai/events/listeners/tracing/__init__.py +lib/crewai/src/crewai/events/listeners/tracing/first_time_trace_handler.py +lib/crewai/src/crewai/events/listeners/tracing/trace_batch_manager.py +lib/crewai/src/crewai/events/listeners/tracing/trace_listener.py +lib/crewai/src/crewai/events/listeners/tracing/types.py +lib/crewai/src/crewai/events/listeners/tracing/utils.py +lib/crewai/src/crewai/events/types/__init__.py +lib/crewai/src/crewai/events/types/a2a_events.py +lib/crewai/src/crewai/events/types/agent_events.py +lib/crewai/src/crewai/events/types/crew_events.py +lib/crewai/src/crewai/events/types/env_events.py +lib/crewai/src/crewai/events/types/event_bus_types.py +lib/crewai/src/crewai/events/types/flow_events.py +lib/crewai/src/crewai/events/types/knowledge_events.py +lib/crewai/src/crewai/events/types/llm_events.py +lib/crewai/src/crewai/events/types/llm_guardrail_events.py +lib/crewai/src/crewai/events/types/logging_events.py +lib/crewai/src/crewai/events/types/mcp_events.py +lib/crewai/src/crewai/events/types/memory_events.py +lib/crewai/src/crewai/events/types/observation_events.py +lib/crewai/src/crewai/events/types/reasoning_events.py +lib/crewai/src/crewai/events/types/skill_events.py +lib/crewai/src/crewai/events/types/system_events.py +lib/crewai/src/crewai/events/types/task_events.py +lib/crewai/src/crewai/events/types/tool_usage_events.py +lib/crewai/src/crewai/events/utils/__init__.py +lib/crewai/src/crewai/events/utils/console_formatter.py +lib/crewai/src/crewai/events/utils/handlers.py +lib/crewai/src/crewai/experimental/__init__.py +lib/crewai/src/crewai/experimental/agent_executor.py +lib/crewai/src/crewai/experimental/evaluation/__init__.py +lib/crewai/src/crewai/experimental/evaluation/agent_evaluator.py +lib/crewai/src/crewai/experimental/evaluation/base_evaluator.py +lib/crewai/src/crewai/experimental/evaluation/evaluation_display.py +lib/crewai/src/crewai/experimental/evaluation/evaluation_listener.py +lib/crewai/src/crewai/experimental/evaluation/json_parser.py +lib/crewai/src/crewai/experimental/evaluation/testing.py +lib/crewai/src/crewai/experimental/evaluation/experiment/__init__.py +lib/crewai/src/crewai/experimental/evaluation/experiment/result.py +lib/crewai/src/crewai/experimental/evaluation/experiment/result_display.py +lib/crewai/src/crewai/experimental/evaluation/experiment/runner.py +lib/crewai/src/crewai/experimental/evaluation/metrics/__init__.py +lib/crewai/src/crewai/experimental/evaluation/metrics/goal_metrics.py +lib/crewai/src/crewai/experimental/evaluation/metrics/reasoning_metrics.py +lib/crewai/src/crewai/experimental/evaluation/metrics/semantic_quality_metrics.py +lib/crewai/src/crewai/experimental/evaluation/metrics/tools_metrics.py +lib/crewai/src/crewai/flow/__init__.py +lib/crewai/src/crewai/flow/constants.py +lib/crewai/src/crewai/flow/flow.py +lib/crewai/src/crewai/flow/flow_config.py +lib/crewai/src/crewai/flow/flow_context.py +lib/crewai/src/crewai/flow/flow_serializer.py +lib/crewai/src/crewai/flow/flow_trackable.py +lib/crewai/src/crewai/flow/flow_wrappers.py +lib/crewai/src/crewai/flow/human_feedback.py +lib/crewai/src/crewai/flow/input_provider.py +lib/crewai/src/crewai/flow/types.py +lib/crewai/src/crewai/flow/utils.py +lib/crewai/src/crewai/flow/async_feedback/__init__.py +lib/crewai/src/crewai/flow/async_feedback/providers.py +lib/crewai/src/crewai/flow/async_feedback/types.py +lib/crewai/src/crewai/flow/persistence/__init__.py +lib/crewai/src/crewai/flow/persistence/base.py +lib/crewai/src/crewai/flow/persistence/decorators.py +lib/crewai/src/crewai/flow/persistence/sqlite.py +lib/crewai/src/crewai/flow/visualization/__init__.py +lib/crewai/src/crewai/flow/visualization/builder.py +lib/crewai/src/crewai/flow/visualization/schema.py +lib/crewai/src/crewai/flow/visualization/types.py +lib/crewai/src/crewai/flow/visualization/renderers/__init__.py +lib/crewai/src/crewai/flow/visualization/renderers/interactive.py +lib/crewai/src/crewai/hooks/__init__.py +lib/crewai/src/crewai/hooks/decorators.py +lib/crewai/src/crewai/hooks/llm_hooks.py +lib/crewai/src/crewai/hooks/tool_hooks.py +lib/crewai/src/crewai/hooks/types.py +lib/crewai/src/crewai/hooks/wrappers.py +lib/crewai/src/crewai/knowledge/__init__.py +lib/crewai/src/crewai/knowledge/knowledge.py +lib/crewai/src/crewai/knowledge/knowledge_config.py +lib/crewai/src/crewai/knowledge/source/__init__.py +lib/crewai/src/crewai/knowledge/source/base_file_knowledge_source.py +lib/crewai/src/crewai/knowledge/source/base_knowledge_source.py +lib/crewai/src/crewai/knowledge/source/crew_docling_source.py +lib/crewai/src/crewai/knowledge/source/csv_knowledge_source.py +lib/crewai/src/crewai/knowledge/source/excel_knowledge_source.py +lib/crewai/src/crewai/knowledge/source/json_knowledge_source.py +lib/crewai/src/crewai/knowledge/source/pdf_knowledge_source.py +lib/crewai/src/crewai/knowledge/source/string_knowledge_source.py +lib/crewai/src/crewai/knowledge/source/text_file_knowledge_source.py +lib/crewai/src/crewai/knowledge/source/utils/__init__.py +lib/crewai/src/crewai/knowledge/source/utils/source_helper.py +lib/crewai/src/crewai/knowledge/storage/__init__.py +lib/crewai/src/crewai/knowledge/storage/base_knowledge_storage.py +lib/crewai/src/crewai/knowledge/storage/knowledge_storage.py +lib/crewai/src/crewai/knowledge/utils/__init__.py +lib/crewai/src/crewai/knowledge/utils/knowledge_utils.py +lib/crewai/src/crewai/llms/__init__.py +lib/crewai/src/crewai/llms/base_llm.py +lib/crewai/src/crewai/llms/constants.py +lib/crewai/src/crewai/llms/hooks/__init__.py +lib/crewai/src/crewai/llms/hooks/base.py +lib/crewai/src/crewai/llms/hooks/transport.py +lib/crewai/src/crewai/llms/providers/__init__.py +lib/crewai/src/crewai/llms/providers/anthropic/__init__.py +lib/crewai/src/crewai/llms/providers/anthropic/completion.py +lib/crewai/src/crewai/llms/providers/azure/__init__.py +lib/crewai/src/crewai/llms/providers/azure/completion.py +lib/crewai/src/crewai/llms/providers/bedrock/__init__.py +lib/crewai/src/crewai/llms/providers/bedrock/completion.py +lib/crewai/src/crewai/llms/providers/gemini/__init__.py +lib/crewai/src/crewai/llms/providers/gemini/completion.py +lib/crewai/src/crewai/llms/providers/openai/__init__.py +lib/crewai/src/crewai/llms/providers/openai/completion.py +lib/crewai/src/crewai/llms/providers/openai_compatible/__init__.py +lib/crewai/src/crewai/llms/providers/openai_compatible/completion.py +lib/crewai/src/crewai/llms/providers/utils/__init__.py +lib/crewai/src/crewai/llms/providers/utils/common.py +lib/crewai/src/crewai/mcp/__init__.py +lib/crewai/src/crewai/mcp/client.py +lib/crewai/src/crewai/mcp/config.py +lib/crewai/src/crewai/mcp/filters.py +lib/crewai/src/crewai/mcp/tool_resolver.py +lib/crewai/src/crewai/mcp/transports/__init__.py +lib/crewai/src/crewai/mcp/transports/base.py +lib/crewai/src/crewai/mcp/transports/http.py +lib/crewai/src/crewai/mcp/transports/sse.py +lib/crewai/src/crewai/mcp/transports/stdio.py +lib/crewai/src/crewai/memory/__init__.py +lib/crewai/src/crewai/memory/analyze.py +lib/crewai/src/crewai/memory/encoding_flow.py +lib/crewai/src/crewai/memory/memory_scope.py +lib/crewai/src/crewai/memory/recall_flow.py +lib/crewai/src/crewai/memory/types.py +lib/crewai/src/crewai/memory/unified_memory.py +lib/crewai/src/crewai/memory/utils.py +lib/crewai/src/crewai/memory/storage/__init__.py +lib/crewai/src/crewai/memory/storage/backend.py +lib/crewai/src/crewai/memory/storage/kickoff_task_outputs_storage.py +lib/crewai/src/crewai/memory/storage/lancedb_storage.py +lib/crewai/src/crewai/memory/storage/qdrant_edge_storage.py +lib/crewai/src/crewai/project/__init__.py +lib/crewai/src/crewai/project/annotations.py +lib/crewai/src/crewai/project/crew_base.py +lib/crewai/src/crewai/project/utils.py +lib/crewai/src/crewai/project/wrappers.py +lib/crewai/src/crewai/rag/__init__.py +lib/crewai/src/crewai/rag/factory.py +lib/crewai/src/crewai/rag/types.py +lib/crewai/src/crewai/rag/chromadb/__init__.py +lib/crewai/src/crewai/rag/chromadb/client.py +lib/crewai/src/crewai/rag/chromadb/config.py +lib/crewai/src/crewai/rag/chromadb/constants.py +lib/crewai/src/crewai/rag/chromadb/factory.py +lib/crewai/src/crewai/rag/chromadb/types.py +lib/crewai/src/crewai/rag/chromadb/utils.py +lib/crewai/src/crewai/rag/config/__init__.py +lib/crewai/src/crewai/rag/config/base.py +lib/crewai/src/crewai/rag/config/constants.py +lib/crewai/src/crewai/rag/config/types.py +lib/crewai/src/crewai/rag/config/utils.py +lib/crewai/src/crewai/rag/config/optional_imports/__init__.py +lib/crewai/src/crewai/rag/config/optional_imports/base.py +lib/crewai/src/crewai/rag/config/optional_imports/protocols.py +lib/crewai/src/crewai/rag/config/optional_imports/providers.py +lib/crewai/src/crewai/rag/config/optional_imports/types.py +lib/crewai/src/crewai/rag/core/__init__.py +lib/crewai/src/crewai/rag/core/base_client.py +lib/crewai/src/crewai/rag/core/base_embeddings_callable.py +lib/crewai/src/crewai/rag/core/base_embeddings_provider.py +lib/crewai/src/crewai/rag/core/exceptions.py +lib/crewai/src/crewai/rag/core/types.py +lib/crewai/src/crewai/rag/embeddings/__init__.py +lib/crewai/src/crewai/rag/embeddings/factory.py +lib/crewai/src/crewai/rag/embeddings/types.py +lib/crewai/src/crewai/rag/embeddings/providers/__init__.py +lib/crewai/src/crewai/rag/embeddings/providers/aws/__init__.py +lib/crewai/src/crewai/rag/embeddings/providers/aws/bedrock.py +lib/crewai/src/crewai/rag/embeddings/providers/aws/types.py +lib/crewai/src/crewai/rag/embeddings/providers/cohere/__init__.py +lib/crewai/src/crewai/rag/embeddings/providers/cohere/cohere_provider.py +lib/crewai/src/crewai/rag/embeddings/providers/cohere/types.py +lib/crewai/src/crewai/rag/embeddings/providers/custom/__init__.py +lib/crewai/src/crewai/rag/embeddings/providers/custom/custom_provider.py +lib/crewai/src/crewai/rag/embeddings/providers/custom/embedding_callable.py +lib/crewai/src/crewai/rag/embeddings/providers/custom/types.py +lib/crewai/src/crewai/rag/embeddings/providers/google/__init__.py +lib/crewai/src/crewai/rag/embeddings/providers/google/genai_vertex_embedding.py +lib/crewai/src/crewai/rag/embeddings/providers/google/generative_ai.py +lib/crewai/src/crewai/rag/embeddings/providers/google/types.py +lib/crewai/src/crewai/rag/embeddings/providers/google/vertex.py +lib/crewai/src/crewai/rag/embeddings/providers/huggingface/__init__.py +lib/crewai/src/crewai/rag/embeddings/providers/huggingface/huggingface_provider.py +lib/crewai/src/crewai/rag/embeddings/providers/huggingface/types.py +lib/crewai/src/crewai/rag/embeddings/providers/ibm/__init__.py +lib/crewai/src/crewai/rag/embeddings/providers/ibm/embedding_callable.py +lib/crewai/src/crewai/rag/embeddings/providers/ibm/types.py +lib/crewai/src/crewai/rag/embeddings/providers/ibm/watsonx.py +lib/crewai/src/crewai/rag/embeddings/providers/instructor/__init__.py +lib/crewai/src/crewai/rag/embeddings/providers/instructor/instructor_provider.py +lib/crewai/src/crewai/rag/embeddings/providers/instructor/types.py +lib/crewai/src/crewai/rag/embeddings/providers/jina/__init__.py +lib/crewai/src/crewai/rag/embeddings/providers/jina/jina_provider.py +lib/crewai/src/crewai/rag/embeddings/providers/jina/types.py +lib/crewai/src/crewai/rag/embeddings/providers/microsoft/__init__.py +lib/crewai/src/crewai/rag/embeddings/providers/microsoft/azure.py +lib/crewai/src/crewai/rag/embeddings/providers/microsoft/types.py +lib/crewai/src/crewai/rag/embeddings/providers/ollama/__init__.py +lib/crewai/src/crewai/rag/embeddings/providers/ollama/ollama_provider.py +lib/crewai/src/crewai/rag/embeddings/providers/ollama/types.py +lib/crewai/src/crewai/rag/embeddings/providers/onnx/__init__.py +lib/crewai/src/crewai/rag/embeddings/providers/onnx/onnx_provider.py +lib/crewai/src/crewai/rag/embeddings/providers/onnx/types.py +lib/crewai/src/crewai/rag/embeddings/providers/openai/__init__.py +lib/crewai/src/crewai/rag/embeddings/providers/openai/openai_provider.py +lib/crewai/src/crewai/rag/embeddings/providers/openai/types.py +lib/crewai/src/crewai/rag/embeddings/providers/openclip/__init__.py +lib/crewai/src/crewai/rag/embeddings/providers/openclip/openclip_provider.py +lib/crewai/src/crewai/rag/embeddings/providers/openclip/types.py +lib/crewai/src/crewai/rag/embeddings/providers/roboflow/__init__.py +lib/crewai/src/crewai/rag/embeddings/providers/roboflow/roboflow_provider.py +lib/crewai/src/crewai/rag/embeddings/providers/roboflow/types.py +lib/crewai/src/crewai/rag/embeddings/providers/sentence_transformer/__init__.py +lib/crewai/src/crewai/rag/embeddings/providers/sentence_transformer/sentence_transformer_provider.py +lib/crewai/src/crewai/rag/embeddings/providers/sentence_transformer/types.py +lib/crewai/src/crewai/rag/embeddings/providers/text2vec/__init__.py +lib/crewai/src/crewai/rag/embeddings/providers/text2vec/text2vec_provider.py +lib/crewai/src/crewai/rag/embeddings/providers/text2vec/types.py +lib/crewai/src/crewai/rag/embeddings/providers/voyageai/__init__.py +lib/crewai/src/crewai/rag/embeddings/providers/voyageai/embedding_callable.py +lib/crewai/src/crewai/rag/embeddings/providers/voyageai/types.py +lib/crewai/src/crewai/rag/embeddings/providers/voyageai/voyageai_provider.py +lib/crewai/src/crewai/rag/qdrant/__init__.py +lib/crewai/src/crewai/rag/qdrant/client.py +lib/crewai/src/crewai/rag/qdrant/config.py +lib/crewai/src/crewai/rag/qdrant/constants.py +lib/crewai/src/crewai/rag/qdrant/factory.py +lib/crewai/src/crewai/rag/qdrant/types.py +lib/crewai/src/crewai/rag/qdrant/utils.py +lib/crewai/src/crewai/rag/storage/__init__.py +lib/crewai/src/crewai/rag/storage/base_rag_storage.py +lib/crewai/src/crewai/security/__init__.py +lib/crewai/src/crewai/security/constants.py +lib/crewai/src/crewai/security/fingerprint.py +lib/crewai/src/crewai/security/security_config.py +lib/crewai/src/crewai/skills/__init__.py +lib/crewai/src/crewai/skills/loader.py +lib/crewai/src/crewai/skills/models.py +lib/crewai/src/crewai/skills/parser.py +lib/crewai/src/crewai/skills/validation.py +lib/crewai/src/crewai/state/__init__.py +lib/crewai/src/crewai/state/checkpoint_config.py +lib/crewai/src/crewai/state/checkpoint_listener.py +lib/crewai/src/crewai/state/event_record.py +lib/crewai/src/crewai/state/runtime.py +lib/crewai/src/crewai/state/provider/__init__.py +lib/crewai/src/crewai/state/provider/core.py +lib/crewai/src/crewai/state/provider/json_provider.py +lib/crewai/src/crewai/state/provider/sqlite_provider.py +lib/crewai/src/crewai/state/provider/utils.py +lib/crewai/src/crewai/tasks/__init__.py +lib/crewai/src/crewai/tasks/conditional_task.py +lib/crewai/src/crewai/tasks/hallucination_guardrail.py +lib/crewai/src/crewai/tasks/llm_guardrail.py +lib/crewai/src/crewai/tasks/output_format.py +lib/crewai/src/crewai/tasks/task_output.py +lib/crewai/src/crewai/telemetry/__init__.py +lib/crewai/src/crewai/telemetry/constants.py +lib/crewai/src/crewai/telemetry/telemetry.py +lib/crewai/src/crewai/telemetry/utils.py +lib/crewai/src/crewai/tools/__init__.py +lib/crewai/src/crewai/tools/base_tool.py +lib/crewai/src/crewai/tools/mcp_native_tool.py +lib/crewai/src/crewai/tools/mcp_tool_wrapper.py +lib/crewai/src/crewai/tools/memory_tools.py +lib/crewai/src/crewai/tools/structured_tool.py +lib/crewai/src/crewai/tools/tool_calling.py +lib/crewai/src/crewai/tools/tool_types.py +lib/crewai/src/crewai/tools/tool_usage.py +lib/crewai/src/crewai/tools/agent_tools/__init__.py +lib/crewai/src/crewai/tools/agent_tools/add_image_tool.py +lib/crewai/src/crewai/tools/agent_tools/agent_tools.py +lib/crewai/src/crewai/tools/agent_tools/ask_question_tool.py +lib/crewai/src/crewai/tools/agent_tools/base_agent_tools.py +lib/crewai/src/crewai/tools/agent_tools/delegate_work_tool.py +lib/crewai/src/crewai/tools/agent_tools/read_file_tool.py +lib/crewai/src/crewai/tools/cache_tools/__init__.py +lib/crewai/src/crewai/tools/cache_tools/cache_tools.py +lib/crewai/src/crewai/types/__init__.py +lib/crewai/src/crewai/types/callback.py +lib/crewai/src/crewai/types/crew_chat.py +lib/crewai/src/crewai/types/streaming.py +lib/crewai/src/crewai/types/usage_metrics.py +lib/crewai/src/crewai/types/utils.py +lib/crewai/src/crewai/utilities/__init__.py +lib/crewai/src/crewai/utilities/agent_utils.py +lib/crewai/src/crewai/utilities/config.py +lib/crewai/src/crewai/utilities/constants.py +lib/crewai/src/crewai/utilities/converter.py +lib/crewai/src/crewai/utilities/crew_json_encoder.py +lib/crewai/src/crewai/utilities/env.py +lib/crewai/src/crewai/utilities/errors.py +lib/crewai/src/crewai/utilities/file_handler.py +lib/crewai/src/crewai/utilities/file_store.py +lib/crewai/src/crewai/utilities/formatter.py +lib/crewai/src/crewai/utilities/guardrail.py +lib/crewai/src/crewai/utilities/guardrail_types.py +lib/crewai/src/crewai/utilities/i18n.py +lib/crewai/src/crewai/utilities/import_utils.py +lib/crewai/src/crewai/utilities/internal_instructor.py +lib/crewai/src/crewai/utilities/llm_utils.py +lib/crewai/src/crewai/utilities/lock_store.py +lib/crewai/src/crewai/utilities/logger.py +lib/crewai/src/crewai/utilities/logger_utils.py +lib/crewai/src/crewai/utilities/paths.py +lib/crewai/src/crewai/utilities/planning_handler.py +lib/crewai/src/crewai/utilities/planning_types.py +lib/crewai/src/crewai/utilities/printer.py +lib/crewai/src/crewai/utilities/prompts.py +lib/crewai/src/crewai/utilities/pydantic_schema_utils.py +lib/crewai/src/crewai/utilities/reasoning_handler.py +lib/crewai/src/crewai/utilities/rpm_controller.py +lib/crewai/src/crewai/utilities/rw_lock.py +lib/crewai/src/crewai/utilities/serialization.py +lib/crewai/src/crewai/utilities/step_execution_context.py +lib/crewai/src/crewai/utilities/streaming.py +lib/crewai/src/crewai/utilities/string_utils.py +lib/crewai/src/crewai/utilities/task_output_storage_handler.py +lib/crewai/src/crewai/utilities/token_counter_callback.py +lib/crewai/src/crewai/utilities/tool_utils.py +lib/crewai/src/crewai/utilities/training_converter.py +lib/crewai/src/crewai/utilities/training_handler.py +lib/crewai/src/crewai/utilities/types.py +lib/crewai/src/crewai/utilities/version.py +lib/crewai/src/crewai/utilities/crew/__init__.py +lib/crewai/src/crewai/utilities/crew/crew_context.py +lib/crewai/src/crewai/utilities/crew/models.py +lib/crewai/src/crewai/utilities/evaluators/__init__.py +lib/crewai/src/crewai/utilities/evaluators/crew_evaluator_handler.py +lib/crewai/src/crewai/utilities/evaluators/task_evaluator.py +lib/crewai/src/crewai/utilities/exceptions/__init__.py +lib/crewai/src/crewai/utilities/exceptions/context_window_exceeding_exception.py +lib/crewai/tests/__init__.py +lib/crewai/tests/test_agent_multimodal.py +lib/crewai/tests/test_async_human_feedback.py +lib/crewai/tests/test_callback.py +lib/crewai/tests/test_checkpoint.py +lib/crewai/tests/test_checkpoint_cli.py +lib/crewai/tests/test_context.py +lib/crewai/tests/test_crew.py +lib/crewai/tests/test_crew_multimodal.py +lib/crewai/tests/test_crew_thread_safety.py +lib/crewai/tests/test_custom_llm.py +lib/crewai/tests/test_event_record.py +lib/crewai/tests/test_flow.py +lib/crewai/tests/test_flow_ask.py +lib/crewai/tests/test_flow_default_override.py +lib/crewai/tests/test_flow_human_input_integration.py +lib/crewai/tests/test_flow_multimodal.py +lib/crewai/tests/test_flow_persistence.py +lib/crewai/tests/test_flow_resumability_regression.py +lib/crewai/tests/test_flow_serializer.py +lib/crewai/tests/test_flow_visualization.py +lib/crewai/tests/test_hallucination_guardrail.py +lib/crewai/tests/test_human_feedback_decorator.py +lib/crewai/tests/test_human_feedback_integration.py +lib/crewai/tests/test_imports.py +lib/crewai/tests/test_llm.py +lib/crewai/tests/test_markdown_task.py +lib/crewai/tests/test_multimodal_validation.py +lib/crewai/tests/test_project.py +lib/crewai/tests/test_streaming.py +lib/crewai/tests/test_streaming_integration.py +lib/crewai/tests/test_task.py +lib/crewai/tests/test_task_guardrails.py +lib/crewai/tests/utils.py +lib/crewai/tests/a2a/test_a2a_integration.py +lib/crewai/tests/a2a/extensions/test_a2ui_schema_conformance.py +lib/crewai/tests/a2a/utils/test_agent_card.py +lib/crewai/tests/a2a/utils/test_task.py +lib/crewai/tests/agents/__init__.py +lib/crewai/tests/agents/test_a2a_trust_completion_status.py +lib/crewai/tests/agents/test_agent.py +lib/crewai/tests/agents/test_agent_a2a_kickoff.py +lib/crewai/tests/agents/test_agent_a2a_wrapping.py +lib/crewai/tests/agents/test_agent_executor.py +lib/crewai/tests/agents/test_agent_inject_date.py +lib/crewai/tests/agents/test_agent_reasoning.py +lib/crewai/tests/agents/test_async_agent_executor.py +lib/crewai/tests/agents/test_crew_agent_parser.py +lib/crewai/tests/agents/test_lite_agent.py +lib/crewai/tests/agents/test_native_tool_calling.py +lib/crewai/tests/agents/agent_adapters/__init__.py +lib/crewai/tests/agents/agent_adapters/test_base_agent_adapter.py +lib/crewai/tests/agents/agent_adapters/test_base_tool_adapter.py +lib/crewai/tests/agents/agent_builder/__init__.py +lib/crewai/tests/agents/agent_builder/test_base_agent.py +lib/crewai/tests/cli/__init__.py +lib/crewai/tests/cli/test_cli.py +lib/crewai/tests/cli/test_config.py +lib/crewai/tests/cli/test_constants.py +lib/crewai/tests/cli/test_create_crew.py +lib/crewai/tests/cli/test_crew_test.py +lib/crewai/tests/cli/test_git.py +lib/crewai/tests/cli/test_plus_api.py +lib/crewai/tests/cli/test_settings_command.py +lib/crewai/tests/cli/test_token_manager.py +lib/crewai/tests/cli/test_train_crew.py +lib/crewai/tests/cli/test_utils.py +lib/crewai/tests/cli/test_version.py +lib/crewai/tests/cli/authentication/__init__.py +lib/crewai/tests/cli/authentication/test_auth_main.py +lib/crewai/tests/cli/authentication/test_utils.py +lib/crewai/tests/cli/authentication/providers/__init__.py +lib/crewai/tests/cli/authentication/providers/test_auth0.py +lib/crewai/tests/cli/authentication/providers/test_entra_id.py +lib/crewai/tests/cli/authentication/providers/test_keycloak.py +lib/crewai/tests/cli/authentication/providers/test_okta.py +lib/crewai/tests/cli/authentication/providers/test_workos.py +lib/crewai/tests/cli/deploy/__init__.py +lib/crewai/tests/cli/deploy/test_deploy_main.py +lib/crewai/tests/cli/deploy/test_validate.py +lib/crewai/tests/cli/enterprise/__init__.py +lib/crewai/tests/cli/enterprise/test_main.py +lib/crewai/tests/cli/organization/__init__.py +lib/crewai/tests/cli/organization/test_main.py +lib/crewai/tests/cli/remote_template/__init__.py +lib/crewai/tests/cli/remote_template/test_main.py +lib/crewai/tests/cli/tools/__init__.py +lib/crewai/tests/cli/tools/test_main.py +lib/crewai/tests/cli/triggers/test_main.py +lib/crewai/tests/crew/test_async_crew.py +lib/crewai/tests/events/test_depends.py +lib/crewai/tests/events/test_event_context.py +lib/crewai/tests/events/test_event_ordering.py +lib/crewai/tests/events/test_llm_usage_event.py +lib/crewai/tests/events/test_tracing_utils_machine_id.py +lib/crewai/tests/events/types/test_system_events.py +lib/crewai/tests/experimental/__init__.py +lib/crewai/tests/experimental/evaluation/__init__.py +lib/crewai/tests/experimental/evaluation/test_agent_evaluator.py +lib/crewai/tests/experimental/evaluation/test_experiment_result.py +lib/crewai/tests/experimental/evaluation/test_experiment_runner.py +lib/crewai/tests/experimental/evaluation/metrics/__init__.py +lib/crewai/tests/experimental/evaluation/metrics/test_base_evaluation_metrics.py +lib/crewai/tests/experimental/evaluation/metrics/test_goal_metrics.py +lib/crewai/tests/experimental/evaluation/metrics/test_reasoning_metrics.py +lib/crewai/tests/experimental/evaluation/metrics/test_semantic_quality_metrics.py +lib/crewai/tests/experimental/evaluation/metrics/test_tools_metrics.py +lib/crewai/tests/hooks/__init__.py +lib/crewai/tests/hooks/test_crew_scoped_hooks.py +lib/crewai/tests/hooks/test_decorators.py +lib/crewai/tests/hooks/test_human_approval.py +lib/crewai/tests/hooks/test_llm_hooks.py +lib/crewai/tests/hooks/test_tool_hooks.py +lib/crewai/tests/knowledge/__init__.py +lib/crewai/tests/knowledge/test_async_knowledge.py +lib/crewai/tests/knowledge/test_knowledge.py +lib/crewai/tests/knowledge/test_knowledge_searchresult.py +lib/crewai/tests/knowledge/test_knowledge_storage_integration.py +lib/crewai/tests/llms/__init__.py +lib/crewai/tests/llms/test_multimodal.py +lib/crewai/tests/llms/test_multimodal_integration.py +lib/crewai/tests/llms/test_tool_call_streaming.py +lib/crewai/tests/llms/anthropic/test_anthropic.py +lib/crewai/tests/llms/anthropic/test_anthropic_async.py +lib/crewai/tests/llms/azure/__init__.py +lib/crewai/tests/llms/azure/test_azure.py +lib/crewai/tests/llms/azure/test_azure_async.py +lib/crewai/tests/llms/bedrock/test_bedrock.py +lib/crewai/tests/llms/bedrock/test_bedrock_async.py +lib/crewai/tests/llms/google/test_google.py +lib/crewai/tests/llms/google/test_google_async.py +lib/crewai/tests/llms/hooks/__init__.py +lib/crewai/tests/llms/hooks/test_anthropic_interceptor.py +lib/crewai/tests/llms/hooks/test_base_interceptor.py +lib/crewai/tests/llms/hooks/test_openai_interceptor.py +lib/crewai/tests/llms/hooks/test_transport.py +lib/crewai/tests/llms/hooks/test_unsupported_providers.py +lib/crewai/tests/llms/litellm/__init__.py +lib/crewai/tests/llms/litellm/test_litellm_async.py +lib/crewai/tests/llms/openai/test_openai.py +lib/crewai/tests/llms/openai/test_openai_async.py +lib/crewai/tests/llms/openai_compatible/__init__.py +lib/crewai/tests/llms/openai_compatible/test_openai_compatible.py +lib/crewai/tests/mcp/__init__.py +lib/crewai/tests/mcp/test_amp_mcp.py +lib/crewai/tests/mcp/test_mcp_config.py +lib/crewai/tests/mcp/test_sse_transport.py +lib/crewai/tests/memory/__init__.py +lib/crewai/tests/memory/test_concurrent_storage.py +lib/crewai/tests/memory/test_memory_root_scope.py +lib/crewai/tests/memory/test_qdrant_edge_storage.py +lib/crewai/tests/memory/test_unified_memory.py +lib/crewai/tests/pipeline/__init__.py +lib/crewai/tests/project/test_callback_with_taskoutput.py +lib/crewai/tests/rag/__init__.py +lib/crewai/tests/rag/test_error_handling.py +lib/crewai/tests/rag/chromadb/__init__.py +lib/crewai/tests/rag/chromadb/test_client.py +lib/crewai/tests/rag/chromadb/test_utils.py +lib/crewai/tests/rag/config/test_factory.py +lib/crewai/tests/rag/config/test_optional_imports.py +lib/crewai/tests/rag/embeddings/test_backward_compatibility.py +lib/crewai/tests/rag/embeddings/test_embedding_factory.py +lib/crewai/tests/rag/embeddings/test_factory_azure.py +lib/crewai/tests/rag/embeddings/test_google_vertex_memory_integration.py +lib/crewai/tests/rag/qdrant/test_client.py +lib/crewai/tests/security/__init__.py +lib/crewai/tests/security/test_deterministic_fingerprints.py +lib/crewai/tests/security/test_examples.py +lib/crewai/tests/security/test_fingerprint.py +lib/crewai/tests/security/test_integration.py +lib/crewai/tests/security/test_security_config.py +lib/crewai/tests/skills/__init__.py +lib/crewai/tests/skills/test_integration.py +lib/crewai/tests/skills/test_loader.py +lib/crewai/tests/skills/test_models.py +lib/crewai/tests/skills/test_parser.py +lib/crewai/tests/skills/test_validation.py +lib/crewai/tests/storage/__init__.py +lib/crewai/tests/task/test_async_task.py +lib/crewai/tests/telemetry/__init__.py +lib/crewai/tests/telemetry/test_execution_span_assignment.py +lib/crewai/tests/telemetry/test_flow_crew_span_integration.py +lib/crewai/tests/telemetry/test_telemetry.py +lib/crewai/tests/telemetry/test_telemetry_disable.py +lib/crewai/tests/tools/__init__.py +lib/crewai/tests/tools/test_async_tools.py +lib/crewai/tests/tools/test_base_tool.py +lib/crewai/tests/tools/test_structured_tool.py +lib/crewai/tests/tools/test_tool_usage.py +lib/crewai/tests/tools/test_tool_usage_limit.py +lib/crewai/tests/tools/agent_tools/__init__.py +lib/crewai/tests/tools/agent_tools/test_agent_tools.py +lib/crewai/tests/tools/agent_tools/test_read_file_tool.py +lib/crewai/tests/tracing/__init__.py +lib/crewai/tests/tracing/test_trace_enable_disable.py +lib/crewai/tests/tracing/test_tracing.py +lib/crewai/tests/utilities/__init__.py +lib/crewai/tests/utilities/test_agent_utils.py +lib/crewai/tests/utilities/test_console_formatter_pause_resume.py +lib/crewai/tests/utilities/test_converter.py +lib/crewai/tests/utilities/test_events.py +lib/crewai/tests/utilities/test_file_handler.py +lib/crewai/tests/utilities/test_file_store.py +lib/crewai/tests/utilities/test_files.py +lib/crewai/tests/utilities/test_i18n.py +lib/crewai/tests/utilities/test_import_utils.py +lib/crewai/tests/utilities/test_knowledge_planning.py +lib/crewai/tests/utilities/test_llm_utils.py +lib/crewai/tests/utilities/test_lock_store.py +lib/crewai/tests/utilities/test_planning_handler.py +lib/crewai/tests/utilities/test_planning_types.py +lib/crewai/tests/utilities/test_prompts_no_thought_leakage.py +lib/crewai/tests/utilities/test_pydantic_schema_utils.py +lib/crewai/tests/utilities/test_serialization.py +lib/crewai/tests/utilities/test_string_utils.py +lib/crewai/tests/utilities/test_structured_planning.py +lib/crewai/tests/utilities/test_summarize_integration.py +lib/crewai/tests/utilities/test_training_converter.py +lib/crewai/tests/utilities/test_training_handler.py +lib/crewai/tests/utilities/crew/__init__.py +lib/crewai/tests/utilities/crew/test_crew_context.py +lib/crewai/tests/utilities/evaluators/__init__.py +lib/crewai/tests/utilities/evaluators/test_crew_evaluator_handler.py +lib/crewai/tests/utilities/evaluators/test_task_evaluator.py +lib/crewai/tests/utilities/events/__init__.py +lib/crewai/tests/utilities/events/test_async_event_bus.py +lib/crewai/tests/utilities/events/test_crewai_event_bus.py +lib/crewai/tests/utilities/events/test_rw_lock.py +lib/crewai/tests/utilities/events/test_shutdown.py +lib/crewai/tests/utilities/events/test_thread_safety.py +lib/devtools/src/crewai_devtools/__init__.py +lib/devtools/src/crewai_devtools/cli.py +lib/devtools/src/crewai_devtools/docs_check.py +lib/devtools/src/crewai_devtools/prompts.py +lib/devtools/tests/__init__.py +lib/devtools/tests/test_toml_updates.py \ No newline at end of file diff --git a/UNKNOWN.egg-info/dependency_links.txt b/UNKNOWN.egg-info/dependency_links.txt new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/UNKNOWN.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/UNKNOWN.egg-info/top_level.txt b/UNKNOWN.egg-info/top_level.txt new file mode 100644 index 0000000000..a65b41774a --- /dev/null +++ b/UNKNOWN.egg-info/top_level.txt @@ -0,0 +1 @@ +lib diff --git a/lib/crewai/src/crewai/agent/core.py b/lib/crewai/src/crewai/agent/core.py index 74a3e85ded..5b45a9320d 100644 --- a/lib/crewai/src/crewai/agent/core.py +++ b/lib/crewai/src/crewai/agent/core.py @@ -78,8 +78,7 @@ from crewai.knowledge.source.base_knowledge_source import BaseKnowledgeSource from crewai.lite_agent_output import LiteAgentOutput from crewai.llms.base_llm import BaseLLM -from crewai.mcp import MCPServerConfig -from crewai.mcp.tool_resolver import MCPToolResolver +from crewai.mcp.config import MCPServerConfig from crewai.rag.embeddings.types import EmbedderConfig from crewai.security.fingerprint import Fingerprint from crewai.skills.loader import activate_skill, discover_skills @@ -1120,6 +1119,8 @@ def get_mcp_tools(self, mcps: list[str | MCPServerConfig]) -> list[BaseTool]: Delegates to :class:`~crewai.mcp.tool_resolver.MCPToolResolver`. """ self._cleanup_mcp_clients() + from crewai.mcp.tool_resolver import MCPToolResolver + self._mcp_resolver = MCPToolResolver(agent=self, logger=self._logger) return self._mcp_resolver.resolve(mcps) From 776db45d581b2f44f28047a218733d5a15ed6258 Mon Sep 17 00:00:00 2001 From: Iris Clawd Date: Wed, 22 Apr 2026 04:10:08 +0000 Subject: [PATCH 02/10] perf: lazy-load heavy MCP imports in mcp/__init__.py MCPClient, MCPToolResolver, BaseTransport, and TransportType now use __getattr__ lazy loading. These pull in the full mcp SDK (~400ms) but are only needed at runtime when agents actually connect to MCP servers. Lightweight config and filter types remain eagerly imported. --- lib/crewai/src/crewai/mcp/__init__.py | 34 ++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/lib/crewai/src/crewai/mcp/__init__.py b/lib/crewai/src/crewai/mcp/__init__.py index e078919fdf..bb3dab1990 100644 --- a/lib/crewai/src/crewai/mcp/__init__.py +++ b/lib/crewai/src/crewai/mcp/__init__.py @@ -2,9 +2,17 @@ This module provides native MCP client functionality, allowing CrewAI agents to connect to any MCP-compliant server using various transport types. + +Heavy imports (MCPClient, MCPToolResolver, BaseTransport, TransportType) are +lazy-loaded on first access to avoid pulling in the ``mcp`` SDK (~400ms) +when only lightweight config/filter types are needed. """ -from crewai.mcp.client import MCPClient +from __future__ import annotations + +import importlib +from typing import TYPE_CHECKING, Any + from crewai.mcp.config import ( MCPServerConfig, MCPServerHTTP, @@ -18,8 +26,28 @@ create_dynamic_tool_filter, create_static_tool_filter, ) -from crewai.mcp.tool_resolver import MCPToolResolver -from crewai.mcp.transports.base import BaseTransport, TransportType + +if TYPE_CHECKING: + from crewai.mcp.client import MCPClient + from crewai.mcp.tool_resolver import MCPToolResolver + from crewai.mcp.transports.base import BaseTransport, TransportType + +_LAZY: dict[str, tuple[str, str]] = { + "MCPClient": ("crewai.mcp.client", "MCPClient"), + "MCPToolResolver": ("crewai.mcp.tool_resolver", "MCPToolResolver"), + "BaseTransport": ("crewai.mcp.transports.base", "BaseTransport"), + "TransportType": ("crewai.mcp.transports.base", "TransportType"), +} + + +def __getattr__(name: str) -> Any: + if name in _LAZY: + mod_path, attr = _LAZY[name] + mod = importlib.import_module(mod_path) + val = getattr(mod, attr) + globals()[name] = val # cache for subsequent access + return val + raise AttributeError(f"module {__name__!r} has no attribute {name!r}") __all__ = [ From 24f774daf92b0ee0f7219ea411bcde3fcb611c1b Mon Sep 17 00:00:00 2001 From: Iris Clawd Date: Wed, 22 Apr 2026 04:11:39 +0000 Subject: [PATCH 03/10] perf: lazy-load all event type modules in events/__init__.py Previously only agent_events were lazy-loaded; all other event type modules (crew, flow, knowledge, llm, guardrail, logging, mcp, memory, reasoning, skill, task, tool_usage) were eagerly imported at package init time. Since events/__init__.py runs whenever ANY crewai.events.* submodule is accessed, this loaded ~12 Pydantic model modules unnecessarily. Now all event types use the same __getattr__ lazy-loading pattern, with TYPE_CHECKING imports preserved for IDE/type-checker support. Saves ~550ms on 'import crewai' cold start. --- lib/crewai/src/crewai/events/__init__.py | 356 ++++++++++++++--------- 1 file changed, 221 insertions(+), 135 deletions(-) diff --git a/lib/crewai/src/crewai/events/__init__.py b/lib/crewai/src/crewai/events/__init__.py index bcdafe49ad..a9c02a243c 100644 --- a/lib/crewai/src/crewai/events/__init__.py +++ b/lib/crewai/src/crewai/events/__init__.py @@ -6,112 +6,20 @@ - Build custom logging and analytics - Extend CrewAI with custom event handlers - Declare handler dependencies for ordered execution + +Event type classes are lazy-loaded on first access to avoid importing +~12 Pydantic model modules (and their transitive deps) at package init time. """ from __future__ import annotations +import importlib from typing import TYPE_CHECKING, Any from crewai.events.base_event_listener import BaseEventListener from crewai.events.depends import Depends from crewai.events.event_bus import crewai_event_bus from crewai.events.handler_graph import CircularDependencyError -from crewai.events.types.crew_events import ( - CrewKickoffCompletedEvent, - CrewKickoffFailedEvent, - CrewKickoffStartedEvent, - CrewTestCompletedEvent, - CrewTestFailedEvent, - CrewTestResultEvent, - CrewTestStartedEvent, - CrewTrainCompletedEvent, - CrewTrainFailedEvent, - CrewTrainStartedEvent, -) -from crewai.events.types.flow_events import ( - FlowCreatedEvent, - FlowEvent, - FlowFinishedEvent, - FlowPlotEvent, - FlowStartedEvent, - HumanFeedbackReceivedEvent, - HumanFeedbackRequestedEvent, - MethodExecutionFailedEvent, - MethodExecutionFinishedEvent, - MethodExecutionStartedEvent, -) -from crewai.events.types.knowledge_events import ( - KnowledgeQueryCompletedEvent, - KnowledgeQueryFailedEvent, - KnowledgeQueryStartedEvent, - KnowledgeRetrievalCompletedEvent, - KnowledgeRetrievalStartedEvent, - KnowledgeSearchQueryFailedEvent, -) -from crewai.events.types.llm_events import ( - LLMCallCompletedEvent, - LLMCallFailedEvent, - LLMCallStartedEvent, - LLMStreamChunkEvent, -) -from crewai.events.types.llm_guardrail_events import ( - LLMGuardrailCompletedEvent, - LLMGuardrailStartedEvent, -) -from crewai.events.types.logging_events import ( - AgentLogsExecutionEvent, - AgentLogsStartedEvent, -) -from crewai.events.types.mcp_events import ( - MCPConfigFetchFailedEvent, - MCPConnectionCompletedEvent, - MCPConnectionFailedEvent, - MCPConnectionStartedEvent, - MCPToolExecutionCompletedEvent, - MCPToolExecutionFailedEvent, - MCPToolExecutionStartedEvent, -) -from crewai.events.types.memory_events import ( - MemoryQueryCompletedEvent, - MemoryQueryFailedEvent, - MemoryQueryStartedEvent, - MemoryRetrievalCompletedEvent, - MemoryRetrievalFailedEvent, - MemoryRetrievalStartedEvent, - MemorySaveCompletedEvent, - MemorySaveFailedEvent, - MemorySaveStartedEvent, -) -from crewai.events.types.reasoning_events import ( - AgentReasoningCompletedEvent, - AgentReasoningFailedEvent, - AgentReasoningStartedEvent, - ReasoningEvent, -) -from crewai.events.types.skill_events import ( - SkillActivatedEvent, - SkillDiscoveryCompletedEvent, - SkillDiscoveryStartedEvent, - SkillEvent, - SkillLoadFailedEvent, - SkillLoadedEvent, -) -from crewai.events.types.task_events import ( - TaskCompletedEvent, - TaskEvaluationEvent, - TaskFailedEvent, - TaskStartedEvent, -) -from crewai.events.types.tool_usage_events import ( - ToolExecutionErrorEvent, - ToolSelectionErrorEvent, - ToolUsageErrorEvent, - ToolUsageEvent, - ToolUsageFinishedEvent, - ToolUsageStartedEvent, - ToolValidateInputErrorEvent, -) - if TYPE_CHECKING: from crewai.events.types.agent_events import ( @@ -125,6 +33,223 @@ LiteAgentExecutionErrorEvent, LiteAgentExecutionStartedEvent, ) + from crewai.events.types.crew_events import ( + CrewKickoffCompletedEvent, + CrewKickoffFailedEvent, + CrewKickoffStartedEvent, + CrewTestCompletedEvent, + CrewTestFailedEvent, + CrewTestResultEvent, + CrewTestStartedEvent, + CrewTrainCompletedEvent, + CrewTrainFailedEvent, + CrewTrainStartedEvent, + ) + from crewai.events.types.flow_events import ( + FlowCreatedEvent, + FlowEvent, + FlowFinishedEvent, + FlowPlotEvent, + FlowStartedEvent, + HumanFeedbackReceivedEvent, + HumanFeedbackRequestedEvent, + MethodExecutionFailedEvent, + MethodExecutionFinishedEvent, + MethodExecutionStartedEvent, + ) + from crewai.events.types.knowledge_events import ( + KnowledgeQueryCompletedEvent, + KnowledgeQueryFailedEvent, + KnowledgeQueryStartedEvent, + KnowledgeRetrievalCompletedEvent, + KnowledgeRetrievalStartedEvent, + KnowledgeSearchQueryFailedEvent, + ) + from crewai.events.types.llm_events import ( + LLMCallCompletedEvent, + LLMCallFailedEvent, + LLMCallStartedEvent, + LLMStreamChunkEvent, + ) + from crewai.events.types.llm_guardrail_events import ( + LLMGuardrailCompletedEvent, + LLMGuardrailStartedEvent, + ) + from crewai.events.types.logging_events import ( + AgentLogsExecutionEvent, + AgentLogsStartedEvent, + ) + from crewai.events.types.mcp_events import ( + MCPConfigFetchFailedEvent, + MCPConnectionCompletedEvent, + MCPConnectionFailedEvent, + MCPConnectionStartedEvent, + MCPToolExecutionCompletedEvent, + MCPToolExecutionFailedEvent, + MCPToolExecutionStartedEvent, + ) + from crewai.events.types.memory_events import ( + MemoryQueryCompletedEvent, + MemoryQueryFailedEvent, + MemoryQueryStartedEvent, + MemoryRetrievalCompletedEvent, + MemoryRetrievalFailedEvent, + MemoryRetrievalStartedEvent, + MemorySaveCompletedEvent, + MemorySaveFailedEvent, + MemorySaveStartedEvent, + ) + from crewai.events.types.reasoning_events import ( + AgentReasoningCompletedEvent, + AgentReasoningFailedEvent, + AgentReasoningStartedEvent, + ReasoningEvent, + ) + from crewai.events.types.skill_events import ( + SkillActivatedEvent, + SkillDiscoveryCompletedEvent, + SkillDiscoveryStartedEvent, + SkillEvent, + SkillLoadFailedEvent, + SkillLoadedEvent, + ) + from crewai.events.types.task_events import ( + TaskCompletedEvent, + TaskEvaluationEvent, + TaskFailedEvent, + TaskStartedEvent, + ) + from crewai.events.types.tool_usage_events import ( + ToolExecutionErrorEvent, + ToolSelectionErrorEvent, + ToolUsageErrorEvent, + ToolUsageEvent, + ToolUsageFinishedEvent, + ToolUsageStartedEvent, + ToolValidateInputErrorEvent, + ) + +# Map every event class name → its module path for lazy loading +_LAZY_EVENT_MAPPING: dict[str, str] = { + # agent_events + "AgentEvaluationCompletedEvent": "crewai.events.types.agent_events", + "AgentEvaluationFailedEvent": "crewai.events.types.agent_events", + "AgentEvaluationStartedEvent": "crewai.events.types.agent_events", + "AgentExecutionCompletedEvent": "crewai.events.types.agent_events", + "AgentExecutionErrorEvent": "crewai.events.types.agent_events", + "AgentExecutionStartedEvent": "crewai.events.types.agent_events", + "LiteAgentExecutionCompletedEvent": "crewai.events.types.agent_events", + "LiteAgentExecutionErrorEvent": "crewai.events.types.agent_events", + "LiteAgentExecutionStartedEvent": "crewai.events.types.agent_events", + # crew_events + "CrewKickoffCompletedEvent": "crewai.events.types.crew_events", + "CrewKickoffFailedEvent": "crewai.events.types.crew_events", + "CrewKickoffStartedEvent": "crewai.events.types.crew_events", + "CrewTestCompletedEvent": "crewai.events.types.crew_events", + "CrewTestFailedEvent": "crewai.events.types.crew_events", + "CrewTestResultEvent": "crewai.events.types.crew_events", + "CrewTestStartedEvent": "crewai.events.types.crew_events", + "CrewTrainCompletedEvent": "crewai.events.types.crew_events", + "CrewTrainFailedEvent": "crewai.events.types.crew_events", + "CrewTrainStartedEvent": "crewai.events.types.crew_events", + # flow_events + "FlowCreatedEvent": "crewai.events.types.flow_events", + "FlowEvent": "crewai.events.types.flow_events", + "FlowFinishedEvent": "crewai.events.types.flow_events", + "FlowPlotEvent": "crewai.events.types.flow_events", + "FlowStartedEvent": "crewai.events.types.flow_events", + "HumanFeedbackReceivedEvent": "crewai.events.types.flow_events", + "HumanFeedbackRequestedEvent": "crewai.events.types.flow_events", + "MethodExecutionFailedEvent": "crewai.events.types.flow_events", + "MethodExecutionFinishedEvent": "crewai.events.types.flow_events", + "MethodExecutionStartedEvent": "crewai.events.types.flow_events", + # knowledge_events + "KnowledgeQueryCompletedEvent": "crewai.events.types.knowledge_events", + "KnowledgeQueryFailedEvent": "crewai.events.types.knowledge_events", + "KnowledgeQueryStartedEvent": "crewai.events.types.knowledge_events", + "KnowledgeRetrievalCompletedEvent": "crewai.events.types.knowledge_events", + "KnowledgeRetrievalStartedEvent": "crewai.events.types.knowledge_events", + "KnowledgeSearchQueryFailedEvent": "crewai.events.types.knowledge_events", + # llm_events + "LLMCallCompletedEvent": "crewai.events.types.llm_events", + "LLMCallFailedEvent": "crewai.events.types.llm_events", + "LLMCallStartedEvent": "crewai.events.types.llm_events", + "LLMStreamChunkEvent": "crewai.events.types.llm_events", + # llm_guardrail_events + "LLMGuardrailCompletedEvent": "crewai.events.types.llm_guardrail_events", + "LLMGuardrailStartedEvent": "crewai.events.types.llm_guardrail_events", + # logging_events + "AgentLogsExecutionEvent": "crewai.events.types.logging_events", + "AgentLogsStartedEvent": "crewai.events.types.logging_events", + # mcp_events + "MCPConfigFetchFailedEvent": "crewai.events.types.mcp_events", + "MCPConnectionCompletedEvent": "crewai.events.types.mcp_events", + "MCPConnectionFailedEvent": "crewai.events.types.mcp_events", + "MCPConnectionStartedEvent": "crewai.events.types.mcp_events", + "MCPToolExecutionCompletedEvent": "crewai.events.types.mcp_events", + "MCPToolExecutionFailedEvent": "crewai.events.types.mcp_events", + "MCPToolExecutionStartedEvent": "crewai.events.types.mcp_events", + # memory_events + "MemoryQueryCompletedEvent": "crewai.events.types.memory_events", + "MemoryQueryFailedEvent": "crewai.events.types.memory_events", + "MemoryQueryStartedEvent": "crewai.events.types.memory_events", + "MemoryRetrievalCompletedEvent": "crewai.events.types.memory_events", + "MemoryRetrievalFailedEvent": "crewai.events.types.memory_events", + "MemoryRetrievalStartedEvent": "crewai.events.types.memory_events", + "MemorySaveCompletedEvent": "crewai.events.types.memory_events", + "MemorySaveFailedEvent": "crewai.events.types.memory_events", + "MemorySaveStartedEvent": "crewai.events.types.memory_events", + # reasoning_events + "AgentReasoningCompletedEvent": "crewai.events.types.reasoning_events", + "AgentReasoningFailedEvent": "crewai.events.types.reasoning_events", + "AgentReasoningStartedEvent": "crewai.events.types.reasoning_events", + "ReasoningEvent": "crewai.events.types.reasoning_events", + # skill_events + "SkillActivatedEvent": "crewai.events.types.skill_events", + "SkillDiscoveryCompletedEvent": "crewai.events.types.skill_events", + "SkillDiscoveryStartedEvent": "crewai.events.types.skill_events", + "SkillEvent": "crewai.events.types.skill_events", + "SkillLoadFailedEvent": "crewai.events.types.skill_events", + "SkillLoadedEvent": "crewai.events.types.skill_events", + # task_events + "TaskCompletedEvent": "crewai.events.types.task_events", + "TaskEvaluationEvent": "crewai.events.types.task_events", + "TaskFailedEvent": "crewai.events.types.task_events", + "TaskStartedEvent": "crewai.events.types.task_events", + # tool_usage_events + "ToolExecutionErrorEvent": "crewai.events.types.tool_usage_events", + "ToolSelectionErrorEvent": "crewai.events.types.tool_usage_events", + "ToolUsageErrorEvent": "crewai.events.types.tool_usage_events", + "ToolUsageEvent": "crewai.events.types.tool_usage_events", + "ToolUsageFinishedEvent": "crewai.events.types.tool_usage_events", + "ToolUsageStartedEvent": "crewai.events.types.tool_usage_events", + "ToolValidateInputErrorEvent": "crewai.events.types.tool_usage_events", +} + +_extension_exports: dict[str, Any] = {} + + +def __getattr__(name: str) -> Any: + """Lazy import for event types and registered extensions.""" + if name in _LAZY_EVENT_MAPPING: + module_path = _LAZY_EVENT_MAPPING[name] + module = importlib.import_module(module_path) + val = getattr(module, name) + globals()[name] = val # cache for subsequent access + return val + + if name in _extension_exports: + value = _extension_exports[name] + if isinstance(value, str): + module_path, _, attr_name = value.rpartition(".") + if module_path: + module = importlib.import_module(module_path) + return getattr(module, attr_name) + return importlib.import_module(value) + return value + + msg = f"module {__name__!r} has no attribute {name!r}" + raise AttributeError(msg) __all__ = [ @@ -214,42 +339,3 @@ "_extension_exports", "crewai_event_bus", ] - -_AGENT_EVENT_MAPPING = { - "AgentEvaluationCompletedEvent": "crewai.events.types.agent_events", - "AgentEvaluationFailedEvent": "crewai.events.types.agent_events", - "AgentEvaluationStartedEvent": "crewai.events.types.agent_events", - "AgentExecutionCompletedEvent": "crewai.events.types.agent_events", - "AgentExecutionErrorEvent": "crewai.events.types.agent_events", - "AgentExecutionStartedEvent": "crewai.events.types.agent_events", - "LiteAgentExecutionCompletedEvent": "crewai.events.types.agent_events", - "LiteAgentExecutionErrorEvent": "crewai.events.types.agent_events", - "LiteAgentExecutionStartedEvent": "crewai.events.types.agent_events", -} - -_extension_exports: dict[str, Any] = {} - - -def __getattr__(name: str) -> Any: - """Lazy import for agent events and registered extensions.""" - if name in _AGENT_EVENT_MAPPING: - import importlib - - module_path = _AGENT_EVENT_MAPPING[name] - module = importlib.import_module(module_path) - return getattr(module, name) - - if name in _extension_exports: - import importlib - - value = _extension_exports[name] - if isinstance(value, str): - module_path, _, attr_name = value.rpartition(".") - if module_path: - module = importlib.import_module(module_path) - return getattr(module, attr_name) - return importlib.import_module(value) - return value - - msg = f"module {__name__!r} has no attribute {name!r}" - raise AttributeError(msg) From 323d47737c2d3c77dba75654d512cfd284d9cd22 Mon Sep 17 00:00:00 2001 From: Iris Clawd Date: Wed, 22 Apr 2026 04:21:25 +0000 Subject: [PATCH 04/10] chore: remove UNKNOWN.egg-info from version control --- .gitignore | 1 + UNKNOWN.egg-info/PKG-INFO | 5 - UNKNOWN.egg-info/SOURCES.txt | 761 -------------------------- UNKNOWN.egg-info/dependency_links.txt | 1 - UNKNOWN.egg-info/top_level.txt | 1 - 5 files changed, 1 insertion(+), 768 deletions(-) delete mode 100644 UNKNOWN.egg-info/PKG-INFO delete mode 100644 UNKNOWN.egg-info/SOURCES.txt delete mode 100644 UNKNOWN.egg-info/dependency_links.txt delete mode 100644 UNKNOWN.egg-info/top_level.txt diff --git a/.gitignore b/.gitignore index 785c2c2994..d7e89fcaa4 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ chromadb-*.lock .crewai/memory blogs/* secrets/* +UNKNOWN.egg-info/ diff --git a/UNKNOWN.egg-info/PKG-INFO b/UNKNOWN.egg-info/PKG-INFO deleted file mode 100644 index 837c47839d..0000000000 --- a/UNKNOWN.egg-info/PKG-INFO +++ /dev/null @@ -1,5 +0,0 @@ -Metadata-Version: 2.4 -Name: UNKNOWN -Version: 0.0.0 -License-File: LICENSE -Dynamic: license-file diff --git a/UNKNOWN.egg-info/SOURCES.txt b/UNKNOWN.egg-info/SOURCES.txt deleted file mode 100644 index 9ca28161f3..0000000000 --- a/UNKNOWN.egg-info/SOURCES.txt +++ /dev/null @@ -1,761 +0,0 @@ -LICENSE -README.md -pyproject.toml -UNKNOWN.egg-info/PKG-INFO -UNKNOWN.egg-info/SOURCES.txt -UNKNOWN.egg-info/dependency_links.txt -UNKNOWN.egg-info/top_level.txt -lib/crewai/src/crewai/__init__.py -lib/crewai/src/crewai/context.py -lib/crewai/src/crewai/crew.py -lib/crewai/src/crewai/lite_agent.py -lib/crewai/src/crewai/lite_agent_output.py -lib/crewai/src/crewai/llm.py -lib/crewai/src/crewai/mypy.py -lib/crewai/src/crewai/process.py -lib/crewai/src/crewai/py.typed -lib/crewai/src/crewai/task.py -lib/crewai/src/crewai/a2a/__init__.py -lib/crewai/src/crewai/a2a/config.py -lib/crewai/src/crewai/a2a/errors.py -lib/crewai/src/crewai/a2a/task_helpers.py -lib/crewai/src/crewai/a2a/templates.py -lib/crewai/src/crewai/a2a/types.py -lib/crewai/src/crewai/a2a/wrapper.py -lib/crewai/src/crewai/a2a/auth/__init__.py -lib/crewai/src/crewai/a2a/auth/client_schemes.py -lib/crewai/src/crewai/a2a/auth/schemas.py -lib/crewai/src/crewai/a2a/auth/server_schemes.py -lib/crewai/src/crewai/a2a/auth/utils.py -lib/crewai/src/crewai/a2a/extensions/__init__.py -lib/crewai/src/crewai/a2a/extensions/base.py -lib/crewai/src/crewai/a2a/extensions/registry.py -lib/crewai/src/crewai/a2a/extensions/server.py -lib/crewai/src/crewai/a2a/extensions/a2ui/__init__.py -lib/crewai/src/crewai/a2a/extensions/a2ui/catalog.py -lib/crewai/src/crewai/a2a/extensions/a2ui/client_extension.py -lib/crewai/src/crewai/a2a/extensions/a2ui/models.py -lib/crewai/src/crewai/a2a/extensions/a2ui/prompt.py -lib/crewai/src/crewai/a2a/extensions/a2ui/server_extension.py -lib/crewai/src/crewai/a2a/extensions/a2ui/v0_9.py -lib/crewai/src/crewai/a2a/extensions/a2ui/validator.py -lib/crewai/src/crewai/a2a/extensions/a2ui/schema/__init__.py -lib/crewai/src/crewai/a2a/updates/__init__.py -lib/crewai/src/crewai/a2a/updates/base.py -lib/crewai/src/crewai/a2a/updates/polling/__init__.py -lib/crewai/src/crewai/a2a/updates/polling/config.py -lib/crewai/src/crewai/a2a/updates/polling/handler.py -lib/crewai/src/crewai/a2a/updates/push_notifications/__init__.py -lib/crewai/src/crewai/a2a/updates/push_notifications/config.py -lib/crewai/src/crewai/a2a/updates/push_notifications/handler.py -lib/crewai/src/crewai/a2a/updates/push_notifications/signature.py -lib/crewai/src/crewai/a2a/updates/streaming/__init__.py -lib/crewai/src/crewai/a2a/updates/streaming/config.py -lib/crewai/src/crewai/a2a/updates/streaming/handler.py -lib/crewai/src/crewai/a2a/updates/streaming/params.py -lib/crewai/src/crewai/a2a/utils/__init__.py -lib/crewai/src/crewai/a2a/utils/agent_card.py -lib/crewai/src/crewai/a2a/utils/agent_card_signing.py -lib/crewai/src/crewai/a2a/utils/content_type.py -lib/crewai/src/crewai/a2a/utils/delegation.py -lib/crewai/src/crewai/a2a/utils/logging.py -lib/crewai/src/crewai/a2a/utils/response_model.py -lib/crewai/src/crewai/a2a/utils/task.py -lib/crewai/src/crewai/a2a/utils/transport.py -lib/crewai/src/crewai/agent/__init__.py -lib/crewai/src/crewai/agent/core.py -lib/crewai/src/crewai/agent/planning_config.py -lib/crewai/src/crewai/agent/utils.py -lib/crewai/src/crewai/agent/internal/__init__.py -lib/crewai/src/crewai/agent/internal/meta.py -lib/crewai/src/crewai/agents/__init__.py -lib/crewai/src/crewai/agents/constants.py -lib/crewai/src/crewai/agents/crew_agent_executor.py -lib/crewai/src/crewai/agents/parser.py -lib/crewai/src/crewai/agents/planner_observer.py -lib/crewai/src/crewai/agents/step_executor.py -lib/crewai/src/crewai/agents/tools_handler.py -lib/crewai/src/crewai/agents/agent_adapters/__init__.py -lib/crewai/src/crewai/agents/agent_adapters/base_agent_adapter.py -lib/crewai/src/crewai/agents/agent_adapters/base_converter_adapter.py -lib/crewai/src/crewai/agents/agent_adapters/base_tool_adapter.py -lib/crewai/src/crewai/agents/agent_adapters/langgraph/__init__.py -lib/crewai/src/crewai/agents/agent_adapters/langgraph/langgraph_adapter.py -lib/crewai/src/crewai/agents/agent_adapters/langgraph/langgraph_tool_adapter.py -lib/crewai/src/crewai/agents/agent_adapters/langgraph/protocols.py -lib/crewai/src/crewai/agents/agent_adapters/langgraph/structured_output_converter.py -lib/crewai/src/crewai/agents/agent_adapters/openai_agents/__init__.py -lib/crewai/src/crewai/agents/agent_adapters/openai_agents/openai_adapter.py -lib/crewai/src/crewai/agents/agent_adapters/openai_agents/openai_agent_tool_adapter.py -lib/crewai/src/crewai/agents/agent_adapters/openai_agents/protocols.py -lib/crewai/src/crewai/agents/agent_adapters/openai_agents/structured_output_converter.py -lib/crewai/src/crewai/agents/agent_builder/__init__.py -lib/crewai/src/crewai/agents/agent_builder/base_agent.py -lib/crewai/src/crewai/agents/agent_builder/base_agent_executor.py -lib/crewai/src/crewai/agents/agent_builder/utilities/__init__.py -lib/crewai/src/crewai/agents/agent_builder/utilities/base_output_converter.py -lib/crewai/src/crewai/agents/agent_builder/utilities/base_token_process.py -lib/crewai/src/crewai/agents/cache/__init__.py -lib/crewai/src/crewai/agents/cache/cache_handler.py -lib/crewai/src/crewai/cli/__init__.py -lib/crewai/src/crewai/cli/add_crew_to_flow.py -lib/crewai/src/crewai/cli/checkpoint_cli.py -lib/crewai/src/crewai/cli/checkpoint_tui.py -lib/crewai/src/crewai/cli/cli.py -lib/crewai/src/crewai/cli/command.py -lib/crewai/src/crewai/cli/config.py -lib/crewai/src/crewai/cli/constants.py -lib/crewai/src/crewai/cli/create_crew.py -lib/crewai/src/crewai/cli/create_flow.py -lib/crewai/src/crewai/cli/crew_chat.py -lib/crewai/src/crewai/cli/evaluate_crew.py -lib/crewai/src/crewai/cli/git.py -lib/crewai/src/crewai/cli/install_crew.py -lib/crewai/src/crewai/cli/kickoff_flow.py -lib/crewai/src/crewai/cli/memory_tui.py -lib/crewai/src/crewai/cli/plot_flow.py -lib/crewai/src/crewai/cli/plus_api.py -lib/crewai/src/crewai/cli/provider.py -lib/crewai/src/crewai/cli/replay_from_task.py -lib/crewai/src/crewai/cli/reset_memories_command.py -lib/crewai/src/crewai/cli/run_crew.py -lib/crewai/src/crewai/cli/train_crew.py -lib/crewai/src/crewai/cli/update_crew.py -lib/crewai/src/crewai/cli/utils.py -lib/crewai/src/crewai/cli/version.py -lib/crewai/src/crewai/cli/authentication/__init__.py -lib/crewai/src/crewai/cli/authentication/constants.py -lib/crewai/src/crewai/cli/authentication/main.py -lib/crewai/src/crewai/cli/authentication/token.py -lib/crewai/src/crewai/cli/authentication/utils.py -lib/crewai/src/crewai/cli/authentication/providers/__init__.py -lib/crewai/src/crewai/cli/authentication/providers/auth0.py -lib/crewai/src/crewai/cli/authentication/providers/base_provider.py -lib/crewai/src/crewai/cli/authentication/providers/entra_id.py -lib/crewai/src/crewai/cli/authentication/providers/keycloak.py -lib/crewai/src/crewai/cli/authentication/providers/okta.py -lib/crewai/src/crewai/cli/authentication/providers/workos.py -lib/crewai/src/crewai/cli/deploy/__init__.py -lib/crewai/src/crewai/cli/deploy/main.py -lib/crewai/src/crewai/cli/deploy/validate.py -lib/crewai/src/crewai/cli/enterprise/__init__.py -lib/crewai/src/crewai/cli/enterprise/main.py -lib/crewai/src/crewai/cli/organization/__init__.py -lib/crewai/src/crewai/cli/organization/main.py -lib/crewai/src/crewai/cli/remote_template/__init__.py -lib/crewai/src/crewai/cli/remote_template/main.py -lib/crewai/src/crewai/cli/settings/__init__.py -lib/crewai/src/crewai/cli/settings/main.py -lib/crewai/src/crewai/cli/shared/__init__.py -lib/crewai/src/crewai/cli/shared/token_manager.py -lib/crewai/src/crewai/cli/templates/__init__.py -lib/crewai/src/crewai/cli/templates/crew/__init__.py -lib/crewai/src/crewai/cli/templates/crew/crew.py -lib/crewai/src/crewai/cli/templates/crew/main.py -lib/crewai/src/crewai/cli/templates/crew/tools/__init__.py -lib/crewai/src/crewai/cli/templates/crew/tools/custom_tool.py -lib/crewai/src/crewai/cli/templates/flow/__init__.py -lib/crewai/src/crewai/cli/templates/flow/main.py -lib/crewai/src/crewai/cli/templates/flow/crews/content_crew/content_crew.py -lib/crewai/src/crewai/cli/templates/flow/tools/__init__.py -lib/crewai/src/crewai/cli/templates/flow/tools/custom_tool.py -lib/crewai/src/crewai/cli/tools/__init__.py -lib/crewai/src/crewai/cli/tools/main.py -lib/crewai/src/crewai/cli/triggers/__init__.py -lib/crewai/src/crewai/cli/triggers/main.py -lib/crewai/src/crewai/core/__init__.py -lib/crewai/src/crewai/core/providers/__init__.py -lib/crewai/src/crewai/core/providers/content_processor.py -lib/crewai/src/crewai/core/providers/human_input.py -lib/crewai/src/crewai/crews/__init__.py -lib/crewai/src/crewai/crews/crew_output.py -lib/crewai/src/crewai/crews/utils.py -lib/crewai/src/crewai/events/__init__.py -lib/crewai/src/crewai/events/base_event_listener.py -lib/crewai/src/crewai/events/base_events.py -lib/crewai/src/crewai/events/depends.py -lib/crewai/src/crewai/events/event_bus.py -lib/crewai/src/crewai/events/event_context.py -lib/crewai/src/crewai/events/event_listener.py -lib/crewai/src/crewai/events/event_types.py -lib/crewai/src/crewai/events/handler_graph.py -lib/crewai/src/crewai/events/listeners/__init__.py -lib/crewai/src/crewai/events/listeners/tracing/__init__.py -lib/crewai/src/crewai/events/listeners/tracing/first_time_trace_handler.py -lib/crewai/src/crewai/events/listeners/tracing/trace_batch_manager.py -lib/crewai/src/crewai/events/listeners/tracing/trace_listener.py -lib/crewai/src/crewai/events/listeners/tracing/types.py -lib/crewai/src/crewai/events/listeners/tracing/utils.py -lib/crewai/src/crewai/events/types/__init__.py -lib/crewai/src/crewai/events/types/a2a_events.py -lib/crewai/src/crewai/events/types/agent_events.py -lib/crewai/src/crewai/events/types/crew_events.py -lib/crewai/src/crewai/events/types/env_events.py -lib/crewai/src/crewai/events/types/event_bus_types.py -lib/crewai/src/crewai/events/types/flow_events.py -lib/crewai/src/crewai/events/types/knowledge_events.py -lib/crewai/src/crewai/events/types/llm_events.py -lib/crewai/src/crewai/events/types/llm_guardrail_events.py -lib/crewai/src/crewai/events/types/logging_events.py -lib/crewai/src/crewai/events/types/mcp_events.py -lib/crewai/src/crewai/events/types/memory_events.py -lib/crewai/src/crewai/events/types/observation_events.py -lib/crewai/src/crewai/events/types/reasoning_events.py -lib/crewai/src/crewai/events/types/skill_events.py -lib/crewai/src/crewai/events/types/system_events.py -lib/crewai/src/crewai/events/types/task_events.py -lib/crewai/src/crewai/events/types/tool_usage_events.py -lib/crewai/src/crewai/events/utils/__init__.py -lib/crewai/src/crewai/events/utils/console_formatter.py -lib/crewai/src/crewai/events/utils/handlers.py -lib/crewai/src/crewai/experimental/__init__.py -lib/crewai/src/crewai/experimental/agent_executor.py -lib/crewai/src/crewai/experimental/evaluation/__init__.py -lib/crewai/src/crewai/experimental/evaluation/agent_evaluator.py -lib/crewai/src/crewai/experimental/evaluation/base_evaluator.py -lib/crewai/src/crewai/experimental/evaluation/evaluation_display.py -lib/crewai/src/crewai/experimental/evaluation/evaluation_listener.py -lib/crewai/src/crewai/experimental/evaluation/json_parser.py -lib/crewai/src/crewai/experimental/evaluation/testing.py -lib/crewai/src/crewai/experimental/evaluation/experiment/__init__.py -lib/crewai/src/crewai/experimental/evaluation/experiment/result.py -lib/crewai/src/crewai/experimental/evaluation/experiment/result_display.py -lib/crewai/src/crewai/experimental/evaluation/experiment/runner.py -lib/crewai/src/crewai/experimental/evaluation/metrics/__init__.py -lib/crewai/src/crewai/experimental/evaluation/metrics/goal_metrics.py -lib/crewai/src/crewai/experimental/evaluation/metrics/reasoning_metrics.py -lib/crewai/src/crewai/experimental/evaluation/metrics/semantic_quality_metrics.py -lib/crewai/src/crewai/experimental/evaluation/metrics/tools_metrics.py -lib/crewai/src/crewai/flow/__init__.py -lib/crewai/src/crewai/flow/constants.py -lib/crewai/src/crewai/flow/flow.py -lib/crewai/src/crewai/flow/flow_config.py -lib/crewai/src/crewai/flow/flow_context.py -lib/crewai/src/crewai/flow/flow_serializer.py -lib/crewai/src/crewai/flow/flow_trackable.py -lib/crewai/src/crewai/flow/flow_wrappers.py -lib/crewai/src/crewai/flow/human_feedback.py -lib/crewai/src/crewai/flow/input_provider.py -lib/crewai/src/crewai/flow/types.py -lib/crewai/src/crewai/flow/utils.py -lib/crewai/src/crewai/flow/async_feedback/__init__.py -lib/crewai/src/crewai/flow/async_feedback/providers.py -lib/crewai/src/crewai/flow/async_feedback/types.py -lib/crewai/src/crewai/flow/persistence/__init__.py -lib/crewai/src/crewai/flow/persistence/base.py -lib/crewai/src/crewai/flow/persistence/decorators.py -lib/crewai/src/crewai/flow/persistence/sqlite.py -lib/crewai/src/crewai/flow/visualization/__init__.py -lib/crewai/src/crewai/flow/visualization/builder.py -lib/crewai/src/crewai/flow/visualization/schema.py -lib/crewai/src/crewai/flow/visualization/types.py -lib/crewai/src/crewai/flow/visualization/renderers/__init__.py -lib/crewai/src/crewai/flow/visualization/renderers/interactive.py -lib/crewai/src/crewai/hooks/__init__.py -lib/crewai/src/crewai/hooks/decorators.py -lib/crewai/src/crewai/hooks/llm_hooks.py -lib/crewai/src/crewai/hooks/tool_hooks.py -lib/crewai/src/crewai/hooks/types.py -lib/crewai/src/crewai/hooks/wrappers.py -lib/crewai/src/crewai/knowledge/__init__.py -lib/crewai/src/crewai/knowledge/knowledge.py -lib/crewai/src/crewai/knowledge/knowledge_config.py -lib/crewai/src/crewai/knowledge/source/__init__.py -lib/crewai/src/crewai/knowledge/source/base_file_knowledge_source.py -lib/crewai/src/crewai/knowledge/source/base_knowledge_source.py -lib/crewai/src/crewai/knowledge/source/crew_docling_source.py -lib/crewai/src/crewai/knowledge/source/csv_knowledge_source.py -lib/crewai/src/crewai/knowledge/source/excel_knowledge_source.py -lib/crewai/src/crewai/knowledge/source/json_knowledge_source.py -lib/crewai/src/crewai/knowledge/source/pdf_knowledge_source.py -lib/crewai/src/crewai/knowledge/source/string_knowledge_source.py -lib/crewai/src/crewai/knowledge/source/text_file_knowledge_source.py -lib/crewai/src/crewai/knowledge/source/utils/__init__.py -lib/crewai/src/crewai/knowledge/source/utils/source_helper.py -lib/crewai/src/crewai/knowledge/storage/__init__.py -lib/crewai/src/crewai/knowledge/storage/base_knowledge_storage.py -lib/crewai/src/crewai/knowledge/storage/knowledge_storage.py -lib/crewai/src/crewai/knowledge/utils/__init__.py -lib/crewai/src/crewai/knowledge/utils/knowledge_utils.py -lib/crewai/src/crewai/llms/__init__.py -lib/crewai/src/crewai/llms/base_llm.py -lib/crewai/src/crewai/llms/constants.py -lib/crewai/src/crewai/llms/hooks/__init__.py -lib/crewai/src/crewai/llms/hooks/base.py -lib/crewai/src/crewai/llms/hooks/transport.py -lib/crewai/src/crewai/llms/providers/__init__.py -lib/crewai/src/crewai/llms/providers/anthropic/__init__.py -lib/crewai/src/crewai/llms/providers/anthropic/completion.py -lib/crewai/src/crewai/llms/providers/azure/__init__.py -lib/crewai/src/crewai/llms/providers/azure/completion.py -lib/crewai/src/crewai/llms/providers/bedrock/__init__.py -lib/crewai/src/crewai/llms/providers/bedrock/completion.py -lib/crewai/src/crewai/llms/providers/gemini/__init__.py -lib/crewai/src/crewai/llms/providers/gemini/completion.py -lib/crewai/src/crewai/llms/providers/openai/__init__.py -lib/crewai/src/crewai/llms/providers/openai/completion.py -lib/crewai/src/crewai/llms/providers/openai_compatible/__init__.py -lib/crewai/src/crewai/llms/providers/openai_compatible/completion.py -lib/crewai/src/crewai/llms/providers/utils/__init__.py -lib/crewai/src/crewai/llms/providers/utils/common.py -lib/crewai/src/crewai/mcp/__init__.py -lib/crewai/src/crewai/mcp/client.py -lib/crewai/src/crewai/mcp/config.py -lib/crewai/src/crewai/mcp/filters.py -lib/crewai/src/crewai/mcp/tool_resolver.py -lib/crewai/src/crewai/mcp/transports/__init__.py -lib/crewai/src/crewai/mcp/transports/base.py -lib/crewai/src/crewai/mcp/transports/http.py -lib/crewai/src/crewai/mcp/transports/sse.py -lib/crewai/src/crewai/mcp/transports/stdio.py -lib/crewai/src/crewai/memory/__init__.py -lib/crewai/src/crewai/memory/analyze.py -lib/crewai/src/crewai/memory/encoding_flow.py -lib/crewai/src/crewai/memory/memory_scope.py -lib/crewai/src/crewai/memory/recall_flow.py -lib/crewai/src/crewai/memory/types.py -lib/crewai/src/crewai/memory/unified_memory.py -lib/crewai/src/crewai/memory/utils.py -lib/crewai/src/crewai/memory/storage/__init__.py -lib/crewai/src/crewai/memory/storage/backend.py -lib/crewai/src/crewai/memory/storage/kickoff_task_outputs_storage.py -lib/crewai/src/crewai/memory/storage/lancedb_storage.py -lib/crewai/src/crewai/memory/storage/qdrant_edge_storage.py -lib/crewai/src/crewai/project/__init__.py -lib/crewai/src/crewai/project/annotations.py -lib/crewai/src/crewai/project/crew_base.py -lib/crewai/src/crewai/project/utils.py -lib/crewai/src/crewai/project/wrappers.py -lib/crewai/src/crewai/rag/__init__.py -lib/crewai/src/crewai/rag/factory.py -lib/crewai/src/crewai/rag/types.py -lib/crewai/src/crewai/rag/chromadb/__init__.py -lib/crewai/src/crewai/rag/chromadb/client.py -lib/crewai/src/crewai/rag/chromadb/config.py -lib/crewai/src/crewai/rag/chromadb/constants.py -lib/crewai/src/crewai/rag/chromadb/factory.py -lib/crewai/src/crewai/rag/chromadb/types.py -lib/crewai/src/crewai/rag/chromadb/utils.py -lib/crewai/src/crewai/rag/config/__init__.py -lib/crewai/src/crewai/rag/config/base.py -lib/crewai/src/crewai/rag/config/constants.py -lib/crewai/src/crewai/rag/config/types.py -lib/crewai/src/crewai/rag/config/utils.py -lib/crewai/src/crewai/rag/config/optional_imports/__init__.py -lib/crewai/src/crewai/rag/config/optional_imports/base.py -lib/crewai/src/crewai/rag/config/optional_imports/protocols.py -lib/crewai/src/crewai/rag/config/optional_imports/providers.py -lib/crewai/src/crewai/rag/config/optional_imports/types.py -lib/crewai/src/crewai/rag/core/__init__.py -lib/crewai/src/crewai/rag/core/base_client.py -lib/crewai/src/crewai/rag/core/base_embeddings_callable.py -lib/crewai/src/crewai/rag/core/base_embeddings_provider.py -lib/crewai/src/crewai/rag/core/exceptions.py -lib/crewai/src/crewai/rag/core/types.py -lib/crewai/src/crewai/rag/embeddings/__init__.py -lib/crewai/src/crewai/rag/embeddings/factory.py -lib/crewai/src/crewai/rag/embeddings/types.py -lib/crewai/src/crewai/rag/embeddings/providers/__init__.py -lib/crewai/src/crewai/rag/embeddings/providers/aws/__init__.py -lib/crewai/src/crewai/rag/embeddings/providers/aws/bedrock.py -lib/crewai/src/crewai/rag/embeddings/providers/aws/types.py -lib/crewai/src/crewai/rag/embeddings/providers/cohere/__init__.py -lib/crewai/src/crewai/rag/embeddings/providers/cohere/cohere_provider.py -lib/crewai/src/crewai/rag/embeddings/providers/cohere/types.py -lib/crewai/src/crewai/rag/embeddings/providers/custom/__init__.py -lib/crewai/src/crewai/rag/embeddings/providers/custom/custom_provider.py -lib/crewai/src/crewai/rag/embeddings/providers/custom/embedding_callable.py -lib/crewai/src/crewai/rag/embeddings/providers/custom/types.py -lib/crewai/src/crewai/rag/embeddings/providers/google/__init__.py -lib/crewai/src/crewai/rag/embeddings/providers/google/genai_vertex_embedding.py -lib/crewai/src/crewai/rag/embeddings/providers/google/generative_ai.py -lib/crewai/src/crewai/rag/embeddings/providers/google/types.py -lib/crewai/src/crewai/rag/embeddings/providers/google/vertex.py -lib/crewai/src/crewai/rag/embeddings/providers/huggingface/__init__.py -lib/crewai/src/crewai/rag/embeddings/providers/huggingface/huggingface_provider.py -lib/crewai/src/crewai/rag/embeddings/providers/huggingface/types.py -lib/crewai/src/crewai/rag/embeddings/providers/ibm/__init__.py -lib/crewai/src/crewai/rag/embeddings/providers/ibm/embedding_callable.py -lib/crewai/src/crewai/rag/embeddings/providers/ibm/types.py -lib/crewai/src/crewai/rag/embeddings/providers/ibm/watsonx.py -lib/crewai/src/crewai/rag/embeddings/providers/instructor/__init__.py -lib/crewai/src/crewai/rag/embeddings/providers/instructor/instructor_provider.py -lib/crewai/src/crewai/rag/embeddings/providers/instructor/types.py -lib/crewai/src/crewai/rag/embeddings/providers/jina/__init__.py -lib/crewai/src/crewai/rag/embeddings/providers/jina/jina_provider.py -lib/crewai/src/crewai/rag/embeddings/providers/jina/types.py -lib/crewai/src/crewai/rag/embeddings/providers/microsoft/__init__.py -lib/crewai/src/crewai/rag/embeddings/providers/microsoft/azure.py -lib/crewai/src/crewai/rag/embeddings/providers/microsoft/types.py -lib/crewai/src/crewai/rag/embeddings/providers/ollama/__init__.py -lib/crewai/src/crewai/rag/embeddings/providers/ollama/ollama_provider.py -lib/crewai/src/crewai/rag/embeddings/providers/ollama/types.py -lib/crewai/src/crewai/rag/embeddings/providers/onnx/__init__.py -lib/crewai/src/crewai/rag/embeddings/providers/onnx/onnx_provider.py -lib/crewai/src/crewai/rag/embeddings/providers/onnx/types.py -lib/crewai/src/crewai/rag/embeddings/providers/openai/__init__.py -lib/crewai/src/crewai/rag/embeddings/providers/openai/openai_provider.py -lib/crewai/src/crewai/rag/embeddings/providers/openai/types.py -lib/crewai/src/crewai/rag/embeddings/providers/openclip/__init__.py -lib/crewai/src/crewai/rag/embeddings/providers/openclip/openclip_provider.py -lib/crewai/src/crewai/rag/embeddings/providers/openclip/types.py -lib/crewai/src/crewai/rag/embeddings/providers/roboflow/__init__.py -lib/crewai/src/crewai/rag/embeddings/providers/roboflow/roboflow_provider.py -lib/crewai/src/crewai/rag/embeddings/providers/roboflow/types.py -lib/crewai/src/crewai/rag/embeddings/providers/sentence_transformer/__init__.py -lib/crewai/src/crewai/rag/embeddings/providers/sentence_transformer/sentence_transformer_provider.py -lib/crewai/src/crewai/rag/embeddings/providers/sentence_transformer/types.py -lib/crewai/src/crewai/rag/embeddings/providers/text2vec/__init__.py -lib/crewai/src/crewai/rag/embeddings/providers/text2vec/text2vec_provider.py -lib/crewai/src/crewai/rag/embeddings/providers/text2vec/types.py -lib/crewai/src/crewai/rag/embeddings/providers/voyageai/__init__.py -lib/crewai/src/crewai/rag/embeddings/providers/voyageai/embedding_callable.py -lib/crewai/src/crewai/rag/embeddings/providers/voyageai/types.py -lib/crewai/src/crewai/rag/embeddings/providers/voyageai/voyageai_provider.py -lib/crewai/src/crewai/rag/qdrant/__init__.py -lib/crewai/src/crewai/rag/qdrant/client.py -lib/crewai/src/crewai/rag/qdrant/config.py -lib/crewai/src/crewai/rag/qdrant/constants.py -lib/crewai/src/crewai/rag/qdrant/factory.py -lib/crewai/src/crewai/rag/qdrant/types.py -lib/crewai/src/crewai/rag/qdrant/utils.py -lib/crewai/src/crewai/rag/storage/__init__.py -lib/crewai/src/crewai/rag/storage/base_rag_storage.py -lib/crewai/src/crewai/security/__init__.py -lib/crewai/src/crewai/security/constants.py -lib/crewai/src/crewai/security/fingerprint.py -lib/crewai/src/crewai/security/security_config.py -lib/crewai/src/crewai/skills/__init__.py -lib/crewai/src/crewai/skills/loader.py -lib/crewai/src/crewai/skills/models.py -lib/crewai/src/crewai/skills/parser.py -lib/crewai/src/crewai/skills/validation.py -lib/crewai/src/crewai/state/__init__.py -lib/crewai/src/crewai/state/checkpoint_config.py -lib/crewai/src/crewai/state/checkpoint_listener.py -lib/crewai/src/crewai/state/event_record.py -lib/crewai/src/crewai/state/runtime.py -lib/crewai/src/crewai/state/provider/__init__.py -lib/crewai/src/crewai/state/provider/core.py -lib/crewai/src/crewai/state/provider/json_provider.py -lib/crewai/src/crewai/state/provider/sqlite_provider.py -lib/crewai/src/crewai/state/provider/utils.py -lib/crewai/src/crewai/tasks/__init__.py -lib/crewai/src/crewai/tasks/conditional_task.py -lib/crewai/src/crewai/tasks/hallucination_guardrail.py -lib/crewai/src/crewai/tasks/llm_guardrail.py -lib/crewai/src/crewai/tasks/output_format.py -lib/crewai/src/crewai/tasks/task_output.py -lib/crewai/src/crewai/telemetry/__init__.py -lib/crewai/src/crewai/telemetry/constants.py -lib/crewai/src/crewai/telemetry/telemetry.py -lib/crewai/src/crewai/telemetry/utils.py -lib/crewai/src/crewai/tools/__init__.py -lib/crewai/src/crewai/tools/base_tool.py -lib/crewai/src/crewai/tools/mcp_native_tool.py -lib/crewai/src/crewai/tools/mcp_tool_wrapper.py -lib/crewai/src/crewai/tools/memory_tools.py -lib/crewai/src/crewai/tools/structured_tool.py -lib/crewai/src/crewai/tools/tool_calling.py -lib/crewai/src/crewai/tools/tool_types.py -lib/crewai/src/crewai/tools/tool_usage.py -lib/crewai/src/crewai/tools/agent_tools/__init__.py -lib/crewai/src/crewai/tools/agent_tools/add_image_tool.py -lib/crewai/src/crewai/tools/agent_tools/agent_tools.py -lib/crewai/src/crewai/tools/agent_tools/ask_question_tool.py -lib/crewai/src/crewai/tools/agent_tools/base_agent_tools.py -lib/crewai/src/crewai/tools/agent_tools/delegate_work_tool.py -lib/crewai/src/crewai/tools/agent_tools/read_file_tool.py -lib/crewai/src/crewai/tools/cache_tools/__init__.py -lib/crewai/src/crewai/tools/cache_tools/cache_tools.py -lib/crewai/src/crewai/types/__init__.py -lib/crewai/src/crewai/types/callback.py -lib/crewai/src/crewai/types/crew_chat.py -lib/crewai/src/crewai/types/streaming.py -lib/crewai/src/crewai/types/usage_metrics.py -lib/crewai/src/crewai/types/utils.py -lib/crewai/src/crewai/utilities/__init__.py -lib/crewai/src/crewai/utilities/agent_utils.py -lib/crewai/src/crewai/utilities/config.py -lib/crewai/src/crewai/utilities/constants.py -lib/crewai/src/crewai/utilities/converter.py -lib/crewai/src/crewai/utilities/crew_json_encoder.py -lib/crewai/src/crewai/utilities/env.py -lib/crewai/src/crewai/utilities/errors.py -lib/crewai/src/crewai/utilities/file_handler.py -lib/crewai/src/crewai/utilities/file_store.py -lib/crewai/src/crewai/utilities/formatter.py -lib/crewai/src/crewai/utilities/guardrail.py -lib/crewai/src/crewai/utilities/guardrail_types.py -lib/crewai/src/crewai/utilities/i18n.py -lib/crewai/src/crewai/utilities/import_utils.py -lib/crewai/src/crewai/utilities/internal_instructor.py -lib/crewai/src/crewai/utilities/llm_utils.py -lib/crewai/src/crewai/utilities/lock_store.py -lib/crewai/src/crewai/utilities/logger.py -lib/crewai/src/crewai/utilities/logger_utils.py -lib/crewai/src/crewai/utilities/paths.py -lib/crewai/src/crewai/utilities/planning_handler.py -lib/crewai/src/crewai/utilities/planning_types.py -lib/crewai/src/crewai/utilities/printer.py -lib/crewai/src/crewai/utilities/prompts.py -lib/crewai/src/crewai/utilities/pydantic_schema_utils.py -lib/crewai/src/crewai/utilities/reasoning_handler.py -lib/crewai/src/crewai/utilities/rpm_controller.py -lib/crewai/src/crewai/utilities/rw_lock.py -lib/crewai/src/crewai/utilities/serialization.py -lib/crewai/src/crewai/utilities/step_execution_context.py -lib/crewai/src/crewai/utilities/streaming.py -lib/crewai/src/crewai/utilities/string_utils.py -lib/crewai/src/crewai/utilities/task_output_storage_handler.py -lib/crewai/src/crewai/utilities/token_counter_callback.py -lib/crewai/src/crewai/utilities/tool_utils.py -lib/crewai/src/crewai/utilities/training_converter.py -lib/crewai/src/crewai/utilities/training_handler.py -lib/crewai/src/crewai/utilities/types.py -lib/crewai/src/crewai/utilities/version.py -lib/crewai/src/crewai/utilities/crew/__init__.py -lib/crewai/src/crewai/utilities/crew/crew_context.py -lib/crewai/src/crewai/utilities/crew/models.py -lib/crewai/src/crewai/utilities/evaluators/__init__.py -lib/crewai/src/crewai/utilities/evaluators/crew_evaluator_handler.py -lib/crewai/src/crewai/utilities/evaluators/task_evaluator.py -lib/crewai/src/crewai/utilities/exceptions/__init__.py -lib/crewai/src/crewai/utilities/exceptions/context_window_exceeding_exception.py -lib/crewai/tests/__init__.py -lib/crewai/tests/test_agent_multimodal.py -lib/crewai/tests/test_async_human_feedback.py -lib/crewai/tests/test_callback.py -lib/crewai/tests/test_checkpoint.py -lib/crewai/tests/test_checkpoint_cli.py -lib/crewai/tests/test_context.py -lib/crewai/tests/test_crew.py -lib/crewai/tests/test_crew_multimodal.py -lib/crewai/tests/test_crew_thread_safety.py -lib/crewai/tests/test_custom_llm.py -lib/crewai/tests/test_event_record.py -lib/crewai/tests/test_flow.py -lib/crewai/tests/test_flow_ask.py -lib/crewai/tests/test_flow_default_override.py -lib/crewai/tests/test_flow_human_input_integration.py -lib/crewai/tests/test_flow_multimodal.py -lib/crewai/tests/test_flow_persistence.py -lib/crewai/tests/test_flow_resumability_regression.py -lib/crewai/tests/test_flow_serializer.py -lib/crewai/tests/test_flow_visualization.py -lib/crewai/tests/test_hallucination_guardrail.py -lib/crewai/tests/test_human_feedback_decorator.py -lib/crewai/tests/test_human_feedback_integration.py -lib/crewai/tests/test_imports.py -lib/crewai/tests/test_llm.py -lib/crewai/tests/test_markdown_task.py -lib/crewai/tests/test_multimodal_validation.py -lib/crewai/tests/test_project.py -lib/crewai/tests/test_streaming.py -lib/crewai/tests/test_streaming_integration.py -lib/crewai/tests/test_task.py -lib/crewai/tests/test_task_guardrails.py -lib/crewai/tests/utils.py -lib/crewai/tests/a2a/test_a2a_integration.py -lib/crewai/tests/a2a/extensions/test_a2ui_schema_conformance.py -lib/crewai/tests/a2a/utils/test_agent_card.py -lib/crewai/tests/a2a/utils/test_task.py -lib/crewai/tests/agents/__init__.py -lib/crewai/tests/agents/test_a2a_trust_completion_status.py -lib/crewai/tests/agents/test_agent.py -lib/crewai/tests/agents/test_agent_a2a_kickoff.py -lib/crewai/tests/agents/test_agent_a2a_wrapping.py -lib/crewai/tests/agents/test_agent_executor.py -lib/crewai/tests/agents/test_agent_inject_date.py -lib/crewai/tests/agents/test_agent_reasoning.py -lib/crewai/tests/agents/test_async_agent_executor.py -lib/crewai/tests/agents/test_crew_agent_parser.py -lib/crewai/tests/agents/test_lite_agent.py -lib/crewai/tests/agents/test_native_tool_calling.py -lib/crewai/tests/agents/agent_adapters/__init__.py -lib/crewai/tests/agents/agent_adapters/test_base_agent_adapter.py -lib/crewai/tests/agents/agent_adapters/test_base_tool_adapter.py -lib/crewai/tests/agents/agent_builder/__init__.py -lib/crewai/tests/agents/agent_builder/test_base_agent.py -lib/crewai/tests/cli/__init__.py -lib/crewai/tests/cli/test_cli.py -lib/crewai/tests/cli/test_config.py -lib/crewai/tests/cli/test_constants.py -lib/crewai/tests/cli/test_create_crew.py -lib/crewai/tests/cli/test_crew_test.py -lib/crewai/tests/cli/test_git.py -lib/crewai/tests/cli/test_plus_api.py -lib/crewai/tests/cli/test_settings_command.py -lib/crewai/tests/cli/test_token_manager.py -lib/crewai/tests/cli/test_train_crew.py -lib/crewai/tests/cli/test_utils.py -lib/crewai/tests/cli/test_version.py -lib/crewai/tests/cli/authentication/__init__.py -lib/crewai/tests/cli/authentication/test_auth_main.py -lib/crewai/tests/cli/authentication/test_utils.py -lib/crewai/tests/cli/authentication/providers/__init__.py -lib/crewai/tests/cli/authentication/providers/test_auth0.py -lib/crewai/tests/cli/authentication/providers/test_entra_id.py -lib/crewai/tests/cli/authentication/providers/test_keycloak.py -lib/crewai/tests/cli/authentication/providers/test_okta.py -lib/crewai/tests/cli/authentication/providers/test_workos.py -lib/crewai/tests/cli/deploy/__init__.py -lib/crewai/tests/cli/deploy/test_deploy_main.py -lib/crewai/tests/cli/deploy/test_validate.py -lib/crewai/tests/cli/enterprise/__init__.py -lib/crewai/tests/cli/enterprise/test_main.py -lib/crewai/tests/cli/organization/__init__.py -lib/crewai/tests/cli/organization/test_main.py -lib/crewai/tests/cli/remote_template/__init__.py -lib/crewai/tests/cli/remote_template/test_main.py -lib/crewai/tests/cli/tools/__init__.py -lib/crewai/tests/cli/tools/test_main.py -lib/crewai/tests/cli/triggers/test_main.py -lib/crewai/tests/crew/test_async_crew.py -lib/crewai/tests/events/test_depends.py -lib/crewai/tests/events/test_event_context.py -lib/crewai/tests/events/test_event_ordering.py -lib/crewai/tests/events/test_llm_usage_event.py -lib/crewai/tests/events/test_tracing_utils_machine_id.py -lib/crewai/tests/events/types/test_system_events.py -lib/crewai/tests/experimental/__init__.py -lib/crewai/tests/experimental/evaluation/__init__.py -lib/crewai/tests/experimental/evaluation/test_agent_evaluator.py -lib/crewai/tests/experimental/evaluation/test_experiment_result.py -lib/crewai/tests/experimental/evaluation/test_experiment_runner.py -lib/crewai/tests/experimental/evaluation/metrics/__init__.py -lib/crewai/tests/experimental/evaluation/metrics/test_base_evaluation_metrics.py -lib/crewai/tests/experimental/evaluation/metrics/test_goal_metrics.py -lib/crewai/tests/experimental/evaluation/metrics/test_reasoning_metrics.py -lib/crewai/tests/experimental/evaluation/metrics/test_semantic_quality_metrics.py -lib/crewai/tests/experimental/evaluation/metrics/test_tools_metrics.py -lib/crewai/tests/hooks/__init__.py -lib/crewai/tests/hooks/test_crew_scoped_hooks.py -lib/crewai/tests/hooks/test_decorators.py -lib/crewai/tests/hooks/test_human_approval.py -lib/crewai/tests/hooks/test_llm_hooks.py -lib/crewai/tests/hooks/test_tool_hooks.py -lib/crewai/tests/knowledge/__init__.py -lib/crewai/tests/knowledge/test_async_knowledge.py -lib/crewai/tests/knowledge/test_knowledge.py -lib/crewai/tests/knowledge/test_knowledge_searchresult.py -lib/crewai/tests/knowledge/test_knowledge_storage_integration.py -lib/crewai/tests/llms/__init__.py -lib/crewai/tests/llms/test_multimodal.py -lib/crewai/tests/llms/test_multimodal_integration.py -lib/crewai/tests/llms/test_tool_call_streaming.py -lib/crewai/tests/llms/anthropic/test_anthropic.py -lib/crewai/tests/llms/anthropic/test_anthropic_async.py -lib/crewai/tests/llms/azure/__init__.py -lib/crewai/tests/llms/azure/test_azure.py -lib/crewai/tests/llms/azure/test_azure_async.py -lib/crewai/tests/llms/bedrock/test_bedrock.py -lib/crewai/tests/llms/bedrock/test_bedrock_async.py -lib/crewai/tests/llms/google/test_google.py -lib/crewai/tests/llms/google/test_google_async.py -lib/crewai/tests/llms/hooks/__init__.py -lib/crewai/tests/llms/hooks/test_anthropic_interceptor.py -lib/crewai/tests/llms/hooks/test_base_interceptor.py -lib/crewai/tests/llms/hooks/test_openai_interceptor.py -lib/crewai/tests/llms/hooks/test_transport.py -lib/crewai/tests/llms/hooks/test_unsupported_providers.py -lib/crewai/tests/llms/litellm/__init__.py -lib/crewai/tests/llms/litellm/test_litellm_async.py -lib/crewai/tests/llms/openai/test_openai.py -lib/crewai/tests/llms/openai/test_openai_async.py -lib/crewai/tests/llms/openai_compatible/__init__.py -lib/crewai/tests/llms/openai_compatible/test_openai_compatible.py -lib/crewai/tests/mcp/__init__.py -lib/crewai/tests/mcp/test_amp_mcp.py -lib/crewai/tests/mcp/test_mcp_config.py -lib/crewai/tests/mcp/test_sse_transport.py -lib/crewai/tests/memory/__init__.py -lib/crewai/tests/memory/test_concurrent_storage.py -lib/crewai/tests/memory/test_memory_root_scope.py -lib/crewai/tests/memory/test_qdrant_edge_storage.py -lib/crewai/tests/memory/test_unified_memory.py -lib/crewai/tests/pipeline/__init__.py -lib/crewai/tests/project/test_callback_with_taskoutput.py -lib/crewai/tests/rag/__init__.py -lib/crewai/tests/rag/test_error_handling.py -lib/crewai/tests/rag/chromadb/__init__.py -lib/crewai/tests/rag/chromadb/test_client.py -lib/crewai/tests/rag/chromadb/test_utils.py -lib/crewai/tests/rag/config/test_factory.py -lib/crewai/tests/rag/config/test_optional_imports.py -lib/crewai/tests/rag/embeddings/test_backward_compatibility.py -lib/crewai/tests/rag/embeddings/test_embedding_factory.py -lib/crewai/tests/rag/embeddings/test_factory_azure.py -lib/crewai/tests/rag/embeddings/test_google_vertex_memory_integration.py -lib/crewai/tests/rag/qdrant/test_client.py -lib/crewai/tests/security/__init__.py -lib/crewai/tests/security/test_deterministic_fingerprints.py -lib/crewai/tests/security/test_examples.py -lib/crewai/tests/security/test_fingerprint.py -lib/crewai/tests/security/test_integration.py -lib/crewai/tests/security/test_security_config.py -lib/crewai/tests/skills/__init__.py -lib/crewai/tests/skills/test_integration.py -lib/crewai/tests/skills/test_loader.py -lib/crewai/tests/skills/test_models.py -lib/crewai/tests/skills/test_parser.py -lib/crewai/tests/skills/test_validation.py -lib/crewai/tests/storage/__init__.py -lib/crewai/tests/task/test_async_task.py -lib/crewai/tests/telemetry/__init__.py -lib/crewai/tests/telemetry/test_execution_span_assignment.py -lib/crewai/tests/telemetry/test_flow_crew_span_integration.py -lib/crewai/tests/telemetry/test_telemetry.py -lib/crewai/tests/telemetry/test_telemetry_disable.py -lib/crewai/tests/tools/__init__.py -lib/crewai/tests/tools/test_async_tools.py -lib/crewai/tests/tools/test_base_tool.py -lib/crewai/tests/tools/test_structured_tool.py -lib/crewai/tests/tools/test_tool_usage.py -lib/crewai/tests/tools/test_tool_usage_limit.py -lib/crewai/tests/tools/agent_tools/__init__.py -lib/crewai/tests/tools/agent_tools/test_agent_tools.py -lib/crewai/tests/tools/agent_tools/test_read_file_tool.py -lib/crewai/tests/tracing/__init__.py -lib/crewai/tests/tracing/test_trace_enable_disable.py -lib/crewai/tests/tracing/test_tracing.py -lib/crewai/tests/utilities/__init__.py -lib/crewai/tests/utilities/test_agent_utils.py -lib/crewai/tests/utilities/test_console_formatter_pause_resume.py -lib/crewai/tests/utilities/test_converter.py -lib/crewai/tests/utilities/test_events.py -lib/crewai/tests/utilities/test_file_handler.py -lib/crewai/tests/utilities/test_file_store.py -lib/crewai/tests/utilities/test_files.py -lib/crewai/tests/utilities/test_i18n.py -lib/crewai/tests/utilities/test_import_utils.py -lib/crewai/tests/utilities/test_knowledge_planning.py -lib/crewai/tests/utilities/test_llm_utils.py -lib/crewai/tests/utilities/test_lock_store.py -lib/crewai/tests/utilities/test_planning_handler.py -lib/crewai/tests/utilities/test_planning_types.py -lib/crewai/tests/utilities/test_prompts_no_thought_leakage.py -lib/crewai/tests/utilities/test_pydantic_schema_utils.py -lib/crewai/tests/utilities/test_serialization.py -lib/crewai/tests/utilities/test_string_utils.py -lib/crewai/tests/utilities/test_structured_planning.py -lib/crewai/tests/utilities/test_summarize_integration.py -lib/crewai/tests/utilities/test_training_converter.py -lib/crewai/tests/utilities/test_training_handler.py -lib/crewai/tests/utilities/crew/__init__.py -lib/crewai/tests/utilities/crew/test_crew_context.py -lib/crewai/tests/utilities/evaluators/__init__.py -lib/crewai/tests/utilities/evaluators/test_crew_evaluator_handler.py -lib/crewai/tests/utilities/evaluators/test_task_evaluator.py -lib/crewai/tests/utilities/events/__init__.py -lib/crewai/tests/utilities/events/test_async_event_bus.py -lib/crewai/tests/utilities/events/test_crewai_event_bus.py -lib/crewai/tests/utilities/events/test_rw_lock.py -lib/crewai/tests/utilities/events/test_shutdown.py -lib/crewai/tests/utilities/events/test_thread_safety.py -lib/devtools/src/crewai_devtools/__init__.py -lib/devtools/src/crewai_devtools/cli.py -lib/devtools/src/crewai_devtools/docs_check.py -lib/devtools/src/crewai_devtools/prompts.py -lib/devtools/tests/__init__.py -lib/devtools/tests/test_toml_updates.py \ No newline at end of file diff --git a/UNKNOWN.egg-info/dependency_links.txt b/UNKNOWN.egg-info/dependency_links.txt deleted file mode 100644 index 8b13789179..0000000000 --- a/UNKNOWN.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/UNKNOWN.egg-info/top_level.txt b/UNKNOWN.egg-info/top_level.txt deleted file mode 100644 index a65b41774a..0000000000 --- a/UNKNOWN.egg-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -lib From 12c77a26a9fe907608d1547b12e97896b53dfb2f Mon Sep 17 00:00:00 2001 From: Joao Moura Date: Tue, 21 Apr 2026 21:28:04 -0700 Subject: [PATCH 05/10] fix: add MCPToolResolver to TYPE_CHECKING imports Fixes F821 (ruff) and name-defined (mypy) from lazy-loading the MCP import. The type annotation on _mcp_resolver needs the name available at type-check time. --- lib/crewai/src/crewai/agent/core.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/crewai/src/crewai/agent/core.py b/lib/crewai/src/crewai/agent/core.py index 5b45a9320d..a2df8c2b97 100644 --- a/lib/crewai/src/crewai/agent/core.py +++ b/lib/crewai/src/crewai/agent/core.py @@ -118,6 +118,7 @@ from crewai.a2a.config import A2AClientConfig, A2AConfig, A2AServerConfig from crewai.agents.agent_builder.base_agent import PlatformAppOrAction + from crewai.mcp.tool_resolver import MCPToolResolver from crewai.task import Task from crewai.tools.base_tool import BaseTool from crewai.tools.structured_tool import CrewStructuredTool From bbecebdd3307bfc0f92adf969716d1a1b2a89860 Mon Sep 17 00:00:00 2001 From: Joao Moura Date: Tue, 21 Apr 2026 21:42:36 -0700 Subject: [PATCH 06/10] fix: bump lxml to >=5.4.0 for GHSA-vfmq-68hx-4jfw lxml 5.3.2 has a known vulnerability. Bump to 5.4.0+ which includes the fix (libxml2 2.13.8). The previous <5.4.0 pin was for etree import issues that have since been resolved. --- lib/crewai-tools/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/crewai-tools/pyproject.toml b/lib/crewai-tools/pyproject.toml index a43e276531..7cf64465d3 100644 --- a/lib/crewai-tools/pyproject.toml +++ b/lib/crewai-tools/pyproject.toml @@ -112,7 +112,7 @@ github = [ ] rag = [ "python-docx>=1.1.0", - "lxml>=5.3.0,<5.4.0", # Pin to avoid etree import issues in 5.4.0 + "lxml>=6.1.0,<7", # 6.1.0+ required for GHSA-vfmq-68hx-4jfw (XXE in iterparse) ] xml = [ "unstructured[local-inference, all-docs]>=0.17.2" From 420420fc280957a23b8d6d98d44c42538c97c1a5 Mon Sep 17 00:00:00 2001 From: Joao Moura Date: Tue, 21 Apr 2026 21:49:26 -0700 Subject: [PATCH 07/10] fix: bump exclude-newer to 2026-04-22 for lxml 6.1.0 resolution lxml 6.1.0 (GHSA fix) was released April 17 but the exclude-newer date was set to April 17, missing it by timestamp. Bump to April 22. --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 1b8aea627c..754b4d6353 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -164,7 +164,7 @@ info = "Commits must follow Conventional Commits 1.0.0." [tool.uv] # Pinned to include the security patch releases (authlib 1.6.11, # langchain-text-splitters 1.1.2) uploaded on 2026-04-16. -exclude-newer = "2026-04-17" +exclude-newer = "2026-04-22" # composio-core pins rich<14 but textual requires rich>=14. # onnxruntime 1.24+ dropped Python 3.10 wheels; cap it so qdrant[fastembed] resolves on 3.10. From d6e7cccd62415569f64e8e174a97121049d2070d Mon Sep 17 00:00:00 2001 From: Joao Moura Date: Tue, 21 Apr 2026 21:56:14 -0700 Subject: [PATCH 08/10] perf: add import time benchmark script scripts/benchmark_import_time.py measures import crewai cold start in fresh subprocesses. Supports --runs, --json (for CI), and --threshold (fail if median exceeds N seconds). The companion GitHub Action workflow needs to be pushed separately (requires workflow scope). --- scripts/benchmark_import_time.py | 76 ++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100755 scripts/benchmark_import_time.py diff --git a/scripts/benchmark_import_time.py b/scripts/benchmark_import_time.py new file mode 100755 index 0000000000..e44b2272a0 --- /dev/null +++ b/scripts/benchmark_import_time.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python3 +"""Benchmark `import crewai` cold start time. + +Usage: + python scripts/benchmark_import_time.py [--runs N] [--json] + +Spawns a fresh Python subprocess for each run to ensure cold imports. +Prints median, mean, min, max across all runs. +With --json, outputs machine-readable results for CI. +""" +import argparse +import json +import statistics +import subprocess +import sys + + +IMPORT_SCRIPT = "import time; t0 = time.perf_counter(); import crewai; print(time.perf_counter() - t0)" + + +def measure_import(python: str = sys.executable) -> float: + """Run a single cold-import measurement in a subprocess.""" + result = subprocess.run( + [python, "-c", IMPORT_SCRIPT], + capture_output=True, + text=True, + env={"PATH": "", "VIRTUAL_ENV": "", "PYTHONPATH": ""}, + timeout=30, + ) + if result.returncode != 0: + raise RuntimeError(f"Import failed: {result.stderr.strip()}") + return float(result.stdout.strip()) + + +def main(): + parser = argparse.ArgumentParser(description="Benchmark crewai import time") + parser.add_argument("--runs", type=int, default=5, help="Number of runs (default: 5)") + parser.add_argument("--json", action="store_true", help="Output JSON for CI") + parser.add_argument("--threshold", type=float, default=None, + help="Fail if median exceeds this value (seconds)") + args = parser.parse_args() + + times = [] + for i in range(args.runs): + t = measure_import() + times.append(t) + if not args.json: + print(f" Run {i + 1}: {t:.3f}s") + + median = statistics.median(times) + mean = statistics.mean(times) + stdev = statistics.stdev(times) if len(times) > 1 else 0.0 + + result = { + "runs": args.runs, + "median_s": round(median, 3), + "mean_s": round(mean, 3), + "stdev_s": round(stdev, 3), + "min_s": round(min(times), 3), + "max_s": round(max(times), 3), + } + + if args.json: + print(json.dumps(result)) + else: + print(f"\n Median: {median:.3f}s") + print(f" Mean: {mean:.3f}s ± {stdev:.3f}s") + print(f" Range: {min(times):.3f}s – {max(times):.3f}s") + + if args.threshold and median > args.threshold: + print(f"\n ❌ FAILED: median {median:.3f}s exceeds threshold {args.threshold:.3f}s") + sys.exit(1) + + +if __name__ == "__main__": + main() From feac72e04392e5db8480df82cac60775d32d112e Mon Sep 17 00:00:00 2001 From: Joao Moura Date: Tue, 21 Apr 2026 22:01:48 -0700 Subject: [PATCH 09/10] new action --- .github/workflows/import-time.yml | 100 ++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 .github/workflows/import-time.yml diff --git a/.github/workflows/import-time.yml b/.github/workflows/import-time.yml new file mode 100644 index 0000000000..6b9d759652 --- /dev/null +++ b/.github/workflows/import-time.yml @@ -0,0 +1,100 @@ +name: Import Time Guard + +on: + pull_request: + paths: + - "lib/crewai/src/**" + - "lib/crewai/pyproject.toml" + - "pyproject.toml" + +jobs: + import-time: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.12"] + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: astral-sh/setup-uv@v6 + with: + version: "0.11.3" + enable-cache: true + + - name: Install the project + run: uv sync --all-extras --no-dev + env: + UV_PYTHON: ${{ matrix.python-version }} + + - name: Benchmark PR branch + id: pr + run: | + result=$(uv run python scripts/benchmark_import_time.py --runs 5 --json) + echo "result=$result" >> "$GITHUB_OUTPUT" + echo "pr_median=$(echo $result | python3 -c 'import sys,json; print(json.load(sys.stdin)["median_s"])')" >> "$GITHUB_OUTPUT" + echo "### PR Branch Import Time" >> "$GITHUB_STEP_SUMMARY" + echo "$result" | python3 -c " + import sys, json + d = json.load(sys.stdin) + print(f'- Median: {d[\"median_s\"]}s') + print(f'- Mean: {d[\"mean_s\"]}s ± {d[\"stdev_s\"]}s') + print(f'- Range: {d[\"min_s\"]}s – {d[\"max_s\"]}s') + " >> "$GITHUB_STEP_SUMMARY" + env: + UV_PYTHON: ${{ matrix.python-version }} + + - name: Checkout base branch + run: git checkout ${{ github.event.pull_request.base.sha }} + + - name: Install base branch + run: uv sync --all-extras --no-dev + env: + UV_PYTHON: ${{ matrix.python-version }} + + - name: Benchmark base branch + id: base + run: | + result=$(uv run python scripts/benchmark_import_time.py --runs 5 --json 2>/dev/null || echo '{"median_s": 0}') + echo "result=$result" >> "$GITHUB_OUTPUT" + echo "base_median=$(echo $result | python3 -c 'import sys,json; print(json.load(sys.stdin)["median_s"])')" >> "$GITHUB_OUTPUT" + echo "### Base Branch Import Time" >> "$GITHUB_STEP_SUMMARY" + echo "$result" | python3 -c " + import sys, json + d = json.load(sys.stdin) + if d.get('median_s', 0) > 0: + print(f'- Median: {d[\"median_s\"]}s') + else: + print('- Benchmark script not present on base branch (skip comparison)') + " >> "$GITHUB_STEP_SUMMARY" + env: + UV_PYTHON: ${{ matrix.python-version }} + + - name: Compare and gate + run: | + pr_median=${{ steps.pr.outputs.pr_median }} + base_median=${{ steps.base.outputs.base_median }} + + python3 -c " + pr = float('$pr_median') + base = float('$base_median') + + if base <= 0: + print('⏭️ No base benchmark available — skipping comparison.') + exit(0) + + change_pct = ((pr - base) / base) * 100 + print(f'Base: {base:.3f}s') + print(f'PR: {pr:.3f}s') + print(f'Change: {change_pct:+.1f}%') + print() + + if change_pct > 5: + print(f'❌ BLOCKED: Import time regressed by {change_pct:.1f}% (threshold: 5%)') + exit(1) + elif change_pct > 0: + print(f'⚠️ Slight regression ({change_pct:.1f}%) but within 5% threshold.') + else: + print(f'✅ Import time improved by {abs(change_pct):.1f}%') + " From 634ff3deeab9e3df2719099425ef5dea4e0f7bc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moura?= Date: Wed, 22 Apr 2026 02:04:02 -0300 Subject: [PATCH 10/10] Potential fix for pull request finding 'CodeQL / Workflow does not contain permissions' Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --- .github/workflows/import-time.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/import-time.yml b/.github/workflows/import-time.yml index 6b9d759652..7c0126b239 100644 --- a/.github/workflows/import-time.yml +++ b/.github/workflows/import-time.yml @@ -7,6 +7,9 @@ on: - "lib/crewai/pyproject.toml" - "pyproject.toml" +permissions: + contents: read + jobs: import-time: runs-on: ubuntu-latest