v1.2.0
Co-Authored-By: Quentin Torroba <quentin.torroba@mistral.ai> Co-Authored-By: Michel Thomazo <michel.thomazo@mistral.ai> Co-Authored-By: Kracekumar <kracethekingmaker@gmail.com>
This commit is contained in:
parent
661588de0c
commit
d8dbeeb31e
91 changed files with 4521 additions and 873 deletions
0
vibe/core/paths/__init__.py
Normal file
0
vibe/core/paths/__init__.py
Normal file
50
vibe/core/paths/config_paths.py
Normal file
50
vibe/core/paths/config_paths.py
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
from typing import Literal
|
||||
|
||||
from vibe.core.paths.global_paths import VIBE_HOME, GlobalPath
|
||||
from vibe.core.trusted_folders import trusted_folders_manager
|
||||
|
||||
_config_paths_locked: bool = True
|
||||
|
||||
|
||||
class ConfigPath(GlobalPath):
|
||||
@property
|
||||
def path(self) -> Path:
|
||||
if _config_paths_locked:
|
||||
raise RuntimeError("Config path is locked")
|
||||
return super().path
|
||||
|
||||
|
||||
def _resolve_config_path(basename: str, type: Literal["file", "dir"]) -> Path:
|
||||
cwd = Path.cwd()
|
||||
is_folder_trusted = trusted_folders_manager.is_trusted(cwd)
|
||||
if not is_folder_trusted:
|
||||
return VIBE_HOME.path / basename
|
||||
if type == "file":
|
||||
if (candidate := cwd / ".vibe" / basename).is_file():
|
||||
return candidate
|
||||
elif type == "dir":
|
||||
if (candidate := cwd / ".vibe" / basename).is_dir():
|
||||
return candidate
|
||||
return VIBE_HOME.path / basename
|
||||
|
||||
|
||||
def resolve_local_tools_dir(dir: Path) -> Path | None:
|
||||
if (candidate := dir / ".vibe" / "tools").is_dir():
|
||||
return candidate
|
||||
return None
|
||||
|
||||
|
||||
def unlock_config_paths() -> None:
|
||||
global _config_paths_locked
|
||||
_config_paths_locked = False
|
||||
|
||||
|
||||
CONFIG_FILE = ConfigPath(lambda: _resolve_config_path("config.toml", "file"))
|
||||
CONFIG_DIR = ConfigPath(lambda: CONFIG_FILE.path.parent)
|
||||
AGENT_DIR = ConfigPath(lambda: _resolve_config_path("agents", "dir"))
|
||||
PROMPT_DIR = ConfigPath(lambda: _resolve_config_path("prompts", "dir"))
|
||||
INSTRUCTIONS_FILE = ConfigPath(lambda: _resolve_config_path("instructions.md", "file"))
|
||||
HISTORY_FILE = ConfigPath(lambda: _resolve_config_path("vibehistory", "file"))
|
||||
37
vibe/core/paths/global_paths.py
Normal file
37
vibe/core/paths/global_paths.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Callable
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
from vibe import VIBE_ROOT
|
||||
|
||||
|
||||
class GlobalPath:
|
||||
def __init__(self, resolver: Callable[[], Path]) -> None:
|
||||
self._resolver = resolver
|
||||
|
||||
@property
|
||||
def path(self) -> Path:
|
||||
return self._resolver()
|
||||
|
||||
|
||||
_DEFAULT_VIBE_HOME = Path.home() / ".vibe"
|
||||
|
||||
|
||||
def _get_vibe_home() -> Path:
|
||||
if vibe_home := os.getenv("VIBE_HOME"):
|
||||
return Path(vibe_home).expanduser().resolve()
|
||||
return _DEFAULT_VIBE_HOME
|
||||
|
||||
|
||||
VIBE_HOME = GlobalPath(_get_vibe_home)
|
||||
GLOBAL_CONFIG_FILE = GlobalPath(lambda: VIBE_HOME.path / "config.toml")
|
||||
GLOBAL_ENV_FILE = GlobalPath(lambda: VIBE_HOME.path / ".env")
|
||||
GLOBAL_TOOLS_DIR = GlobalPath(lambda: VIBE_HOME.path / "tools")
|
||||
SESSION_LOG_DIR = GlobalPath(lambda: VIBE_HOME.path / "logs" / "session")
|
||||
TRUSTED_FOLDERS_FILE = GlobalPath(lambda: VIBE_HOME.path / "trusted_folders.toml")
|
||||
LOG_DIR = GlobalPath(lambda: VIBE_HOME.path / "logs")
|
||||
LOG_FILE = GlobalPath(lambda: VIBE_HOME.path / "vibe.log")
|
||||
|
||||
DEFAULT_TOOL_DIR = GlobalPath(lambda: VIBE_ROOT / "core" / "tools" / "builtins")
|
||||
Loading…
Add table
Add a link
Reference in a new issue