"""
Action Card 队列 —— Dify 工具端点 → SSE 生成器

使用全局队列（不区分用户），因为 Dify 工具调用发生在 SSE 流的生命周期内。
"""
from __future__ import annotations
import asyncio
from typing import Any

_pending_cards: list[dict[str, Any]] = []
_lock = asyncio.Lock()


async def push_card(card_data: dict[str, Any]) -> None:
    """工具端点调用：推入一个 action_card"""
    async with _lock:
        _pending_cards.append(card_data)
        print(f"[ActionCardQueue] pushed card: {card_data.get('card_type', 'unknown')}")


async def pop_cards() -> list[dict[str, Any]]:
    """SSE 生成器调用：取出并清空所有 pending 的 action_card"""
    async with _lock:
        cards = list(_pending_cards)
        _pending_cards.clear()
    return cards
