Commit graph use-mcp/examples/chat-ui/src/hooks
Author SHA1 Message Date
Glen Maddern
68ecdebbc0 fix: Clean think tags from reasoning content before display
- Add cleaning logic to remove <think> and </think> tags from reasoning
- Trim whitespace after tag removal for clean display
- Add debug logging to show before/after cleaning
- The middleware extracts reasoning but includes the original tags

This ensures the reasoning blocks show clean thinking content without
the XML tags that were being captured along with the reasoning text.
2025-06-24 18:15:57 +10:00
Glen Maddern
33c914e19b debug: Add more detailed logging for reasoning event handling
- Add debug logs inside reasoning event handler to see if it's being triggered
- Log reasoning content length as it's being collected
- Add final reasoning content summary at end of stream
- Log why reasoning isn't being added if conditions aren't met
- Cast event to any to avoid potential TypeScript issues

This will help identify why reasoning events aren't being captured
despite appearing in the event stream logs.
2025-06-24 18:11:24 +10:00
Glen Maddern
ab9f3c0220 fix: Capture reasoning events during streaming instead of from result
- Add back reasoning variable to track content during streaming
- Handle reasoning events from extractReasoningMiddleware in stream processing
- Build up reasoning content from individual reasoning textDelta events
- Remove dependency on result.reasoning which wasn't being populated
- Add reasoning to assistant message after stream completes

The logs showed reasoning events were coming through correctly but we
weren't capturing them. This fixes the issue by collecting reasoning
content during streaming as the events arrive.
2025-06-24 17:53:12 +10:00
Glen Maddern
6c7422f832 fix: Add detailed debugging and use result.text for cleaned content
- Add debug logging to track aiResponse vs result.text content
- Use result.text from extractReasoningMiddleware for final content
- This should provide the properly cleaned text without thinking tags
- Comment out unused sidebar and edit functionality to fix TS errors

The result.text should contain content that has been automatically
cleaned by the extractReasoningMiddleware, while result.reasoning
contains the extracted thinking content.
2025-06-24 17:40:53 +10:00
Glen Maddern
03dd988f35 fix: Improve thinking tag removal with more aggressive cleaning
- Add multiple regex passes to handle various think tag scenarios
- Remove standalone <think> and </think> tags that might remain
- Clean leading whitespace after tag removal
- Add debug logging to track text cleaning process
- Handle streaming cases where tags appear before closing tags arrive

This provides more robust cleaning to ensure no think tags appear
in the final message content during streaming scenarios.
2025-06-24 17:35:14 +10:00
Glen Maddern
9a825d5afc fix: Remove thinking XML tags from main message content
- Add regex-based cleaning to remove <think>...</think> tags from display text
- Handle both closed and unclosed think tags in streaming content
- Apply cleaning only for reasoning-capable models to avoid unnecessary processing
- Update conversation content with cleaned response instead of raw response

This ensures thinking tags are extracted for reasoning display but don't
appear in the main message content, providing a clean user experience.
2025-06-24 17:28:08 +10:00
Glen Maddern
25857bc354 fix: Use extractReasoningMiddleware to properly parse thinking blocks
- Import extractReasoningMiddleware and wrapLanguageModel from AI SDK
- Wrap reasoning-capable models with extractReasoningMiddleware
- Use 'think' as tagName to parse <think> XML blocks from models
- Enable startWithReasoning option to handle models missing reasoning tags
- Extract reasoning from result.reasoning after stream completes
- Remove manual reasoning event handling and provider-specific config

This fixes the issue where thinking blocks appeared as raw XML tags
instead of parsed reasoning content. The middleware automatically
extracts reasoning from <think> tags and exposes it via result.reasoning.
2025-06-24 16:47:04 +10:00
Glen Maddern
62000dcdac feat: Add reasoning token support with expandable thinking blocks
- Add reasoning field to AssistantMessage type
- Create ReasoningBlock component with truncate/expand functionality
- Add reasoning-capable models (Qwen QwQ, DeepSeek R1, Qwen 3 32B)
- Implement reasoning event handling in stream processing
- Enable reasoning format for Groq and Anthropic models
- Style reasoning blocks with grey border and reduced font size
- Display reasoning above assistant messages when available

The reasoning blocks show truncated thinking tokens by default and
expand on click to show full reasoning process from models like
Qwen3-32b that support step-by-step reasoning output.
2025-06-24 16:41:56 +10:00
Glen Maddern
6ebb156fe6 working tool call ui! 2025-06-19 19:46:33 +10:00
Glen Maddern
769475cecc Working on tool call display 2025-06-19 19:34:28 +10:00
Glen Maddern
d25f6c19a3 Moving most of the debug logging behind localStorage.USE_MCP_DEBUG 2025-06-19 14:31:30 +10:00
Glen Maddern
e94958865a MCP tool calling woo! 2025-06-19 14:07:28 +10:00
Glen Maddern
f5f1943ac5 Copying chat example across 2025-06-19 11:51:02 +10:00