This commit is contained in:
Guillaume Nodet 2026-01-29 21:53:38 -05:00 committed by GitHub
commit 0be397d311
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 0 deletions

View File

@ -740,6 +740,8 @@ actor VoiceWakeRuntime {
let token = trigger.lowercased().trimmingCharacters(in: .whitespacesAndNewlines)
guard !token.isEmpty, let range = lower.range(of: token) else { continue }
let after = range.upperBound
// Guard against index out of bounds when the trigger is at the end of the string
guard after <= text.endIndex else { continue }
let trimmed = text[after...].trimmingCharacters(in: .whitespacesAndNewlines)
return String(trimmed)
}

View File

@ -35,6 +35,19 @@ import Testing
#expect(VoiceWakeRuntime._testHasContentAfterTrigger(text, triggers: triggers))
}
@Test func trimsAfterTriggerHandlesTriggerAtEnd() {
let triggers = ["clawd"]
let text = "hey clawd"
#expect(VoiceWakeRuntime._testTrimmedAfterTrigger(text, triggers: triggers) == "")
}
@Test func trimsAfterTriggerHandlesEdgeCaseIndexBounds() {
// Regression test for crash when trigger range upperBound exceeds text.endIndex
let triggers = ["claude"]
let text = "claude"
#expect(VoiceWakeRuntime._testTrimmedAfterTrigger(text, triggers: triggers) == "")
}
@Test func gateRequiresGapBetweenTriggerAndCommand() {
let transcript = "hey clawd do thing"
let segments = makeSegments(