Tools/Applications/OpenChromeTool.cscsharp
using Agent.Core.ToolCalling;namespace Agent.Addons.Tools.Applications;/// <summary>Opens Google Chrome on this machine.</summary>public sealed class OpenChromeTool : ApplicationOpenTool{    public const string Name = "open_chrome";    public static void Register(ToolRegistry registry) =>        ApplicationOpenTool.Register<OpenChromeTool>(registry);    public override string ToolName => Name;    protected override string ApplicationName => "Google Chrome";    protected override string GetExecutable()    {        if (OperatingSystem.IsWindows())        {            return ResolveWindowsChromePath() ?? "chrome";        }        if (OperatingSystem.IsMacOS())        {            return "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome";        }        return "google-chrome";    }    private static string? ResolveWindowsChromePath()    {        string localAppData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);        string programFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);        string programFilesX86 = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86);        string[] candidates =        [            Path.Combine(localAppData, "Google", "Chrome", "Application", "chrome.exe"),            Path.Combine(programFiles, "Google", "Chrome", "Application", "chrome.exe"),            Path.Combine(programFilesX86, "Google", "Chrome", "Application", "chrome.exe"),        ];        return candidates.FirstOrDefault(File.Exists);    }}