While DataMind Oda works through a task with several steps, it keeps a task list: one item per step, marked as the work moves. 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.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. |
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.
pending means the task has not started, in_progress means it is being worked on now, and completed means it is finished. Every item carries one of the three, and each update states the state of every item.
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.
While the work runs and after a turn ends, the chat shows the plan from the latest update. When the next turn starts, the standing plan clears; every recorded update stays in the chat as its own row.
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.
No. The list is for work with several steps; a task with one obvious step can run without one.
In the chat: expand the update row to read the list as it stood at that update, with what had changed since the previous one. Oda's to-do list covers what each row shows.