fix: backfill model on gateway sessions after agent runs

Gateway sessions end up with model=NULL because the session row is
created before AIAgent is constructed.  After the agent responds,
update_session() writes token counts but never fills in the model.

Thread agent.model through _run_agent()'s return dict into
update_session() → update_token_counts().  The SQL uses
COALESCE(model, ?) so it only fills NULL rows — never overwrites
a model already set at creation time (e.g. CLI sessions).

If the agent falls back to a different provider, agent.model is
updated in-place by _try_activate_fallback(), so the recorded value
reflects whichever model actually produced the response.

Fixes #987
This commit is contained in:
ac (sourcetree) 2026-03-11 17:44:37 -07:00 committed by teknium1
parent c1cca65168
commit 2046a4c08c
3 changed files with 13 additions and 6 deletions

View file

@ -590,6 +590,7 @@ class SessionStore:
input_tokens: int = 0,
output_tokens: int = 0,
last_prompt_tokens: int = None,
model: str = None,
) -> None:
"""Update a session's metadata after an interaction."""
self._ensure_loaded()
@ -607,7 +608,8 @@ class SessionStore:
if self._db:
try:
self._db.update_token_counts(
entry.session_id, input_tokens, output_tokens
entry.session_id, input_tokens, output_tokens,
model=model,
)
except Exception as e:
logger.debug("Session DB operation failed: %s", e)