mirror of
https://github.com/instructkr/claude-code.git
synced 2026-04-06 19:28:49 +03:00
Merge remote-tracking branch 'origin/rcc/cache-tracking' into integration/dori-cleanroom
This commit is contained in:
@@ -1900,6 +1900,8 @@ impl ApiClient for ProviderRuntimeClient {
|
||||
}
|
||||
}
|
||||
|
||||
push_prompt_cache_record(&self.client, &mut events);
|
||||
|
||||
if !saw_stop
|
||||
&& events.iter().any(|event| {
|
||||
matches!(event, AssistantEvent::TextDelta(text) if !text.is_empty())
|
||||
@@ -1924,7 +1926,9 @@ impl ApiClient for ProviderRuntimeClient {
|
||||
})
|
||||
.await
|
||||
.map_err(|error| RuntimeError::new(error.to_string()))?;
|
||||
Ok(response_to_events(response))
|
||||
let mut events = response_to_events(response);
|
||||
push_prompt_cache_record(&self.client, &mut events);
|
||||
Ok(events)
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -2045,6 +2049,26 @@ fn response_to_events(response: MessageResponse) -> Vec<AssistantEvent> {
|
||||
events
|
||||
}
|
||||
|
||||
fn push_prompt_cache_record(client: &AnthropicClient, events: &mut Vec<AssistantEvent>) {
|
||||
if let Some(event) = client
|
||||
.take_last_prompt_cache_record()
|
||||
.and_then(prompt_cache_record_to_runtime_event)
|
||||
{
|
||||
events.push(AssistantEvent::PromptCache(event));
|
||||
}
|
||||
}
|
||||
|
||||
fn prompt_cache_record_to_runtime_event(record: PromptCacheRecord) -> Option<PromptCacheEvent> {
|
||||
let cache_break = record.cache_break?;
|
||||
Some(PromptCacheEvent {
|
||||
unexpected: cache_break.unexpected,
|
||||
reason: cache_break.reason,
|
||||
previous_cache_read_input_tokens: cache_break.previous_cache_read_input_tokens,
|
||||
current_cache_read_input_tokens: cache_break.current_cache_read_input_tokens,
|
||||
token_drop: cache_break.token_drop,
|
||||
})
|
||||
}
|
||||
|
||||
fn final_assistant_text(summary: &runtime::TurnSummary) -> String {
|
||||
summary
|
||||
.assistant_messages
|
||||
|
||||
Reference in New Issue
Block a user