diff --git a/Agents.md b/Agents.md index c9da8e5..debdf13 100644 --- a/Agents.md +++ b/Agents.md @@ -725,16 +725,16 @@ REPL mode when function calling is enabled. ## User Interaction Available Tools -| Tool | Description | Returns | -|------------------|-----------------------------------------|----------------------------------| -| `user__ask` | Present a single-select list of options | The selected option string | -| `user__confirm` | Ask a yes/no question | `"yes"` or `"no"` | -| `user__input` | Request free-form text input | The text entered by the user | -| `user__checkbox` | Present a multi-select checkbox list | Array of selected option strings | +| Tool | Description | Returns | +|-------------------|------------------------------------------------------------------------------------------------------------------------------|----------------------------------| +| `user__select` | Present a list of named options and ask the user to pick exactly one. Use this — not `confirm` — whenever there are 2+ named options to choose between. | The selected option string | +| `user__confirm` | Ask a genuinely binary yes/no question with no other choices. Do NOT use for "A or B?" situations; use `select` instead. | `"yes"` or `"no"` | +| `user__input` | Collect free-form text from the user when no predefined options exist. | The text entered by the user | +| `user__checkbox` | Ask the user to pick one or more options from a list (multi-select). Use when multiple answers are valid simultaneously. | Array of selected option strings | **Parameters:** -- `user__ask`: `--question "..." --options ["Option A", "Option B", "Option C"]` +- `user__select`: `--question "..." --options ["Option A", "Option B", "Option C"]` - `user__confirm`: `--question "..."` - `user__input`: `--question "..."` - `user__checkbox`: `--question "..." --options ["Option A", "Option B", "Option C"]` @@ -747,7 +747,7 @@ checkboxes, and text input fields. When a **child agent** (depth > 0) calls a `user__*` tool, it cannot prompt the terminal directly. Instead, the request is **automatically escalated** to the root agent: -1. The child agent calls `user__ask(...)` and **blocks**, waiting for a reply +1. The child agent calls `user__select(...)` and **blocks**, waiting for a reply 2. The root agent sees a `pending_escalations` notification in its next tool results 3. The root agent either answers from context or prompts the user itself, then calls `agent__reply_escalation` to unblock the child diff --git a/Graph-Agents.md b/Graph-Agents.md index c143345..ebe13ee 100644 --- a/Graph-Agents.md +++ b/Graph-Agents.md @@ -354,7 +354,7 @@ approve: ### The `on_other` field -This field is **required** and easy to miss. Coyote's `user__ask` tool *always* +This field is **required** and easy to miss. Coyote's `user__select` tool *always* gives the user a "type your own answer" option in addition to the listed options. There is no way to disable this. Without `on_other`, a user who types something other than the listed options would crash the graph at @@ -1462,7 +1462,7 @@ A short, honest list of things that bite people: - **A `rag` node's knowledge base is built once, at load time**. Changing a `rag` node's `documents` does not rebuild it. Delete `/.yaml` to force a fresh build on next run. -- **`on_other` is required on every `approval` node** because `user__ask` +- **`on_other` is required on every `approval` node** because `user__select` always permits free-form responses (see [the approval section](#approval)). - **`validation` on `input` nodes is length-only**. The grammar is `len(input) ` with `` in `> >= < <= ==`. No regex, no diff --git a/REPL.md b/REPL.md index 5e87d49..d975335 100644 --- a/REPL.md +++ b/REPL.md @@ -27,7 +27,7 @@ things like * **Configurable Keybindings:** You can switch between `emacs` style keybindings or `vi` style keybindings * [**Custom REPL Prompt:**](REPL-Prompt) You can even customize the REPL prompt to display information about the current context in the prompt -* **Built-in user interaction tools:** When function calling is enabled in the REPL, the `user__ask`, `user__confirm`, +* **Built-in user interaction tools:** When function calling is enabled in the REPL, the `user__select`, `user__confirm`, `user__input`, and `user__checkbox` tools are always available for interactive prompts. These are not injected in the one-shot CLI mode.