refactor(agents,core,frontends): typed kinds, prompts per kind, frontend agents as parameters

This commit is contained in:
hh
2026-08-28 16:36:44 +02:00
parent 827fa0977b
commit 70349e5ff4
11 changed files with 129 additions and 50 deletions
+5 -5
View File
@@ -36,6 +36,7 @@ from claude_agent_sdk import (
from sqlmodel import col, select
from beaver_gateway.core.injects import InjectQueue, inject_header
from beaver_gateway.core.kinds import KINDS, Kind
from beaver_gateway.core.transcript import (
messages_from_entries,
render_messages,
@@ -77,7 +78,6 @@ __all__ = [
_log = logging.getLogger("beaver_gateway.core.conversations")
KINDS = ("master", "branch", "deep", "job", "fork")
SEEDS = ("clean", "morning", "copy", "brief")
_STATUSES = ("open", "merged", "closed", "archived")
_DEFAULT_MERGE_PROMPT = (
@@ -91,7 +91,7 @@ _UNITS = {"s": 1, "m": 60, "h": 3600, "d": 86400}
@dataclass(frozen=True, slots=True)
class SeedContext:
kind: str
kind: Kind
seed: str
agent: str
parent: Conversation | None
@@ -177,7 +177,7 @@ class Conversations:
async def create(
self,
*,
kind: str,
kind: Kind,
agent: str,
parent: Conversation | None = None,
title: str | None = None,
@@ -406,7 +406,7 @@ class Conversations:
msg = f"unknown frontend {name!r}"
raise ValueError(msg)
def default_agent(self, kind: str) -> str | None:
def default_agent(self, kind: Kind) -> str | None:
for fe in self._frontends:
if kind in fe.kinds and (agent := fe.agent_for(kind)):
return agent
@@ -426,7 +426,7 @@ class Conversations:
async def spawn(
self,
*,
kind: str,
kind: Kind,
agent: str | None = None,
seed: str = "clean",
parent: Conversation | None = None,