| 1 | from helpers.api import ApiHandler, Request, Response |
| 2 | from helpers import message_queue as mq |
| 3 | from agent import AgentContext |
| 4 | from helpers.state_monitor_integration import mark_dirty_for_context |
| 5 | |
| 6 | |
| 7 | class MessageQueueAdd(ApiHandler): |
| 8 | """Add a message to the queue.""" |
| 9 | |
| 10 | async def process(self, input: dict, request: Request) -> dict | Response: |
| 11 | context = AgentContext.get(input.get("context", "")) |
| 12 | if not context: |
| 13 | return Response("Context not found", status=404) |
| 14 | |
| 15 | text = input.get("text", "").strip() |
| 16 | attachments = input.get("attachments", []) # filenames from /upload API |
| 17 | item_id = input.get("item_id") |
| 18 | |
| 19 | if not text and not attachments: |
| 20 | return Response("Empty message", status=400) |
| 21 | |
| 22 | item = mq.add(context, text, attachments, item_id) |
| 23 | mark_dirty_for_context(context.id, reason="message_queue_add") |
| 24 | return {"ok": True, "item_id": item["id"], "queue_length": len(mq.get_queue(context))} |