fix(acp): skip echoing user messages to client

Amolith created

The client already knows what it sent via the prompt request. Echoing
user messages back caused them to appear twice in the client display.

Assisted-by: Claude Opus 4.5 via Crush

Change summary

internal/acp/sink.go | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)

Detailed changes

internal/acp/sink.go 🔗

@@ -175,6 +175,12 @@ func (s *Sink) translatePart(msgID string, role message.MessageRole, part messag
 }
 
 func (s *Sink) translateText(msgID string, role message.MessageRole, text message.TextContent) *acp.SessionUpdate {
+	// Skip user messages - the client already knows what it sent via the
+	// prompt request.
+	if role != message.Assistant {
+		return nil
+	}
+
 	offset := s.textOffsets[msgID]
 	if len(text.Text) <= offset {
 		return nil
@@ -187,16 +193,8 @@ func (s *Sink) translateText(msgID string, role message.MessageRole, text messag
 		return nil
 	}
 
-	switch role {
-	case message.Assistant:
-		update := acp.UpdateAgentMessageText(delta)
-		return &update
-	case message.User:
-		update := acp.UpdateUserMessageText(delta)
-		return &update
-	default:
-		return nil
-	}
+	update := acp.UpdateAgentMessageText(delta)
+	return &update
 }
 
 func (s *Sink) translateReasoning(msgID string, reasoning message.ReasoningContent) *acp.SessionUpdate {