feat: add eyes reaction to trigger comment during review

This commit is contained in:
2026-05-31 18:55:54 -05:00
parent e8b2c9952b
commit 6c03caa8ea
+38
View File
@@ -132,6 +132,41 @@ export async function main(): Promise<MainResult> {
throw new Error("BOT_TOKEN environment variable is required"); throw new Error("BOT_TOKEN environment variable is required");
} }
const triggerCommentId =
payload.event.trigger === "issue_comment_created" ? payload.event.comment_id : undefined;
let eyesAdded = false;
const addEyes = async () => {
if (!triggerCommentId) return;
try {
await gitea.rest.issue.issuePostCommentReaction({
owner: repoContext.owner,
repo: repoContext.name,
id: triggerCommentId,
// @ts-expect-error — Gitea SDK type mismatch but endpoint is supported
content: "eyes",
});
eyesAdded = true;
} catch (err) {
log.debug(`failed to add eyes reaction: ${err}`);
}
};
const removeEyes = async () => {
if (!eyesAdded || !triggerCommentId) return;
try {
await gitea.rest.issue.issueDeleteCommentReaction({
owner: repoContext.owner,
repo: repoContext.name,
id: triggerCommentId,
// @ts-expect-error — Gitea SDK type mismatch but endpoint is supported
content: "eyes",
});
} catch (err) {
log.debug(`failed to remove eyes reaction: ${err}`);
}
};
let toolContext: ToolContext | undefined; let toolContext: ToolContext | undefined;
let progressCallbackDisabled = false; let progressCallbackDisabled = false;
let todoTracker: ReturnType<typeof createTodoTracker> | undefined; let todoTracker: ReturnType<typeof createTodoTracker> | undefined;
@@ -248,6 +283,8 @@ export async function main(): Promise<MainResult> {
safetyNetTimer.unref?.(); safetyNetTimer.unref?.();
}; };
await addEyes();
const agentPromise = agents.ollama.run({ const agentPromise = agents.ollama.run({
payload, payload,
model: toolState.model, model: toolState.model,
@@ -316,6 +353,7 @@ export async function main(): Promise<MainResult> {
log.error(errorMessage); log.error(errorMessage);
return { success: false, error: errorMessage }; return { success: false, error: errorMessage };
} finally { } finally {
await removeEyes();
activityTimeout?.stop(); activityTimeout?.stop();
if (safetyNetTimer) clearTimeout(safetyNetTimer); if (safetyNetTimer) clearTimeout(safetyNetTimer);
} }