{"version":3,"sources":["../../src/memory/base.ts"],"names":["MemoryError","FrameworkError","MemoryFatalError","constructor","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 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseMessage } from \"@/llms/primitives/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 BaseMessage[];\n\n  abstract add(message: BaseMessage, index?: number): Promise<void>;\n\n  abstract delete(message: BaseMessage): Promise<boolean>;\n  abstract reset(): void;\n\n  async addMany(messages: Iterable<BaseMessage> | AsyncIterable<BaseMessage>, 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<BaseMessage> | AsyncIterable<BaseMessage>) {\n    for await (const msg of messages) {\n      await this.delete(msg);\n    }\n  }\n\n  async splice(start: number, deleteCount: number, ...items: BaseMessage[]) {\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: BaseMessage, index?: number) {}\n\n  // eslint-disable-next-line unused-imports/no-unused-vars\n  async delete(message: BaseMessage) {\n    return false;\n  }\n\n  get messages(): readonly BaseMessage[] {\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"]}