Actions
The four ways a model can end a step.
| action | effect |
|---|---|
continue | call one tool with its input |
reply | speak; final makes it the last word, expectsAnswer pauses on a question, choices offers buttons, attachments delivers files |
fail | report a blocker; message is the reply the requester reads |
delegate | hand a self-contained piece to a child turn, only when TurnOptions.DelegationLimit is set |
Actions are native tool calls, one function per action, with parallel calls enabled and tool_choice left unset on the first sample of each step. Assistant text that ends with finish_reason: stop is a proposed final reply and goes through the same gate. A malformed action comes back as a typed validation issue naming the field, and the step is asked again, at most twice. finish, ask_input, file_deliver, request_tools and plan_update are retired from the model's vocabulary, and loop/model_facing_vocabulary_test.go fails if any of them reaches a prompt.
A reply with attachments invokes file_deliver and a reply with expectsAnswer invokes ask_input, so both leave a tool observation the completion gate can read. A question pauses the task in waiting_user_input through the host's ask_input, and the answer rebuilds the turn from the ledger and its checkpoint, so a restart in between loses no work.
A delegated child runs with the same identity and tool set, its own outcome contract and completion gate, and no delegation of its own. The host still executes every call, so a child reaches nothing its parent could not.