From 19a51b065759f47a07f344b94cc94f630cdc39a2 Mon Sep 17 00:00:00 2001 From: Matt Silverlock Date: Tue, 16 Dec 2025 18:39:14 -0500 Subject: [PATCH] github: add configurable mentions input Adds a new `mentions` input to the GitHub Action that allows customizing the trigger phrases (e.g. `/bonk`, `@ask-bonk`) instead of the hardcoded `/opencode` and `/oc`. - Comma-separated list of trigger phrases - Case-insensitive matching - Defaults to `/opencode,/oc` when not specified --- github/action.yml | 5 +++++ packages/opencode/src/cli/cmd/github.ts | 11 ++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/github/action.yml b/github/action.yml index fe6a32206b8..2b455346047 100644 --- a/github/action.yml +++ b/github/action.yml @@ -22,6 +22,10 @@ inputs: required: false default: "false" + mentions: + description: "Comma-separated list of trigger phrases (case-insensitive). Defaults to '/opencode,/oc'" + required: false + runs: using: "composite" steps: @@ -57,3 +61,4 @@ runs: SHARE: ${{ inputs.share }} PROMPT: ${{ inputs.prompt }} USE_GITHUB_TOKEN: ${{ inputs.use_github_token }} + MENTIONS: ${{ inputs.mentions }} diff --git a/packages/opencode/src/cli/cmd/github.ts b/packages/opencode/src/cli/cmd/github.ts index c7d4033958a..0d38e503c7b 100644 --- a/packages/opencode/src/cli/cmd/github.ts +++ b/packages/opencode/src/cli/cmd/github.ts @@ -602,21 +602,26 @@ export const GithubRunCommand = cmd({ } const reviewContext = getReviewCommentContext() + const mentions = (process.env["MENTIONS"] || "/opencode,/oc") + .split(",") + .map((m) => m.trim().toLowerCase()) + .filter(Boolean) let prompt = (() => { const body = payload.comment.body.trim() - if (body === "/opencode" || body === "/oc") { + const bodyLower = body.toLowerCase() + if (mentions.some((m) => bodyLower === m)) { if (reviewContext) { return `Review this code change and suggest improvements for the commented lines:\n\nFile: ${reviewContext.file}\nLines: ${reviewContext.line}\n\n${reviewContext.diffHunk}` } return "Summarize this thread" } - if (body.includes("/opencode") || body.includes("/oc")) { + if (mentions.some((m) => bodyLower.includes(m))) { if (reviewContext) { return `${body}\n\nContext: You are reviewing a comment on file "${reviewContext.file}" at line ${reviewContext.line}.\n\nDiff context:\n${reviewContext.diffHunk}` } return body } - throw new Error("Comments must mention `/opencode` or `/oc`") + throw new Error(`Comments must mention ${mentions.map((m) => "`" + m + "`").join(" or ")}`) })() // Handle images