refactor: extract a2a into standalone crewai-a2a package

Move crewai.a2a into lib/crewai-a2a as its own workspace package, importable as crewai_a2a. The crewai[a2a] extra now pulls in crewai-a2a, which owns a2a-sdk, httpx-auth, httpx-sse, and aiocache.

crewai.a2a stays importable. Its __init__ is a compat shim that installs a meta-path finder routing crewai.a2a.* to crewai_a2a.*, so existing user code keeps working untouched.

a2a tests and cassettes moved alongside the package under lib/crewai-a2a/tests/. Added that path to the mypy and ruff per-file-ignores lists to match the other test dirs.
This commit is contained in:
Greyson LaLonde
2026-04-14 22:21:31 +08:00
parent 0dba95e166
commit 080c22678a
87 changed files with 415 additions and 321 deletions

31
uv.lock generated
View File

@@ -13,12 +13,13 @@ resolution-markers = [
]
[options]
exclude-newer = "2026-04-10T18:30:59.748668Z"
exclude-newer = "2026-04-11T13:34:53.333824Z"
exclude-newer-span = "P3D"
[manifest]
members = [
"crewai",
"crewai-a2a",
"crewai-devtools",
"crewai-files",
"crewai-tools",
@@ -1267,10 +1268,7 @@ dependencies = [
[package.optional-dependencies]
a2a = [
{ name = "a2a-sdk" },
{ name = "aiocache", extra = ["memcached", "redis"] },
{ name = "httpx-auth" },
{ name = "httpx-sse" },
{ name = "crewai-a2a" },
]
anthropic = [
{ name = "anthropic" },
@@ -1327,9 +1325,7 @@ watson = [
[package.metadata]
requires-dist = [
{ name = "a2a-sdk", marker = "extra == 'a2a'", specifier = "~=0.3.10" },
{ name = "aiobotocore", marker = "extra == 'aws'", specifier = "~=3.4.0" },
{ name = "aiocache", extras = ["memcached", "redis"], marker = "extra == 'a2a'", specifier = "~=0.12.3" },
{ name = "aiofiles", specifier = "~=24.1.0" },
{ name = "aiosqlite", specifier = "~=0.21.0" },
{ name = "anthropic", marker = "extra == 'anthropic'", specifier = "~=0.73.0" },
@@ -1339,13 +1335,12 @@ requires-dist = [
{ name = "boto3", marker = "extra == 'bedrock'", specifier = "~=1.42.79" },
{ name = "chromadb", specifier = "~=1.1.0" },
{ name = "click", specifier = "~=8.1.7" },
{ name = "crewai-a2a", marker = "extra == 'a2a'", editable = "lib/crewai-a2a" },
{ name = "crewai-files", marker = "extra == 'file-processing'", editable = "lib/crewai-files" },
{ name = "crewai-tools", marker = "extra == 'tools'", editable = "lib/crewai-tools" },
{ name = "docling", marker = "extra == 'docling'", specifier = "~=2.84.0" },
{ name = "google-genai", marker = "extra == 'google-genai'", specifier = "~=1.65.0" },
{ name = "httpx", specifier = "~=0.28.1" },
{ name = "httpx-auth", marker = "extra == 'a2a'", specifier = "~=0.23.1" },
{ name = "httpx-sse", marker = "extra == 'a2a'", specifier = "~=0.4.0" },
{ name = "ibm-watsonx-ai", marker = "extra == 'watson'", specifier = "~=1.3.39" },
{ name = "instructor", specifier = ">=1.3.3" },
{ name = "json-repair", specifier = "~=0.25.2" },
@@ -1382,6 +1377,24 @@ requires-dist = [
]
provides-extras = ["a2a", "anthropic", "aws", "azure-ai-inference", "bedrock", "docling", "embeddings", "file-processing", "google-genai", "litellm", "mem0", "openpyxl", "pandas", "qdrant", "qdrant-edge", "tools", "voyageai", "watson"]
[[package]]
name = "crewai-a2a"
source = { editable = "lib/crewai-a2a" }
dependencies = [
{ name = "a2a-sdk" },
{ name = "aiocache", extra = ["memcached", "redis"] },
{ name = "httpx-auth" },
{ name = "httpx-sse" },
]
[package.metadata]
requires-dist = [
{ name = "a2a-sdk", specifier = "~=0.3.10" },
{ name = "aiocache", extras = ["memcached", "redis"], specifier = "~=0.12.3" },
{ name = "httpx-auth", specifier = "~=0.23.1" },
{ name = "httpx-sse", specifier = "~=0.4.0" },
]
[[package]]
name = "crewai-devtools"
source = { editable = "lib/devtools" }