From ff7418315f00f1a34274eabd01aa8e158beae2d7 Mon Sep 17 00:00:00 2001 From: Brooklyn Nicholson Date: Tue, 28 Jul 2026 03:54:25 -0500 Subject: [PATCH] fix(tui,cli): render a resumed interrupted turn as an event Desktop already did; the TUI transcript and the CLI resume recap fell through to the default and printed the raw system note. --- apps/desktop/src/types/hermes.ts | 2 +- hermes_cli/cli_agent_setup_mixin.py | 3 +++ ui-tui/src/domain/messages.ts | 7 +++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/desktop/src/types/hermes.ts b/apps/desktop/src/types/hermes.ts index 8857bca43277..6d0b0992576b 100644 --- a/apps/desktop/src/types/hermes.ts +++ b/apps/desktop/src/types/hermes.ts @@ -494,7 +494,7 @@ export interface SessionMessage { reasoning?: null | string reasoning_content?: null | string reasoning_details?: unknown - display_kind?: 'async_delegation_complete' | 'hidden' | 'model_switch' | string + display_kind?: 'async_delegation_complete' | 'auto_continue' | 'hidden' | 'model_switch' | string /** * A backend older than this app can still serve this as unparsed JSON text, * so readers must narrow before indexing into it. diff --git a/hermes_cli/cli_agent_setup_mixin.py b/hermes_cli/cli_agent_setup_mixin.py index e7ef885240bd..0cd437645e8e 100644 --- a/hermes_cli/cli_agent_setup_mixin.py +++ b/hermes_cli/cli_agent_setup_mixin.py @@ -594,6 +594,9 @@ class CLIAgentSetupMixin: if display_kind == "async_delegation_complete": entries.append(("event", "background delegation completed")) continue + if display_kind == "auto_continue": + entries.append(("event", "resumed interrupted turn")) + continue if role == "system": continue diff --git a/ui-tui/src/domain/messages.ts b/ui-tui/src/domain/messages.ts index ba4340724d38..45fbf606c0b0 100644 --- a/ui-tui/src/domain/messages.ts +++ b/ui-tui/src/domain/messages.ts @@ -69,6 +69,13 @@ export const toTranscriptMessages = (rows: unknown): Msg[] => { continue } + if (display_kind === 'auto_continue') { + out.push({ kind: 'event', role: 'system', text: 'resumed interrupted turn' }) + pending = [] + + continue + } + if (display_kind === 'async_delegation_complete') { const meta = (row as TranscriptRow).display_metadata const count = meta && typeof meta.task_count === 'number' ? meta.task_count : undefined