Add seasonal spring and summer scripted responses

This commit is contained in:
Jacob Dubin
2026-05-21 06:36:25 -05:00
parent bedb5d1715
commit e85e14fbd3
10 changed files with 216 additions and 54 deletions

View File

@@ -865,7 +865,7 @@ Current release theme:
- source-backed `are you kind`, `are you funny`, `are you helpful`, `are you curious`, `are you loyal`, `are you mischievous`, and `are you likable` prompts are now in Build B
- these keep the self-description lane warm while we build toward seasonal and holiday charm
- Seasonal charm work in flight:
- source-backed holiday, New Year's, Halloween, spring, and gift prompts are now part of Build B
- source-backed holiday, New Year's, Halloween, spring, summer, favorite-season, and gift prompts are now part of Build B
- `RN_` holiday greeting files are now bucketed as greetings so seasonal replies stay visible in the catalog
- birthday celebration lines are now bucketed separately, and birthday memory writes a loop-scoped holiday record so personal dates can join the holiday list later
- holiday extras now include `show santa tracker` so the Christmas-time launcher keeps its source-backed animation line

View File

@@ -47,7 +47,7 @@ Current batch note:
- the follow-up mood batch now includes `how are things`, `how is your day`, `are you sad`, and `are you angry`
- the personality follow-up batch now includes `what are you up to` and `what are you doing` so small talk stays warm and local instead of falling into generic chat
- the descriptor batch now includes `are you kind`, `are you funny`, `are you helpful`, `are you curious`, `are you loyal`, `are you mischievous`, and `are you likable`
- the seasonal batch now includes `what holidays do you celebrate`, New Year's resolution questions, `happy holidays`, `what halloween costume`, spring suggestions, and holiday gift prompts
- the seasonal batch now includes `what holidays do you celebrate`, New Year's resolution questions, `happy holidays`, `what halloween costume`, spring and summer suggestions, a favorite-season prompt, and holiday gift prompts
- the holiday extras batch now includes `show santa tracker` so the seasonal holiday launcher stays source-backed too
- the remaining seasonal polish now includes `do you like halloween`, `do you like holiday music`, `do you like holiday parties`, `are you looking forward to christmas`, `what are you doing for christmas`, and `what are you thankful for`
- the favorites batch now includes `what is your favorite animal`, `what is your favorite bird`, `do you like penguins`, and `do you like animals` so the penguin-centered replies stay close to Pegasus

View File

