--- name: comfyui_queue_manage kind: function lang: py domain: ml version: "1.0.0" purity: impure signature: "def comfyui_queue_manage(action: str, *, server: str = \"127.0.0.1:8188\", prompt_id: str | None = None) -> dict" description: "Gestiona la cola y el historial de ComfyUI via su API HTTP. action='status' (GET /queue -> queue_running/queue_pending), 'clear' (POST /queue {\"clear\":true} -> vacia pendientes), 'delete' (POST /queue {\"delete\":[prompt_id]} -> borra un prompt, requiere prompt_id), 'history' (GET /history -> history_count). Completa lo que comfyui_interrupt_queue no cubre. Devuelve {ok, action, queue_running, queue_pending, history_count, error}. NO lanza en fallo de red: degrada a {ok:False, error}. Impura: HTTP GET/POST, solo stdlib (urllib, json)." tags: [comfyui, ml, queue, history, control, http] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: [] params: - name: action desc: "operacion: 'status' (estado de la cola), 'clear' (vaciar pendientes), 'delete' (borrar un prompt; requiere prompt_id), 'history' (contar historial)." - name: server desc: "host:port del servidor ComfyUI sin esquema (default '127.0.0.1:8188')." - name: prompt_id desc: "id del prompt a borrar; obligatorio solo para action='delete'." output: "dict con ok (bool), action (str, eco), queue_running (int, prompts ejecutandose; status/clear/delete), queue_pending (int, prompts encolados; status/clear/delete), history_count (int, prompts en el historial; action='history'), error (str, vacio si OK)." tested: false tests: [] test_file_path: "" file_path: "python/functions/ml/comfyui_queue_manage.py" --- ## Ejemplo ```python import sys, os sys.path.insert(0, os.path.join(os.environ["HOME"], "fn_registry", "python", "functions")) from ml.comfyui_queue_manage import comfyui_queue_manage # Estado de la cola st = comfyui_queue_manage("status") # {'ok': True, 'action': 'status', 'queue_running': 1, 'queue_pending': 3, 'history_count': 0, 'error': ''} # Cuantos prompts recuerda el historial h = comfyui_queue_manage("history") print(h["history_count"]) # Vaciar los pendientes (no corta el que se ejecuta; para eso, comfyui_interrupt_queue) comfyui_queue_manage("clear") # Borrar un prompt concreto de la cola de pendientes comfyui_queue_manage("delete", prompt_id="abc123-...") ``` O lanzable directo: `./fn run comfyui_queue_manage status` ยท `./fn run comfyui_queue_manage history`. ## Cuando usarla Cuando necesitas operar la cola mas alla de cortar el prompt en curso: ver de un vistazo cuanto queda (`status`), limpiar de golpe un barrido de seeds que ya no quieres (`clear`), quitar un prompt pesado encolado por error sin matar el que se ejecuta (`delete`), o saber cuantas generaciones recuerda el servidor (`history`). Es el complemento de `comfyui_interrupt_queue` (que solo corta + lee) para cubrir las cuatro acciones restantes de `/queue` y `/history`. ## Gotchas - `clear` vacia SOLO los pendientes; el prompt en ejecucion sigue. Para cortarlo usa `comfyui_interrupt_queue` (POST /interrupt) antes del `clear`. - `delete` requiere `prompt_id`; sin el devuelve `ok=False` con el error. El id es el que devuelve `comfyui_submit_workflow`. Borrar un prompt que ya no esta en la cola es inocuo (el servidor lo ignora). - En `status`/`clear`/`delete` se rellenan `queue_running`/`queue_pending`; en `history` se rellena `history_count` (los otros quedan en 0). Mira `action` para saber que campos son significativos. - En fallo de red NO lanza: devuelve `ok=False` con el mensaje en `error`. Comprueba `ok` antes de fiarte de los conteos. - `history_count` es el numero de entradas que el servidor mantiene en memoria, no un acumulado historico persistente: se reinicia al reiniciar ComfyUI.