using System.Text.Json; using AIStudio.Tools.PluginSystem; namespace AIStudio.Tools.ToolCallingSystem; public interface IToolImplementation { public string ImplementationKey { get; } public string Icon => Icons.Material.Filled.Build; public IReadOnlySet SensitiveTraceArgumentNames { get; } public string GetDisplayName() => this.T("Tool"); public string GetDescription() => this.T("Tool description"); public string GetSettingsFieldLabel(string fieldName, ToolSettingsFieldDefinition fieldDefinition) => this.T(fieldDefinition.Title); public string GetSettingsFieldDescription(string fieldName, ToolSettingsFieldDefinition fieldDefinition) => this.T(fieldDefinition.Description); public Task ValidateConfigurationAsync( ToolDefinition definition, IReadOnlyDictionary settingsValues, CancellationToken token = default) => Task.FromResult(null); public Task ExecuteAsync(JsonElement arguments, ToolExecutionContext context, CancellationToken token = default); public string FormatTraceResult(string rawResult) => rawResult; private string T(string fallbackEN) => I18N.I.T(fallbackEN, this.GetType().Namespace, this.GetType().Name); }