---
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.
