fix(backend): stale classifyImageRunFailure -> classifyRunFailure

Left behind by a rename; broke the img2img (issue #121) crash-detection
path. Typecheck back to 0 errors.
This commit is contained in:
mozempk
2026-08-27 09:42:01 +02:00
parent fd39886168
commit 0b29c1587d
17 changed files with 5288 additions and 215 deletions
+94 -20
View File
@@ -630,33 +630,87 @@ fetch_fonts() {
# 6. Modelli
# ---------------------------------------------------------------------------
# Nomi dei file modello attesi: prima dalla configurazione scritta, poi — come ripiego —
# dalle costanti in config.ts. Così non duplichiamo l'elenco dentro l'installer.
model_files() {
local from_config=""
if [ -f "$CFG_PATH" ] && have python3; then
from_config="$(CFG_PATH="$CFG_PATH" python3 <<'PY' 2>/dev/null || true
# ModelsConfig (extensions/imgen/config.ts) dichiara obbligatori SOLO draft e final:
# alt, edit e upscale sono `?` e la loro assenza non deve far fallire nulla.
MODEL_KEYS_REQUIRED="draft final"
MODEL_KEYS_OPTIONAL="alt edit upscale"
# Legge dalla configurazione scritta i modelli per le chiavi indicate, una riga
# "chiave<TAB>file" per ciascuna chiave davvero presente e valorizzata.
config_model_files() { # config_model_files <chiave>...
if [ ! -f "$CFG_PATH" ] || ! have python3; then
return 0
fi
CFG_PATH="$CFG_PATH" MODEL_KEYS="$*" python3 <<'PY' 2>/dev/null || true
import json, os
try:
with open(os.environ["CFG_PATH"], encoding="utf-8") as fh:
models = json.load(fh).get("models", {})
if isinstance(models, dict):
for name in dict.fromkeys(v for v in models.values() if isinstance(v, str) and v):
print(name)
for key in os.environ["MODEL_KEYS"].split():
value = models.get(key)
if isinstance(value, str) and value:
print(f"{key}\t{value}")
except Exception:
pass
PY
)"
fi
}
if [ -n "$from_config" ]; then
printf '%s\n' "$from_config"
# Ripiego per una singola chiave: il valore in DEFAULTS.models dentro config.ts,
# così l'elenco non viene duplicato qui dentro.
default_model_file() { # default_model_file <chiave>
sed -n "s/^[[:space:]]*$1:[[:space:]]*\"\([A-Za-z0-9_.-]*\.ckpt\)\".*/\1/p" \
"$REPO_DIR/extensions/imgen/config.ts" 2>/dev/null | head -n 1
}
# I file attesi per un gruppo di chiavi. L'unione è la stessa che fa loadConfig:
# il file dell'utente vince chiave per chiave, il resto arriva da DEFAULTS.
model_files() { # model_files <chiave>...
local pairs key value
pairs="$(config_model_files "$@")"
for key in "$@"; do
value="$(printf '%s\n' "$pairs" | awk -F'\t' -v k="$key" '$1 == k { print $2; exit }')"
if [ -z "$value" ]; then value="$(default_model_file "$key")"; fi
if [ -n "$value" ]; then printf '%s\n' "$value"; fi
done | sort -u
}
required_model_files() { model_files $MODEL_KEYS_REQUIRED; }
# I facoltativi già coperti dai necessari (per impostazione predefinita draft e
# final sono lo stesso file) non vanno riproposti come «mancanti».
optional_model_files() {
local required
required="$(required_model_files)"
# grep -F con più righe = un motivo per riga: scarta i doppioni dei necessari.
model_files $MODEL_KEYS_OPTIONAL | grep -vxF "$required" || true
}
# Avviso, mai errore: senza questi si genera lo stesso, si perdono solo lo stile
# alternativo, le modifiche (img2img) e l'ingrandimento.
report_optional_models() {
local m missing="" have_any=0
for m in $(optional_model_files); do
if [ -f "$MODELS_PATH/$m" ]; then
have_any=1
else
missing="$missing $m"
fi
done
missing="${missing# }"
if [ -z "$missing" ]; then
if [ "$have_any" = "1" ]; then
ok "Anche i modelli facoltativi sono presenti."
record ok "Modelli extra" "presenti"
fi
return 0
fi
# Ripiego: i nomi in DEFAULTS.models dentro config.ts, per non duplicare qui l'elenco.
grep -oE '"[A-Za-z0-9_.-]+\.ckpt"' "$REPO_DIR/extensions/imgen/config.ts" 2>/dev/null \
| tr -d '"' | sort -u
info "Facoltativi non presenti (nessun problema): $missing"
hint "Servono solo per lo stile alternativo, le modifiche e l'ingrandimento."
hint "Puoi aggiungerli quando ti servono, dall'app Draw Things o dal catalogo."
record warn "Modelli extra" "facoltativi assenti: $missing"
}
prefetch_models() {
@@ -669,7 +723,7 @@ prefetch_models() {
fi
local wanted present=0
wanted="$(model_files | sort -u)"
wanted="$(required_model_files)"
if [ -z "$wanted" ]; then
warn "Non riesco a determinare quali modelli servono."
record warn "Modelli" "elenco non determinato"
@@ -688,8 +742,9 @@ prefetch_models() {
missing="${missing# }"
if [ -z "$missing" ]; then
ok "Tutti i modelli sono già in $MODELS_PATH."
ok "I modelli necessari sono già in $MODELS_PATH."
record ok "Modelli" "$present presenti"
report_optional_models
return 0
fi
@@ -699,6 +754,7 @@ prefetch_models() {
warn "draw-things-cli non è installato: non posso prescaricare nulla."
document_model_download
record fail "Modelli" "mancanti: $missing"
report_optional_models
return 0
fi
@@ -734,6 +790,7 @@ prefetch_models() {
document_model_download
record fail "Modelli" "mancanti: $still"
fi
report_optional_models
return 0
fi
@@ -742,6 +799,7 @@ prefetch_models() {
info "Non tiro a indovinare i parametri: qui sotto trovi le vie sicure."
document_model_download
record fail "Modelli" "mancanti: $missing"
report_optional_models
}
document_model_download() {
@@ -932,14 +990,30 @@ doctor() {
err "Cartella di destinazione non utilizzabile: $OUT_DIR"
fi
# Necessari (draft, final) e facoltativi (alt, edit, upscale) contati a parte:
# i secondi non rendono l'installazione incompleta.
local m found=0 lost=0
for m in $(model_files | sort -u); do
for m in $(required_model_files); do
if [ -f "$MODELS_PATH/$m" ]; then found=$((found + 1)); else lost=$((lost + 1)); fi
done
if [ "$lost" = "0" ] && [ "$found" -gt 0 ]; then
ok "Modelli: $found presenti."
ok "Modelli necessari: $found presenti."
else
warn "Modelli: $found presenti, $lost mancanti."
warn "Modelli necessari: $found presenti, $lost mancanti."
fi
local extra_found=0 extra_lost=0
for m in $(optional_model_files); do
if [ -f "$MODELS_PATH/$m" ]; then
extra_found=$((extra_found + 1))
else
extra_lost=$((extra_lost + 1))
fi
done
if [ "$extra_lost" = "0" ]; then
if [ "$extra_found" -gt 0 ]; then ok "Modelli facoltativi: $extra_found presenti."; fi
else
info "Modelli facoltativi: $extra_found presenti, $extra_lost non scaricati (va bene così)."
fi
# -- caratteri -------------------------------------------------------------