fix(ai): creation dossier+fichier en mode agent (BUG-050)
This commit is contained in:
@@ -131,18 +131,33 @@ def create_file(
|
||||
return {"success": True, "vault": vault_name, "path": rel_path, "size": len(content)}
|
||||
|
||||
|
||||
def create_directory(vault_name: str, path: str) -> dict[str, Any]:
|
||||
def create_directory(vault_name: str, path: str, *, exist_ok: bool = False) -> dict[str, Any]:
|
||||
"""Create a directory (and its parents) in a vault.
|
||||
|
||||
Args:
|
||||
vault_name: Name of the vault.
|
||||
path: Vault-relative path of the new directory.
|
||||
exist_ok: When True, an existing directory is a success (idempotent)
|
||||
instead of raising ``already_exists``. Used by the AI tool layer so
|
||||
a "create folder then create file" plan does not fail when the
|
||||
folder is already there (``create_file`` creates parents anyway).
|
||||
|
||||
Raises:
|
||||
ServiceError: ``not_found`` (404), ``read_only`` (403) or
|
||||
``already_exists`` (409).
|
||||
``already_exists`` (409) when *exist_ok* is False.
|
||||
"""
|
||||
root = get_vault_root(vault_name)
|
||||
_ensure_writable(root)
|
||||
dir_path = resolve_safe_path(root, path)
|
||||
|
||||
if dir_path.exists():
|
||||
if exist_ok and dir_path.is_dir():
|
||||
return {
|
||||
"success": True,
|
||||
"vault": vault_name,
|
||||
"path": _rel(root, dir_path),
|
||||
"existed": True,
|
||||
}
|
||||
raise ServiceError(
|
||||
f"Directory already exists: {path}",
|
||||
code="already_exists",
|
||||
|
||||
Reference in New Issue
Block a user