import json from pathlib import Path DEFAULT_INGEST_ROOT = "/mnt/data/shared/scans/processed" SETTINGS_FILE = Path("/mnt/storage/document-processor/settings/ingest.json") def _ensure_parent() -> None: SETTINGS_FILE.parent.mkdir(parents=True, exist_ok=True) def get_default_ingest_root() -> str: try: if SETTINGS_FILE.exists(): data = json.loads(SETTINGS_FILE.read_text()) value = str(data.get("default_ingest_root") or "").strip() if value: return value except Exception: pass return DEFAULT_INGEST_ROOT def set_default_ingest_root(path_str: str) -> str: value = str(path_str or "").strip() if not value: value = DEFAULT_INGEST_ROOT _ensure_parent() SETTINGS_FILE.write_text(json.dumps({"default_ingest_root": value}, indent=2)) return value def reset_default_ingest_root() -> str: _ensure_parent() SETTINGS_FILE.write_text(json.dumps({"default_ingest_root": DEFAULT_INGEST_ROOT}, indent=2)) return DEFAULT_INGEST_ROOT def browse_directory(path_str: str) -> dict: target = Path(path_str).expanduser().resolve() result = { "path": str(target), "exists": target.exists(), "is_dir": target.is_dir(), "parent": "", "entries": [], "error": "", } if not target.exists(): result["error"] = "Directory does not exist." return result if not target.is_dir(): result["error"] = "Path is not a directory." return result parent = target.parent if parent != target: result["parent"] = str(parent) try: children = sorted( list(target.iterdir()), key=lambda p: (not p.is_dir(), p.name.lower()), ) except Exception as exc: result["error"] = f"Could not read directory: {exc}" return result entries = [] for child in children[:300]: entries.append( { "name": child.name, "path": str(child), "is_dir": child.is_dir(), } ) result["entries"] = entries return result