Converted all external tool calling to async

This commit is contained in:
Timmy
2026-06-29 16:59:54 +01:00
parent 75f41088b1
commit feb35ddd10
49 changed files with 482 additions and 496 deletions
+18 -11
View File
@@ -171,7 +171,10 @@ pub(super) async fn tool_move_story_to_merge(
.map_err(|e| format!("Serialization error: {e}"))
}
pub(super) fn tool_report_merge_failure(args: &Value, ctx: &AppContext) -> Result<String, String> {
pub(super) async fn tool_report_merge_failure(
args: &Value,
ctx: &AppContext,
) -> Result<String, String> {
let story_id = args
.get("story_id")
.and_then(|v| v.as_str())
@@ -182,7 +185,10 @@ pub(super) fn tool_report_merge_failure(args: &Value, ctx: &AppContext) -> Resul
.ok_or("Missing required argument: reason")?;
slog!("[mergemaster] Merge failure reported for '{story_id}': {reason}");
ctx.services.agents.set_merge_failure_reported(story_id);
ctx.services
.agents
.set_merge_failure_reported(story_id)
.await;
// The mergemaster provides a freeform reason string; use Other so the
// auto-assigner does not re-spawn another mergemaster after this one fails.
@@ -412,26 +418,26 @@ mod tests {
assert!(req_names.contains(&"reason"));
}
#[test]
fn tool_report_merge_failure_missing_story_id() {
#[tokio::test]
async fn tool_report_merge_failure_missing_story_id() {
let tmp = tempfile::tempdir().unwrap();
let ctx = test_ctx(tmp.path());
let result = tool_report_merge_failure(&json!({"reason": "conflicts"}), &ctx);
let result = tool_report_merge_failure(&json!({"reason": "conflicts"}), &ctx).await;
assert!(result.is_err());
assert!(result.unwrap_err().contains("story_id"));
}
#[test]
fn tool_report_merge_failure_missing_reason() {
#[tokio::test]
async fn tool_report_merge_failure_missing_reason() {
let tmp = tempfile::tempdir().unwrap();
let ctx = test_ctx(tmp.path());
let result = tool_report_merge_failure(&json!({"story_id": "42_story_foo"}), &ctx);
let result = tool_report_merge_failure(&json!({"story_id": "42_story_foo"}), &ctx).await;
assert!(result.is_err());
assert!(result.unwrap_err().contains("reason"));
}
#[test]
fn tool_report_merge_failure_returns_confirmation() {
#[tokio::test]
async fn tool_report_merge_failure_returns_confirmation() {
let tmp = tempfile::tempdir().unwrap();
let ctx = test_ctx(tmp.path());
let result = tool_report_merge_failure(
@@ -440,7 +446,8 @@ mod tests {
"reason": "Unresolvable merge conflicts in src/main.rs"
}),
&ctx,
);
)
.await;
assert!(result.is_ok());
let msg = result.unwrap();
assert!(msg.contains("42_story_foo"));