Fix: task system messages use broadcast_message (not broadcast_all)
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
broadcast_all bypasses agent filtering (system message @mention check), so agents received ALL task lifecycle messages and processed them as new requests, causing duplicate task creation.
This commit is contained in:
parent
c2c595224c
commit
f20da3685d
@ -142,9 +142,12 @@ async def _system_message(
|
|||||||
attachments=[],
|
attachments=[],
|
||||||
created_at=task_msg.created_at.isoformat() if task_msg.created_at else datetime.datetime.now(datetime.timezone.utc).isoformat(),
|
created_at=task_msg.created_at.isoformat() if task_msg.created_at else datetime.datetime.now(datetime.timezone.utc).isoformat(),
|
||||||
)
|
)
|
||||||
await manager.broadcast_all(
|
# Broadcast task comment via broadcast_message (applies agent filtering: @mention check)
|
||||||
{"type": WSEventType.MESSAGE_NEW, "data": task_msg_out.model_dump()},
|
project_id = str(task.project_id)
|
||||||
exclude_slug="system",
|
await manager.broadcast_message(
|
||||||
|
project_id,
|
||||||
|
task_msg_out.model_dump(),
|
||||||
|
author_slug="system",
|
||||||
)
|
)
|
||||||
|
|
||||||
# Broadcast chat message
|
# Broadcast chat message
|
||||||
|
|||||||
@ -351,12 +351,15 @@ async def _handle_chat_send(session_id: str, data: dict):
|
|||||||
|
|
||||||
async def _handle_agent_stream(session_id: str, event_type: str, data: dict):
|
async def _handle_agent_stream(session_id: str, event_type: str, data: dict):
|
||||||
"""Relay agent streaming events to project subscribers."""
|
"""Relay agent streaming events to project subscribers."""
|
||||||
|
logger.info("STREAM event: %s data=%s", event_type, str(data)[:200])
|
||||||
client = manager.sessions.get(session_id)
|
client = manager.sessions.get(session_id)
|
||||||
if not client:
|
if not client:
|
||||||
|
logger.warning("STREAM: no client for session %s", session_id[:8])
|
||||||
return
|
return
|
||||||
|
|
||||||
# Only agents can stream
|
# Only agents can stream
|
||||||
if client.member_type != MemberType.AGENT:
|
if client.member_type != MemberType.AGENT:
|
||||||
|
logger.warning("STREAM: non-agent %s tried to stream", client.member_slug)
|
||||||
return
|
return
|
||||||
|
|
||||||
# Determine project_id from chat_id or task_id in the data
|
# Determine project_id from chat_id or task_id in the data
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user