namespace AIStudio.Tools.ToolCallingSystem;
///
/// Supplies tool definitions to the registry.
///
///
/// Where a tool comes from and what a tool is are two different questions. AI Studio's own tools
/// are written in C#, plugin authors will describe theirs in Lua, and the assistants are to be
/// offered as tools as well — each arrives differently, yet the registry validates and serves
/// them all the same way.
/// A source is asked once while the registry is being built. Definitions do not change while the
/// app runs; a plugin that was loaded later needs the registry rebuilt, not the source re-read.
///
public interface IToolDefinitionSource
{
///
/// A name for this source, used in log messages about the definitions it produced.
///
public string SourceName { get; }
///
/// The definitions this source knows.
///
///
/// May return definitions the registry then rejects. Validating them is the registry's job,
/// so that every source is held to the same rules — including the ones written by plugin
/// authors, whose definitions AI Studio does not control.
///
public IEnumerable GetDefinitions();
}