--- name: comfyui_queue_prompt_ui kind: function lang: py domain: browser version: "1.0.0" purity: impure signature: "def comfyui_queue_prompt_ui(*, port: int = 9222, server_url_substr: str = '8188', timeout_s: float = 20.0) -> dict" description: "Encola el grafo actual de ComfyUI desde la UI (equivale a pulsar 'Queue Prompt'): llama app.queuePrompt(0) en la pestana, que serializa el grafo al API format y hace POST /prompt al server. Compone cdp_eval. Impura: red (CDP) + dispara trabajo de GPU." tags: [comfyui, browser, cdp, ml, image-generation, stable-diffusion, ui-automation] uses_functions: ["cdp_eval_py_browser"] uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: ["json"] params: - name: port desc: "Puerto de remote debugging del Chrome diario. Default 9222." - name: server_url_substr desc: "Substring de la URL de la pestana de ComfyUI. Default '8188'." - name: timeout_s desc: "Timeout de la conexion CDP en segundos. Default 20.0." output: "dict {ok: bool, queued: bool, error: str}. queued True si app.queuePrompt resolvio sin excepcion." tested: false tests: [] test_file_path: "" file_path: "python/functions/browser/comfyui_queue_prompt_ui.py" --- ## Ejemplo ```python import sys, os sys.path.insert(0, os.path.join("python", "functions")) from browser.comfyui_queue_prompt_ui import comfyui_queue_prompt_ui from ml.comfyui_wait_result import comfyui_wait_result print(comfyui_queue_prompt_ui()) # -> {'ok': True, 'queued': True, 'error': ''} # El PNG aparece en ~/ComfyUI/output/. Para esperar el resultado por API se usa # el prompt_id; si solo encolas desde la UI, sondea la carpeta output/ o usa el # historial (GET /history) para localizar el archivo nuevo. ``` ## Cuando usarla Como ultimo paso del flujo por UI: tras cargar (`comfyui_load_workflow_ui`) y ajustar widgets (`comfyui_set_node_widget_ui`), dispara la generacion sin que el usuario pulse el boton. Reproduce exactamente "Queue Prompt" del frontend. ## Gotchas - Tiene efecto secundario real: arranca trabajo de GPU en el server. No es idempotente — cada llamada encola un prompt nuevo. - `app.queuePrompt(0)` encola el grafo TAL CUAL esta en la UI en ese momento, no un workflow que le pases. Para encolar uno concreto, cargalo antes con `comfyui_load_workflow_ui`. - No devuelve el `prompt_id` (la UI lo gestiona internamente). Para correlar el resultado por API mejor usa `comfyui_submit_workflow` (devuelve prompt_id) + `comfyui_wait_result`; esta funcion es para el caso "como si pulsara el boton". - Si el grafo tiene errores de validacion, ComfyUI los muestra en la UI y la Promise puede rechazar: aqui se refleja como `ok=False` con el error.