"""Encola el grafo actual de ComfyUI desde la UI (equivale a pulsar "Queue Prompt"). Llama `app.queuePrompt(0)` en la pestana de ComfyUI abierta en el navegador, que serializa el grafo visual al API format y hace POST /prompt al server. Compone cdp_eval. Funcion impura: hace red (CDP WebSocket) y dispara trabajo de GPU en el server. """ import json try: # ejecucion directa del archivo / fn run (browser/ en sys.path[0]) from cdp_eval import cdp_eval except ImportError: # importado como paquete (sys.path = python/functions) from browser.cdp_eval import cdp_eval def comfyui_queue_prompt_ui( *, port: int = 9222, server_url_substr: str = "8188", timeout_s: float = 20.0, ) -> dict: """Encola el grafo actual de la UI de ComfyUI. Args: port: puerto de remote debugging del Chrome diario. Default 9222. server_url_substr: substring de la URL de la pestana de ComfyUI. timeout_s: timeout de la conexion CDP en segundos. Returns: dict {ok: bool, queued: bool, error: str}. queued True si app.queuePrompt resolvio sin excepcion. """ expr = ( "(async function(){" " if(!window.app || typeof app.queuePrompt!=='function'){" " return {queued:false, error:'window.app.queuePrompt no disponible en la pestana'};" " }" " try{ await app.queuePrompt(0); return {queued:true, error:''}; }" " catch(e){ return {queued:false, error:String(e)}; }" "})()" ) r = cdp_eval( expr, port=port, target_url_substr=server_url_substr, await_promise=True, timeout_s=timeout_s, ) if not r["ok"]: return {"ok": False, "queued": False, "error": r["error"]} val = r["value"] or {} return { "ok": bool(val.get("queued")), "queued": bool(val.get("queued")), "error": val.get("error", ""), } if __name__ == "__main__": print(json.dumps(comfyui_queue_prompt_ui(), ensure_ascii=False, indent=2))