[project] name = "pentestagent" version = "0.2.0" description = "AI penetration testing" readme = "README.md" license = {text = "MIT"} requires-python = ">=3.10" authors = [ {name = "Masic"} ] keywords = [ "penetration-testing", "security", "ai", "llm", "mcp", "automation" ] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "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 = [ "litellm>=1.40.0", "openai>=1.30.0", "anthropic>=0.25.0", "tiktoken>=0.7.0", "aiohttp>=3.9.0", "aiofiles>=23.2.0", "playwright>=1.44.0", "beautifulsoup4>=4.12.0", "httpx>=0.27.0", "numpy>=1.26.0", "networkx>=3.3", "docker>=7.0.0", "rich>=13.7.0", "textual>=0.63.0", "typer>=0.12.0", "pydantic>=2.7.0", "pydantic-settings>=2.2.0", "python-dotenv>=1.0.0", "pyyaml>=6.0.0", "jinja2>=3.1.0", ] [project.optional-dependencies] dev = [ "pytest>=8.2.0", "pytest-asyncio>=0.23.0", "pytest-cov>=5.0.0", "pytest-mock>=3.14.0", "black>=24.4.0", "isort>=5.13.0", "mypy>=1.10.0", "ruff>=0.4.0", ] rag = [ "sentence-transformers>=2.7.0", "faiss-cpu>=1.8.0", ] all = [ "pentestagent[dev,rag]", ] hexstrike = [ "flask>=2.3.0,<4.0.0", "requests>=2.31.0,<3.0.0", "psutil>=5.9.0,<6.0.0", "fastmcp>=0.2.0,<1.0.0", "beautifulsoup4>=4.12.0,<5.0.0", "selenium>=4.15.0,<5.0.0", "webdriver-manager>=4.0.0,<5.0.0", "aiohttp>=3.8.0,<4.0.0", "mitmproxy>=9.0.0,<11.0.0", "pwntools>=4.10.0,<5.0.0", "angr>=9.2.0,<10.0.0", "bcrypt==4.0.1", ] [project.urls] Homepage = "https://github.com/GH05TCREW/pentestagent" [project.scripts] pentestagent = "pentestagent.interface.main:main" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["pentestagent"] [tool.hatch.build.targets.sdist] include = [ "pentestagent/**", "*.md", "*.txt" ] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] python_files = ["test_*.py"] python_functions = ["test_*"] addopts = "-v --tb=short" [tool.black] line-length = 88 target-version = ["py310", "py311", "py312"] include = '\.pyi?$' [tool.isort] profile = "black" line_length = 88 known_first_party = ["pentestagent"] [tool.ruff] line-length = 88 target-version = "py310" exclude = ["third_party/"] [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions ] ignore = [ "E501", # line too long (handled by black) ] [tool.mypy] python_version = "3.10" warn_return_any = true warn_unused_configs = true ignore_missing_imports = true