v2.0.1
This commit is contained in:
parent
d33db9fff8
commit
bd3497b1c0
11 changed files with 37 additions and 41 deletions
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"version": "2.0.0",
|
||||
"version": "2.0.1",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "ACP Server",
|
||||
|
|
|
|||
|
|
@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file.
|
|||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [2.0.1] - 2026-01-28
|
||||
|
||||
### Fixed
|
||||
|
||||
- Encoding issues in Windows
|
||||
|
||||
|
||||
## [2.0.0] - 2026-01-27
|
||||
|
||||
### Added
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
id = "mistral-vibe"
|
||||
name = "Mistral Vibe"
|
||||
description = "Mistral's open-source coding assistant"
|
||||
version = "2.0.0"
|
||||
version = "2.0.1"
|
||||
schema_version = 1
|
||||
authors = ["Mistral AI"]
|
||||
repository = "https://github.com/mistralai/mistral-vibe"
|
||||
|
|
@ -11,25 +11,25 @@ name = "Mistral Vibe"
|
|||
icon = "./icons/mistral_vibe.svg"
|
||||
|
||||
[agent_servers.mistral-vibe.targets.darwin-aarch64]
|
||||
archive = "https://github.com/mistralai/mistral-vibe/releases/download/v2.0.0/vibe-acp-darwin-aarch64-2.0.0.zip"
|
||||
archive = "https://github.com/mistralai/mistral-vibe/releases/download/v2.0.1/vibe-acp-darwin-aarch64-2.0.1.zip"
|
||||
cmd = "./vibe-acp"
|
||||
|
||||
[agent_servers.mistral-vibe.targets.darwin-x86_64]
|
||||
archive = "https://github.com/mistralai/mistral-vibe/releases/download/v2.0.0/vibe-acp-darwin-x86_64-2.0.0.zip"
|
||||
archive = "https://github.com/mistralai/mistral-vibe/releases/download/v2.0.1/vibe-acp-darwin-x86_64-2.0.1.zip"
|
||||
cmd = "./vibe-acp"
|
||||
|
||||
[agent_servers.mistral-vibe.targets.linux-aarch64]
|
||||
archive = "https://github.com/mistralai/mistral-vibe/releases/download/v2.0.0/vibe-acp-linux-aarch64-2.0.0.zip"
|
||||
archive = "https://github.com/mistralai/mistral-vibe/releases/download/v2.0.1/vibe-acp-linux-aarch64-2.0.1.zip"
|
||||
cmd = "./vibe-acp"
|
||||
|
||||
[agent_servers.mistral-vibe.targets.linux-x86_64]
|
||||
archive = "https://github.com/mistralai/mistral-vibe/releases/download/v2.0.0/vibe-acp-linux-x86_64-2.0.0.zip"
|
||||
archive = "https://github.com/mistralai/mistral-vibe/releases/download/v2.0.1/vibe-acp-linux-x86_64-2.0.1.zip"
|
||||
cmd = "./vibe-acp"
|
||||
|
||||
[agent_servers.mistral-vibe.targets.windows-aarch64]
|
||||
archive = "https://github.com/mistralai/mistral-vibe/releases/download/v2.0.0/vibe-acp-windows-aarch64-2.0.0.zip"
|
||||
archive = "https://github.com/mistralai/mistral-vibe/releases/download/v2.0.1/vibe-acp-windows-aarch64-2.0.1.zip"
|
||||
cmd = "./vibe-acp.exe"
|
||||
|
||||
[agent_servers.mistral-vibe.targets.windows-x86_64]
|
||||
archive = "https://github.com/mistralai/mistral-vibe/releases/download/v2.0.0/vibe-acp-windows-x86_64-2.0.0.zip"
|
||||
archive = "https://github.com/mistralai/mistral-vibe/releases/download/v2.0.1/vibe-acp-windows-x86_64-2.0.1.zip"
|
||||
cmd = "./vibe-acp.exe"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
[project]
|
||||
name = "mistral-vibe"
|
||||
version = "2.0.0"
|
||||
version = "2.0.1"
|
||||
description = "Minimal CLI coding agent by Mistral"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.12"
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ class TestACPInitialize:
|
|||
),
|
||||
)
|
||||
assert response.agent_info == Implementation(
|
||||
name="@mistralai/mistral-vibe", title="Mistral Vibe", version="2.0.0"
|
||||
name="@mistralai/mistral-vibe", title="Mistral Vibe", version="2.0.1"
|
||||
)
|
||||
|
||||
assert response.auth_methods == []
|
||||
|
|
@ -48,7 +48,7 @@ class TestACPInitialize:
|
|||
),
|
||||
)
|
||||
assert response.agent_info == Implementation(
|
||||
name="@mistralai/mistral-vibe", title="Mistral Vibe", version="2.0.0"
|
||||
name="@mistralai/mistral-vibe", title="Mistral Vibe", version="2.0.1"
|
||||
)
|
||||
|
||||
assert response.auth_methods is not None
|
||||
|
|
|
|||
2
uv.lock
generated
2
uv.lock
generated
|
|
@ -673,7 +673,7 @@ wheels = [
|
|||
|
||||
[[package]]
|
||||
name = "mistral-vibe"
|
||||
version = "2.0.0"
|
||||
version = "2.0.1"
|
||||
source = { editable = "." }
|
||||
dependencies = [
|
||||
{ name = "agent-client-protocol" },
|
||||
|
|
|
|||
|
|
@ -3,4 +3,4 @@ from __future__ import annotations
|
|||
from pathlib import Path
|
||||
|
||||
VIBE_ROOT = Path(__file__).parent
|
||||
__version__ = "2.0.0"
|
||||
__version__ = "2.0.1"
|
||||
|
|
|
|||
|
|
@ -49,14 +49,11 @@ class FileSystemUpdateCacheRepository(UpdateCacheRepository):
|
|||
|
||||
async def set(self, update_cache: UpdateCache) -> None:
|
||||
try:
|
||||
payload = json.dumps(
|
||||
{
|
||||
"latest_version": update_cache.latest_version,
|
||||
"stored_at_timestamp": update_cache.stored_at_timestamp,
|
||||
"seen_whats_new_version": update_cache.seen_whats_new_version,
|
||||
},
|
||||
ensure_ascii=False,
|
||||
)
|
||||
payload = json.dumps({
|
||||
"latest_version": update_cache.latest_version,
|
||||
"stored_at_timestamp": update_cache.stored_at_timestamp,
|
||||
"seen_whats_new_version": update_cache.seen_whats_new_version,
|
||||
})
|
||||
await asyncio.to_thread(self._cache_file.write_text, payload)
|
||||
except OSError:
|
||||
return None
|
||||
|
|
|
|||
|
|
@ -22,12 +22,12 @@ class SessionLoader:
|
|||
return False
|
||||
|
||||
try:
|
||||
with open(metadata_path) as f:
|
||||
with open(metadata_path, encoding="utf-8", errors="ignore") as f:
|
||||
metadata = json.load(f)
|
||||
if not isinstance(metadata, dict):
|
||||
return False
|
||||
|
||||
with open(messages_path) as f:
|
||||
with open(messages_path, encoding="utf-8", errors="ignore") as f:
|
||||
lines = f.readlines()
|
||||
if not lines:
|
||||
return False
|
||||
|
|
@ -87,7 +87,7 @@ class SessionLoader:
|
|||
messages_filepath = filepath / MESSAGES_FILENAME
|
||||
|
||||
try:
|
||||
with messages_filepath.open("r", encoding="utf-8") as f:
|
||||
with messages_filepath.open("r", encoding="utf-8", errors="ignore") as f:
|
||||
content = f.readlines()
|
||||
except Exception as e:
|
||||
raise ValueError(
|
||||
|
|
@ -117,7 +117,9 @@ class SessionLoader:
|
|||
|
||||
if metadata_filepath.exists():
|
||||
try:
|
||||
with metadata_filepath.open("r", encoding="utf-8") as f:
|
||||
with metadata_filepath.open(
|
||||
"r", encoding="utf-8", errors="ignore"
|
||||
) as f:
|
||||
metadata = json.load(f)
|
||||
except json.JSONDecodeError as e:
|
||||
raise ValueError(
|
||||
|
|
|
|||
|
|
@ -182,7 +182,9 @@ class SessionLogger:
|
|||
if not messages_filepath.exists():
|
||||
messages_filepath.touch()
|
||||
|
||||
async with await AsyncPath(messages_filepath).open("a") as f:
|
||||
async with await AsyncPath(messages_filepath).open(
|
||||
"a", encoding="utf-8"
|
||||
) as f:
|
||||
for message in messages:
|
||||
await f.write(json.dumps(message, ensure_ascii=False) + "\n")
|
||||
await f.flush()
|
||||
|
|
@ -217,7 +219,9 @@ class SessionLogger:
|
|||
# Read old metadata and get total_messages
|
||||
try:
|
||||
if self.metadata_filepath.exists():
|
||||
async with await AsyncPath(self.metadata_filepath).open() as f:
|
||||
async with await AsyncPath(self.metadata_filepath).open(
|
||||
encoding="utf-8", errors="ignore"
|
||||
) as f:
|
||||
old_metadata = json.loads(await f.read())
|
||||
old_total_messages = old_metadata["total_messages"]
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -1,14 +0,0 @@
|
|||
# What's New in 2.0.0
|
||||
|
||||
- **Subagents**: The agent can now delegate tasks to specialized sub-agents for more complex workflows.
|
||||
- **Interactive Questions**: The agent can now ask you clarifying questions as it works.
|
||||
- **Slash Commands**: You can now define your own custom slash commands through skills.
|
||||
- **Auto-Update**: Vibe will now keep itself up to date automatically. Disable with `enable_auto_update = false` in `config.toml`.
|
||||
- **MCP Servers**: Configurations now support environment variables and custom timeouts.
|
||||
- **Agents System**: Modes have been replaced by a more flexible agents system.
|
||||
|
||||
### ⚠️ Breaking Changes
|
||||
- Custom modes must be migrated to the new agent format.
|
||||
- `workdir` setting in `config.toml` is no longer supported.
|
||||
- `instructions.md` files are no longer supported.
|
||||
- Heuristic regex matching is removed. To use a regex in `enabled_tools`, `disabled_tools`, `enabled_skills`, or `disabled_skills`, prefix it with `re:` (e.g., `re:serena.*`).
|
||||
Loading…
Add table
Add a link
Reference in a new issue