import { runTool } from "../mcp/tool-runner.js";
export async function prImpactHandler(req, res) {
try {
const { repo, from_ref, to_ref } = req.body;
if (!repo || !from_ref || !to_ref) {
res.status(400).json({
error: "Missing required fields",
message: "repo, from_ref, and to_ref are required",
});
return;
}
const result = await runTool("pr_impact_preview", { repo, from_ref, to_ref });
res.json(result);
}
catch (error) {
res.status(500).json({
error: "PR impact analysis failed",
message: error instanceof Error ? error.message : String(error),
});
}
}
export async function diffVersionsHandler(req, res) {
try {
const { from_ref, to_ref, repo, extractor } = req.body;
if (!from_ref || !to_ref) {
res.status(400).json({
error: "Missing required fields",
message: "from_ref and to_ref are required",
});
return;
}
const result = await runTool("diff_versions", { from_ref, to_ref, repo, extractor });
res.json(result);
}
catch (error) {
res.status(500).json({
error: "Version diff failed",
message: error instanceof Error ? error.message : String(error),
});
}
}
export async function staleDepsHandler(req, res) {
try {
const minSimilarity = req.query.minSimilarity
? parseInt(req.query.minSimilarity, 10)
: undefined;
const focusRepo = req.query.focusRepo;
const result = await runTool("detect_stale_dependencies", { minSimilarity, focusRepo });
res.json(result);
}
catch (error) {
res.status(500).json({
error: "Stale dependency detection failed",
message: error instanceof Error ? error.message : String(error),
});
}
}