Part of the Agent migration epic. Owner: Jack.
Goal
Migrate the remaining one-shot LLM calls so gemini_service has no production callers left outside the legacy chat fallback.
Remaining call sites
Acceptance
- These surfaces no longer call
call_gemini* directly. - The only remaining
gemini_service callers are the intentional legacy chat fallback (learn.py, retired in the final cutover issue) and tests.
Part of the Agent migration epic. Owner: Jack.
Goal
Migrate the remaining one-shot LLM calls so
gemini_servicehas no production callers left outside the legacy chat fallback.Remaining call sites
backend/routes/study_guide.py:99—call_gemini_json(prompt)(also wrap errors → 502, see [P3] Misc correctness: study_guide N+1/500, notes in.() escaping, note_chat tool name, createNote field, unenrolled graph floaters #135-adjacent audit note)backend/routes/social.py:127—call_gemini(...)(AI summary)backend/main.py:192—call_gemini('Reply with ... Gemini OK')(health-check smoke test — move to the agent/provider or a dedicated probe)Acceptance
call_gemini*directly.gemini_servicecallers are the intentional legacy chat fallback (learn.py, retired in the final cutover issue) and tests.