# VIGÍA — Forensic Intentionality Analysis Engine
# Python 3.10+ required

# Core Framework
fastmcp>=0.4.0
# B-227: upper bound is REQUIRED, not cosmetic. vigia/vigia_sift_bridge.py does
# `from mcp.server.fastmcp import FastMCP`; mcp 2.0.0 removed that subpackage,
# so the bridge -- and with it Modes 2 and 5 -- cannot import under it. Until
# this bound was declared, the only thing holding the line was `fastmcp`'s own
# transitive `mcp<2`, which is an accident: no module in this repo imports
# `fastmcp`, so a cleanup dropping it would have broken the MCP surface
# silently. Pinned by tests/test_mcp_dependency_contract.py.
mcp>=1.0,<2

# LLM Integration
anthropic>=0.18.0
httpx>=0.25.0

# System Monitoring
psutil>=5.9.0

# Image & Metadata
Pillow>=10.0.0
python-magic>=0.4.27

# Data Processing
numpy>=1.24.0
PyYAML>=6.0

# Validation & Parsing
pydantic>=2.0.0
python-dateutil>=2.8.0
iso8601>=2.0.0

# Async
aiofiles>=23.0.0

# HTTP API — importado por vigia_api.py, vigia/vigia_api.py y
# vigia/openai_compat.py (paths documentados del wrapper HTTP). B-212: estaba
# pinneado solo en requirements-ci.txt (B-168) y el workflow pytest.yml
# instala requirements.txt — los 4 módulos de tests de API no colectaban.
fastapi>=0.100.0
# uvicorn: importado por vigia_api.py.__main__ y vigia/ui/__main__.py; era un
# gap latente (importado pero no declarado) — corregido junto con la Web UI.
uvicorn>=0.23

# Testing
pytest>=7.4.0
pytest-asyncio>=0.21.0
pytest-cov>=4.1.0
black>=23.0.0
mypy>=1.5.0

# SIFT tools (installed via SIFT Workstation, not pip):
# volatility3>=2.5.0       (pip install volatility3)
# plaso>=20230717           (log2timeline.py)
# yara-python>=4.3.0        (pip install yara-python)
defusedxml>=0.7.1
aiohttp>=3.9.0
python-evtx>=0.7.4
scikit-learn>=1.3.0
