{"version":3,"sources":["../../src/agents/base.ts"],"names":["AgentError","FrameworkError","BaseAgent","Serializable","isRunning","middlewares","run","input","options","RunContext","enter","signal","params","context","_run","e","middleware","destroy","emitter","meta","name","description","tools","createSnapshot","shallowCopy","loadSnapshot","snapshot","Object","assign"],"mappings":";;;;;;;;;AAaO,MAAMA,mBAAmBC,yBAAAA,CAAAA;EAbhC;;;AAagD;AAMzC,MAAeC,kBAIZC,6BAAAA,CAAAA;EAvBV;;;EAwBYC,SAAAA,GAAY,KAAA;AAGNC,EAAAA,WAAAA,GAA6C,EAAA;EAEtDC,GAAAA,CAAAA,GACF,CAACC,KAAAA,EAAOC,OAAAA,CAAAA,EAGX;AACA,IAAA,IAAI,KAAKJ,SAAAA,EAAW;AAClB,MAAA,MAAM,IAAIJ,WAAW,2BAAA,CAAA;AACvB,IAAA;AAEA,IAAA,OAAOS,sBAAAA,CAAWC,MAChB,IAAA,EACA;AAAEC,MAAAA,MAAAA,EAAQH,OAAAA,EAASG,MAAAA;MAAQC,MAAAA,EAAQ;AAACL,QAAAA,KAAAA;AAAOC,QAAAA;;AAAkB,KAAA,EAC7D,OAAOK,OAAAA,KAAAA;AACL,MAAA,IAAI;AACF,QAAA,IAAA,CAAKT,SAAAA,GAAY,IAAA;AAEjB,QAAA,OAAO,MAAM,IAAA,CAAKU,IAAAA,CAAKP,KAAAA,EAAOC,SAASK,OAAAA,CAAAA;AACzC,MAAA,CAAA,CAAA,OAASE,CAAAA,EAAG;AACV,QAAA,IAAIA,aAAaf,UAAAA,EAAY;AAC3B,UAAA,MAAMe,CAAAA;QACR,CAAA,MAAO;AACL,UAAA,MAAM,IAAIf,WAAW,CAAA,mCAAA,CAAA,EAAuC;AAACe,YAAAA;AAAE,WAAA,CAAA;AACjE,QAAA;MACF,CAAA,SAAA;AACE,QAAA,IAAA,CAAKX,SAAAA,GAAY,KAAA;AACnB,MAAA;AACF,IAAA,CAAA,CAAA,CACAY,UAAAA,CAAU,GAAI,IAAA,CAAKX,WAAW,CAAA;AAClC,EAAA;EAQAY,OAAAA,GAAU;AACR,IAAA,IAAA,CAAKC,QAAQD,OAAAA,EAAO;AACtB,EAAA;AAKA,EAAA,IAAWE,IAAAA,GAAkB;AAC3B,IAAA,OAAO;MACLC,IAAAA,EAAM,IAAA,CAAK,YAAYA,IAAAA,IAAQ,WAAA;MAC/BC,WAAAA,EAAa,EAAA;AACbC,MAAAA,KAAAA,EAAO;AACT,KAAA;AACF,EAAA;EAEAC,cAAAA,GAAiB;AACf,IAAA,OAAO;MACLnB,SAAAA,EAAW,KAAA;AACXc,MAAAA,OAAAA,EAAS,IAAA,CAAKA,OAAAA;MACdb,WAAAA,EAAamB,qBAAAA,CAAY,KAAKnB,WAAW;AAC3C,KAAA;AACF,EAAA;AAEAoB,EAAAA,YAAAA,CAAaC,QAAAA,EAAkD;AAC7DC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB,EAAA;AACF","file":"base.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport { AgentMeta } from \"@/agents/types.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { GetRunContext, MiddlewareType, RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\n\nexport class AgentError extends FrameworkError {}\n\nexport interface BaseAgentRunOptions {\n  signal?: AbortSignal;\n}\n\nexport abstract class BaseAgent<\n  TInput,\n  TOutput,\n  TOptions extends BaseAgentRunOptions = BaseAgentRunOptions,\n> extends Serializable {\n  protected isRunning = false;\n\n  public abstract readonly emitter: Emitter<unknown>;\n  public readonly middlewares: MiddlewareType<typeof this>[] = [];\n\n  public run(\n    ...[input, options]: Partial<TOptions> extends TOptions\n      ? [input: TInput, options?: TOptions]\n      : [input: TInput, options: TOptions]\n  ) {\n    if (this.isRunning) {\n      throw new AgentError(\"Agent is already running!\");\n    }\n\n    return RunContext.enter(\n      this,\n      { signal: options?.signal, params: [input, options] as const },\n      async (context) => {\n        try {\n          this.isRunning = true;\n          // @ts-expect-error\n          return await this._run(input, options, context);\n        } catch (e) {\n          if (e instanceof AgentError) {\n            throw e;\n          } else {\n            throw new AgentError(`The Agent has encountered an error.`, [e]);\n          }\n        } finally {\n          this.isRunning = false;\n        }\n      },\n    ).middleware(...this.middlewares);\n  }\n\n  protected abstract _run(\n    input: TInput,\n    options: TOptions,\n    run: GetRunContext<typeof this>,\n  ): Promise<TOutput>;\n\n  destroy() {\n    this.emitter.destroy();\n  }\n\n  public abstract set memory(memory: BaseMemory);\n  public abstract get memory(): BaseMemory;\n\n  public get meta(): AgentMeta {\n    return {\n      name: this.constructor.name ?? \"BaseAgent\",\n      description: \"\",\n      tools: [],\n    };\n  }\n\n  createSnapshot() {\n    return {\n      isRunning: false,\n      emitter: this.emitter,\n      middlewares: shallowCopy(this.middlewares) as MiddlewareType<any>[],\n    };\n  }\n\n  loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n    Object.assign(this, snapshot);\n  }\n}\n"]}