{"version":3,"sources":["../../src/backend/backend.ts"],"names":["Backend","Serializable","chat","embedding","models","Object","assign","fromName","input","asyncProperties","ChatModel","EmbeddingModel","fromProvider","provider","createSnapshot","loadSnapshot","snapshot"],"mappings":";;;;;;;;;AAkBO,MAAMA,gBAAgBC,6BAAAA,CAAAA;EAlB7B;;;AAmBEC,EAAAA,IAAAA;AACAC,EAAAA,SAAAA;AAEA,EAAA,WAAA,CAAYC,MAAAA,EAAuB;AACjC,IAAA,KAAA,EAAK;AACLC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,MAAAA,CAAAA;AACtB,EAAA;AAEA,EAAA,aAAaG,SACXC,KAAAA,EACkB;AAClB,IAAA,OAAO,IAAIR,OAAAA,CACT,MAAMS,2BAAAA,CAAgB;MACpBP,IAAAA,EAAMQ,kBAAAA,CAAUH,QAAAA,CAASC,KAAAA,CAAMN,IAAI,CAAA;AACnCC,MAAAA,SAAAA,EAAWQ,4BAAAA,CAAeJ,QAAAA,CAASC,KAAAA,CAAML,SAAAA,IAAa,OAAA;AACxD,KAAA,CAAA,CAAA;AAEJ,EAAA;AAEA,EAAA,aAAaS,aAAaC,QAAAA,EAA0C;AAClE,IAAA,OAAO,MAAM,KAAKN,QAAAA,CAAS;MACzBL,IAAAA,EAAMW,QAAAA;MACNV,SAAAA,EAAWU;KACb,CAAA;AACF,EAAA;EAEAC,cAAAA,GAAiB;AACf,IAAA,OAAO;AAAEZ,MAAAA,IAAAA,EAAM,IAAA,CAAKA,IAAAA;AAAMC,MAAAA,SAAAA,EAAW,IAAA,CAAKA;AAAU,KAAA;AACtD,EAAA;AAEAY,EAAAA,YAAAA,CAAaC,QAAAA,EAAkD;AAC7DX,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMU,QAAAA,CAAAA;AACtB,EAAA;AACF","file":"backend.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport { EmbeddingModel } from \"@/backend/embedding.js\";\nimport { asyncProperties } from \"@/internals/helpers/promise.js\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ProviderName } from \"./constants.js\";\nimport { OptionalExcept } from \"@/internals/types.js\";\n\ninterface BackendModels {\n  chat: ChatModel;\n  embedding: EmbeddingModel;\n}\n\nexport class Backend extends Serializable implements BackendModels {\n  chat!: ChatModel;\n  embedding!: EmbeddingModel;\n\n  constructor(models: BackendModels) {\n    super();\n    Object.assign(this, models);\n  }\n\n  static async fromName(\n    input: OptionalExcept<Record<keyof BackendModels, FullModelName | ProviderName>, \"chat\">,\n  ): Promise<Backend> {\n    return new Backend(\n      await asyncProperties({\n        chat: ChatModel.fromName(input.chat),\n        embedding: EmbeddingModel.fromName(input.embedding || \"dummy\"),\n      }),\n    );\n  }\n\n  static async fromProvider(provider: ProviderName): Promise<Backend> {\n    return await this.fromName({\n      chat: provider,\n      embedding: provider,\n    });\n  }\n\n  createSnapshot() {\n    return { chat: this.chat, embedding: this.embedding };\n  }\n\n  loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n    Object.assign(this, snapshot);\n  }\n}\n"]}