in lib/AbstractChatCompletionRunner.ts [62:92]
protected _addMessage(
this: AbstractChatCompletionRunner<
AbstractChatCompletionRunnerEvents,
ParsedT
>,
message: ChatCompletionMessageParam,
emit = true,
) {
if (!("content" in message)) message.content = null;
this.messages.push(message);
if (emit) {
this._emit("message", message);
if (
(isFunctionMessage(message) || isToolMessage(message)) &&
message.content
) {
// Note, this assumes that {role: 'tool', content: …} is always the result of a call of tool of type=function.
this._emit("functionCallResult", message.content as string);
} else if (isAssistantMessage(message) && message.function_call) {
this._emit("functionCall", message.function_call);
} else if (isAssistantMessage(message) && message.tool_calls) {
for (const tool_call of message.tool_calls) {
if (tool_call.type === "function") {
this._emit("functionCall", tool_call.function);
}
}
}
}
}