56 lines
2.4 KiB
Python
56 lines
2.4 KiB
Python
# Sample user config — grows alongside the implementation phases.
|
|
#
|
|
# Loader (beaver_gateway/config_loader.py) execs this file with
|
|
# ClaudeAgent, RaycastAgent, McpServer, ExposedMcp, Gateway already
|
|
# bound — so importing them is optional. We import explicitly here so
|
|
# IDEs and type-checkers see real symbols instead of free variables.
|
|
from datetime import date
|
|
|
|
from beaver_gateway.agents.claude import ClaudeAgent
|
|
from beaver_gateway.agents.raycast import RaycastAgent, RemoteTool, UserPreferences
|
|
from beaver_gateway.core.registry import Gateway
|
|
from beaver_gateway.frontends.anthropic import AnthropicMessagesFrontend
|
|
|
|
gateway = Gateway(
|
|
agents=[
|
|
ClaudeAgent(
|
|
name="stub",
|
|
model="claude-sonnet-4-6",
|
|
system_prompt="You are a stub agent used to validate the Phase 0 skeleton.",
|
|
cwd="/tmp",
|
|
),
|
|
# Phase 1.2 — a RaycastAgent the AnthropicMessagesFrontend will
|
|
# route via RaycastBackend. Phase 1.5 added the per-agent knobs
|
|
# (`temperature` / `additional_system_instructions` / etc.) —
|
|
# only `model`, `system_prompt`, and at least one of the others
|
|
# is mandatory.
|
|
RaycastAgent(
|
|
name="research",
|
|
model="Gemini 3.1 Flash Lite",
|
|
system_prompt=(
|
|
"You are a research assistant. "
|
|
"Reply in the user's language. Cite URLs when you use web search."
|
|
),
|
|
temperature=0.5,
|
|
available_native_tools=(RemoteTool.WEB_SEARCH, RemoteTool.READ_PAGE),
|
|
# Lambda so today's date is rebuilt on every request while
|
|
# locale/timezone stay pinned. ``True`` would give the same
|
|
# fresh-date behaviour but would also auto-pick host locale
|
|
# and timezone (``en-US`` / system tz), which isn't what we
|
|
# want here.
|
|
user_preferences=lambda: UserPreferences(
|
|
locale="en-GB",
|
|
timezone="Europe/Berlin",
|
|
current_date=date.today().isoformat(), # noqa: DTZ011 — local date is intended
|
|
),
|
|
),
|
|
],
|
|
mcps=[],
|
|
frontends=[
|
|
# Phase 1.4 — expose the agents as `model=<name>` on an
|
|
# Anthropic-compatible Messages endpoint. Auth comes from
|
|
# `BOOTSTRAP_TOKENS` in the env (`name1:value1,name2:value2`).
|
|
AnthropicMessagesFrontend(host="0.0.0.0", port=8000),
|
|
],
|
|
)
|