Add identity and knowledge legacy MIM replies

This commit is contained in:
Jacob Dubin
2026-05-21 17:55:02 -05:00
parent 5422febb8c
commit b0709dd25e
7 changed files with 140 additions and 0 deletions

View File

@@ -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` - 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` - 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 - 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 - additional legacy source-backed `RI_USR` prompts where the text is short and the behavior is easy to verify
- Exit criteria: - Exit criteria:
- a stable checklist exists for the original persona surface - a stable checklist exists for the original persona surface

View File

@@ -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 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 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 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 - 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 - 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 - if a source-backed legacy line is missing, use a temporary direct reply only to keep the pass moving, then backfill source text later

View File

@@ -375,6 +375,40 @@ public sealed partial class JiboInteractionService
"what do you want to chat about")) "what do you want to chat about"))
return "robot_want_to_talk_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( if (MatchesAny(
loweredTranscript, loweredTranscript,
"what do you want", "what do you want",
@@ -767,6 +801,23 @@ public sealed partial class JiboInteractionService
"how smart are you")) "how smart are you"))
return "robot_knowledge"; 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( if (MatchesAny(
loweredTranscript, loweredTranscript,
"are you kind", "are you kind",

View File

@@ -776,6 +776,55 @@ public sealed partial class JiboInteractionService(
"one in one million", "one in one million",
"other jibos", "other jibos",
"special snowflake"), "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( "robot_likes_kids" => BuildScriptedPersonalityDecision(
catalog, catalog,
"robot_likes_kids", "robot_likes_kids",

View File

@@ -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 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. 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. `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.

View File

@@ -274,6 +274,14 @@ public sealed class LegacyMimCatalogImporterTests
reply.Contains("soft spot", StringComparison.OrdinalIgnoreCase)); reply.Contains("soft spot", StringComparison.OrdinalIgnoreCase));
Assert.Contains(catalog.PersonalityReplies, reply => Assert.Contains(catalog.PersonalityReplies, reply =>
reply.Contains("energy from the universe", StringComparison.OrdinalIgnoreCase)); 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] [Fact]

View File

@@ -715,6 +715,35 @@ public sealed class JiboInteractionServiceTests
Assert.Equal("ScriptedResponse", decision.ContextUpdates![ChitchatRouteKey]); 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] [Theory]
[InlineData("what's your name", "robot_name", "Just Jibo, no last name")] [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")] [InlineData("do you have a nickname", "robot_nickname", "just Jibo. For now at least")]