Initial commit

Co-Authored-By: Quentin Torroba <quentin.torroba@mistral.ai>
Co-Authored-By: Laure Hugo <laure.hugo@mistral.ai>
Co-Authored-By: Benjamin Trom <benjamin.trom@mistral.ai>
Co-Authored-By: Mathias Gesbert <mathias.gesbert@ext.mistral.ai>
Co-Authored-By: Michel Thomazo <michel.thomazo@mistral.ai>
Co-Authored-By: Clément Drouin <clement.drouin@mistral.ai>
Co-Authored-By: Vincent Guilloux <vincent.guilloux@mistral.ai>
Co-Authored-By: Valentin Berard <val@mistral.ai>
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
Quentin Torroba 2025-12-09 13:13:22 +01:00 committed by Quentin Torroba
commit fa15fc977b
200 changed files with 30484 additions and 0 deletions

View file

@ -0,0 +1,142 @@
from __future__ import annotations
from pathlib import Path
from vibe.core.autocompletion.path_prompt_adapter import (
DEFAULT_MAX_EMBED_BYTES,
render_path_prompt,
)
def test_treats_paths_to_files_as_embedded_resources(tmp_path: Path) -> None:
readme = tmp_path / "README.md"
readme.write_text("hello", encoding="utf-8")
src_dir = tmp_path / "src"
src_dir.mkdir()
main_py = src_dir / "main.py"
main_py.write_text("print('hi')", encoding="utf-8")
rendered = render_path_prompt(
"Please review @README.md and @src/main.py",
base_dir=tmp_path,
max_embed_bytes=DEFAULT_MAX_EMBED_BYTES,
)
expected = (
f"Please review README.md and src/main.py\n\n"
f"{readme.as_uri()}\n```\nhello\n```\n\n"
f"{main_py.as_uri()}\n```\nprint('hi')\n```"
)
assert rendered == expected
def test_treats_path_to_directory_as_resource_links(tmp_path: Path) -> None:
docs_dir = tmp_path / "docs"
docs_dir.mkdir()
rendered = render_path_prompt(
"See @docs/ for details",
base_dir=tmp_path,
max_embed_bytes=DEFAULT_MAX_EMBED_BYTES,
)
expected = f"See docs/ for details\n\nuri: {docs_dir.as_uri()}\nname: docs/"
assert rendered == expected
def test_keeps_emails_and_embeds_paths(tmp_path: Path) -> None:
readme = tmp_path / "README.md"
readme.write_text("hello", encoding="utf-8")
rendered = render_path_prompt(
"Contact user@example.com about @README.md",
base_dir=tmp_path,
max_embed_bytes=DEFAULT_MAX_EMBED_BYTES,
)
expected = (
f"Contact user@example.com about README.md\n\n"
f"{readme.as_uri()}\n```\nhello\n```"
)
assert rendered == expected
def test_ignores_nonexistent_paths(tmp_path: Path) -> None:
rendered = render_path_prompt(
"Missing @nope.txt here",
base_dir=tmp_path,
max_embed_bytes=DEFAULT_MAX_EMBED_BYTES,
)
assert rendered == "Missing @nope.txt here"
def test_falls_back_to_link_for_binary_files(tmp_path: Path) -> None:
binary_path = tmp_path / "image.bin"
binary_path.write_bytes(b"\x00\x01\x02")
rendered = render_path_prompt(
"Inspect @image.bin", base_dir=tmp_path, max_embed_bytes=DEFAULT_MAX_EMBED_BYTES
)
assert (
rendered == f"Inspect image.bin\n\nuri: {binary_path.as_uri()}\nname: image.bin"
)
def test_excludes_supposed_binary_files_quickly_before_reading_content(
tmp_path: Path,
) -> None:
zip_like = tmp_path / "archive.zip"
zip_like.write_text("text content inside but treated as binary", encoding="utf-8")
rendered = render_path_prompt(
"Inspect @archive.zip",
base_dir=tmp_path,
max_embed_bytes=DEFAULT_MAX_EMBED_BYTES,
)
assert (
rendered
== f"Inspect archive.zip\n\nuri: {zip_like.as_uri()}\nname: archive.zip"
)
def test_applies_max_embed_size_guard(tmp_path: Path) -> None:
large_file = tmp_path / "big.txt"
large_file.write_text("a" * 50, encoding="utf-8")
rendered = render_path_prompt(
"Review @big.txt", base_dir=tmp_path, max_embed_bytes=10
)
assert rendered == f"Review big.txt\n\nuri: {large_file.as_uri()}\nname: big.txt"
def test_parses_paths_with_special_characters_when_quoted(tmp_path: Path) -> None:
weird = tmp_path / "weird name(1).txt"
weird.write_text("odd", encoding="utf-8")
rendered = render_path_prompt(
'Open @"weird name(1).txt"',
base_dir=tmp_path,
max_embed_bytes=DEFAULT_MAX_EMBED_BYTES,
)
assert rendered == f"Open weird name(1).txt\n\n{weird.as_uri()}\n```\nodd\n```"
def test_deduplicates_identical_paths(tmp_path: Path) -> None:
readme = tmp_path / "README.md"
readme.write_text("hello", encoding="utf-8")
rendered = render_path_prompt(
"See @README.md and again @README.md",
base_dir=tmp_path,
max_embed_bytes=DEFAULT_MAX_EMBED_BYTES,
)
assert (
rendered
== f"See README.md and again README.md\n\n{readme.as_uri()}\n```\nhello\n```"
)