fix(TASK-028): pin global-template exclusion, tighten timeout boundary test, reword stale hint

This commit is contained in:
Dark-Alex-17 committed 2026-09-14 11:13:34 -06:00
1 parent 9a505f951a
commit 3339920377
4 files changed
+14 -2

No files matched your search

+1
View File
@@ -1341,6 +1341,7 @@ variables:
assert_eq!(config.max_concurrent_agents, 4); assert_eq!(config.max_concurrent_agents, 4);
assert_eq!(config.max_agent_depth, 3); assert_eq!(config.max_agent_depth, 3);
assert_eq!(config.max_auto_continues, 10); assert_eq!(config.max_auto_continues, 10);
assert_eq!(config.escalation_timeout, 0);
assert!(config.mcp_servers.is_empty()); assert!(config.mcp_servers.is_empty());
assert!(config.global_tools.is_empty()); assert!(config.global_tools.is_empty());
assert!(config.conversation_starters.is_empty()); assert!(config.conversation_starters.is_empty());
+6
View File
@@ -1383,6 +1383,12 @@ clients:
assert_eq!(cfg.clients.len(), 1); assert_eq!(cfg.clients.len(), 1);
} }
#[test]
fn config_template_does_not_carry_the_per_agent_escalation_timeout_key() {
// `escalation_timeout` is a per-agent setting; the global template must never grow it.
assert!(!CONFIG_TEMPLATE.contains("escalation_timeout"));
}
#[test] #[test]
fn config_enabled_macros_empty_string_is_some_empty() { fn config_enabled_macros_empty_string_is_some_empty() {
let cfg: Config = serde_yaml::from_str("enabled_macros: \"\"").unwrap(); let cfg: Config = serde_yaml::from_str("enabled_macros: \"\"").unwrap();
+1 -1
View File
@@ -1711,7 +1711,7 @@ fn handle_reply_escalation(ctx: &mut RequestContext, args: &Value) -> Result<Val
} }
None => Ok(json!({ None => Ok(json!({
"status": "error", "status": "error",
"message": format!("No pending escalation found with id '{escalation_id}'. It may have already been replied to or timed out."), "message": format!("No pending escalation found with id '{escalation_id}'. It may have already been replied to, or the child is no longer waiting (aborted, or its configured `escalation_timeout` expired)."),
})), })),
} }
} }
+6 -1
View File
@@ -389,8 +389,12 @@ mod tests {
async fn nonzero_timeout_still_expires_with_the_existing_message() { async fn nonzero_timeout_still_expires_with_the_existing_message() {
let (tx, rx) = oneshot::channel::<String>(); let (tx, rx) = oneshot::channel::<String>();
let wait = tokio::spawn(await_escalation_reply(rx, 5)); let wait = tokio::spawn(await_escalation_reply(rx, 5));
tokio::task::yield_now().await;
tokio::time::advance(Duration::from_secs(6)).await; tokio::time::advance(Duration::from_secs(4)).await;
assert!(!wait.is_finished());
tokio::time::advance(Duration::from_secs(2)).await;
let v = wait.await.unwrap().unwrap(); let v = wait.await.unwrap().unwrap();
assert_eq!( assert_eq!(
v["error"], v["error"],
@@ -421,6 +425,7 @@ mod tests {
#[test] #[test]
fn stale_timeout_wording_is_gone_from_shipped_text() { fn stale_timeout_wording_is_gone_from_shipped_text() {
// Split so this file does not match its own needles.
let needles = [ let needles = [
concat!("(5-minute", " timeout)"), concat!("(5-minute", " timeout)"),
concat!("escalation_timeout:", " 300"), concat!("escalation_timeout:", " 300"),