MCPcopy Create free account
hub / github.com/ccusage/ccusage / load_chat_file

Function load_chat_file

rust/crates/ccusage/src/adapter/codebuff/parser.rs:40–95  ·  view source on GitHub ↗
(path: &Path)

Source from the content-addressed store, hash-verified

38}
39
40pub(super) fn load_chat_file(path: &Path) -> Result<Vec<CodebuffEntry>> {
41 let content = fs::read(path)?;
42 let Ok(messages) = serde_json::from_slice::<Vec<Value>>(&content) else {
43 return Ok(Vec::new());
44 };
45 let context = derive_context(path);
46 let chat_timestamp = parse_codebuff_chat_id_timestamp(&context.chat_id);
47 let file_timestamp = file_modified_timestamp(path).unwrap_or(crate::TimestampMs::UNIX_EPOCH);
48 let mut entries = Vec::new();
49 for (ordinal, message) in messages.iter().enumerate() {
50 let Some(message) = message.as_object() else {
51 continue;
52 };
53 if !is_assistant_message(message) {
54 continue;
55 }
56 let usage = extract_assistant_usage(message);
57 if !has_signal(&usage) {
58 continue;
59 }
60 let timestamp = message_timestamp(message)
61 .or(chat_timestamp)
62 .unwrap_or(file_timestamp);
63 let model = usage
64 .model
65 .clone()
66 .unwrap_or_else(|| DEFAULT_CODEBUFF_MODEL.to_string());
67 let dedup_key = dedup_key(
68 message,
69 &context.session_id,
70 timestamp,
71 &model,
72 &usage,
73 ordinal,
74 );
75 entries.push(CodebuffEntry {
76 timestamp,
77 timestamp_text: format_rfc3339_millis(timestamp),
78 session_id: context.session_id.clone(),
79 provider: infer_provider(&model).to_string(),
80 model,
81 credits: usage.credits,
82 usage: TokenUsageRaw {
83 input_tokens: usage.input_tokens,
84 output_tokens: usage.output_tokens,
85 cache_creation_input_tokens: usage.cache_creation_input_tokens,
86 cache_read_input_tokens: usage.cache_read_input_tokens,
87 speed: None,
88 cache_creation: None,
89 },
90 extra_total_tokens: usage.extra_total_tokens,
91 dedup_key,
92 });
93 }
94 Ok(entries)
95}
96
97fn derive_context(path: &Path) -> CodebuffContext {

Callers 1

load_entries_innerFunction · 0.85

Calls 11

derive_contextFunction · 0.85
is_assistant_messageFunction · 0.85
extract_assistant_usageFunction · 0.85
has_signalFunction · 0.85
message_timestampFunction · 0.85
dedup_keyFunction · 0.85
format_rfc3339_millisFunction · 0.85
infer_providerFunction · 0.85
pushMethod · 0.80
file_modified_timestampFunction · 0.70

Tested by

no test coverage detected