import type { Request, Response } from "express";
import { runTool } from "../mcp/tool-runner.js";
export async function extractRepoHandler(req: Request, res: Response): Promise<void> {
try {
const repo = req.body.repo || req.params.repo;
const ref = req.body.ref || req.params.ref;
const force = req.body.force === true || req.query.force === "true";
if (!repo || !ref) {
res.status(400).json({
error: "Missing required fields",
message: "repo and ref are required",
});
return;
}
const result = await runTool("extract_ref", { repo, ref, force });
res.json(result);
} catch (error) {
res.status(500).json({
error: "Extraction failed",
message: error instanceof Error ? error.message : String(error),
});
}
}
export async function extractAllHandler(req: Request, res: Response): Promise<void> {
try {
const force = req.body.force === true;
const repos = req.body.repos as string | undefined;
const shallow = req.body.shallow !== false;
const refs = req.body.refs as string | undefined;
const result = await runTool("extract_all", { force, repos, shallow, refs });
res.json(result);
} catch (error) {
res.status(500).json({
error: "Bulk extraction failed",
message: error instanceof Error ? error.message : String(error),
});
}
}
export async function extractionStatusHandler(req: Request, res: Response): Promise<void> {
try {
const jobId = req.params.jobId;
const result = await runTool("job_status", { jobId });
res.json(result);
} catch (error) {
res.status(500).json({
error: "Failed to get job status",
message: error instanceof Error ? error.message : String(error),
});
}
}