""" Rough token estimation for backends that don't return usage data. Uses the ~4 characters per token heuristic common across English LLM tokenizers. """ def estimate_tokens(text: str) -> int: """Estimate the number of tokens in *text*. This is intentionally coarse — it is only used by the Claude Code CLI adapter where real token counts are unavailable. """ if not text: return 0 return max(1, len(text) // 4)