--- name: comfyui_object_info kind: function lang: py domain: ml version: "1.0.0" purity: impure signature: "def comfyui_object_info(server: str = \"127.0.0.1:8188\", node_class: str | None = None, timeout: float = 30.0) -> dict" description: "Consulta el catalogo de nodos de un servidor ComfyUI via GET /object_info (o un nodo concreto con /object_info/{node_class}). Devuelve specs de inputs y valores enumerados (ej. lista de checkpoints visibles). Impura: HTTP GET, solo stdlib." tags: [comfyui, ml, image-generation, stable-diffusion, introspection, http] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: [] params: - name: server desc: "host:port del servidor ComfyUI sin esquema (default '127.0.0.1:8188')." - name: node_class desc: "Si se pasa, consulta solo ese class_type via /object_info/{node_class} (ej. 'CheckpointLoaderSimple'). None devuelve el catalogo completo." - name: timeout desc: "Timeout de la peticion HTTP en segundos." output: "dict del catalogo. Con node_class=None es {class_type: spec, ...} (cientos de nodos). Con node_class set, {class_type: spec} de un solo item. Cada spec tiene input.required/optional con tipos y enums; ej. info['CheckpointLoaderSimple']['input']['required']['ckpt_name'][0] es la lista de checkpoints." tested: false tests: [] test_file_path: "" file_path: "python/functions/ml/comfyui_object_info.py" --- ## Ejemplo ```python import sys, os sys.path.insert(0, os.path.join(os.environ["HOME"], "fn_registry", "python", "functions")) from ml.comfyui_object_info import comfyui_object_info info = comfyui_object_info() # catalogo completo print(len(info)) # ~792 nodos ckpts = info["CheckpointLoaderSimple"]["input"]["required"]["ckpt_name"][0] print(ckpts) # ['v1-5-pruned-emaonly-fp16.safetensors'] ks = comfyui_object_info(node_class="KSampler") # solo un nodo print(list(ks.keys())) # ['KSampler'] ``` O lanzable directo con: `./fn run comfyui_object_info` (imprime n nodos + checkpoints visibles). ## Cuando usarla Antes de construir o enviar un workflow: descubre que checkpoints, samplers, schedulers y nodos existen en el servidor concreto. Usala para validar que el `ckpt_name` que vas a poner en `comfyui_build_txt2img_workflow` existe, o para explorar nodos disponibles (LoRA loaders, upscalers, ControlNet) antes de componer workflows mas ricos. ## Gotchas - El catalogo completo es grande (cientos de nodos): preferir `node_class` si solo necesitas uno. - Los valores enumerados (checkpoints, vaes, loras) reflejan lo que el SERVIDOR ve en sus carpetas models/, no lo que hay en tu disco local. Si acabas de copiar un checkpoint, el servidor puede no haberlo escaneado hasta reiniciar o refrescar. - Lanza RuntimeError si ComfyUI no esta arriba (conexion rechazada) o responde con error. El catalogo solo esta disponible con el servidor corriendo.