{"version":3,"sources":["../../src/memory/base.ts"],"names":["MemoryError","FrameworkError","MemoryFatalError","message","errors","options","isFatal","isRetryable","BaseMemory","Serializable","addMany","messages","start","counter","msg","add","undefined","deleteMany","delete","splice","deleteCount","items","total","length","Math","max","min","deletedItems","slice","isEmpty","asReadOnly","ReadOnlyMemory","Symbol","iterator","source","register","index","reset","createSnapshot","loadSnapshot","state","Object","assign"],"mappings":"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","file":"base.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Message } from \"@/backend/message.js\";\nimport { FrameworkError, FrameworkErrorOptions } from \"@/errors.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\n\nexport class MemoryError extends FrameworkError {}\nexport class MemoryFatalError extends MemoryError {\n  constructor(message: string, errors?: Error[], options?: FrameworkErrorOptions) {\n    super(message, errors, {\n      isFatal: true,\n      isRetryable: false,\n      ...options,\n    });\n  }\n}\n\nexport abstract class BaseMemory<TState = unknown> extends Serializable<TState> {\n  abstract get messages(): readonly Message[];\n\n  abstract add(message: Message, index?: number): Promise<void>;\n\n  abstract delete(message: Message): Promise<boolean>;\n  abstract reset(): void;\n\n  async addMany(messages: Iterable<Message> | AsyncIterable<Message>, start?: number) {\n    let counter = 0;\n    for await (const msg of messages) {\n      await this.add(msg, start === undefined ? undefined : start + counter);\n      counter += 1;\n    }\n  }\n\n  async deleteMany(messages: Iterable<Message> | AsyncIterable<Message>) {\n    for await (const msg of messages) {\n      await this.delete(msg);\n    }\n  }\n\n  async splice(start: number, deleteCount: number, ...items: Message[]) {\n    const total = this.messages.length;\n\n    start = start < 0 ? Math.max(total + start, 0) : start;\n    deleteCount = Math.min(deleteCount, total - start);\n\n    const deletedItems = this.messages.slice(start, start + deleteCount);\n    await this.deleteMany(deletedItems);\n    await this.addMany(items, start);\n\n    return deletedItems;\n  }\n\n  isEmpty() {\n    return this.messages.length === 0;\n  }\n\n  asReadOnly() {\n    return new ReadOnlyMemory(this);\n  }\n\n  [Symbol.iterator]() {\n    return this.messages[Symbol.iterator]();\n  }\n\n  abstract loadSnapshot(state: TState): void;\n  abstract createSnapshot(): TState;\n}\n\nexport class ReadOnlyMemory<T extends BaseMemory = BaseMemory> extends BaseMemory<{ source: T }> {\n  constructor(public readonly source: T) {\n    super();\n  }\n\n  static {\n    this.register();\n  }\n\n  // eslint-disable-next-line unused-imports/no-unused-vars\n  async add(message: Message, index?: number) {}\n\n  // eslint-disable-next-line unused-imports/no-unused-vars\n  async delete(message: Message) {\n    return false;\n  }\n\n  get messages(): readonly Message[] {\n    return this.source.messages;\n  }\n\n  reset(): void {}\n\n  createSnapshot() {\n    return { source: this.source };\n  }\n\n  loadSnapshot(state: { source: T }) {\n    Object.assign(this, state);\n  }\n}\n"]}