Add Build B charm descriptors and mood replies

This commit is contained in:
Jacob Dubin
2026-05-16 08:39:45 -05:00
parent c8beb0d1f0
commit 84759f51de
14 changed files with 336 additions and 0 deletions

View File

@@ -118,6 +118,31 @@ public sealed class LegacyMimCatalogImporterTests
reply.Reply.Contains("I'm not mad", StringComparison.OrdinalIgnoreCase));
}
[Fact]
public void ImportCatalog_ImportsBuildBDescriptorResponsesIntoPersonalityBucket()
{
var rootDirectory = Path.Combine(
AppContext.BaseDirectory,
"Content",
"LegacyMims",
"BuildB");
var catalog = LegacyMimCatalogImporter.ImportCatalog(rootDirectory);
Assert.Contains("Well I definitely try to be the kindest robot I can be. So I hope so.", catalog.PersonalityReplies);
Assert.Contains("I don't think so, not intentionally.", catalog.PersonalityReplies);
Assert.Contains(catalog.PersonalityReplies, reply =>
reply.Contains("make people laugh", StringComparison.OrdinalIgnoreCase));
Assert.Contains(catalog.PersonalityReplies, reply =>
reply.Contains("highest priorities", StringComparison.OrdinalIgnoreCase));
Assert.Contains(catalog.PersonalityReplies, reply =>
reply.Contains("learning new things", StringComparison.OrdinalIgnoreCase));
Assert.Contains("Definitely. I'm as loyal as they come.", catalog.PersonalityReplies);
Assert.Contains("I don't really think of myself that way.", catalog.PersonalityReplies);
Assert.Contains(catalog.PersonalityReplies, reply =>
reply.Contains("people like me", StringComparison.OrdinalIgnoreCase));
}
[Fact]
public void MergeInto_PreservesExistingCatalogAndAddsImportedContent()
{

View File

@@ -567,6 +567,32 @@ public sealed class JiboInteractionServiceTests
Assert.Equal("ScriptedResponse", decision.ContextUpdates![ChitchatRouteKey]);
}
[Theory]
[InlineData("are you kind", "robot_is_kind", "kindest robot i can be")]
[InlineData("are you funny", "robot_is_funny", "not intentionally")]
[InlineData("are you helpful", "robot_is_helpful", "highest priorities")]
[InlineData("are you curious", "robot_is_curious", "learning new things")]
[InlineData("are you loyal", "robot_is_loyal", "loyal as they come")]
[InlineData("are you mischievous", "robot_is_mischievous", "don't really think of myself that way")]
[InlineData("are you likable", "robot_is_likable", "people like me")]
public async Task BuildDecisionAsync_DescriptorCharm_UsesImportedReplies(
string transcript,
string expectedIntent,
string expectedReplySnippet)
{
var service = CreateService();
var decision = await service.BuildDecisionAsync(new TurnContext
{
RawTranscript = transcript,
NormalizedTranscript = transcript
});
Assert.Equal(expectedIntent, decision.IntentName);
Assert.Contains(expectedReplySnippet, decision.ReplyText, StringComparison.OrdinalIgnoreCase);
Assert.Equal("ScriptedResponse", decision.ContextUpdates![ChitchatRouteKey]);
}
[Fact]
public async Task BuildDecisionAsync_AreYouHappy_UsesLegacyEmotionResponseWhenEmotionIsKnown()
{