fireQueued auto-submits a prompt the user queued mid-turn, once the turn has wound down to idle. Reached only from the natural finish path (here, after finalizeTurn/endTurn); a Ctrl+C or stream-error abort routes through abortTurn and never gets here, so an interrupt leaves the slot for a manual sen
()
| 979 | } else if w := toolCallLeakWarning(m.history); w != "" { |
| 980 | // The model meant to call a tool but its server's parser leaked the raw |
| 981 | // call into the reply text instead. The fix is server-side. |
| 982 | m.appendLine(w) |
| 983 | dbgWritef("leak", "turn ended with tool-call text leaked into the reply (server-side parser misconfigured)") |
| 984 | outcome = outcomeStopped |
| 985 | } else if m.maybeVerifyNudge() { |
| 986 | // A substantial turn is finishing with a clean, non-empty summary. Re-ground |
| 987 | // it once to the original request and let the model verify (or honestly mark |
| 988 | // unverified) before it hands control back. Mirrors the empty-reply re-prompt: |
| 989 | // applyDone already flushed this summary to scrollback and appended it to |
| 990 | // history, so the streaming buffer is clean and startChat resumes safely. |
| 991 | m.phase = phaseThinking |
no test coverage detected