Files
oh-my-pi/packages
roboomp caee75de28 fix(ai): routed llama.cpp parallel tool calls by item.call_id
llama.cpp's /v1/responses emits function_call `output_item.added` with
only `item.call_id` (no `item.id`, no `output_index`); the matching
`function_call_arguments.delta` carries `item_id: "fc_<call_id>"`.
`processResponsesStream` keyed its lookup map by `item.id` only, so
the registry stayed empty and every delta fell back to `lastOpenItem`
— the most recently added block. With N parallel calls, N-1 of them
finalized with arguments `{}` and the agent rejected them with
`path: Invalid input: expected string, received undefined`, while the
trailing call hoarded every delta.

Register function-call and custom-tool-call items under `item.call_id`
as a secondary key alongside `item.id`/`output_index`, and look up by
the same fallback in `output_item.done`. Real OpenAI is unaffected
(distinct keys, both populated). Regression test pins the exact
llama.cpp emission shape.

Fixes #2015
2026-06-06 22:18:44 +00:00
..
2026-06-06 20:13:59 +02:00
2026-06-06 20:13:59 +02:00
2026-06-06 20:13:59 +02:00
2026-06-06 20:13:59 +02:00