fix(js): avoid false tool-call capture on plain tool_calls prose

This commit is contained in:
CJACK.
2026-03-30 12:51:33 +08:00
parent aebf3e9119
commit 6efba7b2e4
2 changed files with 17 additions and 1 deletions

View File

@@ -197,7 +197,11 @@ function findToolSegmentStart(state, s) {
}
const keyIdx = bestKeyIdx;
const start = s.slice(0, keyIdx).lastIndexOf('{');
let candidateStart = start >= 0 ? start : keyIdx;
if (start < 0) {
offset = keyIdx + matchedKeyword.length;
continue;
}
let candidateStart = start;
// If the keyword matched inside an XML tag (e.g. "tool_calls" in "<tool_calls>"),
// back up past the '<' to capture the full tag.
if (candidateStart > 0 && s[candidateStart - 1] === '<') {