+ _, err := l.Work(name, text, status, status != subagentStopped)
+ if err != nil {
+ l.fail(fmt.Errorf("%w: %w", errChainLogWrite, err))
+ }
+}
+
+// Work logs text as a work message of source, such as the name of a subagent,
+// and tells the clients, with status. With wake, the message joins the waiting
+// messages and wakes the loop, as a user message of Submit does: it joins the
+// first request of a new turn, or the next request of a running turn after the
+// tool results.
+func (l *TurnLoop) Work(source, text, status string, wake bool) (Message, error) {