story-kit: merge 132_story_fix_toctou_race_in_agent_check_and_insert
This commit is contained in:
@@ -1562,15 +1562,20 @@ fn parse_test_cases(value: Option<&Value>) -> Result<Vec<TestCaseResult>, String
|
||||
}
|
||||
|
||||
fn tool_get_server_logs(args: &Value) -> Result<String, String> {
|
||||
let lines = args
|
||||
let lines_count = args
|
||||
.get("lines")
|
||||
.and_then(|v| v.as_u64())
|
||||
.map(|n| n.min(1000) as usize)
|
||||
.unwrap_or(100);
|
||||
let filter = args.get("filter").and_then(|v| v.as_str());
|
||||
|
||||
let recent = log_buffer::global().get_recent(lines, filter);
|
||||
Ok(recent.join("\n"))
|
||||
// Fetch extra buffer entries to account for multi-line entries within each
|
||||
let fetch = lines_count.saturating_mul(4).min(4000);
|
||||
let recent = log_buffer::global().get_recent(fetch, filter);
|
||||
// Flatten buffer entries into individual lines, then take the last lines_count
|
||||
let all_lines: Vec<&str> = recent.iter().flat_map(|s| s.lines()).collect();
|
||||
let start = all_lines.len().saturating_sub(lines_count);
|
||||
Ok(all_lines[start..].join("\n"))
|
||||
}
|
||||
|
||||
/// MCP tool called by Claude Code via `--permission-prompt-tool`.
|
||||
|
||||
Reference in New Issue
Block a user