* fix: sync message_count to state.db for /insights (#163) sync_session_usage() didn't write message_count to state.db, so /insights showed 0 messages for all WebUI sessions even with sync_to_insights enabled. Added message_count parameter to sync_session_usage() and pass len(s.messages) from both the streaming and non-streaming chat paths. Fixes #163 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: use callable pattern for _execute_write in sync_session_usage --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1094,6 +1094,7 @@ def _handle_chat_sync(handler, body):
|
|||||||
estimated_cost=s.estimated_cost,
|
estimated_cost=s.estimated_cost,
|
||||||
model=s.model,
|
model=s.model,
|
||||||
title=s.title,
|
title=s.title,
|
||||||
|
message_count=len(s.messages),
|
||||||
)
|
)
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -66,7 +66,8 @@ def sync_session_start(session_id: str, model=None) -> None:
|
|||||||
|
|
||||||
|
|
||||||
def sync_session_usage(session_id: str, input_tokens: int=0, output_tokens: int=0,
|
def sync_session_usage(session_id: str, input_tokens: int=0, output_tokens: int=0,
|
||||||
estimated_cost=None, model=None, title: str=None) -> None:
|
estimated_cost=None, model=None, title: str=None,
|
||||||
|
message_count: int=None) -> None:
|
||||||
"""Update token usage and title for a WebUI session in state.db.
|
"""Update token usage and title for a WebUI session in state.db.
|
||||||
Called after each turn completes. Uses absolute=True to set totals
|
Called after each turn completes. Uses absolute=True to set totals
|
||||||
(the WebUI Session already accumulates across turns).
|
(the WebUI Session already accumulates across turns).
|
||||||
@@ -92,6 +93,17 @@ def sync_session_usage(session_id: str, input_tokens: int=0, output_tokens: int=
|
|||||||
db.set_session_title(session_id, title)
|
db.set_session_title(session_id, title)
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
# Update message count
|
||||||
|
if message_count is not None:
|
||||||
|
try:
|
||||||
|
def _set_msg_count(conn):
|
||||||
|
conn.execute(
|
||||||
|
"UPDATE sessions SET message_count = ? WHERE id = ?",
|
||||||
|
(message_count, session_id),
|
||||||
|
)
|
||||||
|
db._execute_write(_set_msg_count)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
except Exception:
|
except Exception:
|
||||||
pass # never crash the WebUI for sync failures
|
pass # never crash the WebUI for sync failures
|
||||||
finally:
|
finally:
|
||||||
|
|||||||
@@ -366,6 +366,7 @@ def _run_agent_streaming(session_id, msg_text, model, workspace, stream_id, atta
|
|||||||
estimated_cost=s.estimated_cost,
|
estimated_cost=s.estimated_cost,
|
||||||
model=model,
|
model=model,
|
||||||
title=s.title,
|
title=s.title,
|
||||||
|
message_count=len(s.messages),
|
||||||
)
|
)
|
||||||
except Exception:
|
except Exception:
|
||||||
pass # never crash the stream for sync failures
|
pass # never crash the stream for sync failures
|
||||||
|
|||||||
Reference in New Issue
Block a user