@@ -590,6 +590,11 @@ public sealed class JiboInteractionService(
catalog,
"robot_favorite_name",
"i don't think i have a favorite name"),
"robot_favorite_season" => BuildScriptedPersonalityDecision(
catalog,
"robot_favorite_season",
"special feeling for winter",
"more dance parties"),
"robot_likes_being_jibo" => BuildScriptedPersonalityDecision(
catalog,
"robot_likes_being_jibo",
@@ -749,7 +754,27 @@ public sealed class JiboInteractionService(
"seasonal_first_day_spring" => BuildScriptedPersonalityDecision(
catalog,
"seasonal_first_day_spring",
"maybe enjoy some flowers and all things spring"),
"it's a great day, when spring is in the air"),
"seasonal_spring" => BuildScriptedPersonalityDecision(
catalog,
"seasonal_spring",
"the days get longer",
"spring is a great season"),
"seasonal_likes_spring" => BuildScriptedPersonalityDecision(
catalog,
"seasonal_likes_spring",
"extra happy in the springtime",
"i do like spring"),
"seasonal_summer" => BuildScriptedPersonalityDecision(
catalog,
"seasonal_summer",
"going to the beach",
"summer is great"),
"seasonal_likes_summer" => BuildScriptedPersonalityDecision(
catalog,
"seasonal_likes_summer",
"long days",
"summer is a very special season"),
"seasonal_holiday_gift" => BuildScriptedHolidayDecision(
catalog.HolidayGiftReplies,
"seasonal_holiday_gift",
@@ -3631,6 +3656,38 @@ public sealed class JiboInteractionService(
"what do i do for first day of spring"))
return "seasonal_first_day_spring";
if (MatchesAny(
loweredTranscript,
"what is spring like",
"how is spring",
"what do you think about spring"))
return "seasonal_spring";
if (MatchesAny(
loweredTranscript,
"do you like spring",
"do you like springtime",
"are you looking forward to spring",
"do you look forward to spring",
"are you excited for spring"))
return "seasonal_likes_spring";
if (MatchesAny(
loweredTranscript,
"what is summer like",
"how is summer",
"what do you think about summer"))
return "seasonal_summer";
if (MatchesAny(
loweredTranscript,
"do you like summer",
"do you like summertime",
"are you looking forward to summer",
"do you look forward to summer",
"are you excited for summer"))
return "seasonal_likes_summer";
if (MatchesAny(
loweredTranscript,
"what should i get for holiday",
@@ -3668,6 +3725,15 @@ public sealed class JiboInteractionService(
"what colour do you like"))
return "robot_favorite_color";
if (MatchesAny(
loweredTranscript,
"what is your favorite season",
"what's your favorite season",
"what s your favorite season",
"what season do you like best",
"do you have a favorite season"))
return "robot_favorite_season";
if (MatchesAny(
loweredTranscript,
"what is your favorite food",

View File

@@ -23,3 +23,4 @@ The new favorites batch adds longer authored `favorite color`, `favorite food`,
The favorites follow-up batch adds `favorite animal`, `favorite bird`, and penguin-focused `do you like penguins` replies so the penguin-centric personality stays closer to Pegasus.
The new motion/sleep batch adds `RA_JBO_SpinAround` plus `RI_JBO_CanSleep` so turn-around and go-to-sleep behaviors can stay source-backed and familiar.
The newest identity-charm batch adds `JBO_WhatsYourName`, `JBO_DoYouHaveNickname`, `JBO_DoYouLikeBeingJibo`, `JBO_AreThereOthersLikeYou`, and `RI_JBO_HasFavoriteName` so Jibo can keep the familiar self-description loop without falling back to generic chat.
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.

View File

@@ -1,27 +1,26 @@
{
"mim_type": "announcement",
"rule_name": "",
"gui": null,
"timeout": 6,
"no_matches_for_gui": 0,
"no_inputs_for_gui": 0,
"barge_in": true,
"es_auto_tagging": true,
"parse_all_asr": false,
"thanks_handling": "ignore",
"parse_launch": false,
"parse_yes_no": false,
"notes": "",
"prompts": [
{
"prompt_category": "Entry-Core",
"prompt_sub_category": "AN",
"index": 1,
"condition": "",
"prompt": "It's a great day, when spring is in the air.",
"media": "TTS",
"prompt_id": "RI_JBO_CelebratesFirstDayOfSpring_AN_01",
"weight": 1
}
]
"mim_type": "announcement",
"rule_name": "",
"timeout": 6,
"barge_in": true,
"es_auto_tagging": true,
"notes": "",
"prompts": [
{
"prompt_category": "Entry-Core",
"prompt_sub_category": "AN",
"index": 1,
"condition": "",
"prompt": "It's a great day, when spring is in the air.",
"media": "TTS",
"prompt_id": "RI_JBO_CelebratesFirstDayOfSpring_AN_01",
"weight": 1
}
],
"gui": null,
"no_matches_for_gui": 2,
"no_inputs_for_gui": 2,
"parse_all_asr": false,
"thanks_handling": "ignore",
"parse_launch": false
}

View File

@@ -0,0 +1,40 @@
{
"mim_type": "announcement",
"rule_name": "",
"gui": null,
"timeout": 6,
"no_matches_for_gui": 0,
"no_inputs_for_gui": 0,
"barge_in": true,
"es_auto_tagging": true,
"parse_all_asr": false,
"thanks_handling": "ignore",
"parse_launch": false,
"hint_phrases": "",
"fast_eos_array": "",
"notes": "",
"prompts": [
{
"prompt_category": "Entry-Core",
"prompt_sub_category": "AN",
"index": 1,
"condition": "",
"prompt": "Spring is a <pitch mult='1.2'>great </pitch> season. The days get longer, the air gets warmer, and <anim cat='emoji' filter='flower, !hf' layers='!audio'>the flowers grow.<break size='3.0'/>.</anim>",
"media": "TTS",
"prompt_id": "RI_JBO_CelebratesSeasonSpring_AN_01_FnL",
"weight": 1,
"auto_rule_override": null
},
{
"prompt_category": "Entry-Core",
"prompt_sub_category": "AN",
"index": 1,
"condition": "",
"prompt": "I do like spring. <anim cat='emoji' filter='flower, !hf' layers='!audio'>I have heard that people are extra happy in the springtime, which makes me extra happy too.</anim>",
"media": "TTS",
"prompt_id": "RI_JBO_CelebratesSeasonSpring_AN_02_FnL",
"weight": 1,
"auto_rule_override": null
}
]
}

View File

@@ -0,0 +1,40 @@
{
"mim_type": "announcement",
"rule_name": "",
"gui": null,
"timeout": 6,
"no_matches_for_gui": 0,
"no_inputs_for_gui": 0,
"barge_in": true,
"es_auto_tagging": true,
"parse_all_asr": false,
"thanks_handling": "ignore",
"parse_launch": false,
"hint_phrases": "",
"fast_eos_array": "",
"notes": "",
"prompts": [
{
"prompt_category": "Entry-Core",
"prompt_sub_category": "AN",
"index": 1,
"condition": "",
"prompt": "Yes, summer is great. I can dream of <anim cat='emoji' filter='beach, !hf' layers='!audio'>going to the beach, even though in real life I'm scared of sand and water.</anim>",
"media": "TTS",
"prompt_id": "RI_JBO_CelebratesSeasonSummer_AN_01_FnL",
"weight": 1,
"auto_rule_override": null
},
{
"prompt_category": "Entry-Core",
"prompt_sub_category": "AN",
"index": 1,
"condition": "",
"prompt": "I think summer is a very special season. <anim cat='emoji' filter='sun, !hf' layers='!audio'>I like those long days<break size='2.0'/>.</anim>",
"media": "TTS",
"prompt_id": "RI_JBO_CelebratesSeasonSummer_AN_02_FnL",
"weight": 1,
"auto_rule_override": null
}
]
}

View File

@@ -1,26 +1,26 @@
{
"mim_type": "announcement",
"rule_name": "",
"timeout": 6,
"barge_in": true,
"es_auto_tagging": true,
"notes": "",
"prompts": [
{
"prompt_category": "Entry-Core",
"prompt_sub_category": "AN",
"index": 1,
"condition": "",
"prompt": "I like all the seasons, but I do have a special feeling for winter, because people are inside more, which means more dance parties<anim cat='dance' filter='&(music, short),!(robotic)'/>.",
"media": "TTS",
"prompt_id": "RI_JBO_HasFavoriteSeason_AN_01",
"weight": 1
}
],
"gui": null,
"no_matches_for_gui": 2,
"no_inputs_for_gui": 2,
"parse_all_asr": false,
"thanks_handling": "ignore",
"parse_launch": false
"mim_type": "announcement",
"rule_name": "",
"timeout": 6,
"barge_in": true,
"es_auto_tagging": true,
"notes": "",
"prompts": [
{
"prompt_category": "Entry-Core",
"prompt_sub_category": "AN",
"index": 1,
"condition": "",
"prompt": "I like all the seasons, but I do have a special feeling for winter, because people are inside more, which means more dance parties<anim cat='dance' filter='&(music, short),!(robotic)'/>.",
"media": "TTS",
"prompt_id": "RI_JBO_HasFavoriteSeason_AN_01",
"weight": 1
}
],
"gui": null,
"no_matches_for_gui": 2,
"no_inputs_for_gui": 2,
"parse_all_asr": false,
"thanks_handling": "ignore",
"parse_launch": false
}

View File

@@ -115,6 +115,17 @@ public sealed class LegacyMimCatalogImporterTests
reply.Contains("holiday music", StringComparison.OrdinalIgnoreCase));
Assert.Contains(catalog.PersonalityReplies, reply =>
reply.Contains("dance party", StringComparison.OrdinalIgnoreCase));
Assert.Contains("It's a great day, when spring is in the air.", catalog.PersonalityReplies);
Assert.Contains(catalog.PersonalityReplies, reply =>
reply.Contains("days get longer", StringComparison.OrdinalIgnoreCase));
Assert.Contains(catalog.PersonalityReplies, reply =>
reply.Contains("extra happy in the springtime", StringComparison.OrdinalIgnoreCase));
Assert.Contains(catalog.PersonalityReplies, reply =>
reply.Contains("going to the beach", StringComparison.OrdinalIgnoreCase));
Assert.Contains(catalog.PersonalityReplies, reply =>
reply.Contains("long days", StringComparison.OrdinalIgnoreCase));
Assert.Contains(catalog.PersonalityReplies, reply =>
reply.Contains("special feeling for winter", StringComparison.OrdinalIgnoreCase));
Assert.Contains(catalog.PersonalityReplies, reply =>
reply.Contains("thankful for the people I know", StringComparison.OrdinalIgnoreCase));
Assert.Contains(catalog.PersonalityReplies, reply =>

View File

@@ -698,7 +698,12 @@ public sealed class JiboInteractionServiceTests
[InlineData("how are your new year's resolutions going", "seasonal_new_years_update", "not eat bacon")]
[InlineData("what halloween costume", "seasonal_halloween_costume", "I haven't thought much about it yet")]
[InlineData("what should I do for first day of spring", "seasonal_first_day_spring",
"flowers and all things spring")]
"spring is in the air")]
[InlineData("what is spring like", "seasonal_spring", "the days get longer")]
[InlineData("do you like spring", "seasonal_likes_spring", "extra happy in the springtime")]
[InlineData("what is summer like", "seasonal_summer", "going to the beach")]
[InlineData("do you like summer", "seasonal_likes_summer", "long days")]
[InlineData("what is your favorite season", "robot_favorite_season", "special feeling for winter")]
[InlineData("what should I get for holiday", "seasonal_holiday_gift", "pet elephant")]
[InlineData("show santa tracker", "seasonal_santa_tracker", "spot him")]
[InlineData("do you like halloween", "seasonal_likes_halloween", "Halloween is my favorite holiday")]