Co-authored-by: Clément Drouin <clement.drouin@mistral.ai> Co-authored-by: Clément Sirieix <clement.sirieix@mistral.ai> Co-authored-by: Guillaume LE GOFF <guillaume.lgf@gmail.com> Co-authored-by: Mathias Gesbert <mathias.gesbert@mistral.ai> Co-authored-by: Michel Thomazo <51709227+michelTho@users.noreply.github.com> Co-authored-by: Pierre Rossinès <pierre.rossines@mistral.ai> Co-authored-by: Vincent G <10739306+VinceOPS@users.noreply.github.com> Co-authored-by: Mistral Vibe <vibe@mistral.ai>
261 lines
6.5 KiB
TOML
261 lines
6.5 KiB
TOML
[project]
|
|
name = "mistral-vibe"
|
|
version = "2.11.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.9.0",
|
|
"annotated-types==0.7.0",
|
|
"anyio==4.13.0",
|
|
"attrs==26.1.0",
|
|
"beautifulsoup4==4.14.3",
|
|
"cachetools==7.0.6",
|
|
"certifi==2026.4.22",
|
|
"cffi==2.0.0",
|
|
"charset-normalizer==3.4.7",
|
|
"click==8.3.3 ; sys_platform != 'emscripten'",
|
|
"colorama==0.4.6 ; sys_platform == 'win32'",
|
|
"cryptography==47.0.0",
|
|
"eval-type-backport==0.3.1",
|
|
"gitdb==4.0.12",
|
|
"gitpython==3.1.47",
|
|
"giturlparse==0.14.0",
|
|
"google-auth==2.49.2",
|
|
"googleapis-common-protos==1.74.0",
|
|
"h11==0.16.0",
|
|
"httpcore==1.0.9",
|
|
"httpx==0.28.1",
|
|
"httpx-sse==0.4.3",
|
|
"idna==3.13",
|
|
"importlib-metadata==8.7.1",
|
|
"jaraco-classes==3.4.0",
|
|
"jaraco-context==6.1.2",
|
|
"jaraco-functools==4.4.0",
|
|
"jeepney==0.9.0 ; sys_platform == 'linux'",
|
|
"jsonpatch==1.33",
|
|
"jsonpath-python==1.1.5",
|
|
"jsonpointer==3.1.1",
|
|
"jsonschema==4.26.0",
|
|
"jsonschema-specifications==2025.9.1",
|
|
"keyring==25.7.0",
|
|
"linkify-it-py==2.1.0",
|
|
"markdown-it-py==4.0.0",
|
|
"markdownify==1.2.2",
|
|
"mcp==1.27.0",
|
|
"mdit-py-plugins==0.5.0",
|
|
"mdurl==0.1.2",
|
|
"mistralai==2.4.4",
|
|
"more-itertools==11.0.2",
|
|
"opentelemetry-api==1.39.1",
|
|
"opentelemetry-exporter-otlp-proto-common==1.39.1",
|
|
"opentelemetry-exporter-otlp-proto-http==1.39.1",
|
|
"opentelemetry-proto==1.39.1",
|
|
"opentelemetry-sdk==1.39.1",
|
|
"opentelemetry-semantic-conventions==0.60b1",
|
|
"packaging==26.2",
|
|
"pexpect==4.9.0",
|
|
"platformdirs==4.9.6",
|
|
"protobuf==6.33.6",
|
|
"ptyprocess==0.7.0",
|
|
"pyasn1==0.6.3",
|
|
"pyasn1-modules==0.4.2",
|
|
"pycparser==3.0 ; implementation_name != 'PyPy'",
|
|
"pydantic==2.13.3",
|
|
"pydantic-core==2.46.3",
|
|
"pydantic-settings==2.14.0",
|
|
"pygments==2.20.0",
|
|
"pyjwt==2.12.1",
|
|
"pyperclip==1.11.0",
|
|
"python-dateutil==2.9.0.post0",
|
|
"python-dotenv==1.2.2",
|
|
"python-multipart==0.0.27",
|
|
"pywin32==311 ; sys_platform == 'win32'",
|
|
"pywin32-ctypes==0.2.3 ; sys_platform == 'win32'",
|
|
"pyyaml==6.0.3",
|
|
"referencing==0.37.0",
|
|
"requests==2.33.1",
|
|
"rich==15.0.0",
|
|
"rpds-py==0.30.0",
|
|
"secretstorage==3.5.0 ; sys_platform == 'linux'",
|
|
"six==1.17.0",
|
|
"smmap==5.0.3",
|
|
"sounddevice==0.5.5",
|
|
"soupsieve==2.8.3",
|
|
"sse-starlette==3.4.1",
|
|
"starlette==1.0.0",
|
|
"textual==8.2.7",
|
|
"textual-speedups==0.2.1",
|
|
"tomli-w==1.2.0",
|
|
"tree-sitter==0.25.2",
|
|
"tree-sitter-bash==0.25.1",
|
|
"typing-extensions==4.15.0",
|
|
"typing-inspection==0.4.2",
|
|
"uc-micro-py==2.0.0",
|
|
"urllib3==2.6.3",
|
|
"uvicorn==0.46.0 ; sys_platform != 'emscripten'",
|
|
"watchfiles==1.1.1",
|
|
"websockets==16.0",
|
|
"zipp==3.23.1",
|
|
"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]
|
|
exclude-newer = "7 days"
|
|
exclude-newer-package = { agent-client-protocol = false, mistralai = false, textual = false }
|
|
|
|
package = true
|
|
required-version = ">=0.8.0"
|
|
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"debugpy>=1.8.19",
|
|
"pre-commit>=4.2.0",
|
|
"pyinstrument>=5.1.2",
|
|
"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",
|
|
"tomlkit>=0.13.0",
|
|
"twine>=5.0.0",
|
|
"typos>=1.34.0",
|
|
"vulture>=2.14",
|
|
]
|
|
|
|
build = [
|
|
"altgraph==0.17.5",
|
|
"macholib==1.16.4 ; sys_platform == 'darwin'",
|
|
"packaging==26.2",
|
|
"pefile==2024.8.26 ; sys_platform == 'win32'",
|
|
"pyinstaller==6.20.0",
|
|
"pyinstaller-hooks-contrib==2026.4",
|
|
"pywin32-ctypes==0.2.3 ; sys_platform == 'win32'",
|
|
"setuptools==82.0.1",
|
|
"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"]
|
|
|
|
|
|
[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-public-methods = 26
|
|
max-positional-args = 10
|
|
max-statements = 50
|
|
max-branches = 15
|
|
max-locals = 15
|
|
max-args = 10
|
|
max-returns = 6
|
|
max-nested-blocks = 5
|
|
|
|
[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",
|
|
]
|