Problem
During agent execution, the streaming output (shown in Telegram / TinyOffice) only displays the tool name:
[tool: Bash]
[tool: Read]
[tool: Grep]
[tool: CronList]
This gives almost no useful information — the user can see which tool was called but has no idea what it's doing. It's like watching a progress bar with no label.
Current behavior
In packages/core/src/adapters/claude.ts, extractEventText() only extracts block.name:
} else if (block.type === 'tool_use' && block.name) {
parts.push(`[tool: ${block.name}]`);
}
Proposed behavior
Show the full tool invocation details, e.g.:
[tool: Bash] npm run build
[tool: Read] src/config.ts
[tool: Grep] pattern="onEvent" path=packages/core/
[tool: WebSearch] "TinyAGI latest release"
This could be as simple as including a summary of block.input alongside the tool name. For tools with long inputs (like Write), a truncated version would be fine.
Suggested implementation
Ideally this should be configurable in settings.json, e.g.:
{
"streaming": {
"toolDisplay": "full" // "name" (current default) | "full" | "summary"
}
}
"name" — current behavior, just [tool: Name]
"full" — show tool name + key input parameters
"summary" — show tool name + truncated first argument (e.g., first 80 chars)
Why this matters
When an agent takes 1-2 minutes to respond, the user stares at a stream of [tool: Bash] / [tool: Read] with no context. Being able to see what the agent is actually doing builds trust and helps debug when things go wrong.
Problem
During agent execution, the streaming output (shown in Telegram / TinyOffice) only displays the tool name:
This gives almost no useful information — the user can see which tool was called but has no idea what it's doing. It's like watching a progress bar with no label.
Current behavior
In
packages/core/src/adapters/claude.ts,extractEventText()only extractsblock.name:Proposed behavior
Show the full tool invocation details, e.g.:
This could be as simple as including a summary of
block.inputalongside the tool name. For tools with long inputs (likeWrite), a truncated version would be fine.Suggested implementation
Ideally this should be configurable in
settings.json, e.g.:{ "streaming": { "toolDisplay": "full" // "name" (current default) | "full" | "summary" } }"name"— current behavior, just[tool: Name]"full"— show tool name + key input parameters"summary"— show tool name + truncated first argument (e.g., first 80 chars)Why this matters
When an agent takes 1-2 minutes to respond, the user stares at a stream of
[tool: Bash]/[tool: Read]with no context. Being able to see what the agent is actually doing builds trust and helps debug when things go wrong.