+ {blocks.map((block, index) => {
+ const isLastBlock = index === blocks.length - 1;
+ const blockIsComplete = block.isComplete && (isComplete || !isLastBlock);
+
+ return (
+
+ {renderBlock(block, blockIsComplete, onAction)}
+
+ );
+ })}
+
+ {!isComplete && content.length > 0 && (
+
+ )}
+
+ );
+};
+
+function renderBlock(
+ block: CodeBlock,
+ isComplete: boolean,
+ onAction?: (action: string, data: any) => void
+): React.ReactNode {
+ const languageId = block.languageId.toLowerCase();
+
+ switch (languageId) {
+ case 'markdown':
+ case 'md':
+ case '':
+ // Plain text or markdown
+ if (block.text.trim()) {
+ return