import { __exportAll } from "./_virtual/_rolldown/runtime.js";
import { Serializable } from "./load/serializable.js";
import { AIMessage } from "./messages/ai.js";
import { HumanMessage } from "./messages/human.js";
import "./messages/index.js";
//#region src/chat_history.ts
var chat_history_exports = /* @__PURE__ */ __exportAll({
	BaseChatMessageHistory: () => BaseChatMessageHistory,
	BaseListChatMessageHistory: () => BaseListChatMessageHistory,
	InMemoryChatMessageHistory: () => InMemoryChatMessageHistory
});
/**
* Base class for all chat message histories. All chat message histories
* should extend this class.
*/
var BaseChatMessageHistory = class extends Serializable {
	/**
	* Add a list of messages.
	*
	* Implementations should override this method to handle bulk addition of messages
	* in an efficient manner to avoid unnecessary round-trips to the underlying store.
	*
	* @param messages - A list of BaseMessage objects to store.
	*/
	async addMessages(messages) {
		for (const message of messages) await this.addMessage(message);
	}
};
/**
* Base class for all list chat message histories. All list chat message
* histories should extend this class.
*/
var BaseListChatMessageHistory = class extends Serializable {
	/**
	* This is a convenience method for adding a human message string to the store.
	* Please note that this is a convenience method. Code should favor the
	* bulk addMessages interface instead to save on round-trips to the underlying
	* persistence layer.
	* This method may be deprecated in a future release.
	*/
	addUserMessage(message) {
		return this.addMessage(new HumanMessage(message));
	}
	/**
	* This is a convenience method for adding an AI message string to the store.
	* Please note that this is a convenience method. Code should favor the bulk
	* addMessages interface instead to save on round-trips to the underlying
	* persistence layer.
	* This method may be deprecated in a future release.
	*/
	addAIMessage(message) {
		return this.addMessage(new AIMessage(message));
	}
	/**
	* Add a list of messages.
	*
	* Implementations should override this method to handle bulk addition of messages
	* in an efficient manner to avoid unnecessary round-trips to the underlying store.
	*
	* @param messages - A list of BaseMessage objects to store.
	*/
	async addMessages(messages) {
		for (const message of messages) await this.addMessage(message);
	}
	/**
	* Remove all messages from the store.
	*/
	clear() {
		throw new Error("Not implemented.");
	}
};
/**
* Class for storing chat message history in-memory. It extends the
* BaseListChatMessageHistory class and provides methods to get, add, and
* clear messages.
*/
var InMemoryChatMessageHistory = class extends BaseListChatMessageHistory {
	lc_namespace = [
		"langchain",
		"stores",
		"message",
		"in_memory"
	];
	messages = [];
	constructor(messages) {
		super(...arguments);
		this.messages = messages ?? [];
	}
	/**
	* Method to get all the messages stored in the ChatMessageHistory
	* instance.
	* @returns Array of stored BaseMessage instances.
	*/
	async getMessages() {
		return this.messages;
	}
	/**
	* Method to add a new message to the ChatMessageHistory instance.
	* @param message The BaseMessage instance to add.
	* @returns A promise that resolves when the message has been added.
	*/
	async addMessage(message) {
		this.messages.push(message);
	}
	/**
	* Method to clear all the messages from the ChatMessageHistory instance.
	* @returns A promise that resolves when all messages have been cleared.
	*/
	async clear() {
		this.messages = [];
	}
};
//#endregion
export { BaseChatMessageHistory, BaseListChatMessageHistory, InMemoryChatMessageHistory, chat_history_exports };

//# sourceMappingURL=chat_history.js.map