LocalAI/core/http/endpoints
Ettore Di Giacinto e1a6010874
fix(streaming): deduplicate tool call emissions during streaming (#9292)
The Go-side incremental JSON parser was emitting the same tool call on
every streaming token because it lacked the len > lastEmittedCount guard
that the XML parser had. On top of that, the post-streaming default:
case re-emitted all tool calls from index 0, duplicating everything.

This produced duplicate delta.tool_calls events causing clients to
accumulate arguments as "{args}{args}" — invalid JSON.

Fixes:
- JSON incremental parser: add len(jsonResults) > lastEmittedCount guard
  and loop from lastEmittedCount (matching the XML parser pattern)
- Post-streaming default: case: skip i < lastEmittedCount entries that
  were already emitted during streaming
- JSON parser: use blocking channel send (matching XML parser behavior)
2026-04-10 00:44:25 +02:00
..
anthropic fix(anthropic): do not emit empty tokens and fix SSE tool calls (#9258) 2026-04-07 00:38:21 +02:00
elevenlabs feat(api): Allow coding agents to interactively discover how to control and configure LocalAI (#9084) 2026-04-04 15:14:35 +02:00
explorer feat: add distributed mode (#9124) 2026-03-30 00:47:27 +02:00
jina feat(api): Allow coding agents to interactively discover how to control and configure LocalAI (#9084) 2026-04-04 15:14:35 +02:00
localai feat(sam.cpp): add sam.cpp detection backend (#9288) 2026-04-09 21:49:11 +02:00
mcp feat: add distributed mode (#9124) 2026-03-30 00:47:27 +02:00
ollama feat(api): add ollama compatibility (#9284) 2026-04-09 14:15:14 +02:00
openai fix(streaming): deduplicate tool call emissions during streaming (#9292) 2026-04-10 00:44:25 +02:00
openresponses fix(reasoning): suppress partial tag tokens during autoparser warm-up 2026-04-04 20:45:57 +00:00