diff --git a/apps/ai-game-creator-shell/src/features/project-workspace/ResourceReferenceInput.tsx b/apps/ai-game-creator-shell/src/features/project-workspace/ResourceReferenceInput.tsx index 420180c3d..473ba4f9c 100644 --- a/apps/ai-game-creator-shell/src/features/project-workspace/ResourceReferenceInput.tsx +++ b/apps/ai-game-creator-shell/src/features/project-workspace/ResourceReferenceInput.tsx @@ -183,6 +183,17 @@ function sameDraft(left: ChatComposerDraft, right: ChatComposerDraft) { ); } +function appendInputText(content: DirectCodexUserContentPart[], text: string) { + const previous = content[content.length - 1]; + if (previous?.type === 'input_text') { + previous.text += text; + return; + } + if (text.trim()) { + content.push({ type: 'input_text', text }); + } +} + function collectDraftParts( node: LexicalNode, textParts: string[], @@ -192,12 +203,12 @@ function collectDraftParts( if ($isTextNode(node)) { const text = node.getTextContent(); textParts.push(text); - if (text) content.push({ type: 'input_text', text }); + appendInputText(content, text); return; } if ($isLineBreakNode(node)) { textParts.push('\n'); - content.push({ type: 'input_text', text: '\n' }); + appendInputText(content, '\n'); return; } if ($isResourceReferenceNode(node)) { @@ -210,7 +221,7 @@ function collectDraftParts( node.getChildren().forEach((child, index) => { if (index > 0 && node.getType() === 'root') { textParts.push('\n'); - content.push({ type: 'input_text', text: '\n' }); + appendInputText(content, '\n'); } collectDraftParts(child, textParts, references, content); });