File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -200,11 +200,18 @@ async def upsert_message(
200200 existing .error = data .get ('error' )
201201 if 'context_summary' in data or 'contextSummary' in data :
202202 existing .context_summary = data .get ('context_summary' ) or data .get ('contextSummary' )
203- # Extract and normalize usage
203+ # Usage is monotonic per message; keep the largest snapshot so
204+ # idempotent re-saves dedupe instead of double-counting.
204205 usage = get_usage (data )
205206 if usage :
206- existing_usage = normalize_usage (existing .usage or {}) if existing .usage else {}
207- existing .usage = existing_usage if usage == existing_usage else merge_usage (existing_usage , usage )
207+
208+ def _usage_total (value ):
209+ return normalize_usage (value or {}).get ('total_tokens' , 0 )
210+
211+ if existing .usage is None or _usage_total (usage ) >= _usage_total (
212+ existing .usage
213+ ):
214+ existing .usage = usage
208215 existing .updated_at = now
209216 await db .commit ()
210217 await db .refresh (existing )
Original file line number Diff line number Diff line change @@ -4018,7 +4018,12 @@ def set_last_text(out, text):
40184018 else :
40194019 output = []
40204020
4021- usage = None
4021+ # Continue: seed from prior usage so the total spans both generations.
4022+ usage = (
4023+ normalize_usage (message ['usage' ])
4024+ if existing_output and message and message .get ('usage' )
4025+ else None
4026+ )
40224027 prior_output = []
40234028 last_response_id = None
40244029
You can’t perform that action at this time.
0 commit comments