{"version":3,"sources":["../../src/backend/embedding.ts"],"names":["EmbeddingModel","Serializable","create","input","shallowCopy","RunContext","enter","params","signal","abortSignal","run","emitter","emit","result","pRetry","_create","retries","maxRetries","value","error","EmbeddingModelError","fromName","name","providerId","modelId","parseModel","Target","loadModel","createSnapshot","destroy"],"mappings":";;;;;;;;;;;AAuCO,MAAeA,uBAAuBC,6BAAAA,CAAAA;EAvC7C;;;AA6CEC,EAAAA,MAAAA,CAAOC,KAAAA,EAA4B;AACjCA,IAAAA,KAAAA,GAAQC,sBAAYD,KAAAA,CAAAA;AAEpB,IAAA,OAAOE,sBAAAA,CAAWC,MAChB,IAAA,EACA;MAAEC,MAAAA,EAAQ;AAACJ,QAAAA;;AAAiBK,MAAAA,MAAAA,EAAQL,KAAAA,EAAOM;AAAY,KAAA,EACvD,OAAOC,GAAAA,KAAAA;AACL,MAAA,IAAI;AACF,QAAA,MAAMA,GAAAA,CAAIC,OAAAA,CAAQC,IAAAA,CAAK,OAAA,EAAS;AAAET,UAAAA;SAAM,CAAA;AACxC,QAAA,MAAMU,MAAAA,GAA+B,MAAMC,gBAAAA,CAAO,MAAM,KAAKC,OAAAA,CAAQZ,KAAAA,EAAOO,GAAAA,CAAAA,EAAM;AAChFM,UAAAA,OAAAA,EAASb,MAAMc,UAAAA,IAAc,CAAA;AAC7BT,UAAAA,MAAAA,EAAQE,GAAAA,CAAIF;SACd,CAAA;AACA,QAAA,MAAME,GAAAA,CAAIC,OAAAA,CAAQC,IAAAA,CAAK,SAAA,EAAW;UAAEM,KAAAA,EAAOL;SAAO,CAAA;AAClD,QAAA,OAAOA,MAAAA;AACT,MAAA,CAAA,CAAA,OAASM,KAAAA,EAAO;AACd,QAAA,MAAMT,GAAAA,CAAIC,OAAAA,CAAQC,IAAAA,CAAK,OAAA,EAAS;AAAET,UAAAA,KAAAA;AAAOgB,UAAAA;SAAM,CAAA;AAC/C,QAAA,IAAIA,iBAAiBC,8BAAAA,EAAqB;AACxC,UAAA,MAAMD,KAAAA;QACR,CAAA,MAAO;AACL,UAAA,MAAM,IAAIC,+BAAoB,CAAA,6CAAA,CAAA,EAAiD;AAACD,YAAAA;AAAM,WAAA,CAAA;AACxF,QAAA;MACF,CAAA,SAAA;AACE,QAAA,MAAMT,GAAAA,CAAIC,OAAAA,CAAQC,IAAAA,CAAK,QAAA,EAAU,IAAA,CAAA;AACnC,MAAA;IACF,CAAA,CAAA;AAEJ,EAAA;AAEA,EAAA,aAAaS,SAASC,IAAAA,EAAoC;AACxD,IAAA,MAAM,EAAEC,UAAAA,EAAYC,OAAAA,GAAU,EAAA,EAAE,GAAKC,uBAAWH,IAAAA,CAAAA;AAChD,IAAA,MAAMI,MAAAA,GAAS,MAAMC,qBAAAA,CAA0BJ,UAAAA,EAAY,WAAA,CAAA;AAC3D,IAAA,OAAO,IAAIG,OAAOF,OAAAA,CAAAA;AACpB,EAAA;EAOAI,cAAAA,GAAiB;AACf,IAAA,OAAO;AAAEjB,MAAAA,OAAAA,EAAS,IAAA,CAAKA;AAAQ,KAAA;AACjC,EAAA;EAEAkB,OAAAA,GAAU;AACR,IAAA,IAAA,CAAKlB,QAAQkB,OAAAA,EAAO;AACtB,EAAA;AACF","file":"embedding.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 { Callback } from \"@/emitter/types.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { pRetry } from \"@/internals/helpers/retry.js\";\nimport { FullModelName, loadModel, parseModel } from \"@/backend/utils.js\";\nimport { ProviderName } from \"@/backend/constants.js\";\nimport { EmbeddingModelError } from \"@/backend/errors.js\";\n\nexport interface EmbeddingModelInput {\n  values: string[];\n  abortSignal?: AbortSignal;\n  maxRetries?: number;\n}\n\nexport interface EmbeddingModelOutput {\n  values: string[];\n  embeddings: number[][];\n  usage: { tokens?: number };\n}\n\nexport interface EmbeddingModelEvents {\n  success?: Callback<{ value: EmbeddingModelOutput }>;\n  start?: Callback<{ input: EmbeddingModelInput }>;\n  error?: Callback<{ input: EmbeddingModelInput; error: FrameworkError }>;\n  finish?: Callback<null>;\n}\n\nexport type EmbeddingModelEmitter<A = Record<never, never>> = Emitter<\n  EmbeddingModelEvents & Omit<A, keyof EmbeddingModelEvents>\n>;\n\nexport abstract class EmbeddingModel extends Serializable {\n  public abstract readonly emitter: Emitter<EmbeddingModelEvents>;\n\n  abstract get modelId(): string;\n  abstract get providerId(): string;\n\n  create(input: EmbeddingModelInput) {\n    input = shallowCopy(input);\n\n    return RunContext.enter(\n      this,\n      { params: [input] as const, signal: input?.abortSignal },\n      async (run) => {\n        try {\n          await run.emitter.emit(\"start\", { input });\n          const result: EmbeddingModelOutput = await pRetry(() => this._create(input, run), {\n            retries: input.maxRetries || 0,\n            signal: run.signal,\n          });\n          await run.emitter.emit(\"success\", { value: result });\n          return result;\n        } catch (error) {\n          await run.emitter.emit(\"error\", { input, error });\n          if (error instanceof EmbeddingModelError) {\n            throw error;\n          } else {\n            throw new EmbeddingModelError(`The Embedding Model has encountered an error.`, [error]);\n          }\n        } finally {\n          await run.emitter.emit(\"finish\", null);\n        }\n      },\n    );\n  }\n\n  static async fromName(name: FullModelName | ProviderName) {\n    const { providerId, modelId = \"\" } = parseModel(name);\n    const Target = await loadModel<EmbeddingModel>(providerId, \"embedding\");\n    return new Target(modelId);\n  }\n\n  protected abstract _create(\n    input: EmbeddingModelInput,\n    run: GetRunContext<typeof this>,\n  ): Promise<EmbeddingModelOutput>;\n\n  createSnapshot() {\n    return { emitter: this.emitter };\n  }\n\n  destroy() {\n    this.emitter.destroy();\n  }\n}\n"]}