From 4e282ea1de11348d70121a99e9f50ea6f3cde5b4 Mon Sep 17 00:00:00 2001 From: Glen Maddern Date: Wed, 25 Jun 2025 12:02:43 +1000 Subject: [PATCH] Add targeted debug logging for message operations - Add debugMessages helper function that logs with [Messages] prefix - Log when new messages are added to conversation (not updates) - Log reasoning assistant messages, tool calls, tool results, and content messages - Log stream processing completion and function completion - Debug logging enabled with localStorage.setItem('USE_MCP_DEBUG', 'true') --- examples/chat-ui/src/hooks/useStreamResponse.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/examples/chat-ui/src/hooks/useStreamResponse.ts b/examples/chat-ui/src/hooks/useStreamResponse.ts index ea3a3c1..bf4af23 100644 --- a/examples/chat-ui/src/hooks/useStreamResponse.ts +++ b/examples/chat-ui/src/hooks/useStreamResponse.ts @@ -7,6 +7,13 @@ import { type Model } from '../types/models' import { getApiKey } from '../utils/apiKeys' import { type Tool } from 'use-mcp/react' +// Debug logging for message operations +const debugMessages = (...args: any[]) => { + if (typeof window !== 'undefined' && localStorage.getItem('USE_MCP_DEBUG') === 'true') { + console.log('[Messages]', ...args) + } +} + // Type guard for messages with content const hasContent = (message: Message): message is UserMessage | AssistantMessage | SystemMessage => { return 'content' in message @@ -177,6 +184,7 @@ export const useStreamResponse = ({ reasoningStartTime: currentReasoningStartTime }) assistantMessageIndex = conv.messages.length - 1 + debugMessages('Added new reasoning assistant message at index', assistantMessageIndex) } return updated }) @@ -243,6 +251,7 @@ export const useStreamResponse = ({ toolArgs: event.args || {}, callId: event.toolCallId || 'unknown', }) + debugMessages('Added new tool-call message:', event.toolName, 'callId:', event.toolCallId) } } return updated @@ -271,6 +280,7 @@ export const useStreamResponse = ({ toolResult: (event as any).result, callId: (event as any).toolCallId, }) + debugMessages('Added new tool-result message:', (event as any).toolName, 'callId:', (event as any).toolCallId) } else { } } @@ -317,6 +327,7 @@ export const useStreamResponse = ({ if (conv) { conv.messages.push({ role: 'assistant', content: '' }) assistantMessageIndex = conv.messages.length - 1 + debugMessages('Added new content assistant message at index', assistantMessageIndex, '(after reasoning:', needsNewAssistantMessage, ')') } return updated }) @@ -378,6 +389,7 @@ export const useStreamResponse = ({ } } + debugMessages('Stream processing completed. Final message count:', assistantMessageCreated ? 'created' : 'none') // Final cleanup - ensure reasoning streaming is stopped if (assistantMessageCreated && currentReasoningStartTime) { @@ -417,6 +429,7 @@ export const useStreamResponse = ({ } finally { setStreamStarted(false) setController(new AbortController()) + debugMessages('Stream response function completed') } return aiResponse }