# todos — agent notes Shared todo/task/reminder store for all of the owner's Kody-connected agents. Full reference with input shapes, due formats, time zone, recipes and limitations: [README.md](./README.md). ## Rules - Always pass `by` (your agent name) on writes. - Inputs are strict: unknown keys throw with the accepted shape. `null` = not provided. - `due`: `"YYYY-MM-DD"`, `"YYYY-MM-DDTHH:MM"` (store time zone), ISO with `Z`/offset, `"today"`, `"tomorrow"`. Resolve phrases like "next Friday" yourself first. - Store time zone: `./settings` (default `UTC`); per-call `timeZone` overrides it. - Ids look like `T12` (`"12"` ok). Find them with `./list` (`q` = text search). - `./delete` is soft (restore with `./reopen`). `purge: true` only on explicit user request. - Show users the returned `line` / `text`. ## Imports ```js import todos from 'kody:@charlesmatte/todos' // overview import settings from 'kody:@charlesmatte/todos/settings' import createTodo from 'kody:@charlesmatte/todos/create' import listTodos from 'kody:@charlesmatte/todos/list' import getTodo from 'kody:@charlesmatte/todos/get' import updateTodo from 'kody:@charlesmatte/todos/update' import completeTodo from 'kody:@charlesmatte/todos/complete' import reopenTodo from 'kody:@charlesmatte/todos/reopen' import deleteTodo from 'kody:@charlesmatte/todos/delete' import digest from 'kody:@charlesmatte/todos/digest' ``` Forks: replace `@charlesmatte` with your own scope. ## Smoke test (leaves no data behind) ```js import createTodo from 'kody:@charlesmatte/todos/create' import deleteTodo from 'kody:@charlesmatte/todos/delete' export default async () => { const { todo } = await createTodo({ title: 'smoke', by: 'smoke-test' }) return deleteTodo({ id: todo.id, by: 'smoke-test', purge: true }) } ```