Skip to content

Commit 2c52dec

Browse files
Update api.chat.ts
1 parent 42a274f commit 2c52dec

1 file changed

Lines changed: 32 additions & 1 deletion

File tree

app/routes/api.chat.ts

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { getFilePaths, selectContext } from '~/lib/.server/llm/select-context';
1010
import type { ContextAnnotation, ProgressAnnotation } from '~/types/context';
1111
import { WORK_DIR } from '~/utils/constants';
1212
import { createSummary } from '~/lib/.server/llm/create-summary';
13-
import { extractPropertiesFromMessage } from '~/lib/.server/llm/utils';
13+
import { extractPropertiesFromMessage, processFileReferences } from '~/lib/.server/llm/utils';
1414
import { MCPService } from '~/lib/services/mcpService';
1515
import {
1616
validateChatRequest,
@@ -317,6 +317,37 @@ async function chatAction({ context, request }: ActionFunctionArgs) {
317317
}
318318
}
319319

320+
const lastUserMessage = processedMessages.filter((x) => x.role === 'user').slice(-1)[0];
321+
322+
if (lastUserMessage) {
323+
let messageContent = '';
324+
325+
if (typeof lastUserMessage.content === 'string') {
326+
messageContent = lastUserMessage.content;
327+
} else if (Array.isArray(lastUserMessage.content)) {
328+
const contentArray = lastUserMessage.content as Array<{ type: string; text?: string }>;
329+
const textContent = contentArray.find((item) => item.type === 'text');
330+
messageContent = textContent?.text || '';
331+
}
332+
333+
const { cleanedContent, referencedFilesContext } = processFileReferences(messageContent, files);
334+
335+
if (referencedFilesContext) {
336+
if (typeof lastUserMessage.content === 'string') {
337+
lastUserMessage.content = cleanedContent + '\n\n' + referencedFilesContext;
338+
} else if (Array.isArray(lastUserMessage.content)) {
339+
const contentArray = lastUserMessage.content as Array<{ type: string; text?: string }>;
340+
const textContentIndex = contentArray.findIndex((item) => item.type === 'text');
341+
342+
if (textContentIndex !== -1 && contentArray[textContentIndex]) {
343+
contentArray[textContentIndex].text = cleanedContent + '\n\n' + referencedFilesContext;
344+
}
345+
}
346+
347+
logger.debug('Processed file references in user message');
348+
}
349+
}
350+
320351
const result = await streamText({
321352
messages: processedMessages,
322353
env: context.cloudflare?.env,

0 commit comments

Comments
 (0)