1
0
Files
Toak/Core/Skills/SkillRegistry.cs

32 lines
899 B
C#

namespace Toak.Core.Skills;
public static class SkillRegistry
{
public static readonly ISkill[] AllSkills = new ISkill[]
{
new TerminalSkill(),
new TranslateSkill(),
new ProfessionalSkill(),
new SummarySkill()
};
public static ISkill? DetectSkill(string transcript, IEnumerable<string> activeSkillNames)
{
var activeSkills = AllSkills.Where(s => activeSkillNames.Contains(s.Name, StringComparer.OrdinalIgnoreCase)).ToList();
string normalizedTranscript = transcript.Trim();
foreach (var skill in activeSkills)
{
foreach (var hotword in skill.Hotwords)
{
if (normalizedTranscript.StartsWith(hotword, StringComparison.OrdinalIgnoreCase))
{
return skill;
}
}
}
return null;
}
}