"""Где что лежит в vault и в какой зоне живёт агент.""" from __future__ import annotations import os from datetime import datetime from pathlib import Path from zoneinfo import ZoneInfo TZ = "Europe/Warsaw" ZONE = ZoneInfo(TZ) LAUNCH = datetime(2026, 8, 28, tzinfo=ZONE) """Ночное закрытие трогает только чаты с активностью после запуска системы.""" VAULT = Path(os.environ.get("BEAVER_VAULT", "/vault")) """`/vault` в контейнере; `BEAVER_VAULT` - чтобы собрать конфиг на маке.""" CHATS = VAULT / "💬 чаты" DIARY = VAULT / "📅 дни" PEOPLE = VAULT / "👤 люди" BOARDS = VAULT / "📆 доски" BEAVER = VAULT / "мета" / "бобер" """Дом агента: всё, что он ведёт сам, лежит здесь.""" PROMPTS = BEAVER / "промпты" GRANULES = PROMPTS / "гранулы" SKILLS = BEAVER / "скиллы" DAYS = BEAVER / "дни" DIGESTS = BEAVER / "выжимки" INDEX = BEAVER / "индекс.md" NOTES = BEAVER / "наблюдения" PORTRAIT = NOTES / "Бобёр - наблюдения.md" REPLIES = BEAVER / "реплики" CURATOR_JOURNAL = BEAVER / "куратор.md" STATE = BEAVER / "состояние.md" STATE_MAX_LINES = 60 ATTACHMENTS = BEAVER / "вложения" def today() -> str: return datetime.now(ZONE).date().isoformat() def read(path: Path) -> str | None: return path.read_text(encoding="utf-8").strip() if path.exists() else None