32 lines
899 B
C#
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;
|
|
}
|
|
}
|