File tree Expand file tree Collapse file tree 4 files changed +35
-0
lines changed
Expand file tree Collapse file tree 4 files changed +35
-0
lines changed Original file line number Diff line number Diff line change @@ -995,6 +995,11 @@ impl Session {
995995 }
996996 }
997997
998+ async fn reset_last_token_usage ( & self ) {
999+ let mut state = self . state . lock ( ) . await ;
1000+ state. reset_last_token_usage ( ) ;
1001+ }
1002+
9981003 /// Record a user input item to conversation history and also persist a
9991004 /// corresponding UserMessage EventMsg to rollout.
10001005 async fn record_input_and_rollout_usermsg (
Original file line number Diff line number Diff line change @@ -154,6 +154,8 @@ async fn run_compact_task_inner(
154154 let initial_context = sess. build_initial_context ( turn_context. as_ref ( ) ) ;
155155 let new_history = build_compacted_history ( initial_context, & user_messages, & summary_text) ;
156156 sess. replace_history ( new_history) . await ;
157+ sess. reset_last_token_usage ( ) . await ;
158+ sess. send_token_count_event ( turn_context. as_ref ( ) ) . await ;
157159
158160 let rollout_item = RolloutItem :: Compacted ( CompactedItem {
159161 message : summary_text. clone ( ) ,
Original file line number Diff line number Diff line change @@ -332,6 +332,12 @@ impl ConversationHistory {
332332 model_context_window,
333333 ) ;
334334 }
335+
336+ pub ( crate ) fn reset_last_token_usage ( & mut self ) {
337+ if let Some ( info) = self . token_info . as_mut ( ) {
338+ info. last_token_usage = TokenUsage :: default ( ) ;
339+ }
340+ }
335341}
336342
337343#[ inline]
@@ -395,6 +401,24 @@ mod tests {
395401 }
396402 }
397403
404+ #[ test]
405+ fn replace_preserves_totals_and_reset_clears_last_usage ( ) {
406+ let mut history = ConversationHistory :: new ( ) ;
407+ let mut usage = TokenUsage :: default ( ) ;
408+ usage. total_tokens = 1280 ;
409+ usage. input_tokens = 640 ;
410+ history. update_token_info ( & usage, Some ( 13_000 ) ) ;
411+
412+ history. replace ( Vec :: new ( ) ) ;
413+ history. reset_last_token_usage ( ) ;
414+
415+ let info = history
416+ . token_info ( )
417+ . expect ( "token info should persist after replace" ) ;
418+ assert_eq ! ( info. total_token_usage. total_tokens, 1280 ) ;
419+ assert_eq ! ( info. last_token_usage. total_tokens, 0 ) ;
420+ }
421+
398422 #[ test]
399423 fn filters_non_api_messages ( ) {
400424 let mut h = ConversationHistory :: default ( ) ;
Original file line number Diff line number Diff line change @@ -72,4 +72,8 @@ impl SessionState {
7272 pub ( crate ) fn set_token_usage_full ( & mut self , context_window : i64 ) {
7373 self . history . set_token_usage_full ( context_window) ;
7474 }
75+
76+ pub ( crate ) fn reset_last_token_usage ( & mut self ) {
77+ self . history . reset_last_token_usage ( ) ;
78+ }
7579}
You can’t perform that action at this time.
0 commit comments