import { tool } from "@opencode-ai/plugin"; import { $ } from "bun"; export const issueClose = tool({ description: "Close one or more issues", args: { issueNumbers: tool.schema .array(tool.schema.number()) .describe("Issue number(s) to close"), comment: tool.schema .string() .optional() .describe("Optional comment explaining why the issue is being closed"), }, async execute(args) { try { const issueListStr = args.issueNumbers.join(" "); let cmd = $`tea issues close --output json ${issueListStr}`; if (args.comment) { cmd = cmd`--comment ${args.comment}`; } const result = await cmd.text(); return { success: true, message: `Successfully closed issue(s) #${args.issueNumbers.join(", ")}`, issues: args.issueNumbers, output: result, }; } catch (error: any) { return { error: "Failed to close issue(s)", message: error.message, stderr: error.stderr?.toString(), issues: args.issueNumbers, }; } }, }); export const issueReopen = tool({ description: "Reopen one or more closed issues", args: { issueNumbers: tool.schema .array(tool.schema.number()) .describe("Issue number(s) to reopen"), comment: tool.schema .string() .optional() .describe("Optional comment explaining why the issue is being reopened"), }, async execute(args) { try { const issueListStr = args.issueNumbers.join(" "); let cmd = $`tea issues reopen --output json ${issueListStr}`; if (args.comment) { cmd = cmd`--comment ${args.comment}`; } const result = await cmd.text(); return { success: true, message: `Successfully reopened issue(s) #${args.issueNumbers.join(", ")}`, issues: args.issueNumbers, output: result, }; } catch (error: any) { return { error: "Failed to reopen issue(s)", message: error.message, stderr: error.stderr?.toString(), issues: args.issueNumbers, }; } }, });