Keep useful creative fallback replies #348

Merged
m merged 1 commits from codex/household-scenario-audit into main 2026-08-25 10:48:59 +00:00
3 changed files with 24 additions and 1 deletions
+3
View File
@@ -591,6 +591,9 @@ func main() {
semantic.NeedsCognition = true
semantic.Interpretation.NeedsCognition = true
semantic.CapabilityHints = append(semantic.CapabilityHints, string(capability.CapabilityKindCognitiveReasoning))
if creativeFallbackReply != "" {
semantic.Reply = creativeFallbackReply
}
}
}
locationReply := interactiondomain.LocationContextReply(utterance.Content)
+10 -1
View File
@@ -485,7 +485,7 @@ func (g *gateway) handleChatMessage(w http.ResponseWriter, r *http.Request) {
status, err = g.postTrustedJSON(r, g.cognitive, "/v1/advisories", "", payload, &advisory)
if err == nil && status == http.StatusOK && validAdvisoryResponse(advisory, trusted) {
cognition = string(advisory.FinishReason)
if advisory.FinishReason == cognitive.FinishCompleted {
if advisory.FinishReason == cognitive.FinishCompleted && (strings.TrimSpace(saved.FallbackText) == "" || !isBoilerplateAdvisory(advisory.AdvisoryText)) {
reply = advisory.AdvisoryText
}
}
@@ -516,6 +516,15 @@ func (g *gateway) handleChatMessage(w http.ResponseWriter, r *http.Request) {
})
}
func isBoilerplateAdvisory(value string) bool {
switch strings.ToLower(strings.TrimSpace(value)) {
case "я рядом.", "я рядом", "понял.", "понял", "принял.", "принял":
return true
default:
return false
}
}
func localChatContext(saved interaction.ChatMessageResponse) []cognitive.ContextExcerpt {
assistantName := strings.TrimSpace(saved.AssistantName)
if assistantName == "" {
+11
View File
@@ -23,6 +23,17 @@ func TestLocalChatContextIncludesDomovoyIdentityAndOptionalActiveProject(t *test
}
}
func TestBoilerplateAdvisoryDoesNotReplaceUsefulFallback(t *testing.T) {
for _, value := range []string{"Я рядом", "Понял.", "Принял."} {
if !isBoilerplateAdvisory(value) {
t.Fatalf("%q was not recognized as boilerplate", value)
}
}
if isBoilerplateAdvisory("Жили-были дед и баба.") {
t.Fatal("useful creative reply was treated as boilerplate")
}
}
func TestCreatorRouteAllowsOnlyBoundedDelegationReads(t *testing.T) {
tests := []struct {
path string