feat: add dedicated issue close/reopen and PR review tools

This commit is contained in:
2026-05-12 13:11:12 +02:00
parent 764aee4a18
commit 879a415281
5 changed files with 546 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
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,
};
}
},
});