import type { Context } from "hono"; import type { IssueEvent, TaskRequest } from "../types.js"; import type { TaskQueue } from "../queue.js"; import type { Config } from "../config.js"; /** * Issue opened → route to analyst or fix-bug. * * Replaces: gitea-issue-triage.json */ export function issueTriage(config: Config, queue: TaskQueue) { return async (c: Context) => { const event = await c.req.json(); if (event.action !== "opened") { return c.text("ignored: not an open event", 200); } const labels = event.issue.labels.map((l) => l.name); const [org, repo] = event.repository.full_name.split("/"); const isBug = labels.includes("bug"); const taskType = isBug ? "fix-bug" : "analyse"; const task: TaskRequest = { taskType, issueNumber: event.issue.number, giteaOrg: org, giteaRepo: repo, repoCloneUrl: event.repository.clone_url, giteaToken: config.giteaDevToken, }; const queued = await queue.enqueue(task, { useReviewAccount: false, body: `🤖 Issue received. Starting **${taskType}** stage.`, }); return c.json({ ok: true, queued }); }; }