Affected component
channel
Severity
S2 - degraded behavior
Current behavior
When a provider uses native tool calling and returns both assistant text and structured tool_calls, draft-capable channel updates only receive the tool-progress message. The assistant explanation text is dropped before it reaches on_delta.
On current master, resolve_display_text() returns parsed_text for any turn that contains tool calls. Native tool-call turns often have empty parsed_text, so the assistant's separate text payload is lost.
Expected behavior
For native tool-call turns, if there is no parsed inline text but the provider returned assistant text, that text should be preserved and relayed through on_delta before tool execution starts.
Steps to reproduce
- Check out the latest
master branch. I reproduced this on commit 65cb4fe0.
- Configure Telegram with draft streaming enabled.
- Trigger a native tool-call response where the provider returns assistant text alongside structured tool calls, for example:
{
"text": "Task started. Waiting 30 seconds before checking status.",
"tool_calls": [
{
"id": "call_wait",
"name": "count_tool",
"arguments": "{\"value\":\"A\"}"
}
]
}
- Observe the streamed draft output in Telegram.
- The tool-progress line is emitted, but the assistant text above is missing.
Impact
Affected users: Telegram users with streaming drafts enabled, and any other draft-capable channel consuming on_delta
Frequency: whenever the provider returns separate assistant text plus structured tool_calls
Consequence: users see tool execution progress without the model's accompanying explanation or status message
Logs / stack traces
Observed symptom in streamed output:
💬 Got 1 tool call(s)
⏳ count_tool: {"value":"A"}
✅ count_tool
Expected streamed output should also include the assistant text before tool execution, for example:
Task started. Waiting 30 seconds before checking status.
💬 Got 1 tool call(s)
⏳ count_tool: {"value":"A"}
✅ count_tool
ZeroClaw version
master @ 65cb4fe0
Rust version
rustc 1.93.1 (01f6ddf75 2026-02-11)
Operating system
macOS 12.7.4
Regression?
Unknown
Pre-flight checks
Affected component
channel
Severity
S2 - degraded behavior
Current behavior
When a provider uses native tool calling and returns both assistant
textand structuredtool_calls, draft-capable channel updates only receive the tool-progress message. The assistant explanation text is dropped before it reacheson_delta.On current
master,resolve_display_text()returnsparsed_textfor any turn that contains tool calls. Native tool-call turns often have emptyparsed_text, so the assistant's separatetextpayload is lost.Expected behavior
For native tool-call turns, if there is no parsed inline text but the provider returned assistant
text, that text should be preserved and relayed throughon_deltabefore tool execution starts.Steps to reproduce
masterbranch. I reproduced this on commit65cb4fe0.{ "text": "Task started. Waiting 30 seconds before checking status.", "tool_calls": [ { "id": "call_wait", "name": "count_tool", "arguments": "{\"value\":\"A\"}" } ] }Impact
Affected users: Telegram users with streaming drafts enabled, and any other draft-capable channel consuming
on_deltaFrequency: whenever the provider returns separate assistant text plus structured
tool_callsConsequence: users see tool execution progress without the model's accompanying explanation or status message
Logs / stack traces
Observed symptom in streamed output:
Expected streamed output should also include the assistant text before tool execution, for example:
ZeroClaw version
master @
65cb4fe0Rust version
rustc 1.93.1 (01f6ddf75 2026-02-11)Operating system
macOS 12.7.4
Regression?
Unknown
Pre-flight checks