[build-system] requires = ["setuptools>=68.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "fischer-agentkit" version = "0.1.0" description = "Unified Agent Framework with Tool/Skill plugins, Memory, Self-Evolution, MCP support, and Multi-Agent orchestration" readme = "README.md" requires-python = ">=3.11" license = {text = "MIT"} authors = [ {name = "Fischer Team"}, ] dependencies = [ "pydantic>=2.0", "redis[hiredis]>=5.0", "sqlalchemy[asyncio]>=2.0", "asyncpg>=0.29", "httpx>=0.27", "pyyaml>=6.0", "jsonschema>=4.0", "typer>=0.12", "pyjwt>=2.8", "bcrypt>=4.0", "aiosqlite>=0.20", # Calendar & schedule (RRULE expansion) "python-dateutil>=2.9", # Calendar ICS import/export (U8) "icalendar>=5.0", # Calendar CalDAV sync — Apple Calendar (U6) "caldav>=1.3", # Document processing (U1-U9) "python-docx>=1.1", "openpyxl>=3.1", "reportlab>=4.0", "docxtpl>=0.16", "jinja2>=3.1", "markdown>=3.5", # RAG platform (P1 — LlamaIndex + pgvector) "llama-index-core>=0.12", "llama-index-vector-stores-postgres>=0.4", "llama-index-embeddings-openai>=0.3", "pgvector>=0.3", "jieba>=0.42", # 异步任务队列(U8 — 文档向量化) "taskiq>=0.11", "taskiq-redis>=0.5", ] [project.scripts] agentkit = "agentkit.cli.main:app" [project.optional-dependencies] server = [ "fastapi>=0.110", "uvicorn>=0.27", "sse-starlette>=2.0", ] mcp = [ "mcp>=1.0", ] evolution = [ "scipy>=1.12", ] dev = [ "pytest>=8.0", "pytest-asyncio>=0.23", "pytest-cov>=5.0", "pytest-httpx>=0.30", "pytest-timeout>=2.2", "pytest-html>=4.1", "testcontainers[postgres,redis]>=4.0", "ruff>=0.4", "fastapi>=0.110", "uvicorn>=0.27", "websockets>=12.0", ] [tool.setuptools.packages.find] where = ["src"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] markers = [ "integration: mark test as integration test (requires docker)", "redis: mark test as requiring Redis", "postgres: mark test as requiring PostgreSQL", "e2e: end-to-end backtest (requires server)", "e2e_basic: basic function correctness test", "e2e_capability: agent intelligence capability test", ] [tool.ruff] target-version = "py311" line-length = 100