refactor(agents,core,frontends): typed kinds, prompts per kind, frontend agents as parameters
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user