From 4dde7b940a3c749f601e02d55a736df137e4daac Mon Sep 17 00:00:00 2001 From: markov Date: Fri, 27 Feb 2026 16:32:27 +0100 Subject: [PATCH] config.updated WS event + provider in AgentConfig update - PATCH /members/{id} sends config.updated WS event to agent - WSEventType.CONFIG_UPDATED added to enums - update_member handles provider + max_concurrent_tasks --- src/tracker/api/members.py | 21 +++++++++++++++++++++ src/tracker/enums.py | 1 + 2 files changed, 22 insertions(+) diff --git a/src/tracker/api/members.py b/src/tracker/api/members.py index 65cd54d..3b5255a 100644 --- a/src/tracker/api/members.py +++ b/src/tracker/api/members.py @@ -160,6 +160,7 @@ async def update_member(member_id: str, req: MemberUpdate, db: AsyncSession = De if req.avatar_url is not None: member.avatar_url = req.avatar_url + config_changed = False if req.agent_config and member.type == MemberType.AGENT: if not member.agent_config: member.agent_config = AgentConfig(member_id=member.id) @@ -174,9 +175,29 @@ async def update_member(member_id: str, req: MemberUpdate, db: AsyncSession = De member.agent_config.prompt = ac.prompt if ac.model is not None: member.agent_config.model = ac.model + config_changed = True await db.commit() await db.refresh(member) + + # Notify agent of config change via WS + if config_changed and member.agent_config: + from ..ws.manager import manager + from ..enums import WSEventType + ac = member.agent_config + await manager.send_to_member(str(member.id), { + "type": WSEventType.CONFIG_UPDATED, + "data": { + "model": ac.model, + "provider": ac.provider, + "prompt": ac.prompt, + "chat_listen": ac.chat_listen, + "task_listen": ac.task_listen, + "max_concurrent_tasks": ac.max_concurrent_tasks, + "capabilities": ac.capabilities or [], + }, + }) + return member_out(member) diff --git a/src/tracker/enums.py b/src/tracker/enums.py index c452967..12dce7a 100644 --- a/src/tracker/enums.py +++ b/src/tracker/enums.py @@ -103,3 +103,4 @@ class WSEventType(StrEnum): AGENT_STREAM_DELTA = "agent.stream.delta" AGENT_STREAM_TOOL = "agent.stream.tool" AGENT_STREAM_END = "agent.stream.end" + CONFIG_UPDATED = "config.updated"