pub fn preprocess(text: &str) -> String
Full preprocessing pipeline applied to every LLM response.
Strips <think> and <thinking> blocks, then trims whitespace. Every parser module calls this as step 1.
<think>
<thinking>