Tool factories

This commit is contained in:
Colin McDonnell
2025-12-15 23:04:20 -08:00
parent 0fced1dfa6
commit 26336d0ac2
21 changed files with 14461 additions and 15875 deletions
+22 -19
View File
@@ -1,27 +1,30 @@
import { type } from "arktype";
import { contextualize, tool } from "./shared.ts";
import type { Context } from "../main.ts";
import { execute, 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,
});
export function AddLabelsTool(ctx: Context) {
return 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: execute(ctx, async ({ issue_number, labels }) => {
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),
};
}),
});
return {
success: true,
labels: result.data.map((label) => label.name),
};
}),
});
}