sweep: dedup session->Turn conversion, fix drifted line reference (V-581)

chatHistory (voice.go) and rememberTurn (clarify.go) both built the same
dialogue.Turn{Intent, Slots, Text} projection of a *dialogue.Session
inline; factor it into sessionAsTurn and use it in both. Also name the
history-depth cap (previously a bare "3") as maxCarriedHistory, and fix
chatHistory's doc comment, which cited "lines 373-395" for the dialogue
merge in runTurn -- that block has since moved to lines 385-394. Point
at the step-6 comment instead of a line range so the reference survives
future edits. No behavior change; bookkeeping only, not the clarify/
reminder slot-decision logic.
This commit is contained in:
2026-08-06 02:13:51 +04:00
parent e488ee2285
commit e2777177b0
2 changed files with 22 additions and 13 deletions
+9 -7
View File
@@ -527,20 +527,22 @@ func (h *reactiveHandler) finishClarified(ctx context.Context, dec router.Decisi
return reply
}
// maxCarriedHistory — how many turns of PRIOR history (beyond the immediate
// last turn) rememberTurn carries forward. The session ends up holding this
// many plus the one just-finished turn, so callers describing the total
// depth (chatHistory's doc comment, this one) say "up to 4".
const maxCarriedHistory = 3
// rememberTurn stores this turn as the dialogue session the next follow-up
// inherits from, carrying up to 4 prior turns of history for anaphora. Capped so
// one long conversation can't grow the session unboundedly.
func (h *reactiveHandler) rememberTurn(ctx context.Context, prev *dialogue.Session, dec router.Decision, now time.Time) {
var history []dialogue.Turn
if prev != nil {
history = append(history, dialogue.Turn{
Intent: prev.Intent,
Slots: prev.Slots,
Text: prev.Slots.Text,
})
history = append(history, sessionAsTurn(prev))
maxHist := len(prev.History)
if maxHist > 3 {
maxHist = 3
if maxHist > maxCarriedHistory {
maxHist = maxCarriedHistory
}
history = append(history, prev.History[:maxHist]...)
}