diff --git a/packages/opencode/src/tool/todo.ts b/packages/opencode/src/tool/todo.ts index 33ac3d12..a6a50757 100644 --- a/packages/opencode/src/tool/todo.ts +++ b/packages/opencode/src/tool/todo.ts @@ -2,18 +2,8 @@ import { z } from "zod" import { Tool } from "./tool" import DESCRIPTION_WRITE from "./todowrite.txt" import { App } from "../app/app" +import { TodoInfo } from "../util/schema" -const TodoInfo = z.object({ - content: z.string().min(1).describe("Brief description of the task"), - status: z - .enum(["pending", "in_progress", "completed"]) - .describe("Current status of the task"), - priority: z - .enum(["high", "medium", "low"]) - .describe("Priority level of the task"), - id: z.string().describe("Unique identifier for the todo item"), -}) -type TodoInfo = z.infer const state = App.state("todo-tool", () => { const todos: { diff --git a/packages/opencode/src/util/schema.ts b/packages/opencode/src/util/schema.ts new file mode 100644 index 00000000..4a3114ca --- /dev/null +++ b/packages/opencode/src/util/schema.ts @@ -0,0 +1,17 @@ +import { z } from "zod" + +// Enum status +export const StatusEnum = z.enum(["pending", "in_progress", "completed"]) +// Enum priority +export const PriorityEnum = z.enum(["high", "medium", "low"]) + +// Schema for todo info +export const TodoInfo = z.object({ + content: z.string().min(1).describe("Brief description of the task"), + status: StatusEnum.describe("Current status of the task"), + priority: PriorityEnum.describe("Priority level of the task"), + id: z.string().describe("Unique identifier for the todo item"), +}) +export type StatusEnum = z.infer +export type PriorityEnum = z.infer +export type TodoInfo = z.infer