MCPcopy Create free account
hub / github.com/ScriptedAlchemy/tracedecay / usage_from_api_req_started

Function usage_from_api_req_started

src/sessions/cline_like.rs:362–397  ·  view source on GitHub ↗
(text: &str)

Source from the content-addressed store, hash-verified

360}
361
362fn usage_from_api_req_started(text: &str) -> Option<Value> {
363 let payload: Value = serde_json::from_str(text).ok()?;
364 let mut counters = Map::new();
365 map_counter(
366 &mut counters,
367 "input_tokens",
368 &payload,
369 &["tokensIn", "tokens_in"],
370 );
371 map_counter(
372 &mut counters,
373 "output_tokens",
374 &payload,
375 &["tokensOut", "tokens_out"],
376 );
377 map_counter(
378 &mut counters,
379 "cache_read_input_tokens",
380 &payload,
381 &["cacheReads", "cache_reads"],
382 );
383 map_counter(
384 &mut counters,
385 "cache_creation_input_tokens",
386 &payload,
387 &["cacheWrites", "cache_writes"],
388 );
389 if let Some(total) = payload
390 .get("totalTokens")
391 .or_else(|| payload.get("total_tokens"))
392 .and_then(Value::as_i64)
393 {
394 counters.insert("total_tokens".to_string(), Value::from(total));
395 }
396 (!counters.is_empty()).then_some(Value::Object(counters))
397}
398
399fn map_counter(
400 counters: &mut Map<String, Value>,

Callers 1

Calls 3

map_counterFunction · 0.85
insertMethod · 0.80
is_emptyMethod · 0.45

Tested by

no test coverage detected