fix(channels): rely on generated intermediate progress (#143)

* fix(channels): add reasoning delivery modes

* fix(telegram): show tool status without placeholder

* docs(plans): mark issue 67 behavior plan complete

* feat(config): add behavior setting purpose tooltips

* fix(channels): rely on generated intermediate progress
This commit is contained in:
Duy /zuey/ authored and GitHub committed 2026-06-09 09:12:23 +07:00
1 parent ed1327db16
commit 23b18fa6cd
7 files changed
+78 -94

No files matched your search

+2 -2
View File
@@ -78,8 +78,8 @@ Normal channel messages pass through the shared inbound debouncer before agent e
- `quick_ack.mode = "llm_generated"` uses the existing main-turn `block.reply` event as the natural progress response for non-streaming channel runs. It does not make a separate LLM call.
- `quick_ack.templates` are fallback messages. In generated mode, the first template is sent only if no generated `block.reply` arrives before `quick_ack.min_delay_ms`.
- `quick_ack.mode = "fixed_template"` preserves the older fixed-template acknowledgement behavior.
- `quick_ack.mode = "off"` disables chat-behavior quick acknowledgement. When explicit `gateway.block_reply` is on, the first generic pre-tool `block.reply` is treated as the immediate acknowledgement and suppressed; deterministic tool announcements still deliver before tool execution because they are part of Intermediate Replies.
- If a model requests tools without assistant text, or with text that does not name the tools, the pipeline emits a safe `tool_announcement` fallback using only sanitized tool names. Tool arguments are never included in this message.
- `quick_ack.mode = "off"` disables chat-behavior quick acknowledgement. When explicit `gateway.block_reply` is on, the first generic pre-tool `block.reply` is treated as the immediate acknowledgement and suppressed; model-generated tool progress still delivers before tool execution because it is part of Intermediate Replies.
- If a model requests tools without assistant text, the pipeline does not emit a synthetic Intermediate Reply. This avoids repetitive server templates; visible progress messages come from the LLM and should match the user's language.
- `final_split` splits long final text replies into a bounded number of paragraph messages.
- Per-channel `chat_behavior` overrides inherit the gateway config unless a field is explicitly set.
+17 -7
View File
@@ -105,17 +105,27 @@ Significant changes, features, and fixes in reverse chronological order.
**Fixes**
- Intermediate Replies now guarantees a pre-tool announcement when the model
requests tools without assistant text, or with text that does not name the
tools. The fallback uses sanitized tool names only and is tagged as
`tool_announcement`.
- Intermediate Replies now preserve natural assistant progress text as-is
instead of appending a deterministic tool-name sentence.
- Empty-content tool calls no longer emit synthetic server-generated
Intermediate Reply bubbles. This prevents repeated template messages and
keeps visible progress model-generated.
- Tool-call progress keeps the `tool_announcement` source when the model does
provide assistant text, so Quick acknowledgement suppression still treats it
as explicit progress.
- The full-mode system prompt now tells the LLM to write any short progress
sentence naturally in the user's language and to describe user-visible action
instead of internal tool names.
- Quick acknowledgement off still suppresses generic first acknowledgements,
but no longer suppresses explicit tool announcements.
but no longer suppresses explicit model-generated tool progress.
**Tests**
- Added pipeline coverage for empty-content tool calls and channel coverage for
`tool_announcement` delivery when Quick acknowledgement is off.
- Added pipeline coverage for empty-content tool calls so they do not emit
template `block.reply` messages.
- Added prompt coverage for natural, user-language progress guidance.
- Kept channel coverage for `tool_announcement` delivery when Quick
acknowledgement is off.
---