using AIStudio.Provider;
using static AIStudio.Provider.Capability;
namespace AIStudio.Models.Google;
///
/// Lyria, which writes music from a description.
///
///
/// Nothing knew the name, so the catalog answered for it the way it answers for everything nobody
/// wrote a rule for: a chat model which reads text, writes text and calls tools. What comes back is
/// a stereo recording with instruments and, from 3.5 on, sung lyrics.
///
/// Nobody ran into it because the Google provider showed only names beginning with "gemini", which
/// kept four Lyria models out of sight along with the two Gemma models somebody actually wants. The
/// prefix is gone now, so the rule has to carry what the prefix carried by accident.
///
/// Whole name parts rather than a substring, for the reason Imagen gives next door. The rule is not
/// bound to Google, unlike the agent ones: wherever a model called Lyria turns up, it is this.
///
public sealed class LyriaFamily : ModelFamily
{
///
public override ModelVendor Vendor => ModelVendor.GOOGLE;
///
public override ModelSource Source => new("https://ai.google.dev/gemini-api/docs/music-generation", new DateOnly(2026, 9, 19), "A description goes in and 44.1 kHz stereo music comes out, with vocals and timed lyrics from Lyria 3.5 on. The realtime variant holds a connection open instead, which the realtime rule states and outranks this with.");
///
protected override void Declare(ModelFamilyBuilder builder) =>
builder.Rule("lyria").AsSegment()
.Capabilities(TEXT_INPUT)
.Kind(ModelKind.MUSIC_GENERATION);
}