f12272d002
- docs/capabilities/INDEX.md - docs/capabilities/comfyui.md - python/functions/browser/comfyui_export_workflow_ui.md - python/functions/browser/comfyui_export_workflow_ui.py - python/functions/browser/comfyui_load_workflow_ui.md - python/functions/browser/comfyui_load_workflow_ui.py - python/functions/browser/comfyui_queue_prompt_ui.md - python/functions/browser/comfyui_queue_prompt_ui.py - python/functions/browser/comfyui_refresh_nodes_ui.md - python/functions/browser/comfyui_refresh_nodes_ui.py - ... Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.6 KiB
3.6 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | params | output | tested | tests | test_file_path | file_path | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| comfyui_validate_workflow | function | py | ml | 1.0.0 | impure | def comfyui_validate_workflow(workflow: dict, server: str = "127.0.0.1:8188", timeout: float = 30.0) -> dict | Valida un workflow ComfyUI (API format) contra el catalogo /object_info de un servidor vivo: cruza los class_type contra los nodos disponibles y los nombres de modelos (ckpt/lora/vae/controlnet/...) contra los combos enumerados de cada nodo. Devuelve nodos y modelos faltantes ANTES de encolar, evitando un HTTP 400. Compone comfyui_object_info. Impura: HTTP GET. |
|
|
false | error_go_core |
|
dict {ok, valid, missing_nodes, missing_models, error}. ok = se pudo consultar el servidor; valid = sin nodos ni modelos faltantes; missing_nodes = class_type ausentes; missing_models = lista de {node, input, value} con valores de modelo fuera del combo; error = motivo si ok=False. | false | python/functions/ml/comfyui_validate_workflow.py |
Ejemplo
import sys, os
sys.path.insert(0, os.path.join(os.environ["HOME"], "fn_registry", "python", "functions"))
from ml.comfyui_build_txt2img_workflow import comfyui_build_txt2img_workflow
from ml.comfyui_validate_workflow import comfyui_validate_workflow
wf = comfyui_build_txt2img_workflow("dreamshaper_8.safetensors", "a cat")
res = comfyui_validate_workflow(wf) # server 127.0.0.1:8188 vivo
# res == {"ok": True, "valid": True, "missing_nodes": [], "missing_models": [], "error": ""}
bad = comfyui_build_txt2img_workflow("no_existe.safetensors", "a cat")
res2 = comfyui_validate_workflow(bad)
# res2["valid"] == False
# res2["missing_models"] == [{"node": "4", "input": "ckpt_name", "value": "no_existe.safetensors"}]
El bloque de arriba se lanza con el python del venv. El if __name__ == "__main__" del archivo valida un txt2img de ejemplo contra el server local (python/.venv/bin/python3 python/functions/ml/comfyui_validate_workflow.py). Nota: ./fn run posicional no aplica porque el primer arg es un dict (workflow), no un escalar de CLI.
Cuando usarla
Siempre ANTES de comfyui_submit_workflow, sobre todo con workflows importados de
internet (JSON/PNG ajenos) o que mezclen checkpoints/LoRAs que quiza no tengas
descargados. Te dice exactamente que nodos custom faltan (a instalar) y que
modelos faltan (a descargar) sin gastar un encolado fallido en el servidor.
Gotchas
- Impura: hace HTTP GET a
/object_info. Requiere el servidor vivo; si esta caido o reiniciandose, devuelve{ok: False, error: ...}(no lanza). Reintenta tu. missing_modelssolo cubre inputs de modelo conocidos (ckpt_name, lora_name, vae_name, control_net_name, model_name, unet_name, clip_name, style_model_name, gligen_name) cuyo valor sea un string fuera del combo enumerado. No valida rangos numericos ni tipos de conexion.- Detecta nodos custom faltantes por class_type ausente en /object_info, pero NO resuelve de que repo instalarlos (eso es trabajo de resolve_workflow_deps, P1).
sampler_name/schedulerinvalidos NO se reportan como missing_models (no son modelos); el servidor los rechazaria al encolar.