fn is_create_call(tool_name: &str) -> boolExpand description
Fold a Task-style call describing a SINGLE item into the accumulated rows.
Keyed by whatever id the tool uses so a later call revises the same row, falling back to the text for tools that hand back no id.
Fields are merged, not replaced (codex P1 on PR #2952). A TaskUpdate
legitimately carries only task_id + the changed status — it has no
reason to resend text that did not change. Requiring a complete item meant
such a call parsed to nothing and the row sat at pending forever, which is
precisely the case a checklist exists to show moving.
Does this tool name describe CREATING an item, as opposed to revising one?
Only consulted for calls that carry no id (reagent P2 on PR #2952). With an id the key is unambiguous; without one, text is the only identity available, and keying on it alone silently collapses two genuinely distinct in-flight tasks that happen to share a title. Two visible duplicate rows are a much smaller harm than one invisibly missing row, so an idless CREATE always appends and only an idless UPDATE matches by text.