ACP emits generic tool metadata before completion.
In packages/opencode/src/acp/agent.ts, tool_call and tool_call_update(status=in_progress) use part.tool as the title, and toolStart() sends rawInput: {}. Only the completed update uses part.state.title and the richer input.
This means ACP clients often show bash, read, or skill while a tool is pending/running, even when a semantic title is already available in part.state.title.
Current local source still does this on v1.4.11-199-ga419f1c50.
OpenCode version
v1.4.11-199-ga419f1c50
Steps to reproduce
- Run opencode acp with an ACP client that displays tool progress.
- Trigger a tool with a semantic running title, for example a skill or connector-backed action.
- Observe the pending/running tool card.
- Compare it with the completed tool event.
Expected
Pending/running ACP events should use the best available semantic metadata:
- prefer part.state.title ?? part.tool
- prefer part.state.input ?? {}
Actual
Pending/running events use generic values:
- title: part.tool
- rawInput: {} in tool_call
- generic titles such as bash, read, skill until completion
Why this matters
Downstream ACP clients cannot render meaningful running status if the adapter only sends generic metadata before completion.
Reactions are currently unavailable
ACP emits generic tool metadata before completion.
In packages/opencode/src/acp/agent.ts, tool_call and tool_call_update(status=in_progress) use part.tool as the title, and toolStart() sends rawInput: {}. Only the completed update uses part.state.title and the richer input.
This means ACP clients often show bash, read, or skill while a tool is pending/running, even when a semantic title is already available in part.state.title.
Current local source still does this on v1.4.11-199-ga419f1c50.
OpenCode version
v1.4.11-199-ga419f1c50
Steps to reproduce
Expected
Pending/running ACP events should use the best available semantic metadata:
Actual
Pending/running events use generic values:
Why this matters
Downstream ACP clients cannot render meaningful running status if the adapter only sends generic metadata before completion.