namespace BotSharp.Plugin.WebDriver.Functions; public class ChangeCheckboxFn : IFunctionCallback { public string Name => "change_checkbox"; private readonly IServiceProvider _services; private readonly IWebBrowser _browser; public ChangeCheckboxFn(IServiceProvider services, IWebBrowser browser) { _services = services; _browser = browser; } public async Task Execute(RoleDialogModel message) { var convService = _services.GetRequiredService(); var args = JsonSerializer.Deserialize(message.FunctionArgs); var agentService = _services.GetRequiredService(); var agent = await agentService.LoadAgent(message.CurrentAgentId); var result = await _browser.ChangeCheckbox(new BrowserActionParams(agent, args, convService.ConversationId, message.MessageId)); var content = $"{(args.UpdateValue == "check" ? "Check" : "Uncheck")} checkbox of '{args.ElementText}'"; message.Content = result.IsSuccess ? $"{content} successfully" : $"{content} failed. {result.Message}"; var webDriverService = _services.GetRequiredService(); var path = webDriverService.GetScreenshotFilePath(message.MessageId); message.Data = await _browser.ScreenshotAsync(new MessageInfo { AgentId = message.CurrentAgentId, ContextId = convService.ConversationId, MessageId = message.MessageId }, path); return true; } }