Files
ednavhoandClaude Sonnet 4.6 bd4963ceb0 Migrate vetted loaders from Supabase to HuggingFace
- Replace Supabase REST calls with HF org listing + per-model README fetch
- Parse artifact_file from YAML front matter as the model filename (requirement)
- Use record_id (HF repo path) instead of UUID model_id throughout
- Rename model_ids -> record_ids in COMBO widget metadata
- Drop PseudoVettedVaeLoader (no vae tag in HF org yet)
- Fetch READMEs concurrently (ThreadPoolExecutor, max 8 workers)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-06 13:28:48 -07:00

35 lines
1.4 KiB
JavaScript

import { app } from "../../../scripts/app.js";
const VETTED_LOADER_CONFIGS = [
{ nodeName: "PseudoVettedCheckpointLoader", comboWidget: "model", idWidget: "record_id" },
{ nodeName: "PseudoVettedControlNetLoader", comboWidget: "model", idWidget: "record_id" },
{ nodeName: "PseudoVettedLoraLoader", comboWidget: "model", idWidget: "record_id" },
{ nodeName: "PseudoVettedClipLoader", comboWidget: "model", idWidget: "record_id" },
];
for (const { nodeName, comboWidget, idWidget } of VETTED_LOADER_CONFIGS) {
app.registerExtension({
name: `pseudocomfy.${nodeName}`,
async beforeRegisterNodeDef(nodeType, nodeData) {
if (nodeData.name !== nodeName) return;
const recordIds = nodeData.input?.required?.[comboWidget]?.[1]?.record_ids ?? {};
const onNodeCreated = nodeType.prototype.onNodeCreated;
nodeType.prototype.onNodeCreated = function () {
onNodeCreated?.apply(this, arguments);
const comboW = this.widgets?.find(w => w.name === comboWidget);
const idW = this.widgets?.find(w => w.name === idWidget);
if (!comboW || !idW) return;
const origCallback = comboW.callback;
comboW.callback = function (value) {
origCallback?.apply(this, arguments);
idW.value = recordIds[value] ?? "";
};
};
},
});
}