| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import { Octokit } from "@octokit/rest"
- import { tool } from "@opencode-ai/plugin"
- import DESCRIPTION from "./github-triage.txt"
- function getIssueNumber(): number {
- const issue = parseInt(process.env.ISSUE_NUMBER ?? "", 10)
- if (!issue) throw new Error("ISSUE_NUMBER env var not set")
- return issue
- }
- export default tool({
- description: DESCRIPTION,
- args: {
- assignee: tool.schema
- .enum(["thdxr", "adamdotdevin", "rekram1-node", "fwang", "jayair", "kommander"])
- .describe("The username of the assignee")
- .default("rekram1-node"),
- labels: tool.schema
- .array(tool.schema.enum(["nix", "opentui", "perf", "web", "zen", "docs"]))
- .describe("The labels(s) to add to the issue")
- .optional(),
- },
- async execute(args) {
- const issue = getIssueNumber()
- const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN })
- const owner = "sst"
- const repo = "opencode"
- const results: string[] = []
- await octokit.rest.issues.addAssignees({
- owner,
- repo,
- issue_number: issue,
- assignees: [args.assignee],
- })
- results.push(`Assigned @${args.assignee} to issue #${issue}`)
- if (args.labels && args.labels.length > 0) {
- await octokit.rest.issues.addLabels({
- owner,
- repo,
- issue_number: issue,
- labels: args.labels,
- })
- results.push(`Added labels: ${args.labels.join(", ")}`)
- }
- return results.join("\n")
- },
- })
|