2025-09-21 12:03:29 +01:00
|
|
|
'use client';
|
2025-02-03 20:33:15 +05:30
|
|
|
|
2025-09-21 12:03:29 +01:00
|
|
|
import { useState, useEffect } from 'react';
|
2025-09-09 15:44:07 -04:00
|
|
|
import {
|
|
|
|
|
Reasoning,
|
2025-09-20 12:47:10 -07:00
|
|
|
ReasoningTrigger,
|
2025-09-21 12:03:29 +01:00
|
|
|
ReasoningContent,
|
|
|
|
|
} from './elements/reasoning';
|
2025-02-03 20:33:15 +05:30
|
|
|
|
2025-09-21 12:03:29 +01:00
|
|
|
interface MessageReasoningProps {
|
2025-02-03 20:33:15 +05:30
|
|
|
isLoading: boolean;
|
|
|
|
|
reasoning: string;
|
2025-09-21 12:03:29 +01:00
|
|
|
}
|
2025-02-03 20:33:15 +05:30
|
|
|
|
|
|
|
|
export function MessageReasoning({
|
|
|
|
|
isLoading,
|
|
|
|
|
reasoning,
|
|
|
|
|
}: MessageReasoningProps) {
|
2025-09-16 11:41:52 +01:00
|
|
|
const [hasBeenStreaming, setHasBeenStreaming] = useState(isLoading);
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (isLoading) {
|
|
|
|
|
setHasBeenStreaming(true);
|
|
|
|
|
}
|
|
|
|
|
}, [isLoading]);
|
2025-09-21 12:03:29 +01:00
|
|
|
|
2025-02-03 20:33:15 +05:30
|
|
|
return (
|
2025-09-09 15:44:07 -04:00
|
|
|
<Reasoning
|
2025-09-20 12:47:10 -07:00
|
|
|
isStreaming={isLoading}
|
2025-09-21 12:03:29 +01:00
|
|
|
defaultOpen={hasBeenStreaming}
|
|
|
|
|
data-testid="message-reasoning"
|
2025-08-28 14:15:36 +01:00
|
|
|
>
|
|
|
|
|
<ReasoningTrigger />
|
|
|
|
|
<ReasoningContent>{reasoning}</ReasoningContent>
|
|
|
|
|
</Reasoning>
|
2025-02-03 20:33:15 +05:30
|
|
|
);
|
|
|
|
|
}
|