mirror of
https://github.com/mistralai/mistral-vibe
synced 2026-04-25 17:14:55 +02:00
Co-authored-by: Quentin Torroba <quentin.torroba@mistral.ai> Co-authored-by: Clément Drouin <clement.drouin@mistral.ai> Co-authored-by: Clément Sirieix <clement.sirieix@mistral.ai> Co-authored-by: Mistral Vibe <vibe@mistral.ai>
186 lines
4.4 KiB
TOML
186 lines
4.4 KiB
TOML
[project]
|
|
name = "mistral-vibe"
|
|
version = "2.7.0"
|
|
description = "Minimal CLI coding agent by Mistral"
|
|
readme = "README.md"
|
|
requires-python = ">=3.12"
|
|
license = { text = "Apache-2.0" }
|
|
authors = [{ name = "Mistral AI" }]
|
|
keywords = [
|
|
"ai",
|
|
"cli",
|
|
"coding-assistant",
|
|
"mistral",
|
|
"llm",
|
|
"developer-tools",
|
|
]
|
|
classifiers = [
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Intended Audience :: Developers",
|
|
"License :: OSI Approved :: Apache Software License",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Topic :: Software Development",
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
"Topic :: Utilities",
|
|
]
|
|
dependencies = [
|
|
"agent-client-protocol==0.8.1",
|
|
"anyio>=4.12.0",
|
|
"cachetools>=5.5.0",
|
|
"cryptography>=44.0.0,<=46.0.3",
|
|
"gitpython>=3.1.46",
|
|
"giturlparse>=0.14.0",
|
|
"google-auth>=2.0.0",
|
|
"httpx>=0.28.1",
|
|
"keyring>=25.6.0",
|
|
"markdownify>=1.2.2",
|
|
"mcp>=1.14.0",
|
|
"mistralai==2.1.3",
|
|
"opentelemetry-api>=1.39.1",
|
|
"opentelemetry-exporter-otlp-proto-http>=1.39.1",
|
|
"opentelemetry-sdk>=1.39.1",
|
|
"opentelemetry-semantic-conventions>=0.60b1",
|
|
"packaging>=24.1",
|
|
"pexpect>=4.9.0",
|
|
"pydantic>=2.12.4",
|
|
"pydantic-settings>=2.12.0",
|
|
"pyperclip>=1.11.0",
|
|
"python-dotenv>=1.0.0",
|
|
"pyyaml>=6.0.0",
|
|
"requests>=2.20.0",
|
|
"rich>=14.0.0",
|
|
"sounddevice>=0.5.1",
|
|
"textual>=8.1.1",
|
|
"textual-speedups>=0.2.1",
|
|
"tomli-w>=1.2.0",
|
|
"tree-sitter>=0.25.2",
|
|
"tree-sitter-bash>=0.25.1",
|
|
"watchfiles>=1.1.1",
|
|
"websockets>=13.0",
|
|
"zstandard>=0.25.0",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/mistralai/mistral-vibe"
|
|
Repository = "https://github.com/mistralai/mistral-vibe"
|
|
Issues = "https://github.com/mistralai/mistral-vibe/issues"
|
|
Documentation = "https://github.com/mistralai/mistral-vibe#readme"
|
|
|
|
[build-system]
|
|
requires = ["hatchling", "hatch-vcs", "editables"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.metadata]
|
|
allow-direct-references = true
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
include = ["vibe/"]
|
|
|
|
|
|
[project.scripts]
|
|
vibe = "vibe.cli.entrypoint:main"
|
|
vibe-acp = "vibe.acp.entrypoint:main"
|
|
|
|
|
|
[tool.uv]
|
|
package = true
|
|
required-version = ">=0.8.0"
|
|
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"debugpy>=1.8.19",
|
|
"pre-commit>=4.2.0",
|
|
"pyright>=1.1.403",
|
|
"pytest>=8.3.5",
|
|
"pytest-asyncio>=1.2.0",
|
|
"pytest-textual-snapshot>=1.1.0",
|
|
"pytest-timeout>=2.4.0",
|
|
"pytest-xdist>=3.8.0",
|
|
"respx>=0.22.0",
|
|
"ruff>=0.14.5",
|
|
"twine>=5.0.0",
|
|
"typos>=1.34.0",
|
|
"vulture>=2.14",
|
|
]
|
|
|
|
build = ["pyinstaller>=6.17.0", "truststore>=0.10.4"]
|
|
|
|
[tool.pyright]
|
|
pythonVersion = "3.12"
|
|
reportMissingTypeStubs = false
|
|
reportPrivateImportUsage = false
|
|
include = ["vibe/**/*.py", "tests/**/*.py"]
|
|
exclude = ["pyinstaller/"]
|
|
venvPath = "."
|
|
venv = ".venv"
|
|
|
|
[tool.ruff]
|
|
include = ["vibe/**/*.py", "tests/**/*.py"]
|
|
exclude = ["pyinstaller/"]
|
|
line-length = 88
|
|
target-version = "py312"
|
|
preview = true
|
|
|
|
[tool.ruff.format]
|
|
skip-magic-trailing-comma = true
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"F",
|
|
"I",
|
|
"D2",
|
|
"UP",
|
|
"TID",
|
|
"ANN",
|
|
"PLR",
|
|
"B0",
|
|
"B905",
|
|
"DOC102",
|
|
"RUF022",
|
|
"RUF010",
|
|
"RUF012",
|
|
"RUF019",
|
|
"RUF100",
|
|
]
|
|
ignore = ["D203", "D205", "D213", "ANN401", "PLR6301"]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"tests/*" = ["ANN", "PLR"]
|
|
# Textual parent classes don't use ClassVar, so we can't either without breaking pyright
|
|
"vibe/cli/textual_ui/ansi_markdown.py" = ["RUF012"]
|
|
|
|
[tool.ruff.lint.flake8-tidy-imports]
|
|
ban-relative-imports = "all"
|
|
|
|
[tool.ruff.lint.isort]
|
|
known-first-party = ["vibe"]
|
|
force-sort-within-sections = true
|
|
split-on-trailing-comma = false
|
|
combine-as-imports = true
|
|
force-wrap-aliases = false
|
|
order-by-type = true
|
|
required-imports = ["from __future__ import annotations"]
|
|
|
|
[tool.ruff.lint.pylint]
|
|
max-statements = 50
|
|
max-branches = 15
|
|
max-locals = 15
|
|
max-args = 9
|
|
max-returns = 6
|
|
max-nested-blocks = 4
|
|
|
|
[tool.vulture]
|
|
ignore_decorators = ["@*"]
|
|
|
|
[tool.pytest.ini_options]
|
|
addopts = "-vvvv -q -n auto --durations=10 --import-mode=importlib --maxschedchunk=1"
|
|
timeout = 10
|
|
filterwarnings = [
|
|
# (e2e) streaming mock server is started in a thread; and the cli is spawn in a fork
|
|
"ignore:This process \\(pid=.*\\) is multi-threaded, use of forkpty\\(\\) may lead to deadlocks in the child\\.:DeprecationWarning",
|
|
]
|