File size: 1,173 Bytes
67b6ab0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from helpers.api import ApiHandler, Request, Response
from helpers import message_queue as mq
from agent import AgentContext
from helpers.state_monitor_integration import mark_dirty_for_context

class MessageQueueSend(ApiHandler):
    """Send queued message(s) immediately."""

    async def process(self, input: dict, request: Request) -> dict | Response:
        context = AgentContext.get(input.get("context", ""))
        if not context:
            return Response("Context not found", status=404)

        if not mq.has_queue(context):
            return {"ok": True, "message": "Queue empty"}

        item_id = input.get("item_id")
        send_all = input.get("send_all", False)

        if send_all:
            count = mq.send_all_aggregated(context)
            return {"ok": True, "sent_count": count}

        # Send single item
        item = mq.pop_item(context, item_id) if item_id else mq.pop_first(context)
        if not item:
            return Response("Item not found", status=404)

        mq.send_message(context, item)
        mark_dirty_for_context(context.id, reason="message_queue_send")
        return {"ok": True, "sent_item_id": item["id"]}