"""Сборка gateway для Бобра. Что где: пакет `beaver_agent/`. - vault.py - пути и зона агента; prompts.py - как из гранул собирается промпт роли; - skills.py - наборы скиллов по окнам; policy.py - что можно трогать в vault; - hands/ - MCP-руки и кому какая выдана; agents.py - роли и их экземпляры; - frontends.py - окна; voice/ - голосовые точки по квартире и их ветка; - texts.py - всё, что gateway говорит, по-русски; - memory/ - справка, реплики, хендауты, вотчер, куратор; jobs/ - кроны и вебхуки. """ import os from beaver_gateway.config import Gateway from beaver_gateway.conversations.distill import Distiller from beaver_gateway.conversations.rotation import RotationPolicy from beaver_gateway.jobs.scheduler import Budget from beaver_agent import texts from beaver_agent.agents import agents from beaver_agent.frontends import frontends from beaver_agent.hands import mcps from beaver_agent.jobs import jobs from beaver_agent.memory.watch import recall, replies, watch from beaver_agent.vault import DIGESTS, INDEX, TZ gateway = Gateway( agents=agents, mcps=mcps, frontends=frontends, texts=texts.CONVERSATIONS, jobs=jobs, rotation=RotationPolicy(tz=TZ, max_context_tokens=500_000), watch=watch, recall=recall.block, user_sink=replies.write, budget=Budget(threshold=0.7), distiller=Distiller( agent="beaver-distiller", dir=DIGESTS, index=INDEX, type="выжимка", index_header="# индекс\n\nстрока на выжимку: чат → его выжимка.\n", ), tz=TZ, port=62990, public_url=os.environ.get("PUBLIC_BASE_URL", "").rstrip("/") or None, )