| """Path detection β HF Spaces /data bucket vs local ./local_data clone. |
| |
| Environment variables (defaults match the REAL published repo): |
| ELYSIUM_MODEL_REPO default: build-small-hackathon/elysium-MiniCPM-V-4.6-F16-GGUF |
| ELYSIUM_GGUF_FILE default: elysium-f16.gguf |
| ELYSIUM_MMPROJ_FILE default: "" (no mmproj file is published yet β vision auto-disables) |
| HF_TOKEN optional read token for private/gated repos |
| ELYSIUM_OFFLINE "1" to force offline mode |
| """ |
| import os |
| from pathlib import Path |
|
|
|
|
| def _detect() -> Path: |
| p = Path("/data") |
| if p.exists() and os.access(p, os.W_OK): |
| return p |
| local = Path(__file__).resolve().parent.parent / "local_data" |
| local.mkdir(exist_ok=True) |
| return local |
|
|
|
|
| DATA_PATH = _detect() |
| HYPERGRAPH_DB = DATA_PATH / "hypergraph" / "civilization.db" |
| FOSSILS_DIR = DATA_PATH / "fossils" |
| AUDIO_CACHE = DATA_PATH / "audio_cache" |
| NODE_POSITIONS = DATA_PATH / "node_positions" |
| REMINDERS_DB = DATA_PATH / "reminders.db" |
| CALENDAR_ICS = DATA_PATH / "calendar.ics" |
| OUTBOX = DATA_PATH / "outbox" |
| UPLOADS_DIR = DATA_PATH / "uploads" |
|
|
| for d in (HYPERGRAPH_DB.parent, FOSSILS_DIR, AUDIO_CACHE, NODE_POSITIONS, OUTBOX, UPLOADS_DIR): |
| d.mkdir(parents=True, exist_ok=True) |
|
|
| |
| MODEL_REPO = os.environ.get("ELYSIUM_MODEL_REPO", "build-small-hackathon/elysium-MiniCPM-V-4.6-F16-GGUF") |
| GGUF_FILE = os.environ.get("ELYSIUM_GGUF_FILE", "elysium-f16.gguf") |
| MMPROJ_FILE = os.environ.get("ELYSIUM_MMPROJ_FILE", "") |
|
|
| HF_TOKEN = os.environ.get("HF_TOKEN") or os.environ.get("HUGGING_FACE_HUB_TOKEN") or None |
| OFFLINE_MODE = os.environ.get("ELYSIUM_OFFLINE", "0") == "1" |
|
|
| |
| MAX_UPLOAD_FILES = 2 |
| MAX_UPLOAD_BYTES = 12 * 1024 * 1024 |
| ALLOWED_MIME_TYPES = { |
| "image/png", "image/jpeg", "image/webp", "image/gif", |
| "application/pdf", |
| } |
|
|