[project] name = "jarvis-backend" version = "0.1.0" description = "Jarvis Personal AI Assistant - Backend" readme = "README.md" requires-python = ">=3.11" license = { text = "MIT" } dependencies = [ # Web 框架 "fastapi>=0.115.0", "uvicorn[standard]>=0.30.0", "python-multipart>=0.0.12", "websockets>=12.0", "aiofiles>=24.0.0", # Agent 框架 "langgraph>=0.2.36", "langchain-anthropic>=0.3.14", "langchain-openai>=0.3.18", "langchain-core>=0.3.52", "langchain-ollama>=0.4.0", "langsmith>=0.1.0", # 知识库框架 "llama-index>=0.12.0", "llama-index-vector-stores-chroma>=0.3.0", "chromadb>=0.5.0", # Memory "mem0ai>=1.0.0", # 数据库 "sqlalchemy>=2.0.0", "aiosqlite>=0.20.0", "alembic>=1.13.0", # 认证 & 安全 "python-jose[cryptography]>=3.3.0", "passlib[bcrypt]>=1.7.4", "bcrypt>=4.0.0,<5.0.0", # 配置 & 验证 "pydantic>=2.0.0", "pydantic-settings>=2.0.0", "email-validator>=2.0.0", # 定时任务 "APScheduler>=3.10.0", # 工具 "python-dotenv>=1.0.0", "httpx>=0.27.0", "openpyxl>=3.1.0", "python-docx>=1.1.0", "mineru>=2.0.3", "psutil>=6.1.0", ] [project.optional-dependencies] dev = [ "pytest>=8.0.0", "pytest-asyncio>=0.23.0", "pytest-cov>=4.1.0", "ruff>=0.5.0", "mypy>=1.10.0", "pre-commit>=3.7.0", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["app"] [tool.ruff] target-version = "py311" line-length = 100 select = ["E", "F", "I", "N", "W", "UP"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"]