28 lines
830 B
TypeScript
28 lines
830 B
TypeScript
import { type } from "arktype";
|
|
import { contextualize, tool } from "./shared.ts";
|
|
|
|
export const AddLabelsParams = type({
|
|
issue_number: type.number.describe("the issue or PR number to add labels to"),
|
|
labels: type.string.array().atLeastLength(1).describe("array of label names to add"),
|
|
});
|
|
|
|
export const AddLabelsTool = tool({
|
|
name: "add_labels",
|
|
description:
|
|
"Add labels to a GitHub issue or pull request. Only use labels that already exist in the repository.",
|
|
parameters: AddLabelsParams,
|
|
execute: contextualize(async ({ issue_number, labels }, ctx) => {
|
|
const result = await ctx.octokit.rest.issues.addLabels({
|
|
owner: ctx.owner,
|
|
repo: ctx.name,
|
|
issue_number,
|
|
labels,
|
|
});
|
|
|
|
return {
|
|
success: true,
|
|
labels: result.data.map((label) => label.name),
|
|
};
|
|
}),
|
|
});
|