import { loadEnv } from "../src/config/env.js"; import { DedupeStore } from "../src/domain/dedupe-store.js"; import { runReview } from "../src/run/review-runner.js"; import { RoutedEvent } from "../src/types/events.js"; async function main(): Promise { const [owner, repo, prRaw, headSha = "dry-run-sha"] = process.argv.slice(2); if (!owner || !repo || !prRaw) { throw new Error("Usage: npm run dry-run -- [head_sha]"); } const prNumber = Number(prRaw); if (Number.isNaN(prNumber)) { throw new Error("pr_number must be a number"); } const env = loadEnv(); const event: RoutedEvent = { kind: "review_requested", payload: { action: "review_requested", pull_request: { number: prNumber, title: "dry run", body: "", head: { sha: headSha, ref: "dry-run-head" }, base: { ref: env.DEFAULT_BASE_BRANCH }, labels: [] }, repository: { owner: { login: owner }, name: repo, full_name: `${owner}/${repo}` }, requested_reviewer: { login: env.GITEA_BOT_LOGIN } } }; const dedupe = new DedupeStore(env.DEDUPE_TTL_SECONDS); const outcome = await runReview({ env, event, dedupe, correlationId: "dry-run" }); console.log(`dry-run outcome: ${outcome}`); } main().catch((error) => { console.error(error); process.exitCode = 1; });