Fixes token tracking for #16: streaming chat never persisted PromptMetric.tokens_in / tokens_out (admin + account usage showed —).
Drop StrOutputParser on async LLM/RAG/data-analysis chains so Ollama generation_info (prompt_eval_count / eval_count) survives; collect usage while streaming via TokenUsageCollector.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
PromptMetric.tokens_in/tokens_out(admin + account usage showed—).StrOutputParseron async LLM/RAG/data-analysis chains so Ollamageneration_info(prompt_eval_count/eval_count) survives; collect usage while streaming viaTokenUsageCollector.self.close()indisconnect(fixes GrafanaUnexpected ASGI message 'websocket.close').Test plan
test_utils, consumers, LLM/RAG/data-analysis services, finance quotas—for new turns