* fix(source-control): read the Kimi answer from stream-json
Kimi Code's text mode prefixes thinking and hook output with a bullet, so the
commit message arrived mixed with narration. The recipe now asks for
--output-format stream-json and the answer is taken from the last assistant
record, which is the commit message (#33556).
A record that requests a tool is narration rather than an answer, so it clears
the candidate: a stream that ends on a tool call yields no answer, which
finalizeFromAgentOutput already treats as a failed run. Only a body whose every
non-empty line is a record counts as stream output, so a plain answer that
happens to contain a JSON line is left alone.
* fix(source-control): decode Kimi output only for the selected protocol
* fix(source-control): satisfy generation hook checks
* Preserve Kimi generation failures and normalize options linearly
* Fix Kimi argument failure messages
* Bound Kimi option failure recognition
* Fix Kimi generation test fixture types
---------
Co-authored-by: beduldul <alkaysan07@gmail.com>