{"version":3,"sources":["../../../../src/adapters/watsonx/backend/embedding.ts"],"names":["WatsonxEmbeddingModel","EmbeddingModel","client","emitter","providerId","modelId","getEnv","parameters","WatsonxClient","ensure","Emitter","root","child","namespace","creator","_create","input","response","instance","embedText","spaceId","projectId","inputs","values","return_options","input_text","embeddings","result","results","map","e","embedding","i","at","usage","tokens","input_token_count","createSnapshot","loadSnapshot","snapshot","Object","assign"],"mappings":";;;;;;;;;AAkBO,MAAMA,8BAA8BC,4BAAAA,CAAAA;EAlB3C;;;;;AAmBqBC,EAAAA,MAAAA;AACHC,EAAAA,OAAAA;AAEhB,EAAA,IAAIC,UAAAA,GAAa;AACf,IAAA,OAAO,SAAA;AACT,EAAA;EAEA,WAAA,CACkBC,OAAAA,GAAkBC,eAChC,yBAAA,EACA,yCAAA,GAEcC,UAAAA,GAA8C,IAC9DL,MAAAA,EACA;AACA,IAAA,KAAA,EAAK,EAAA,IAAA,CAPWG,OAAAA,GAAAA,OAAAA,EAAAA,KAIAE,UAAAA,GAAAA,UAAAA;AAIhB,IAAA,IAAA,CAAKL,MAAAA,GAASM,wBAAAA,CAAcC,MAAAA,CAAOP,MAAAA,CAAAA;AACnC,IAAA,IAAA,CAAKC,OAAAA,GAAUO,mBAAAA,CAAQC,IAAAA,CAAKC,KAAAA,CAAM;MAChCC,SAAAA,EAAW;AAAC,QAAA,SAAA;AAAW,QAAA,SAAA;AAAW,QAAA;;MAClCC,OAAAA,EAAS;KACX,CAAA;AACF,EAAA;AAEA,EAAA,MAAgBC,QAAQC,KAAAA,EAA2D;AACjF,IAAA,MAAMC,QAAAA,GAAW,MAAM,IAAA,CAAKf,MAAAA,CAAOgB,SAASC,SAAAA,CAAU;AACpDd,MAAAA,OAAAA,EAAS,IAAA,CAAKA,OAAAA;AACde,MAAAA,OAAAA,EAAS,KAAKlB,MAAAA,CAAOkB,OAAAA;AACrBC,MAAAA,SAAAA,EAAW,KAAKnB,MAAAA,CAAOmB,SAAAA;AACvBC,MAAAA,MAAAA,EAAQN,KAAAA,CAAMO,MAAAA;MACdhB,UAAAA,EAAY;QACViB,cAAAA,EAAgB;UAAEC,UAAAA,EAAY;AAAK,SAAA;AACnC,QAAA,GAAG,IAAA,CAAKlB;AACV;KACF,CAAA;AAEA,IAAA,MAAMmB,UAAAA,GAAaT,SAASU,MAAAA,CAAOC,OAAAA,CAAQC,IAAI,CAACC,CAAAA,KAAMA,EAAEC,SAAS,CAAA;AACjE,IAAA,MAAMR,MAAAA,GAASN,QAAAA,CAASU,MAAAA,CAAOC,OAAAA,CAAQC,IAAI,CAACC,CAAAA,EAAGE,CAAAA,KAAMF,CAAAA,CAAEd,KAAAA,IAASA,KAAAA,CAAMO,MAAAA,CAAOU,EAAAA,CAAGD,CAAAA,CAAAA,CAAAA;AAEhF,IAAA,OAAO;AACLN,MAAAA,UAAAA;AACAH,MAAAA,MAAAA;MACAW,KAAAA,EAAO;AACLC,QAAAA,MAAAA,EAAQlB,SAASU,MAAAA,CAAOS;AAC1B;AACF,KAAA;AACF,EAAA;EAEAC,cAAAA,GAAiB;AACf,IAAA,OAAO;AACL,MAAA,GAAG,MAAMA,cAAAA,EAAAA;AACThC,MAAAA,OAAAA,EAAS,IAAA,CAAKA,OAAAA;AACdH,MAAAA,MAAAA,EAAQ,IAAA,CAAKA;AACf,KAAA;AACF,EAAA;AAEAoC,EAAAA,YAAAA,CAAaC,QAAAA,EAAwD;AACnEC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;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 { WatsonxClient, WatsonxClientSettings } from \"@/adapters/watsonx/backend/client.js\";\nimport {\n  EmbeddingModel,\n  EmbeddingModelInput,\n  EmbeddingModelOutput,\n  EmbeddingModelEvents,\n} from \"@/backend/embedding.js\";\nimport { EmbeddingParameters as WXEmbeddingParameters } from \"@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { getEnv } from \"@/internals/env.js\";\n\nexport type WatsonxEmbeddingModelParameters = WXEmbeddingParameters;\n\nexport class WatsonxEmbeddingModel extends EmbeddingModel {\n  protected readonly client: WatsonxClient;\n  public readonly emitter: Emitter<EmbeddingModelEvents>;\n\n  get providerId() {\n    return \"watsonx\";\n  }\n\n  constructor(\n    public readonly modelId: string = getEnv(\n      \"WATSONX_EMBEDDING_MODEL\",\n      \"ibm/granite-embedding-107m-multilingual\",\n    ),\n    public readonly parameters: WatsonxEmbeddingModelParameters = {},\n    client?: WatsonxClient | WatsonxClientSettings,\n  ) {\n    super();\n    this.client = WatsonxClient.ensure(client);\n    this.emitter = Emitter.root.child({\n      namespace: [\"backend\", \"watsonx\", \"embedding\"],\n      creator: this,\n    });\n  }\n\n  protected async _create(input: EmbeddingModelInput): Promise<EmbeddingModelOutput> {\n    const response = await this.client.instance.embedText({\n      modelId: this.modelId,\n      spaceId: this.client.spaceId,\n      projectId: this.client.projectId,\n      inputs: input.values,\n      parameters: {\n        return_options: { input_text: true },\n        ...this.parameters,\n      },\n    });\n\n    const embeddings = response.result.results.map((e) => e.embedding);\n    const values = response.result.results.map((e, i) => e.input || input.values.at(i)!);\n\n    return {\n      embeddings,\n      values,\n      usage: {\n        tokens: response.result.input_token_count,\n      },\n    };\n  }\n\n  createSnapshot() {\n    return {\n      ...super.createSnapshot(),\n      modelId: this.modelId,\n      client: this.client,\n    };\n  }\n\n  loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void {\n    Object.assign(this, snapshot);\n  }\n}\n"]}