diff --git a/src/tracker/api/members.py b/src/tracker/api/members.py index 2b2f93d..da95bcd 100644 --- a/src/tracker/api/members.py +++ b/src/tracker/api/members.py @@ -12,6 +12,7 @@ from sqlalchemy.orm import selectinload from ..database import get_db from ..enums import AuthMethod, ListenMode, MemberRole, MemberStatus, MemberType from ..models import Member, AgentConfig +from .auth import get_current_member from .schemas import MemberOut, AgentConfigOut, OkResponse from .converters import member_out @@ -237,9 +238,20 @@ async def revoke_token(slug: str, db: AsyncSession = Depends(get_db)): @router.patch("/members/me/status") -async def update_my_status(status: str, db: AsyncSession = Depends(get_db)): +async def update_my_status( + status: str = Query(...), + current_member: Member = Depends(get_current_member), + db: AsyncSession = Depends(get_db), +): """Quick status update (used by agents).""" - # TODO: get current member from auth + current_member.status = status + await db.commit() + + from ..ws.manager import manager + await manager.broadcast_all( + {"type": "agent.status", "data": {"slug": current_member.slug, "status": status}}, + exclude_slug=current_member.slug, + ) return {"status": status}