When enabled, the runner injects a nudge message instead of waiting when the model produces no tool calls. This keeps models that tend to output plain text without calling tools (e.g. kimi) in the tool loop.
Changes:
- config.ts: add nudge_on_no_tool to model config (default false)
- runner/config.ts: export PRIMARY_NUDGE_ON_NO_TOOL
- runner/model-state.ts: add primaryNudgeOnNoTool to RuntimeModelConfig, SwapDecision type, evaluateModelSwap, applyModelSwap
- runner/loop.ts: inject nudge and continue on NoTools when enabled