Skip to content

Commit 73a13ba

Browse files
committed
optimize AgentCanRunWorkflow lookups
1 parent c4b8162 commit 73a13ba

2 files changed

Lines changed: 28 additions & 18 deletions

File tree

MyApp.ServiceInterface/AppData.cs

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1006,6 +1006,7 @@ public bool AgentCanRunWorkflow(ComfyAgent agent, HashSet<string> RequiredNodes,
10061006
missingNodes.Add(node);
10071007
}
10081008

1009+
var visibleModels = agent.GetVisibleModels();
10091010
foreach (var asset in RequiredAssets)
10101011
{
10111012
var type = asset.LeftPart('/');
@@ -1015,79 +1016,79 @@ public bool AgentCanRunWorkflow(ComfyAgent agent, HashSet<string> RequiredNodes,
10151016
//https://github.com/comfyanonymous/ComfyUI/blob/master/folder_paths.py
10161017
case "checkpoints":
10171018
case "Stable-diffusion":
1018-
if (!agent.ContainsFile(FolderNames.Checkpoints, fileName))
1019+
if (!ComfyAgent.ContainsFile(visibleModels, FolderNames.Checkpoints, fileName))
10191020
missingAssets.Add(asset);
10201021
break;
10211022
case "clip":
10221023
case "text_encoders":
1023-
if (!agent.ContainsFile(FolderNames.Clip, fileName))
1024+
if (!ComfyAgent.ContainsFile(visibleModels, FolderNames.Clip, fileName))
10241025
missingAssets.Add(asset);
10251026
break;
10261027
case "clip_vision":
1027-
if (!agent.ContainsFile(FolderNames.ClipVision, fileName))
1028+
if (!ComfyAgent.ContainsFile(visibleModels, FolderNames.ClipVision, fileName))
10281029
missingAssets.Add(asset);
10291030
break;
10301031
case "configs":
1031-
if (!agent.ContainsFile(FolderNames.Configs, fileName))
1032+
if (!ComfyAgent.ContainsFile(visibleModels, FolderNames.Configs, fileName))
10321033
missingAssets.Add(asset);
10331034
break;
10341035
case "controlnet":
10351036
case "t2i_adapter":
1036-
if (!agent.ContainsFile(FolderNames.Controlnet, fileName))
1037+
if (!ComfyAgent.ContainsFile(visibleModels, FolderNames.Controlnet, fileName))
10371038
missingAssets.Add(asset);
10381039
break;
10391040
case "diffusers":
1040-
if (!agent.ContainsFile(FolderNames.Diffusers, fileName))
1041+
if (!ComfyAgent.ContainsFile(visibleModels, FolderNames.Diffusers, fileName))
10411042
missingAssets.Add(asset);
10421043
break;
10431044
case "diffusion_models":
10441045
case "unet":
1045-
if (!agent.ContainsFile(FolderNames.DiffusionModels, fileName))
1046+
if (!ComfyAgent.ContainsFile(visibleModels, FolderNames.DiffusionModels, fileName))
10461047
missingAssets.Add(asset);
10471048
break;
10481049
case "embeddings":
1049-
if (!agent.ContainsFile(FolderNames.Embeddings, fileName))
1050+
if (!ComfyAgent.ContainsFile(visibleModels, FolderNames.Embeddings, fileName))
10501051
missingAssets.Add(asset);
10511052
break;
10521053
case "gligen":
1053-
if (!agent.ContainsFile(FolderNames.Gligen, fileName))
1054+
if (!ComfyAgent.ContainsFile(visibleModels, FolderNames.Gligen, fileName))
10541055
missingAssets.Add(asset);
10551056
break;
10561057
case "hypernetworks":
1057-
if (!agent.ContainsFile(FolderNames.Hypernetworks, fileName))
1058+
if (!ComfyAgent.ContainsFile(visibleModels, FolderNames.Hypernetworks, fileName))
10581059
missingAssets.Add(asset);
10591060
break;
10601061
case "loras":
1061-
if (!agent.ContainsFile(FolderNames.Loras, fileName))
1062+
if (!ComfyAgent.ContainsFile(visibleModels, FolderNames.Loras, fileName))
10621063
missingAssets.Add(asset);
10631064
break;
10641065
case "photomaker":
1065-
if (!agent.ContainsFile(FolderNames.Photomaker, fileName))
1066+
if (!ComfyAgent.ContainsFile(visibleModels, FolderNames.Photomaker, fileName))
10661067
missingAssets.Add(asset);
10671068
break;
10681069
case "style_models":
1069-
if (!agent.ContainsFile(FolderNames.StyleModels, fileName))
1070+
if (!ComfyAgent.ContainsFile(visibleModels, FolderNames.StyleModels, fileName))
10701071
missingAssets.Add(asset);
10711072
break;
10721073
case "upscale_models":
1073-
if (!agent.ContainsFile(FolderNames.UpscaleModels, fileName))
1074+
if (!ComfyAgent.ContainsFile(visibleModels, FolderNames.UpscaleModels, fileName))
10741075
missingAssets.Add(asset);
10751076
break;
10761077
case "vae":
10771078
case "VAE":
1078-
if (!agent.ContainsFile(FolderNames.Vae, fileName))
1079+
if (!ComfyAgent.ContainsFile(visibleModels, FolderNames.Vae, fileName))
10791080
missingAssets.Add(asset);
10801081
break;
10811082
case "vae_approx":
1082-
if (!agent.ContainsFile(FolderNames.VaeApprox, fileName))
1083+
if (!ComfyAgent.ContainsFile(visibleModels, FolderNames.VaeApprox, fileName))
10831084
missingAssets.Add(asset);
10841085
break;
10851086
case "ultralytics":
1086-
if (!agent.ContainsFile(FolderNames.Ultralytics, fileName))
1087+
if (!ComfyAgent.ContainsFile(visibleModels, FolderNames.Ultralytics, fileName))
10871088
missingAssets.Add(asset);
10881089
break;
10891090
case "sams":
1090-
if (!agent.ContainsFile(FolderNames.Sams, fileName))
1091+
if (!ComfyAgent.ContainsFile(visibleModels, FolderNames.Sams, fileName))
10911092
missingAssets.Add(asset);
10921093
break;
10931094
}

MyApp.ServiceModel/ComfyDefinitions.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,15 @@ public bool ContainsFile(string folder, string fileName)
158158
}
159159
return false;
160160
}
161+
162+
public static bool ContainsFile(Dictionary<string, List<string>> models, string folder, string fileName)
163+
{
164+
if (models.TryGetValue(folder, out var files))
165+
{
166+
return files.Contains(fileName);
167+
}
168+
return false;
169+
}
161170

162171
public Dictionary<string, List<string>> GetVisibleModels()
163172
{

0 commit comments

Comments
 (0)