// Copyright (c) Microsoft. All rights reserved. using System.Text.RegularExpressions; namespace Microsoft.Agents.AI.Workflows; internal static partial class AIAgentExtensions { /// /// Derives from an agent a unique but also hopefully descriptive name that can be used as an executor's /// name or in a function name. /// public static string GetDescriptiveId(this AIAgent agent) { string id = string.IsNullOrEmpty(agent.Name) ? agent.Id : $"{agent.Name}_{agent.Id}"; return InvalidNameCharsRegex().Replace(id, "_"); } /// /// Regex that flags any character other than ASCII digits or letters or the underscore. /// #if NET [GeneratedRegex("[^0-9A-Za-z]+")] private static partial Regex InvalidNameCharsRegex(); #else private static Regex InvalidNameCharsRegex() => s_invalidNameCharsRegex; private static readonly Regex s_invalidNameCharsRegex = new("[^0-9A-Za-z_]+", RegexOptions.Compiled); #endif }