diff --git a/main.ts b/main.ts index 36d327a..09f8c36 100644 --- a/main.ts +++ b/main.ts @@ -132,6 +132,41 @@ export async function main(): Promise { 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 progressCallbackDisabled = false; let todoTracker: ReturnType | undefined; @@ -248,6 +283,8 @@ export async function main(): Promise { safetyNetTimer.unref?.(); }; + await addEyes(); + const agentPromise = agents.ollama.run({ payload, model: toolState.model, @@ -316,6 +353,7 @@ export async function main(): Promise { log.error(errorMessage); return { success: false, error: errorMessage }; } finally { + await removeEyes(); activityTimeout?.stop(); if (safetyNetTimer) clearTimeout(safetyNetTimer); }