import type { Request, Response } from "express";
import { runTool } from "../mcp/tool-runner.js";
export async function listReposHandler(_req: Request, res: Response): Promise<void> {
try {
const result = await runTool("list_repos", {});
res.json(result);
} catch (error) {
res.status(500).json({
error: "Failed to list repos",
message: error instanceof Error ? error.message : String(error),
});
}
}
export async function listRefsHandler(req: Request, res: Response): Promise<void> {
try {
const result = await runTool("list_refs", {});
const repo = req.params.repo;
if (repo && typeof result === "object" && result !== null && repo in result) {
res.json(result[repo as keyof typeof result]);
} else {
res.json(result);
}
} catch (error) {
res.status(500).json({
error: "Failed to list refs",
message: error instanceof Error ? error.message : String(error),
});
}
}
export async function listVersionsHandler(req: Request, res: Response): Promise<void> {
try {
const repo = req.params.repo;
// Use knowledge store directly to get all versions for this repo
const { getStore } = await import("../../../src/tools/shared.js");
const store = await getStore();
const versions = await store.listVersions(repo);
res.json(versions.map((v) => ({
ref: v.ref,
refType: v.refType,
extractedAt: v.extractedAt instanceof Date ? v.extractedAt.toISOString() : String(v.extractedAt),
sha: v.sha,
})));
} catch (error) {
res.status(500).json({
error: "Failed to list versions",
message: error instanceof Error ? error.message : String(error),
});
}
}