From 31aea56345a6cbf2018115f4ad6fd38c23fc1c23 Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Mon, 16 Mar 2026 08:02:18 -0500 Subject: [PATCH] fix(cli): wire command:result + system:reload socket events in TUI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Gateway slash command responses were silently dropped — use-socket.ts had no handlers for command:result or system:reload. Added both: - command:result → renders success/error as a system message - system:reload → updates command registry manifest + shows reload message Also removes stray @testing-library/react devDependency that was never used in the CLI package. Co-Authored-By: Claude Sonnet 4.6 --- packages/cli/src/tui/hooks/use-socket.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/packages/cli/src/tui/hooks/use-socket.ts b/packages/cli/src/tui/hooks/use-socket.ts index 1bc5600..08ca792 100644 --- a/packages/cli/src/tui/hooks/use-socket.ts +++ b/packages/cli/src/tui/hooks/use-socket.ts @@ -12,6 +12,8 @@ import type { SessionInfoPayload, ErrorPayload, CommandManifestPayload, + SlashCommandResultPayload, + SystemReloadPayload, } from '@mosaic/types'; import { commandRegistry } from '../commands/index.js'; @@ -230,6 +232,27 @@ export function useSocket(opts: UseSocketOptions): UseSocketReturn { commandRegistry.updateManifest(data.manifest); }); + socket.on('command:result', (data: SlashCommandResultPayload) => { + const prefix = data.success ? '' : 'Error: '; + const text = data.message ?? (data.success ? 'Done.' : 'Command failed.'); + setMessages((msgs) => [ + ...msgs, + { role: 'system', content: `${prefix}${text}`, timestamp: new Date() }, + ]); + }); + + socket.on('system:reload', (data: SystemReloadPayload) => { + commandRegistry.updateManifest({ + commands: data.commands, + skills: data.skills, + version: Date.now(), + }); + setMessages((msgs) => [ + ...msgs, + { role: 'system', content: data.message, timestamp: new Date() }, + ]); + }); + return () => { socket.disconnect(); };