pub fn extract_draft(reply: &str) -> Option<String>Expand description
Pull the task draft out of an agent reply, if it wrote one.
The last fenced task block, not the first. A conversation revises: an
agent that rewrites the task file after one more answer sends both versions
over the course of the interview, and within one message it may quote what
it had before changing it. The newest block is the one the operator has been
reading and the one they are about to approve.
Blocks tagged anything else - ```rust, ```json - are
ignored, so an agent illustrating its plan with code does not overwrite the
draft with a snippet. An unterminated block is still taken: a reply cut off
mid-draft is worth showing the operator, who can then just ask for it again.