Loading the documentation…
While DataMind Oda works through a task with several steps, it keeps a task list: one item per concrete step, marked as the work moves. Oda breaks the work into steps and records the list itself; the list belongs to the chat that recorded it, and the chat shows it as the plan while the work runs.
| State | Meaning |
|---|---|
pending | Not started. |
in_progress | Being worked on now. |
completed | Finished. |
Every item carries exactly one of the three, and each update states the state of every item in the list. In the chat they read Pending, In progress and Completed.
Error: invalid todos: at most one task may be in_progress (got <n>), and nothing is recorded.Error: todo_write requires an owning agent session before anything is recorded.Every recorded update appears in your chat as a step row, holding the whole list as it stood at that moment.
3/ 7 completed, and names the task in progress when there is one.+2. That count is never cut off, even when the row is narrow.1 added · 1 updated · 1 removed, a single count like 3 added when only one kind moved, or No changes to the list when nothing moved.Added, Status changed, Reordered or Removed.+, one that left the list carries a −, and a task that changed state shows where it came from, reading Pending → In progress.2 unchanged; open the footer to see them.Initial list for the first recorded list, Changes since the previous list afterwards. An update with no tasks and no earlier list to compare reads The to-do list is empty.If the update's record cannot be read at all, the row opens as a plain block instead of the checklist, the same fallback as other steps; Step cards in chat covers it.
3/ 7, and the step being worked on now; pressing it opens Activity and flashes the STEPS card into view.Previous list unavailable and shows no change counts; when the earlier part of the chat loads, the comparison appears by itself.A recorded update answers with the counts of the whole list; a refusal arrives with an Error: prefix and leaves the list as it was.
| Message | What it means |
|---|---|
Updated todo list: <pending> pending, <inProgress> in progress, <completed> completed. | The update was recorded, and the counts describe the whole list. |
Error: invalid todo: `content` must be a non-empty string | An item had no text left once it was trimmed. |
Error: invalid todos: duplicate content "<content>" | The same task text appears twice in the list. |
Error: invalid todos: at most one task may be in_progress (got <n>) | The one-active rule is on, and the update marks more than one item in progress. |
Error: todo_write requires an owning agent session | The update came from a run with no chat to record into. |
The task list is not plan mode. Plan mode is a posture you switch on before work: Oda presents a plan and waits for your approval before carrying it out, covered on Plan mode. The task list is the running checklist of steps while Oda works. The two are separate features.
Oda does: it breaks the work into concrete steps and records them itself as it goes. The list is its plan for the task, not something you fill in.
No. The list is for work with several steps; a task with one obvious step can run without one.
No. Every update sends the entire list and replaces the previous one, so there are no partial updates and no per-item edits: to change one task, Oda sends the complete list again, and to drop one, it sends the list without it.
No. The list is Oda's own record of the task, and the card is read-only. Ask for the change in the chat, and Oda records a new update with it.
That is Oda working in parallel, for example a background command or a helper agent, in a setup that allows it. Oda marks every task it is actively working on; the row names the first and counts the rest, for example +2.
The one-active rule is on in your setup: at most one item may be in progress at a time. An update that marks two is refused with Error: invalid todos: at most one task may be in_progress (got <n>), and nothing is recorded.
Every task text must have real content once trimmed, and no text may appear twice in one list. An item with nothing left after trimming is refused with Error: invalid todo: `content` must be a non-empty string; a repeated text is refused with Error: invalid todos: duplicate content "<content>". In both cases nothing is recorded.
The chip shows the current list, not a permanent one. It keeps showing the finished list after a turn ends, then clears when the next turn begins; it returns with the next update Oda records. Every update stays in the chat as its own row, so nothing is lost.
Previous list unavailable?The list recorded before it is not loaded yet, so there is nothing to compare this update against. The comparison appears by itself when the earlier part of the chat loads.
No. The list belongs to the chat that recorded it: nothing is shared between chats, and each helper agent keeps its own list.
The list stays with the chat's record, so reopening the chat brings the latest list back, and the most recent update is the list that counts. Expand any earlier row to read the list as it stood at that update.
No. Plan mode is a posture you switch on before work: Oda presents a plan and waits for your approval, covered on Plan mode. The task list is the running checklist of steps while Oda works.