The agent task list

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. This page covers the tool behind the list: how an update works, the states an item can carry, who owns the list, and the messages an update can return. The visible side, the card and the plan in the chat, is on Oda's to-do list.

How an update works

The three states

StateMeaning
pendingNot started.
in_progressBeing worked on now.
completedFinished.

Every item carries one of the three. The same states appear on the card in the chat, under Pending, In progress and Completed; Oda's to-do list covers how the card reads them.

One active task, or several

Where the list lives

What the chat shows

Messages an update can return

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.

MessageWhat it means
Updated todo list: <n> pending, <n> in progress, <n> completed.The update was recorded, and the counts describe the whole list.
Error: invalid todo: `content` must be a non-empty stringAn item had no text left once its text was trimmed.
Error: invalid todos: duplicate content "<content>"The list named the same task text twice.
Error: invalid todos: at most one task may be in_progress (got <n>)The one-active rule is on, and the update marked more than one item as in progress.
Error: todo_write requires an owning agent sessionThe update came from a run with no chat to record it.

Questions, answered

Does every update send the whole list?

Yes. Each update sends the entire list and replaces the previous one: there are no partial updates and no per-item edits. To record one change, Oda sends the complete list again; to drop an item, it sends the list without it.

What are the three task states?

pending (not started), in_progress (being worked on now) and completed (finished). Every item carries one of them, and each update states the state of every item in the list.

Why was an update refused for having two tasks in progress?

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.

Why was an item with empty text refused?

Oda trims each item's text first. When nothing is left, the item is refused with Error: invalid todo: `content` must be a non-empty string.

Why did two identical tasks fail?

Every task text must be unique inside one list. A repeated text is refused with Error: invalid todos: duplicate content "<content>".

Does the task list survive closing and reopening a chat?

Yes. The list stays with the chat's record and survives across turns and reopened chats; the most recent update is the list that counts.

Do subagents share the task list?

No. The list belongs to the chat that recorded it: a subagent keeps its own list, and nothing is shared between chats or agents.

What do the counts in the update's answer mean?

They describe the whole list after the update: how many items are pending, how many are in progress and how many are completed, in the form Updated todo list: <n> pending, <n> in progress, <n> completed.

When does the plan clear from the chat?

While the work runs, the chat shows the current plan. When the next turn starts, the standing plan clears; after a turn ends, the finished checklist stays visible.

Can a task carry an id or a priority?

No. An item is its text and its state, and an update replaces the whole list, so items carry no id, no priority and no other per-item field.