version 18 fixes from testing and some documentation around leaks and untested paths, future prep

This commit is contained in:
Jacob Dubin
2026-04-26 11:20:00 -05:00
parent a95766e7f6
commit eab4efd820
9 changed files with 8864 additions and 13 deletions

View File

@@ -57,6 +57,8 @@ public sealed class JiboInteractionService(
"alarm_menu" => BuildClockLaunchDecision("alarm", "Opening the alarm."),
"timer_delete" => BuildClockLaunchDecision("timer_delete", "timer", "delete", "Canceling the timer."),
"alarm_delete" => BuildClockLaunchDecision("alarm_delete", "alarm", "delete", "Canceling the alarm."),
"timer_cancel" => BuildClockLaunchDecision("timer_cancel", "timer", "cancel", "Canceling the timer."),
"alarm_cancel" => BuildClockLaunchDecision("alarm_cancel", "alarm", "cancel", "Canceling the alarm."),
"timer_value" => BuildTimerValueDecision(lowered, isTimerValueTurn, clientEntities),
"alarm_value" => BuildAlarmValueDecision(lowered, isAlarmValueTurn, referenceLocalTime, clientEntities),
"timer_clarify" => BuildClockClarifyDecision("timer_clarify", "timer", "How long should I set the timer for?"),
@@ -218,6 +220,19 @@ public sealed class JiboInteractionService(
return "alarm_value";
}
if (IsCancelRequest(clientIntent, loweredTranscript))
{
if (isAlarmValueTurn)
{
return "alarm_cancel";
}
if (isTimerValueTurn)
{
return "timer_cancel";
}
}
if ((string.Equals(clientIntent, "start", StringComparison.OrdinalIgnoreCase) ||
string.Equals(clientIntent, "set", StringComparison.OrdinalIgnoreCase)) &&
clientEntities.TryGetValue("domain", out var startDomain))
@@ -1098,6 +1113,13 @@ public sealed class JiboInteractionService(
"alarm for");
}
private static bool IsCancelRequest(string? clientIntent, string loweredTranscript)
{
return string.Equals(clientIntent, "cancel", StringComparison.OrdinalIgnoreCase) ||
string.Equals(clientIntent, "stop", StringComparison.OrdinalIgnoreCase) ||
loweredTranscript is "cancel" or "stop" or "never mind" or "nevermind";
}
private static bool IsClockTimerValueTurn(
IReadOnlyList<string> clientRules,
IReadOnlyList<string> listenRules)

View File

@@ -511,6 +511,8 @@ public sealed class WebSocketTurnFinalizationService(
!string.Equals(plan.IntentName, "clock_menu", StringComparison.OrdinalIgnoreCase) &&
!string.Equals(plan.IntentName, "timer_menu", StringComparison.OrdinalIgnoreCase) &&
!string.Equals(plan.IntentName, "alarm_menu", StringComparison.OrdinalIgnoreCase) &&
!string.Equals(plan.IntentName, "timer_cancel", StringComparison.OrdinalIgnoreCase) &&
!string.Equals(plan.IntentName, "alarm_cancel", StringComparison.OrdinalIgnoreCase) &&
!string.Equals(plan.IntentName, "timer_clarify", StringComparison.OrdinalIgnoreCase) &&
!string.Equals(plan.IntentName, "alarm_clarify", StringComparison.OrdinalIgnoreCase) &&
!string.Equals(plan.IntentName, "timer_value", StringComparison.OrdinalIgnoreCase) &&
@@ -794,6 +796,8 @@ public sealed class WebSocketTurnFinalizationService(
private static bool IsLocalNoInputRule(string rule)
{
return string.Equals(rule, "clock/alarm_timer_okay", StringComparison.OrdinalIgnoreCase) ||
IsClockValueRule(rule) ||
IsGalleryPreviewRule(rule) ||
IsConstrainedYesNoRule(rule);
}
@@ -803,6 +807,11 @@ public sealed class WebSocketTurnFinalizationService(
string.Equals(rule, "clock/timer_set_value", StringComparison.OrdinalIgnoreCase);
}
private static bool IsGalleryPreviewRule(string rule)
{
return string.Equals(rule, "gallery/gallery_preview", StringComparison.OrdinalIgnoreCase);
}
private static bool IsConstrainedYesNoRule(string rule)
{
return string.Equals(rule, "clock/alarm_timer_change", StringComparison.OrdinalIgnoreCase) ||