Skip to content

Commit 528af77

Browse files
committed
fix: Improve error handling and logging for tool use completion
1 parent 891f566 commit 528af77

1 file changed

Lines changed: 14 additions & 11 deletions

File tree

src/services/ws/stable/claude.rs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -410,18 +410,18 @@ impl RunSessionState {
410410
cc_session::ClaudeCodeState::StopUseTool { is_error } => {
411411
if is_error {
412412
let _ = self.send_display(&"Tool use stopped with error.").await;
413+
self.session.send_end_response().map_err(|e| {
414+
log::error!(
415+
"{}:{:x} error sending end response after tool use stop: {}",
416+
self.session.id,
417+
self.session.request_id,
418+
e
419+
);
420+
SendStateError::ClientError
421+
})?;
413422
} else {
414423
let _ = self.send_display(&"Tool use completed successfully.").await;
415424
}
416-
self.session.send_end_response().map_err(|e| {
417-
log::error!(
418-
"{}:{:x} error sending end response after tool use stop: {}",
419-
self.session.id,
420-
self.session.request_id,
421-
e
422-
);
423-
SendStateError::ClientError
424-
})?;
425425
}
426426
};
427427

@@ -548,11 +548,14 @@ fn update_state(
548548
return true;
549549
}
550550

551-
for (r, nr) in request.iter_mut().zip(new_request.into_iter()) {
551+
for (r, mut nr) in request.iter_mut().zip(new_request.into_iter()) {
552552
if r.submited && !nr.done {
553-
log::debug!("Received PreUseTool state without done tool after submited");
553+
log::debug!(
554+
"Received PreUseTool state without done tool after submited\n {r:?}\n vs\n {nr:?}"
555+
);
554556
return false;
555557
}
558+
nr.submited = r.submited;
556559
*r = nr;
557560
}
558561
return true;

0 commit comments

Comments
 (0)