from __future__ import annotations import json from pathlib import Path from typing import Any def projects_root() -> Path: root = Path("projects") root.mkdir(parents=True, exist_ok=True) return root def create_project_dir(tenant_id: str, project_id: str) -> Path: base = projects_root() / tenant_id / project_id base.mkdir(parents=True, exist_ok=True) return base def write_artifact_text(base: Path, name: str, content: str) -> None: (base / name).write_text(content) def write_artifact_json(base: Path, name: str, obj: Any) -> None: (base / name).write_text(json.dumps(obj, indent=2))