45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
"""Где что лежит в 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
|