mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-07-01 21:28:10 +00:00
Extract duplicated Redis URL parsing into a shared cache_config utility. Introduce ValkeyCache as a lightweight async key/value cache using valkey-glide. Wire it into A2A task handling, agent card caching, and file upload caching. Part 1/4 of Valkey storage implementation. fix: async-safe embeddings and resilient drain_writes Add bytes→float validators on MemoryRecord and ItemState to handle Valkey returning embeddings as raw bytes. Make embed_texts() safe when called from an async context by using a thread pool. Improve drain_writes() with per-save timeouts and error logging instead of raising on failure. Part 3/4 of Valkey storage implementation. feat(valkey): ValkeyStorage vector memory backend Add ValkeyStorage, a distributed StorageBackend implementation using Valkey-GLIDE with Valkey Search for vector similarity. Wire it into Memory as the 'valkey' storage option. Pin scrapegraph-py<2 to fix unrelated upstream breakage. Part 4/4 of Valkey storage implementation. fix: use datetime.utcnow() for last_accessed consistency MemoryRecord defaults use utcnow() for created_at and last_accessed. Match that in ValkeyStorage.update_record() to avoid timezone inconsistency in recency scoring. feat(valkey): shared cache config + ValkeyCache for A2A and file uploads Extract duplicated Redis URL parsing into a shared cache_config utility. Introduce ValkeyCache as a lightweight async key/value cache using valkey-glide. Wire it into A2A task handling, agent card caching, and file upload caching. Part 1/4 of Valkey storage implementation. fix: handle non-numeric database path in cache URL parsing Extract _parse_db_from_path() helper that catches ValueError for paths like /mydb and defaults to 0 with a warning, instead of crashing. fix: async-safe embeddings and resilient drain_writes Add bytes→float validators on MemoryRecord and ItemState to handle Valkey returning embeddings as raw bytes. Make embed_texts() safe when called from an async context by using a thread pool. Improve drain_writes() with per-save timeouts and error logging instead of raising on failure. Part 3/4 of Valkey storage implementation. fix: catch concurrent.futures.TimeoutError for Python 3.10 compat In Python <3.11, concurrent.futures.TimeoutError is distinct from the builtin TimeoutError. Catch both so the timeout warning path works on all supported Python versions.
150 lines
3.2 KiB
TOML
150 lines
3.2 KiB
TOML
[project]
|
|
name = "crewai"
|
|
dynamic = ["version"]
|
|
description = "Cutting-edge framework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks."
|
|
readme = "README.md"
|
|
authors = [
|
|
{ name = "Joao Moura", email = "joao@crewai.com" }
|
|
]
|
|
requires-python = ">=3.10, <3.14"
|
|
dependencies = [
|
|
"crewai-core==1.14.5a5",
|
|
"crewai-cli==1.14.5a5",
|
|
# Core Dependencies
|
|
"pydantic>=2.11.9,<2.13",
|
|
"openai>=2.30.0,<3",
|
|
"instructor>=1.3.3",
|
|
# Text Processing
|
|
"pdfplumber~=0.11.4",
|
|
"regex~=2026.1.15",
|
|
# Telemetry and Monitoring
|
|
"opentelemetry-api~=1.34.0",
|
|
"opentelemetry-sdk~=1.34.0",
|
|
"opentelemetry-exporter-otlp-proto-http~=1.34.0",
|
|
# Data Handling
|
|
"chromadb~=1.1.0",
|
|
"tokenizers>=0.21,<1",
|
|
"openpyxl~=3.1.5",
|
|
# Authentication and Security
|
|
"python-dotenv>=1.2.2,<2",
|
|
"pyjwt>=2.9.0,<3",
|
|
# Configuration and Utils
|
|
"click~=8.1.7",
|
|
"appdirs~=1.4.4",
|
|
"jsonref~=1.1.0",
|
|
"json-repair~=0.25.2",
|
|
"tomli-w~=1.1.0",
|
|
"tomli~=2.0.2",
|
|
"json5~=0.10.0",
|
|
"portalocker~=2.7.0",
|
|
"pydantic-settings~=2.10.1",
|
|
"httpx~=0.28.1",
|
|
"mcp~=1.26.0",
|
|
"aiosqlite~=0.21.0",
|
|
"pyyaml~=6.0",
|
|
"aiofiles~=24.1.0",
|
|
"lancedb>=0.29.2,<0.30.1",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://crewai.com"
|
|
Documentation = "https://docs.crewai.com"
|
|
Repository = "https://github.com/crewAIInc/crewAI"
|
|
|
|
|
|
[project.optional-dependencies]
|
|
tools = [
|
|
"crewai-tools==1.14.5a5",
|
|
]
|
|
embeddings = [
|
|
"tiktoken>=0.8.0,<0.13"
|
|
]
|
|
pandas = [
|
|
"pandas~=2.2.3",
|
|
]
|
|
openpyxl = [
|
|
"openpyxl~=3.1.5",
|
|
]
|
|
mem0 = ["mem0ai>=2.0.0,<3"]
|
|
docling = [
|
|
"docling~=2.84.0",
|
|
]
|
|
qdrant = [
|
|
"qdrant-client[fastembed]~=1.14.3",
|
|
]
|
|
aws = [
|
|
"boto3~=1.42.79",
|
|
"aiobotocore~=3.4.0",
|
|
]
|
|
watson = [
|
|
"ibm-watsonx-ai~=1.3.39",
|
|
]
|
|
voyageai = [
|
|
"voyageai~=0.3.5",
|
|
]
|
|
litellm = [
|
|
"litellm>=1.83.7,<1.84",
|
|
]
|
|
bedrock = [
|
|
"boto3~=1.42.79",
|
|
]
|
|
google-genai = [
|
|
"google-genai~=1.65.0",
|
|
]
|
|
azure-ai-inference = [
|
|
"azure-ai-inference~=1.0.0b9",
|
|
"azure-identity>=1.17.0,<2",
|
|
]
|
|
anthropic = [
|
|
"anthropic~=0.73.0",
|
|
]
|
|
a2a = [
|
|
"a2a-sdk~=0.3.10",
|
|
"httpx-auth~=0.23.1",
|
|
"httpx-sse~=0.4.0",
|
|
"aiocache[redis,memcached]~=0.12.3",
|
|
]
|
|
file-processing = [
|
|
"crewai-files==1.14.5a5",
|
|
]
|
|
qdrant-edge = [
|
|
"qdrant-edge-py>=0.6.0",
|
|
]
|
|
valkey = [
|
|
"valkey-glide>=1.3.0",
|
|
]
|
|
|
|
|
|
[tool.uv]
|
|
exclude-newer = "3 days"
|
|
|
|
# PyTorch index configuration, since torch 2.5.0 is not compatible with python 3.13
|
|
[[tool.uv.index]]
|
|
name = "pytorch-nightly"
|
|
url = "https://download.pytorch.org/whl/nightly/cpu"
|
|
explicit = true
|
|
|
|
[[tool.uv.index]]
|
|
name = "pytorch"
|
|
url = "https://download.pytorch.org/whl/cpu"
|
|
explicit = true
|
|
|
|
[tool.uv.sources]
|
|
torch = [
|
|
{ index = "pytorch-nightly", marker = "python_version >= '3.13'" },
|
|
{ index = "pytorch", marker = "python_version < '3.13'" },
|
|
]
|
|
torchvision = [
|
|
{ index = "pytorch-nightly", marker = "python_version >= '3.13'" },
|
|
{ index = "pytorch", marker = "python_version < '3.13'" },
|
|
]
|
|
crewai-files = { workspace = true }
|
|
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.version]
|
|
path = "src/crewai/__init__.py"
|