feat: add dedicated issue close/reopen and PR review tools
This commit is contained in:
82
.opencode/tools/tea-issue-close.ts
Normal file
82
.opencode/tools/tea-issue-close.ts
Normal 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,
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user