fix: vLLM highlight batch failure — replace guided_json with response_format + add debug logging
Root cause: guided_json removed in vLLM v0.12.0, and the two-attempt
loop (structured_outputs → guided_json) merged chat_template_kwargs
into the extra_body, potentially causing param conflicts.
Changes:
- llm_client.py: Replace _complete_structured_vllm() with two-tier
approach — response_format (Tier 1, v0.6.4+) then structured_outputs
(Tier 2, v0.8+). Remove dead guided_json path. Add _strip_markdown_fence().
- chunk_highlight_service.py: Add complete() fallback as defense-in-depth
when structured output fails. Strip markdown fences before parsing.
- chunks.py: Add request/response logging at router level.
- chunk_highlight_service.py: Add full logging chain — entry, ChromaDB
fetch, LLM call, fallback, cache results, exit.
- ResponsePanel.tsx: Add console logging for request payload, response
status/errors/timing. Handle status=failed explicitly (was silently
ignored). Track round-trip timing via performance.now().