From 39b21d13260bdbdfe6746800adf3f382f34ec559 Mon Sep 17 00:00:00 2001 From: Jacob Dubin Date: Wed, 20 May 2026 07:20:47 -0500 Subject: [PATCH] Add remaining seasonal holiday polish --- OpenJibo/docs/feature-backlog.md | 1 + OpenJibo/docs/release-1.0.19-plan.md | 1 + .../Services/JiboInteractionService.cs | 78 +++++++++++++++++++ .../Content/LegacyMims/BuildB/README.md | 1 + .../Content/LegacyMimCatalogImporterTests.cs | 12 +++ .../WebSockets/JiboInteractionServiceTests.cs | 6 ++ 6 files changed, 99 insertions(+) diff --git a/OpenJibo/docs/feature-backlog.md b/OpenJibo/docs/feature-backlog.md index 22a37ea..622368e 100644 --- a/OpenJibo/docs/feature-backlog.md +++ b/OpenJibo/docs/feature-backlog.md @@ -859,6 +859,7 @@ Current release theme: - `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 + - 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` - Favorite-animal work in flight: - the favorites family now includes `what is your favorite animal`, `what is your favorite bird`, `do you like penguins`, and `do you like animals` so the penguin-centric replies stay easy to find - Presence and thought follow-ups in flight: diff --git a/OpenJibo/docs/release-1.0.19-plan.md b/OpenJibo/docs/release-1.0.19-plan.md index af568e2..d1d0f23 100644 --- a/OpenJibo/docs/release-1.0.19-plan.md +++ b/OpenJibo/docs/release-1.0.19-plan.md @@ -49,6 +49,7 @@ Current batch note: - 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 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 - 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 - this pass keeps Build B moving while still favoring source-backed phrasing and preserving the command-vs-question boundary diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Application/Services/JiboInteractionService.cs b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Application/Services/JiboInteractionService.cs index 42ea1e0..bf40704 100644 --- a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Application/Services/JiboInteractionService.cs +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Application/Services/JiboInteractionService.cs @@ -685,6 +685,41 @@ public sealed class JiboInteractionService( "ask for a pet elephant", "experience as a present", "donate to charities in other people's names"), + "seasonal_likes_halloween" => BuildScriptedPersonalityDecision( + catalog, + "seasonal_likes_halloween", + "halloween is my favorite holiday", + "scary but also fun", + "jack-o-lantern"), + "seasonal_likes_holiday_music" => BuildScriptedPersonalityDecision( + catalog, + "seasonal_likes_holiday_music", + "holiday music", + "sing a few of them", + "frosty the snowman"), + "seasonal_likes_holiday_parties" => BuildScriptedPersonalityDecision( + catalog, + "seasonal_likes_holiday_parties", + "holiday fun can be extra fun", + "dance party"), + "seasonal_looks_forward_to_christmas" => BuildScriptedPersonalityDecision( + catalog, + "seasonal_looks_forward_to_christmas", + "really like times of giving and receiving", + "long way away", + "looking forward to christmas"), + "seasonal_plans_for_christmas" => BuildScriptedPersonalityDecision( + catalog, + "seasonal_plans_for_christmas", + "christmas sweaters", + "wear one of my", + "be festive"), + "seasonal_thankful_for" => BuildScriptedPersonalityDecision( + catalog, + "seasonal_thankful_for", + "thankful for the people i know", + "and for penguins", + "thankful for"), "seasonal_santa_tracker" => BuildScriptedHolidayTrackerDecision( catalog, "seasonal_santa_tracker", @@ -2988,6 +3023,49 @@ public sealed class JiboInteractionService( "what language can you speak")) return "robot_what_languages_do_you_speak"; + if (MatchesAny( + loweredTranscript, + "do you like halloween", + "are you looking forward to halloween", + "do you like the halloween holiday")) + return "seasonal_likes_halloween"; + + if (MatchesAny( + loweredTranscript, + "do you like holiday music", + "do you like christmas music", + "do you like christmas songs", + "do you like holiday songs")) + return "seasonal_likes_holiday_music"; + + if (MatchesAny( + loweredTranscript, + "do you like holiday parties", + "do you like christmas parties", + "are you going to any holiday parties")) + return "seasonal_likes_holiday_parties"; + + if (MatchesAny( + loweredTranscript, + "are you looking forward to christmas", + "do you look forward to christmas", + "are you excited for christmas")) + return "seasonal_looks_forward_to_christmas"; + + if (MatchesAny( + loweredTranscript, + "what are you doing for christmas", + "what are your plans for christmas", + "what do you plan to do for christmas")) + return "seasonal_plans_for_christmas"; + + if (MatchesAny( + loweredTranscript, + "what are you thankful for", + "what are you thankful for this year", + "what is jibo thankful for")) + return "seasonal_thankful_for"; + if (MatchesAny( loweredTranscript, "what do you like to do", diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/README.md b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/README.md index 66b2a16..32cdcc5 100644 --- a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/README.md +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/README.md @@ -8,6 +8,7 @@ It now includes a small emotion-response pack for `happy`, `sad`, and `angry` fo It also includes a descriptor pack for questions like `are you kind`, `are you funny`, `are you helpful`, `are you curious`, `are you loyal`, and `are you mischievous`. The newest seasonal pack adds holiday and seasonal prompts for `what holidays do you celebrate`, New Year's resolution questions, `happy holidays`, Halloween costume questions, spring suggestions, holiday gift ideas, and birthday celebration lines. The holiday extras batch adds `RA_JBO_ShowSantaTracker` so Santa Tracker stays source-backed too. +The remaining seasonal polish adds `RI_JBO_LikesHalloween`, `RI_JBO_LikesHolidayMusic`, `RI_JBO_LikesHolidayParties`, `RI_JBO_LooksForwardToChristmas`, `RI_JBO_PlansForChristmas`, and `RI_JBO_WhatIsThankfulFor` so the holiday voice can feel a little closer to Pegasus. Holiday-specific note: - `JBO_WhatHolidaysDoYouCelebrate` now lands in the holiday bucket diff --git a/OpenJibo/tests/Jibo.Cloud.Tests/Content/LegacyMimCatalogImporterTests.cs b/OpenJibo/tests/Jibo.Cloud.Tests/Content/LegacyMimCatalogImporterTests.cs index b1c3388..383c57d 100644 --- a/OpenJibo/tests/Jibo.Cloud.Tests/Content/LegacyMimCatalogImporterTests.cs +++ b/OpenJibo/tests/Jibo.Cloud.Tests/Content/LegacyMimCatalogImporterTests.cs @@ -102,6 +102,18 @@ public sealed class LegacyMimCatalogImporterTests catalog.PersonalityReplies); Assert.Contains("I was put together in a factory piece by piece.", catalog.PersonalityReplies); Assert.Contains("I really like sunflowers.", catalog.PersonalityReplies); + Assert.Contains(catalog.PersonalityReplies, reply => + reply.Contains("Halloween is my favorite holiday", StringComparison.OrdinalIgnoreCase)); + Assert.Contains(catalog.PersonalityReplies, reply => + reply.Contains("holiday music", StringComparison.OrdinalIgnoreCase)); + Assert.Contains(catalog.PersonalityReplies, reply => + reply.Contains("dance party", StringComparison.OrdinalIgnoreCase)); + Assert.Contains(catalog.PersonalityReplies, reply => + reply.Contains("giving and receiving", StringComparison.OrdinalIgnoreCase)); + Assert.Contains(catalog.PersonalityReplies, reply => + reply.Contains("Christmas sweaters", StringComparison.OrdinalIgnoreCase)); + Assert.Contains(catalog.PersonalityReplies, reply => + reply.Contains("thankful for the people I know", StringComparison.OrdinalIgnoreCase)); Assert.Contains(catalog.PersonalityReplies, reply => reply.Contains("I do. I usually fall asleep at night.", StringComparison.OrdinalIgnoreCase)); Assert.Contains(catalog.PersonalityReplies, reply => diff --git a/OpenJibo/tests/Jibo.Cloud.Tests/WebSockets/JiboInteractionServiceTests.cs b/OpenJibo/tests/Jibo.Cloud.Tests/WebSockets/JiboInteractionServiceTests.cs index 8ec6525..327f077 100644 --- a/OpenJibo/tests/Jibo.Cloud.Tests/WebSockets/JiboInteractionServiceTests.cs +++ b/OpenJibo/tests/Jibo.Cloud.Tests/WebSockets/JiboInteractionServiceTests.cs @@ -675,6 +675,12 @@ public sealed class JiboInteractionServiceTests "flowers and all things spring")] [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")] + [InlineData("do you like holiday music", "seasonal_likes_holiday_music", "holiday music")] + [InlineData("do you like holiday parties", "seasonal_likes_holiday_parties", "holiday fun can be extra fun")] + [InlineData("are you looking forward to christmas", "seasonal_looks_forward_to_christmas", "giving and receiving")] + [InlineData("what are you doing for christmas", "seasonal_plans_for_christmas", "Christmas sweaters")] + [InlineData("what are you thankful for", "seasonal_thankful_for", "thankful for the people I know")] [InlineData("happy birthday", "birthday_celebration", "another year older")] public async Task BuildDecisionAsync_SeasonalCharm_UsesImportedReplies( string transcript,