| 545 | * Custom component to render thinking steps from Context |
| 546 | */ |
| 547 | const ThinkingStepsPart: FC = () => { |
| 548 | const thinkingStepsMap = useContext(ThinkingStepsContext); |
| 549 | |
| 550 | // Get the current message ID to look up thinking steps |
| 551 | const messageId = useAssistantState(({ message }) => message?.id); |
| 552 | const thinkingSteps = thinkingStepsMap.get(messageId) || []; |
| 553 | |
| 554 | // Check if this specific message is currently streaming |
| 555 | // A message is streaming if: thread is running AND this is the last assistant message |
| 556 | const isThreadRunning = useAssistantState(({ thread }) => thread.isRunning); |
| 557 | const isLastMessage = useAssistantState(({ message }) => message?.isLast ?? false); |
| 558 | const isMessageStreaming = isThreadRunning && isLastMessage; |
| 559 | |
| 560 | if (thinkingSteps.length === 0) return null; |
| 561 | |
| 562 | return ( |
| 563 | <div className="mb-3"> |
| 564 | <ThinkingStepsDisplay steps={thinkingSteps} isThreadRunning={isMessageStreaming} /> |
| 565 | </div> |
| 566 | ); |
| 567 | }; |
| 568 | |
| 569 | const AssistantMessageInner: FC = () => { |
| 570 | return ( |