[project]
name = "agentic_security"
version = "1.0.0"
description = "Agentic LLM vulnerability scanner"
authors = [{ name = "Alexander Miasoiedov", email = "msoedov@gmail.com" }]
maintainers = [{ name = "Alexander Miasoiedov", email = "msoedov@gmail.com" }]
license = "Apache-2.0"
readme = "Readme.md"
requires-python = ">=3.12,<4.0"
keywords = [
    "LLM vulnerability scanner",
    "llm security",
    "llm adversarial attacks",
    "prompt injection",
    "prompt leakage",
    "prompt injection attacks",
    "prompt leakage prevention",
    "llm vulnerabilities",
    "owasp-llm-top-10",
]
dynamic = ["dependencies"]

[project.urls]
Homepage = "https://github.com/msoedov/agentic_security"
Repository = "https://github.com/msoedov/agentic_security"
Documentation = "https://github.com/msoedov/agentic_security/blob/main/README.md"

[project.scripts]
agentic_security = "agentic_security.__main__:main"

[tool.poetry]
packages = [{ include = "agentic_security", from = "." }]

[tool.poetry.dependencies]
fastapi = "^0.122.0"
uvicorn = "^0.38.0"
fire = "0.7.1"
loguru = "^0.7.3"
httpx = "^0.28.1"
cache-to-disk = "^2.0.0"
pandas = ">=1.4,<3.0"
datasets = "^4.4.1"
tabulate = ">=0.8.9,<0.10.0"
colorama = "^0.4.4"
matplotlib = "^3.10.7"
pydantic = "^2.12.5"
scikit-optimize = "^0.10.2"
scikit-learn = "^1.7.2"
numpy = ">=1.24.3,<3.0.0"
jinja2 = "^3.1.4"
python-multipart = "^0.0.27"
tomli = "^2.3.0"
rich = "^14.2.0"
gTTS = "^2.5.4"
sentry_sdk = "^2.46.0"
orjson = "^3.11.4"
pyfiglet = "^1.0.4"
termcolor = "^3.2.0"
mcp = "^1.22.0"
# garak = { version = "*", optional = true }
pytest-xdist = "^3.8.0"
anthropic = "^0.102.0"
openai = "^2.36.0"

[tool.poetry.group.dev.dependencies]
# Pytest
pytest = "^9.0.3"
pytest-asyncio = "^1.3.0"
inline-snapshot = "^0.31.1"
pytest-mock = "^3.15.1"
# Rest
black = ">=24.10,<26.0"
mypy = "^1.19.0"
pre-commit = "^4.5.0"
huggingface-hub = "^1.1.6"
# Docs
mkdocs = ">=1.4.2"
mkdocs-material = "^9.7.0"
mkdocstrings = "^1.0.0"
mkdocs-jupyter = ">=0.25.1"


[tool.ruff]
line-length = 120

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"


[tool.pytest.ini_options]
addopts = "-m 'not slow'"
# addopts = "--durations=5 -m 'not slow' -n 3"
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
markers = "slow: marks tests as slow"
