| 12345678910111213141516171819202122232425262728293031323334353637 |
- import { BusEvent } from "@/bus/bus-event"
- import { Bus } from "@/bus"
- import z from "zod"
- import { Storage } from "../storage/storage"
- export namespace Todo {
- export const Info = z
- .object({
- content: z.string().describe("Brief description of the task"),
- status: z.string().describe("Current status of the task: pending, in_progress, completed, cancelled"),
- priority: z.string().describe("Priority level of the task: high, medium, low"),
- id: z.string().describe("Unique identifier for the todo item"),
- })
- .meta({ ref: "Todo" })
- export type Info = z.infer<typeof Info>
- export const Event = {
- Updated: BusEvent.define(
- "todo.updated",
- z.object({
- sessionID: z.string(),
- todos: z.array(Info),
- }),
- ),
- }
- export async function update(input: { sessionID: string; todos: Info[] }) {
- await Storage.write(["todo", input.sessionID], input.todos)
- Bus.publish(Event.Updated, input)
- }
- export async function get(sessionID: string) {
- return Storage.read<Info[]>(["todo", sessionID])
- .then((x) => x || [])
- .catch(() => [])
- }
- }
|