From ecef601d195620b6b107f25db07d54bca99be4f0 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Sun, 28 Dec 2025 12:16:36 +0100 Subject: [PATCH] Fix hook message duplication in TUI Two bugs: 1. createCustomMessage was returning role: 'user' instead of preserving the hook message structure (role: 'hookMessage', customType, etc.) 2. rebuildChatFromMessages wasn't clearing the container before rebuilding --- packages/coding-agent/src/core/session-manager.ts | 7 +++++-- .../coding-agent/src/modes/interactive/interactive-mode.ts | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/coding-agent/src/core/session-manager.ts b/packages/coding-agent/src/core/session-manager.ts index b8b16f36..68a8e338 100644 --- a/packages/coding-agent/src/core/session-manager.ts +++ b/packages/coding-agent/src/core/session-manager.ts @@ -165,10 +165,13 @@ export function createSummaryMessage(summary: string, timestamp: string): AgentM /** Convert CustomMessageEntry to AgentMessage format */ function createCustomMessage(entry: CustomMessageEntry): AgentMessage { return { - role: "user", + role: "hookMessage", + customType: entry.customType, content: entry.content, + display: entry.display, + details: entry.details, timestamp: new Date(entry.timestamp).getTime(), - }; + } as AgentMessage; } /** Generate a unique short ID (8 hex chars, collision-checked) */ diff --git a/packages/coding-agent/src/modes/interactive/interactive-mode.ts b/packages/coding-agent/src/modes/interactive/interactive-mode.ts index c1a824e3..5b6e6844 100644 --- a/packages/coding-agent/src/modes/interactive/interactive-mode.ts +++ b/packages/coding-agent/src/modes/interactive/interactive-mode.ts @@ -1208,6 +1208,7 @@ export class InteractiveMode { } private rebuildChatFromMessages(): void { + this.chatContainer.clear(); const context = this.sessionManager.buildSessionContext(); this.renderSessionContext(context); }