pydantic>=2.0
langchain>=0.1.0
langgraph>=0.0.40
langchain-community>=0.0.20
langchain-openai>=0.0.8
langchain-ollama>=0.0.1
faiss-cpu>=1.7.4
termcolor>=2.0.0
python-dotenv>=1.0.0
requests>=2.31.0

[all]
storytelling[cloud,enhanced,google,gpu,iaip,local-ml,mcp,openrouter,web]

[cloud]
langfuse>=2.0.0
openai>=1.0.0

[complete]
storytelling[all]

[dev]
pytest>=7.0.0
pytest-cov>=4.0.0
black>=23.0.0
isort>=5.12.0
flake8>=6.0.0
mypy>=1.0.0
pre-commit>=3.0.0
ruff>=0.1.0

[docs]
sphinx>=6.0.0
sphinx-rtd-theme>=1.2.0
myst-parser>=1.0.0

[enhanced]
storytelling[cloud]
beautifulsoup4>=4.12.0
html2text>=2020.1.16
requests>=2.31.0

[google]
langchain-google-genai>=0.0.6

[gpu]
faiss-gpu>=1.7.4

[iaip]
pyyaml>=6.0.0
storytelling[enhanced,mcp]

[local-ml]
sentence-transformers>=2.2.2
langchain-huggingface>=0.0.1

[mcp]
requests>=2.31.0

[openrouter]
langchain-openrouter>=0.0.1

[test]
pytest>=7.0
pytest-cov>=4.0
pytest-mock>=3.0

[web]
requests>=2.31.0
beautifulsoup4>=4.12.0
html2text>=2020.1.16
