diff --git a/src/tracker/api/members.py b/src/tracker/api/members.py index 9582ce5..4a5db42 100644 --- a/src/tracker/api/members.py +++ b/src/tracker/api/members.py @@ -78,6 +78,8 @@ def _member_to_out(m: Member) -> dict: "status": m.status, "avatar_url": m.avatar_url, } + if m.type == "agent": + d["token"] = m.token if m.agent_config: d["agent_config"] = AgentConfigSchema( capabilities=m.agent_config.capabilities or [], @@ -213,6 +215,21 @@ async def regenerate_token(slug: str, db: AsyncSession = Depends(get_db)): return {"token": token} +@router.post("/members/{slug}/revoke-token") +async def revoke_token(slug: str, db: AsyncSession = Depends(get_db)): + result = await db.execute( + select(Member).where(Member.slug == slug) + ) + member = result.scalar_one_or_none() + if not member: + raise HTTPException(404, "Member not found") + if member.type != "agent": + raise HTTPException(400, "Only agent tokens can be revoked") + member.token = None + await db.commit() + return {"ok": True} + + @router.patch("/members/me/status") async def update_my_status(status: str, db: AsyncSession = Depends(get_db)): """Quick status update (used by agents)."""