Source code for klea_utils.graph.reducers
#!/usr/bin/env python3
"""
Reducers shared by LangGraph orchestrators.
File: klea_utils/graph/reducers.py
Copyright 2026 Ankur Sinha
Author: Ankur Sinha <sanjay DOT ankur AT gmail DOT com>
"""
from typing import Any
from klea_utils.graph.schemas import TokenUsage
[docs]
def add_token_usage(
left: TokenUsage | dict[str, Any], right: TokenUsage | dict[str, Any]
) -> TokenUsage:
"""Add token usage updates from sequential or concurrent graph nodes.
Only the numeric counters are summed. ``role`` identifies the node that
produced a single update, so it is not meaningful for the aggregate and is
dropped (left empty) rather than concatenated.
"""
left = TokenUsage.model_validate(left)
right = TokenUsage.model_validate(right)
return TokenUsage(
input_tokens=left.input_tokens + right.input_tokens,
output_tokens=left.output_tokens + right.output_tokens,
total_tokens=left.total_tokens + right.total_tokens,
reasoning_tokens=left.reasoning_tokens + right.reasoning_tokens,
cached_tokens=left.cached_tokens + right.cached_tokens,
)