diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/1.6/Assemblies/WulaFallenEmpire.dll index fc663d60..47ba4e1c 100644 Binary files a/1.6/1.6/Assemblies/WulaFallenEmpire.dll and b/1.6/1.6/Assemblies/WulaFallenEmpire.dll differ diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.pdb b/1.6/1.6/Assemblies/WulaFallenEmpire.pdb index 0a09dfae..4a5b9221 100644 Binary files a/1.6/1.6/Assemblies/WulaFallenEmpire.pdb and b/1.6/1.6/Assemblies/WulaFallenEmpire.pdb differ diff --git a/Source/WulaFallenEmpire/EventSystem/AI/Utils/JsonToolCallParser.cs b/Source/WulaFallenEmpire/EventSystem/AI/Utils/JsonToolCallParser.cs index 41aca837..22f0ab19 100644 --- a/Source/WulaFallenEmpire/EventSystem/AI/Utils/JsonToolCallParser.cs +++ b/Source/WulaFallenEmpire/EventSystem/AI/Utils/JsonToolCallParser.cs @@ -15,6 +15,15 @@ namespace WulaFallenEmpire.EventSystem.AI.Utils public static class JsonToolCallParser { + private static string NormalizeToolNameFromId(string id) + { + if (string.IsNullOrWhiteSpace(id)) return null; + string trimmed = id.Trim(); + if (trimmed.StartsWith("call_", StringComparison.OrdinalIgnoreCase)) return null; + if (trimmed.StartsWith("toolu_", StringComparison.OrdinalIgnoreCase)) return null; + return trimmed; + } + public static bool TryParseToolCalls(string input, out List toolCalls) { toolCalls = null; @@ -46,6 +55,10 @@ namespace WulaFallenEmpire.EventSystem.AI.Utils TryGetValue(callObj, "arguments", out argsObj); } + if (string.IsNullOrWhiteSpace(name)) + { + name = NormalizeToolNameFromId(TryGetString(callObj, "id")); + } if (string.IsNullOrWhiteSpace(name)) continue; if (!TryNormalizeArguments(argsObj, out Dictionary args, out string argsJson)) @@ -167,6 +180,10 @@ namespace WulaFallenEmpire.EventSystem.AI.Utils TryGetValue(callObj, "arguments", out argsObj); } + if (string.IsNullOrWhiteSpace(name)) + { + name = NormalizeToolNameFromId(TryGetString(callObj, "id")); + } if (string.IsNullOrWhiteSpace(name)) continue; if (!TryNormalizeArguments(argsObj, out Dictionary args, out string argsJson))