| 123456789101112131415161718192021222324252627282930313233343536373839 |
- import z from "zod"
- import { Tool } from "./tool"
- import DESCRIPTION_WRITE from "./todowrite.txt"
- import { Todo } from "../session/todo"
- export const TodoWriteTool = Tool.define("todowrite", {
- description: DESCRIPTION_WRITE,
- parameters: z.object({
- todos: z.array(z.object(Todo.Info.shape)).describe("The updated todo list"),
- }),
- async execute(params, opts) {
- await Todo.update({
- sessionID: opts.sessionID,
- todos: params.todos,
- })
- return {
- title: `${params.todos.filter((x) => x.status !== "completed").length} todos`,
- output: JSON.stringify(params.todos, null, 2),
- metadata: {
- todos: params.todos,
- },
- }
- },
- })
- export const TodoReadTool = Tool.define("todoread", {
- description: "Use this tool to read your todo list",
- parameters: z.object({}),
- async execute(_params, opts) {
- const todos = await Todo.get(opts.sessionID)
- return {
- title: `${todos.filter((x) => x.status !== "completed").length} todos`,
- metadata: {
- todos,
- },
- output: JSON.stringify(todos, null, 2),
- }
- },
- })
|