mistral-vibe
MEDIUM
maintainer Vial
6 votes
scanned 2026-09-27 13:18:29.354985
Why flagged
This package was orphaned and re-adopted within the last 30 days — a window where ownership transfers can introduce malicious changes.
Triggered rules
Medium
Recently orphaned & re-adopted
orphaned_readopted
This package was orphaned and re-adopted within the last 30 days — a window where ownership transfers can introduce malicious changes.
PKGBUILD
1
# Maintainer: Rubin Simons <me@rubin55.org>
2
3
pkgname=mistral-vibe
4
pkgver=2.25.5
5
pkgrel=1
6
pkgdesc='Minimal CLI coding agent by Mistral'
7
arch=('x86_64')
8
url='https://github.com/mistralai/mistral-vibe'
9
license=(Apache-2.0)
10
depends=(
11
"python"
12
"python-agent-client-protocol"
13
"python-aiofiles"
14
"python-dotenv"
15
"python-giturlparse"
16
"python-google-auth"
17
"python-httpx"
18
"python-humanize"
19
"python-jsonpatch"
20
"python-keyring"
21
"python-linkify-it-py"
22
"python-mcp"
23
"python-mistralai"
24
"python-opentelemetry-api"
25
"python-opentelemetry-exporter-otlp"
26
"python-opentelemetry-semantic-conventions"
27
"python-packaging"
28
"python-pexpect"
29
"python-pydantic"
30
"python-pydantic-settings"
31
"python-pyperclip"
32
"python-rfc8785"
33
"python-rich"
34
"python-sentry_sdk"
35
"python-textual"
36
"python-tomli-w"
37
"python-tree-sitter-bash"
38
"python-truststore"
39
"python-watchfiles"
40
"python-yaml"
41
"python-zstandard"
42
"python-sounddevice"
43
)
44
makedepends=(
45
"python-build"
46
"python-hatchling"
47
"python-hatch-vcs"
48
"python-installer"
49
)
50
checkdepends=(
51
"pre-commit"
52
"pyright"
53
"python-pytest"
54
"python-pytest-asyncio"
55
"python-pytest-textual-snapshot"
56
"python-pytest-timeout"
57
"python-pytest-xdist"
58
"python-respx"
59
"ruff"
60
"twine"
61
"typos"
62
"uv"
63
"vulture"
64
)
65
source=("git+${url}.git#tag=v${pkgver}"
66
"lower_hatchling_version_requirements.patch"
67
"clear_multiplexer_env_in_theme_tests.patch"
68
"stabilize_click_chain_timing_in_word_drag_tests.patch"
69
"stretch_e2e_timeouts_when_builder_is_loaded.patch")
70
sha256sums=('bc4d6f3c021388f7702abb2d168e21b7ddcf0d7f1de55b8d9a4959c2e1142175'
71
'c9b417d8a6445bcca31f8d75757a7ec2d78e4b5aec784a7b5d2c9adf62106014'
72
'f24330784d56591d197dc260166d29fff717fab763963fb2c7d8221f81135069'
73
'ec15c34e133eb3ca09c593ac03a715beb30557585d81b0ac99bffcf5818bd5e2'
74
'2706769c69b63715757f2d820b4b3d9c363a278821d58c29fdd5ecf25fb720c9')
75
prepare() {
76
cd "$pkgname"
77
cat "$srcdir/lower_hatchling_version_requirements.patch" | patch -p1
78
cat "$srcdir/clear_multiplexer_env_in_theme_tests.patch" | patch -p1
79
cat "$srcdir/stabilize_click_chain_timing_in_word_drag_tests.patch" | patch -p1
80
cat "$srcdir/stretch_e2e_timeouts_when_builder_is_loaded.patch" | patch -p1
81
}
82
83
build() {
84
cd "$pkgname"
85
python -m build --wheel --no-isolation
86
}
87
88
check() {
89
cd "$pkgname"
90
uv sync
91
# The build environment has no D-Bus session bus, so keyring's
92
# SecretService backend blocks indefinitely on every lookup (e.g. during
93
# ACP initialize and CLI onboarding), which times out the e2e and ACP
94
# tests. Force a non-blocking in-memory backend.
95
export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
96
97
# tests/tools/test_bash.py asserts on the English strerror text of a
98
# failing `cat`. Since v2.23.0 the bash tool no longer pins LC_ALL for
99
# spawned shells, so a translated builder locale breaks that test.
100
export LC_MESSAGES=C
101
102
# The e2e tests poll the rendered TUI with tight wall-clock deadlines
103
# (5-15s) that assume an idle machine. On a loaded builder (parallel
104
# builds, kernel compile in the background) the mock-server responses can
105
# take far longer than that to render. The e2e patch exposes
106
# VIBE_TEST_TIME_SCALE; stretch all e2e deadlines by 3x.
107
export VIBE_TEST_TIME_SCALE=3
108
109
# These two tests exercise scripts/install.sh and assume no `uv`/`vibe`
110
# binary in /usr/bin or /bin. They fail on a builder that already has
111
# system-wide installs (which this package itself provides). Skip them.
112
local deselect=(
113
--deselect tests/test_install_script.py::test_install_reports_missing_path_for_uv_tool_bin
114
--deselect tests/test_install_script.py::test_install_fails_when_vibe_not_in_uv_tool_dir
115
)
116
117
# Run test suite in parallel, skip deselected and any e2e tests.
118
uv run pytest -n4 --timeout=60 "${deselect[@]}" --ignore=tests/e2e
119
120
# Run e2e tests serially (these fail too often in parallel).
121
uv run pytest -n0 --timeout=60 "${deselect[@]}" tests/e2e
122
}
123
124
package() {
125
cd "$pkgname"
126
python -m installer --destdir="$pkgdir" dist/*.whl
127
echo "#!/usr/bin/env python3" > "${pkgdir}/usr/bin/vibe"
128
pyver=$(python3 --version | awk '{print $2}' | cut -d. -f1,2)
129
cat "${pkgdir}/usr/lib/python${pyver}/site-packages/vibe/cli/entrypoint.py" >> "${pkgdir}/usr/bin/vibe"
130
chmod 755 "${pkgdir}/usr/bin/vibe"
131
}
132
Changes since previous scan
--- PKGBUILD @ 2026-09-12 21:12+++ PKGBUILD @ 2026-09-27 13:18@@ -1,7 +1,7 @@ # Maintainer: Rubin Simons <me@rubin55.org> pkgname=mistral-vibe-pkgver=2.25.3+pkgver=2.25.5 pkgrel=1 pkgdesc='Minimal CLI coding agent by Mistral' arch=('x86_64')@@ -67,7 +67,7 @@ "clear_multiplexer_env_in_theme_tests.patch" "stabilize_click_chain_timing_in_word_drag_tests.patch" "stretch_e2e_timeouts_when_builder_is_loaded.patch")-sha256sums=('79835eed651f8f338d07ab01061878a41e61b15fd60890d00d371dd4410ab1c2'+sha256sums=('bc4d6f3c021388f7702abb2d168e21b7ddcf0d7f1de55b8d9a4959c2e1142175' 'c9b417d8a6445bcca31f8d75757a7ec2d78e4b5aec784a7b5d2c9adf62106014' 'f24330784d56591d197dc260166d29fff717fab763963fb2c7d8221f81135069' 'ec15c34e133eb3ca09c593ac03a715beb30557585d81b0ac99bffcf5818bd5e2'Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-27 13:18:29 | Medium | 1 |
| 2026-09-18 15:28:46 | Clean | 0 |
| 2026-09-12 21:12:39 | Clean | 0 |
| 2026-09-11 21:24:02 | Clean | 0 |
| 2026-09-09 15:19:51 | Clean | 0 |
| 2026-09-04 11:57:41 | Clean | 0 |
| 2026-08-30 13:42:42 | Clean | 0 |
| 2026-08-27 21:33:25 | Clean | 0 |
| 2026-08-27 19:33:23 | Clean | 0 |
| 2026-08-20 21:12:41 | Clean | 0 |
| 2026-08-19 15:42:02 | Clean | 0 |
| 2026-08-19 03:41:13 | Clean | 0 |
| 2026-08-13 19:26:43 | Clean | 0 |
| 2026-07-30 19:16:23 | Clean | 0 |
| 2026-07-28 21:39:42 | Clean | 0 |
| 2026-07-28 19:39:35 | Clean | 0 |
| 2026-07-21 21:18:19 | Clean | 0 |
| 2026-07-19 09:10:42 | Clean | 0 |
| 2026-07-17 19:55:55 | Clean | 0 |
| 2026-07-13 09:41:03 | Clean | 0 |