Forge
csharp54977619
1namespace McpToolManifest;
2
3/// <summary>Сравнение имён тулов из манифеста и из рантайм-каталога.</summary>
4public static class ToolCatalogNameComparer
5{
6 public static IReadOnlyList<string> Compare(
7 IEnumerable<string> manifestToolNames,
8 IEnumerable<string> catalogToolNames)
9 {
10 var m = new HashSet<string>(manifestToolNames.Where(s => !string.IsNullOrWhiteSpace(s)).Select(s => s.Trim()), StringComparer.Ordinal);
11 var c = new HashSet<string>(catalogToolNames.Where(s => !string.IsNullOrWhiteSpace(s)).Select(s => s.Trim()), StringComparer.Ordinal);
12
13 var errors = new List<string>();
14 foreach (var x in m)
15 {
16 if (!c.Contains(x))
17 errors.Add($"In manifest but not in catalog: {x}");
18 }
19
20 foreach (var x in c)
21 {
22 if (!m.Contains(x))
23 errors.Add($"In catalog but not in manifest: {x}");
24 }
25
26 return errors;
27 }
28}
29
View only · write via MCP/CIDE