feat: Implement a modular skill system with hotword detection, streaming text output, and enhanced logging.
This commit is contained in:
29
Core/Skills/SkillRegistry.cs
Normal file
29
Core/Skills/SkillRegistry.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
namespace Toak.Core.Skills;
|
||||
|
||||
public static class SkillRegistry
|
||||
{
|
||||
public static readonly ISkill[] AllSkills = new ISkill[]
|
||||
{
|
||||
new TerminalSkill(),
|
||||
new TranslateSkill()
|
||||
};
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user