| 5203 | } |
| 5204 | |
| 5205 | async fn record_after_llm(&self, session_id: &str, usage: &a3s_code_core::llm::TokenUsage) { |
| 5206 | let Some(tsfn) = self.record_after_llm.as_ref() else { |
| 5207 | return; |
| 5208 | }; |
| 5209 | let _ = tsfn.call( |
| 5210 | serde_json::json!({ |
| 5211 | "sessionId": session_id, |
| 5212 | "usage": { |
| 5213 | "promptTokens": usage.prompt_tokens, |
| 5214 | "completionTokens": usage.completion_tokens, |
| 5215 | "totalTokens": usage.total_tokens, |
| 5216 | "cacheReadTokens": usage.cache_read_tokens, |
| 5217 | "cacheWriteTokens": usage.cache_write_tokens, |
| 5218 | }, |
| 5219 | }), |
| 5220 | napi::threadsafe_function::ThreadsafeFunctionCallMode::NonBlocking, |
| 5221 | ); |
| 5222 | } |
| 5223 | |
| 5224 | async fn check_before_tool( |
| 5225 | &self, |