Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions src/diff.rs
Original file line number Diff line number Diff line change
Expand Up @@ -771,7 +771,7 @@ impl DiffIndex {
if count > 0 {
self.ranges.insert(
crate::envelope::CHANGE_METADATA_PATH.to_string(),
vec![1..=count],
std::iter::once(1..=count).collect(),
);
}
}
Expand Down Expand Up @@ -7909,9 +7909,10 @@ diff --git a/two.rs b/two.rs
index.add_rendered_evidence(&batch);

assert!(index.rendered_evidence.is_empty());
let full_metadata_range: Vec<_> = std::iter::once(1..=100_000).collect();
assert_eq!(
index.rendered_exact_ranges.get("src/generated.ts"),
Some(&vec![1..=100_000])
Some(&full_metadata_range)
);
assert!(DiffIndex::selected_exact_line(
&index.rendered_exact_ranges,
Expand Down
47 changes: 25 additions & 22 deletions src/llm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,10 @@ pub struct Answer {
#[derive(Debug)]
pub struct ModelError {
error: anyhow::Error,
usage: Usage,
// Boxed to keep the whole error within clippy's `result_large_err` bound:
// `Usage` carries provider cost decimals and dominates the struct size,
// and this error is the `Err` variant of most provider-facing results.
usage: Box<Usage>,
model_usage: Vec<ModelUsage>,
model_incidents: Vec<ModelIncident>,
usage_accounting_complete: bool,
Expand Down Expand Up @@ -210,15 +213,15 @@ impl ModelError {
fn new(error: anyhow::Error, usage: Usage, usage_accounting_complete: bool) -> Self {
Self {
error,
usage,
usage: Box::new(usage),
model_usage: Vec::new(),
model_incidents: Vec::new(),
usage_accounting_complete,
}
}

pub fn usage(&self) -> Usage {
self.usage
*self.usage
}

pub fn model_usage(&self) -> &[ModelUsage] {
Expand Down Expand Up @@ -2268,7 +2271,7 @@ impl LlmClient {
Err(error) => {
let incident = error.incident(ModelIncidentPhase::Planner);
accounting_complete &= error.usage_accounting_complete;
add_usage(&mut aggregate_usage, error.usage);
add_usage(&mut aggregate_usage, *error.usage);
aggregate_incidents.extend(error.model_incidents.clone());
aggregate_model_usage.extend(error.model_usage);
aggregate_incidents.push(incident);
Expand Down Expand Up @@ -2838,8 +2841,8 @@ impl LlmClient {
failed_incidents.push(e.incident(ModelIncidentPhase::Review));
usage_accounting_complete &= e.usage_accounting_complete;
failed_model_usage.extend(e.model_usage.clone());
add_usage(&mut failed_usage, e.usage);
e.usage = failed_usage;
add_usage(&mut failed_usage, *e.usage);
*e.usage = failed_usage;
last_err = Some(e);
}
Err(e) => {
Expand Down Expand Up @@ -2957,8 +2960,8 @@ impl LlmClient {
failed_model_usage.extend(e.model_usage.clone());
let elapsed = elapsed_text(started_at.elapsed());
if e.is_deadline_exceeded() {
add_usage(&mut failed_usage, e.usage);
e.usage = failed_usage;
add_usage(&mut failed_usage, *e.usage);
*e.usage = failed_usage;
eprintln!(
"postil: model {model_log} stopped after {elapsed}: {e}; cascade fallback is disabled after deadline exhaustion"
);
Expand Down Expand Up @@ -2988,8 +2991,8 @@ impl LlmClient {
safe_model_error_category(&e)
);
}
add_usage(&mut failed_usage, e.usage);
e.usage = failed_usage;
add_usage(&mut failed_usage, *e.usage);
*e.usage = failed_usage;
last_err = Some(e);
}
}
Expand Down Expand Up @@ -3157,8 +3160,8 @@ impl LlmClient {
failed_model_usage.extend(e.model_usage.clone());
let elapsed = elapsed_text(started_at.elapsed());
if e.is_deadline_exceeded() {
add_usage(&mut failed_usage, e.usage);
e.usage = failed_usage;
add_usage(&mut failed_usage, *e.usage);
*e.usage = failed_usage;
eprintln!(
"postil: scorer {model_log} stopped after {elapsed}: {e}; scorer fallback is disabled after deadline exhaustion"
);
Expand Down Expand Up @@ -3186,8 +3189,8 @@ impl LlmClient {
safe_model_error_category(&e)
);
}
add_usage(&mut failed_usage, e.usage);
e.usage = failed_usage;
add_usage(&mut failed_usage, *e.usage);
*e.usage = failed_usage;
last_err = Some(e);
}
}
Expand Down Expand Up @@ -3320,8 +3323,8 @@ impl LlmClient {
failed_model_usage.extend(error.model_usage.clone());
let elapsed = elapsed_text(started_at.elapsed());
if error.is_deadline_exceeded() {
add_usage(&mut failed_usage, error.usage);
error.usage = failed_usage;
add_usage(&mut failed_usage, *error.usage);
*error.usage = failed_usage;
error.model_usage = failed_model_usage;
error.model_incidents = failed_incidents;
return Err(error);
Expand All @@ -3338,8 +3341,8 @@ impl LlmClient {
safe_model_error_category(&error)
);
}
add_usage(&mut failed_usage, error.usage);
error.usage = failed_usage;
add_usage(&mut failed_usage, *error.usage);
*error.usage = failed_usage;
last_err = Some(error);
}
}
Expand Down Expand Up @@ -3413,8 +3416,8 @@ impl LlmClient {
failed_model_usage.extend(error.model_usage.clone());
let elapsed = elapsed_text(started_at.elapsed());
if error.is_deadline_exceeded() {
add_usage(&mut failed_usage, error.usage);
error.usage = failed_usage;
add_usage(&mut failed_usage, *error.usage);
*error.usage = failed_usage;
error.model_usage = failed_model_usage;
error.model_incidents = failed_incidents;
error.usage_accounting_complete = usage_accounting_complete;
Expand All @@ -3432,8 +3435,8 @@ impl LlmClient {
safe_model_error_category(&error)
);
}
add_usage(&mut failed_usage, error.usage);
error.usage = failed_usage;
add_usage(&mut failed_usage, *error.usage);
*error.usage = failed_usage;
last_err = Some(error);
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/repository_search.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1598,7 +1598,7 @@ fn decode_hex_into(value: &str, output: &mut [u8]) -> Option<()> {
if value.len() != output.len().checked_mul(2)? {
return None;
}
for (index, pair) in value.as_bytes().chunks_exact(2).enumerate() {
for (index, pair) in value.as_bytes().as_chunks::<2>().0.iter().enumerate() {
output[index] = hex_nibble(pair[0])?.checked_mul(16)? + hex_nibble(pair[1])?;
}
Some(())
Expand Down