perf(server): eliminate O(N) heap cloning across standup, snippet, and graph handlers
This commit is contained in:
1 parent
9d7cd347c6
commit
13c7eca4c2
3 files changed
+15
-7
No files matched your search
@@ -419,7 +419,7 @@ impl McpTool for VisualizeGraphHandler {
|
|||||||
if query.is_empty() || included.contains(r.from.as_str()) || included.contains(r.to.as_str()) {
|
if query.is_empty() || included.contains(r.from.as_str()) || included.contains(r.to.as_str()) {
|
||||||
included.insert(r.from.as_str());
|
included.insert(r.from.as_str());
|
||||||
included.insert(r.to.as_str());
|
included.insert(r.to.as_str());
|
||||||
to_draw.push(r.clone());
|
to_draw.push(r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -254,11 +254,19 @@ impl McpTool for GenerateStandupReportHandler {
|
|||||||
.unwrap_or_default()
|
.unwrap_or_default()
|
||||||
.as_secs()
|
.as_secs()
|
||||||
.saturating_sub(req.hours_lookback * 3600);
|
.saturating_sub(req.hours_lookback * 3600);
|
||||||
let tasks = state.tasks.read_with(|items| items.iter().filter(|t| t.updated_at >= cutoff).cloned().collect::<Vec<_>>());
|
|
||||||
let changes = state.ledger.read_with(|items| items.iter().filter(|c| c.timestamp >= cutoff).cloned().collect::<Vec<_>>());
|
let report_str = state.tasks.read_with(|items| {
|
||||||
let summaries = state.session_summaries.read_with(|items| items.iter().filter(|s| s.namespace == req.namespace && s.timestamp >= cutoff).cloned().collect::<Vec<_>>());
|
state.ledger.read_with(|changes| {
|
||||||
let report = serde_json::json!({ "tasks_updated": tasks, "code_changes": changes, "session_summaries": summaries });
|
state.session_summaries.read_with(|summaries| {
|
||||||
Ok(report.to_string())
|
let filtered_tasks: Vec<_> = items.iter().filter(|t| t.updated_at >= cutoff).collect();
|
||||||
|
let filtered_changes: Vec<_> = changes.iter().filter(|c| c.timestamp >= cutoff).collect();
|
||||||
|
let filtered_summaries: Vec<_> = summaries.iter().filter(|s| s.namespace == req.namespace && s.timestamp >= cutoff).collect();
|
||||||
|
let report = serde_json::json!({ "tasks_updated": filtered_tasks, "code_changes": filtered_changes, "session_summaries": filtered_summaries });
|
||||||
|
report.to_string()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
});
|
||||||
|
Ok(report_str)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,7 +151,7 @@ impl McpTool for SearchSnippetsHandler {
|
|||||||
contains_ignore_ascii_case(&s.name, &query)
|
contains_ignore_ascii_case(&s.name, &query)
|
||||||
|| contains_ignore_ascii_case(&s.description, &query)
|
|| contains_ignore_ascii_case(&s.description, &query)
|
||||||
|| contains_ignore_ascii_case(&s.language, &query)
|
|| contains_ignore_ascii_case(&s.language, &query)
|
||||||
}).cloned().collect();
|
}).collect();
|
||||||
serde_json::to_string(&results).unwrap_or_default()
|
serde_json::to_string(&results).unwrap_or_default()
|
||||||
});
|
});
|
||||||
Ok(data.to_string())
|
Ok(data.to_string())
|
||||||
|
|||||||
Reference in new issue
Block a user