69 lines
2.3 KiB
Python
69 lines
2.3 KiB
Python
"""Окна: личка с ботом для мастера и веток, файлы vault для глубоких, API и админка."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
from datetime import date
|
|
from typing import TYPE_CHECKING
|
|
|
|
from beaver_gateway.frontends.admin import AdminFrontend
|
|
from beaver_gateway.frontends.anthropic import AnthropicMessagesFrontend
|
|
from beaver_gateway.frontends.api import ApiFrontend
|
|
from beaver_gateway.frontends.markdown import MarkdownFrontend
|
|
from beaver_gateway.frontends.mcp_server import McpServerFrontend
|
|
from beaver_gateway.frontends.telegram import Attachments, TelegramFrontend
|
|
from beaver_gateway.frontends.turn_record import slugify
|
|
|
|
from beaver_agent import texts
|
|
from beaver_agent.vault import ATTACHMENTS, BEAVER, CHATS, TZ, VAULT
|
|
from beaver_agent.voice import AGENT as VOICE
|
|
from beaver_agent.voice import VoiceFrontend
|
|
|
|
if TYPE_CHECKING:
|
|
from pathlib import Path
|
|
|
|
from beaver_gateway.frontends.base import Frontend
|
|
|
|
DISPATCHER = "beaver-dispatcher"
|
|
DEEP = "beaver-opus-high"
|
|
|
|
|
|
def chat_path(title: str, agent: str, vault: Path) -> Path: # noqa: ARG001
|
|
"""Файл глубокого чата: помесячная папка, дата и тема."""
|
|
today = date.today()
|
|
return (
|
|
vault / f"{today:%Y-%m}" / f"{today:%Y-%m-%d} - {slugify(title, maxlen=60)}.md"
|
|
)
|
|
|
|
|
|
telegram = (
|
|
TelegramFrontend(
|
|
token=os.environ["TELEGRAM_BOT_TOKEN"],
|
|
user_id=int(os.environ["TELEGRAM_USER_ID"]),
|
|
master_agent=DISPATCHER,
|
|
branch_agent=DISPATCHER,
|
|
attachments=Attachments(mode="vault", dir=ATTACHMENTS, keep_days=30, tz=TZ),
|
|
texts=texts.TELEGRAM,
|
|
)
|
|
if os.environ.get("TELEGRAM_BOT_TOKEN")
|
|
else None
|
|
)
|
|
"""Вложения - входящая папка по дням в зоне агента; нужное он переносит сам."""
|
|
|
|
frontends: list[Frontend] = [
|
|
*([telegram] if telegram is not None else []),
|
|
AnthropicMessagesFrontend(),
|
|
McpServerFrontend(),
|
|
AdminFrontend(),
|
|
ApiFrontend(
|
|
master_agent=DISPATCHER,
|
|
branch_agent=DISPATCHER,
|
|
memory_root=BEAVER,
|
|
vault_root=VAULT,
|
|
),
|
|
MarkdownFrontend(
|
|
vault_path=CHATS, default_agent=DEEP, log_all_chats=True, chat_path=chat_path
|
|
),
|
|
VoiceFrontend(agent=VOICE),
|
|
]
|