fix: Missing tool call handling
This commit is contained in:
parent
f40b377e34
commit
948278d663
|
|
@ -1,7 +1,7 @@
|
|||
import { getJsonHeaders, formatAttachmentText, isAbortError } from '$lib/utils';
|
||||
import { AGENTIC_REGEX } from '$lib/constants/agentic';
|
||||
import { AttachmentType, MessageRole, ReasoningFormat } from '$lib/enums';
|
||||
import type { ApiChatMessageContentPart } from '$lib/types/api';
|
||||
import type { ApiChatMessageContentPart, ApiChatCompletionToolCall } from '$lib/types/api';
|
||||
import type { DatabaseMessageExtraMcpPrompt } from '$lib/types';
|
||||
|
||||
/**
|
||||
|
|
@ -634,11 +634,34 @@ export class ChatService {
|
|||
static convertDbMessageToApiChatMessageData(
|
||||
message: DatabaseMessage & { extra?: DatabaseMessageExtra[] }
|
||||
): ApiChatMessageData {
|
||||
if (!message.extra || message.extra.length === 0) {
|
||||
// Handle tool result messages (role: 'tool')
|
||||
if (message.role === MessageRole.TOOL && message.toolCallId) {
|
||||
return {
|
||||
role: MessageRole.TOOL,
|
||||
content: message.content,
|
||||
tool_call_id: message.toolCallId
|
||||
};
|
||||
}
|
||||
|
||||
// Parse tool calls for assistant messages
|
||||
let toolCalls: ApiChatCompletionToolCall[] | undefined;
|
||||
if (message.toolCalls) {
|
||||
try {
|
||||
toolCalls = JSON.parse(message.toolCalls);
|
||||
} catch {
|
||||
// Ignore parse errors for malformed tool calls
|
||||
}
|
||||
}
|
||||
|
||||
if (!message.extra || message.extra.length === 0) {
|
||||
const result: ApiChatMessageData = {
|
||||
role: message.role as MessageRole,
|
||||
content: message.content
|
||||
};
|
||||
if (toolCalls && toolCalls.length > 0) {
|
||||
result.tool_calls = toolCalls;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
const contentParts: ApiChatMessageContentPart[] = [];
|
||||
|
|
@ -741,10 +764,14 @@ export class ChatService {
|
|||
});
|
||||
}
|
||||
|
||||
return {
|
||||
const result: ApiChatMessageData = {
|
||||
role: message.role as MessageRole,
|
||||
content: contentParts
|
||||
};
|
||||
if (toolCalls && toolCalls.length > 0) {
|
||||
result.tool_calls = toolCalls;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -81,7 +81,10 @@ export interface DatabaseMessage {
|
|||
* @deprecated - left for backward compatibility
|
||||
*/
|
||||
thinking?: string;
|
||||
/** Serialized JSON array of tool calls made by assistant messages */
|
||||
toolCalls?: string;
|
||||
/** Tool call ID for tool result messages (role: 'tool') */
|
||||
toolCallId?: string;
|
||||
children: string[];
|
||||
extra?: DatabaseMessageExtra[];
|
||||
timings?: ChatMessageTimings;
|
||||
|
|
|
|||
Loading…
Reference in New Issue