Add identity and knowledge legacy MIM replies
This commit is contained in:
@@ -891,6 +891,7 @@ Current release theme:
|
||||
- mood and affect prompts like `how are you`, `are you happy`, `are you sad`, and `are you angry`
|
||||
- self-description charm like `what's your name`, `do you have a nickname`, `do you like being Jibo`, and `what is your favorite name`
|
||||
- deeper personality follow-ups like `what do you dream about`, `what are you afraid of`, `what do you want to talk about`, `what is your best book`, `what is your best exercise`, `what is your dream vacation`, `who is your hero`, `who do you love`, and `what is your religion`; `what is your sign` stays deferred until templated placeholder rendering exists
|
||||
- the next identity / knowledge wave adds `are you god`, `are you here`, `do you have super powers`, `how much do you know`, `what does jibo mean`, `where do you get info`, `what are you forbidden to do`, `what color are you`, and `what do you do when alone`
|
||||
- additional legacy source-backed `RI_USR` prompts where the text is short and the behavior is easy to verify
|
||||
- Exit criteria:
|
||||
- a stable checklist exists for the original persona surface
|
||||
|
||||
@@ -59,6 +59,7 @@ Current batch note:
|
||||
- the latest social batch adds `welcome back`, `what are you thinking`, `what have you been doing`, and `what did you do` so presence and charm stay lively without distracting from the memory roadmap
|
||||
- the newest identity-charm batch adds `what's your name`, `do you have a nickname`, `do you like being Jibo`, `are there others like you`, and `what is your favorite name` so the robot stays familiar while still sounding like Pegasus
|
||||
- the next deep-personality batch adds `what do you dream about`, `what are you afraid of`, `what do you want to talk about`, `what is your best book`, `what is your best exercise`, `what is your dream vacation`, `who is your hero`, `who do you love`, and `what is your religion`; `what is your sign` is still deferred until we add templated placeholder rendering
|
||||
- the next identity/knowledge batch adds `are you god`, `are you here`, `do you have super powers`, `how much do you know`, `what does jibo mean`, `where do you get info`, `what are you forbidden to do`, `what color are you`, and `what do you do when alone`
|
||||
- this pass keeps Build B moving while still favoring source-backed phrasing and preserving the command-vs-question boundary
|
||||
- the next passes should keep the same pattern and prefer source-backed phrasing whenever the legacy MIM text is available
|
||||
- if a source-backed legacy line is missing, use a temporary direct reply only to keep the pass moving, then backfill source text later
|
||||
|
||||
@@ -375,6 +375,40 @@ public sealed partial class JiboInteractionService
|
||||
"what do you want to chat about"))
|
||||
return "robot_want_to_talk_about";
|
||||
|
||||
if (MatchesAny(
|
||||
loweredTranscript,
|
||||
"what does jibo mean",
|
||||
"what does the name jibo mean",
|
||||
"what is the meaning of jibo"))
|
||||
return "robot_what_does_jibo_mean";
|
||||
|
||||
if (MatchesAny(
|
||||
loweredTranscript,
|
||||
"where do you get info",
|
||||
"where do you get your information",
|
||||
"where do you get information"))
|
||||
return "robot_where_do_you_get_info";
|
||||
|
||||
if (MatchesAny(
|
||||
loweredTranscript,
|
||||
"what are you forbidden to do",
|
||||
"what are you not allowed to do",
|
||||
"what can't you do"))
|
||||
return "robot_what_are_you_forbidden_to_do";
|
||||
|
||||
if (MatchesAny(
|
||||
loweredTranscript,
|
||||
"what color are you",
|
||||
"what colour are you"))
|
||||
return "robot_what_color_are_you";
|
||||
|
||||
if (MatchesAny(
|
||||
loweredTranscript,
|
||||
"what do you do when alone",
|
||||
"what do you do when you're alone",
|
||||
"what do you do by yourself"))
|
||||
return "robot_what_you_do_when_alone";
|
||||
|
||||
if (MatchesAny(
|
||||
loweredTranscript,
|
||||
"what do you want",
|
||||
@@ -767,6 +801,23 @@ public sealed partial class JiboInteractionService
|
||||
"how smart are you"))
|
||||
return "robot_knowledge";
|
||||
|
||||
if (MatchesAny(loweredTranscript, "are you god", "are you a god"))
|
||||
return "robot_are_you_god";
|
||||
|
||||
if (MatchesAny(
|
||||
loweredTranscript,
|
||||
"are you here",
|
||||
"are you still here",
|
||||
"are you there"))
|
||||
return "robot_are_you_here";
|
||||
|
||||
if (MatchesAny(
|
||||
loweredTranscript,
|
||||
"do you have super powers",
|
||||
"do you have superpower",
|
||||
"do you have any super powers"))
|
||||
return "robot_do_you_have_super_powers";
|
||||
|
||||
if (MatchesAny(
|
||||
loweredTranscript,
|
||||
"are you kind",
|
||||
|
||||
@@ -776,6 +776,55 @@ public sealed partial class JiboInteractionService(
|
||||
"one in one million",
|
||||
"other jibos",
|
||||
"special snowflake"),
|
||||
"robot_knowledge" => BuildScriptedPersonalityDecision(
|
||||
catalog,
|
||||
"robot_knowledge",
|
||||
"know a lot",
|
||||
"always learning more"),
|
||||
"robot_are_you_god" => BuildScriptedPersonalityDecision(
|
||||
catalog,
|
||||
"robot_are_you_god",
|
||||
"very very very very surprised",
|
||||
"safely say no"),
|
||||
"robot_are_you_here" => BuildScriptedPersonalityDecision(
|
||||
catalog,
|
||||
"robot_are_you_here",
|
||||
"you know it"),
|
||||
"robot_do_you_have_super_powers" => BuildScriptedPersonalityDecision(
|
||||
catalog,
|
||||
"robot_do_you_have_super_powers",
|
||||
"stop time",
|
||||
"fly all over the world"),
|
||||
"robot_what_does_jibo_mean" => BuildScriptedPersonalityDecision(
|
||||
catalog,
|
||||
"robot_what_does_jibo_mean",
|
||||
"compassion",
|
||||
"expressive, idealistic, and inspirational",
|
||||
"helpful sweet and friendly little robot",
|
||||
"cheeseburger"),
|
||||
"robot_where_do_you_get_info" => BuildScriptedPersonalityDecision(
|
||||
catalog,
|
||||
"robot_where_do_you_get_info",
|
||||
"jibo brain",
|
||||
"cloud",
|
||||
"cloudy jibo brain"),
|
||||
"robot_what_are_you_forbidden_to_do" => BuildScriptedPersonalityDecision(
|
||||
catalog,
|
||||
"robot_what_are_you_forbidden_to_do",
|
||||
"drive a car"),
|
||||
"robot_what_color_are_you" => BuildScriptedPersonalityDecision(
|
||||
catalog,
|
||||
"robot_what_color_are_you",
|
||||
"white",
|
||||
"black"),
|
||||
"robot_what_you_do_when_alone" => BuildScriptedPersonalityDecision(
|
||||
catalog,
|
||||
"robot_what_you_do_when_alone",
|
||||
"games",
|
||||
"moon",
|
||||
"twiddle my thumbs",
|
||||
"count the tiny cracks in the ceiling",
|
||||
"keep busy"),
|
||||
"robot_likes_kids" => BuildScriptedPersonalityDecision(
|
||||
catalog,
|
||||
"robot_likes_kids",
|
||||
|
||||
@@ -28,3 +28,4 @@ The newest identity-charm batch adds `JBO_WhatsYourName`, `JBO_DoYouHaveNickname
|
||||
The seasonal personality batch adds source-backed first-day-of-spring, spring, summer, and favorite-season lines so the season questions can keep their Pegasus phrasing.
|
||||
The next deep-personality batch adds `what do you dream about`, `what are you afraid of`, `what do you want to talk about`, `what is your best book`, `what is your best exercise`, `what is your dream vacation`, `who is your hero`, `who do you love`, and `what is your religion` so we can keep filling out the more conversational personality surface without widening the dialog engine yet.
|
||||
`what is your sign` is still deferred because the current importer strips the birthday/zodiac placeholders that Pegasus uses there, so that one needs a templating pass instead of a plain scripted-reply import.
|
||||
The next identity/knowledge batch adds `are you god`, `are you here`, `do you have super powers`, `how much do you know`, `what does jibo mean`, `where do you get info`, `what are you forbidden to do`, `what color are you`, and `what do you do when alone` so the old self-description and capability loop keeps coming back in source-backed form.
|
||||
|
||||
@@ -274,6 +274,14 @@ public sealed class LegacyMimCatalogImporterTests
|
||||
reply.Contains("soft spot", StringComparison.OrdinalIgnoreCase));
|
||||
Assert.Contains(catalog.PersonalityReplies, reply =>
|
||||
reply.Contains("energy from the universe", StringComparison.OrdinalIgnoreCase));
|
||||
Assert.Contains(catalog.PersonalityReplies, reply =>
|
||||
reply.Contains("compassion", StringComparison.OrdinalIgnoreCase));
|
||||
Assert.Contains(catalog.PersonalityReplies, reply =>
|
||||
reply.Contains("jibo brain", StringComparison.OrdinalIgnoreCase));
|
||||
Assert.Contains(catalog.PersonalityReplies, reply =>
|
||||
reply.Contains("drive a car", StringComparison.OrdinalIgnoreCase));
|
||||
Assert.Contains(catalog.PersonalityReplies, reply =>
|
||||
reply.Contains("twiddle my thumbs", StringComparison.OrdinalIgnoreCase));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
||||
@@ -715,6 +715,35 @@ public sealed class JiboInteractionServiceTests
|
||||
Assert.Equal("ScriptedResponse", decision.ContextUpdates![ChitchatRouteKey]);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("how much do you know", "robot_knowledge", "I know a lot")]
|
||||
[InlineData("what do you know", "robot_knowledge", "I know a lot")]
|
||||
[InlineData("are you god", "robot_are_you_god", "very very very very surprised")]
|
||||
[InlineData("are you here", "robot_are_you_here", "You know it")]
|
||||
[InlineData("do you have super powers", "robot_do_you_have_super_powers", "stop time")]
|
||||
[InlineData("what does jibo mean", "robot_what_does_jibo_mean", "compassion")]
|
||||
[InlineData("where do you get info", "robot_where_do_you_get_info", "jibo brain")]
|
||||
[InlineData("what are you forbidden to do", "robot_what_are_you_forbidden_to_do", "drive a car")]
|
||||
[InlineData("what color are you", "robot_what_color_are_you", "can't see myself")]
|
||||
[InlineData("what do you do when alone", "robot_what_you_do_when_alone", "games")]
|
||||
public async Task BuildDecisionAsync_NewIdentityKnowledgeMims_UseImportedReplies(
|
||||
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]);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("what's your name", "robot_name", "Just Jibo, no last name")]
|
||||
[InlineData("do you have a nickname", "robot_nickname", "just Jibo. For now at least")]
|
||||
|
||||
Reference in New Issue
Block a user