From c3d5c944ead740f05a4bab7041bd92a02ddf20bc Mon Sep 17 00:00:00 2001 From: h Date: Tue, 1 Sep 2026 13:56:30 +0000 Subject: [PATCH] fix(config,compose): calendar url out of the config error, capped container logs --- .env.example | 4 +++- config.py | 6 ++++-- docker-compose.yml | 7 +++++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/.env.example b/.env.example index 29b894f..77a7b4a 100644 --- a/.env.example +++ b/.env.example @@ -59,7 +59,9 @@ RAYCAST_BEARER= # Firefly III: адрес и Personal Access Token FIREFLY_BASE_URL= FIREFLY_PAT= -# Календари: name=url,name=url (пусто - без календарей) +# Календари: name=url,name=url (пусто - без календарей). +# В url лежит приватный ical-фид (google `/private-<токен>/`, usos `key=`) - +# это секрет: утёк url = утёк календарь, лечится перевыпуском фида. CALENDAR_MCPS= # MCP beavergram (telegram-history) BEAVERGRAM_MCP= diff --git a/config.py b/config.py index aaf43ed..a1ffa9e 100644 --- a/config.py +++ b/config.py @@ -157,13 +157,15 @@ def chat_path(title: str, agent: str, vault: Path) -> Path: # noqa: ARG001 def _calendar_mcps() -> list[HttpMcp]: raw = os.environ.get("CALENDAR_MCPS", "").strip() servers: list[HttpMcp] = [] - for raw_entry in raw.split(","): + for position, raw_entry in enumerate(raw.split(","), start=1): entry = raw_entry.strip() if not entry: continue name, sep, url = entry.partition("=") if not sep or not url.strip(): - msg = f"CALENDAR_MCPS entry must be `name=url`, got: {entry!r}" + # Только номер: в url лежит приватный ical-фид с токеном в пути, + # а traceback уезжает в docker logs целиком. + msg = f"CALENDAR_MCPS: запись #{position} не вида `name=url`" raise ValueError(msg) servers.append(McpServer.http(name=f"calendar-{name.strip()}", url=url.strip())) return servers diff --git a/docker-compose.yml b/docker-compose.yml index 164df29..da442e3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,12 @@ x-restart: &restart restart: unless-stopped + # Логи контейнеров - не хранилище: держим окно небольшим, чтобы то, что + # всё-таки просочилось в stdout, не жило на диске месяцами. + logging: + driver: json-file + options: + max-size: "20m" + max-file: "3" services: postgres: