using AIStudio.Provider;
namespace AIStudio.Tools.ToolCallingSystem;
///
/// A tool collection as people see it: one entry of a tool selection, one row of the tool settings.
///
///
/// A tool which belongs to no declared collection forms one of its own, so it appears here like any
/// other entry, with its own name and icon. Whatever somebody decides about an entry applies to all
/// of its tools, see ToolCollectionDefinition.
///
public sealed class ToolCatalogItem
{
///
/// The ID of the collection, which selections and settings store.
///
public required string Id { get; init; }
public required string Icon { get; init; }
public required string DisplayName { get; init; }
public required string Description { get; init; }
///
/// What the tools of this entry do, written for a model which picks the tools of an assistant.
///
public required string DescriptionForLLM { get; init; }
///
/// The tools of the collection which exist here, in the order in which the collection lists them.
///
public required IReadOnlyList Tools { get; init; }
///
/// Whether the settings of every tool are complete; otherwise the state of the first tool whose settings are not.
///
public required ToolConfigurationState ConfigurationState { get; init; }
public bool IsActive { get; init; }
public ConfidenceLevel MinimumProviderConfidence { get; init; } = ConfidenceLevel.NONE;
}