[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "inalign-mcp"
version = "0.4.1"
description = "In-A-Lign Agent Provenance & Security MCP Server"
readme = "README.md"
requires-python = ">=3.10"
license = "MIT"
keywords = ["mcp", "security", "provenance", "graphrag", "claude", "cursor", "ai", "agent"]
authors = [
    { name = "In-A-Lign", email = "hello@in-a-lign.com" }
]
classifiers = [
    "Development Status :: 4 - Beta",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: MIT License",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Topic :: Security",
    "Topic :: Software Development :: Libraries :: Python Modules",
]
dependencies = [
    "mcp>=1.0.0",
    "httpx>=0.27.0",
    "pydantic>=2.0.0",
]

[project.optional-dependencies]
# Neo4j for graph storage and visualization
neo4j = ["neo4j>=5.0.0"]

# ML Scanner (DistilBERT)
ml = [
    "torch>=2.0.0",
    "transformers>=4.35.0",
    "mlx>=0.5.0; sys_platform == 'darwin'",
]

# FastAPI for REST API
api = [
    "fastapi>=0.109.0",
    "uvicorn[standard]>=0.27.0",
    "bcrypt>=4.0.0",
]

# Visualization API (includes neo4j + api)
viz = [
    "neo4j>=5.0.0",
    "fastapi>=0.109.0",
    "uvicorn[standard]>=0.27.0",
    "bcrypt>=4.0.0",
]

# Full production stack
full = [
    "neo4j>=5.0.0",
    "fastapi>=0.109.0",
    "uvicorn[standard]>=0.27.0",
    "bcrypt>=4.0.0",
    "redis>=5.0.0",
    "python-dotenv>=1.0.0",
    "torch>=2.0.0",
    "transformers>=4.35.0",
]

# Development dependencies
dev = [
    "pytest>=8.0.0",
    "pytest-asyncio>=0.23.0",
    "pytest-cov>=4.1.0",
    "black>=24.1.0",
    "ruff>=0.1.14",
    "mypy>=1.8.0",
]

[project.scripts]
inalign-mcp = "inalign_mcp.server:main"
inalign-api = "inalign_mcp.query_api:run_api"
inalign-viz = "inalign_mcp.visualization_api:run_api"
inalign-anchor = "inalign_mcp.auto_anchor:main"
inalign-clients = "inalign_mcp.client_manager:main"
inalign-dashboard = "inalign_mcp.dashboard:run_dashboard"
inalign-install = "inalign_mcp.install:main"
inalign-ingest = "inalign_mcp.session_ingest:main"
inalign-analyze = "inalign_mcp.ai_analyzer:main"

[project.urls]
Homepage = "https://github.com/Intellirim/inalign"
Documentation = "https://github.com/Intellirim/inalign#readme"
Repository = "https://github.com/Intellirim/inalign"
Issues = "https://github.com/Intellirim/inalign/issues"

[tool.hatch.build.targets.wheel]
packages = ["src/inalign_mcp"]

[tool.black]
line-length = 100
target-version = ["py310", "py311", "py312"]

[tool.ruff]
line-length = 100
select = ["E", "F", "I", "W"]
ignore = ["E501"]

[tool.mypy]
python_version = "3.10"
warn_return_any = true
warn_unused_ignores = true
disallow_untyped_defs = true

[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
