protected _addMessage()

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);
          }
        }
      }
    }
  }