@jerome-benoit/sap-ai-provider 4.4.15 → 4.4.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/README.md +10 -0
  2. package/dist/{chunk-JV2ULRVE.js → chunk-U5TGXMXL.js} +69 -69
  3. package/dist/{chunk-JV2ULRVE.js.map → chunk-U5TGXMXL.js.map} +1 -1
  4. package/dist/{chunk-3JJ7OXMW.js → chunk-X3RVS75R.js} +2 -2
  5. package/dist/chunk-YWOWXJGS.js +54 -0
  6. package/dist/chunk-YWOWXJGS.js.map +1 -0
  7. package/dist/{chunk-CXZSTU4M.js → chunk-ZTTUNOQ4.js} +3 -3
  8. package/dist/foundation-models-embedding-model-strategy-3AL3KDCE.js +58 -0
  9. package/dist/foundation-models-embedding-model-strategy-3AL3KDCE.js.map +1 -0
  10. package/dist/{foundation-models-language-model-strategy-ZCRPVWAV.js → foundation-models-language-model-strategy-X6RMOTAL.js} +4 -4
  11. package/dist/index.cjs +169 -150
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.js +5 -5
  14. package/dist/orchestration-embedding-model-strategy-VCSK76HX.js +60 -0
  15. package/dist/orchestration-embedding-model-strategy-VCSK76HX.js.map +1 -0
  16. package/dist/{orchestration-language-model-strategy-NEW76M3M.js → orchestration-language-model-strategy-YFINEDMS.js} +4 -4
  17. package/package.json +5 -5
  18. package/dist/foundation-models-embedding-model-strategy-OEKTLGZN.js +0 -69
  19. package/dist/foundation-models-embedding-model-strategy-OEKTLGZN.js.map +0 -1
  20. package/dist/orchestration-embedding-model-strategy-QRHQIEEK.js +0 -79
  21. package/dist/orchestration-embedding-model-strategy-QRHQIEEK.js.map +0 -1
  22. /package/dist/{chunk-3JJ7OXMW.js.map → chunk-X3RVS75R.js.map} +0 -0
  23. /package/dist/{chunk-CXZSTU4M.js.map → chunk-ZTTUNOQ4.js.map} +0 -0
  24. /package/dist/{foundation-models-language-model-strategy-ZCRPVWAV.js.map → foundation-models-language-model-strategy-X6RMOTAL.js.map} +0 -0
  25. /package/dist/{orchestration-language-model-strategy-NEW76M3M.js.map → orchestration-language-model-strategy-YFINEDMS.js.map} +0 -0
package/dist/index.js CHANGED
@@ -16,7 +16,7 @@ import {
16
16
  sapAILanguageModelProviderOptions,
17
17
  validateEmbeddingModelParamsSettings,
18
18
  validateModelParamsSettings
19
- } from "./chunk-JV2ULRVE.js";
19
+ } from "./chunk-U5TGXMXL.js";
20
20
 
21
21
  // src/sap-ai-embedding-model.ts
22
22
  import { parseProviderOptions } from "@ai-sdk/provider-utils";
@@ -51,21 +51,21 @@ function getOrCreateLanguageModelStrategy(api) {
51
51
  async function createEmbeddingModelStrategy(api) {
52
52
  if (api === "foundation-models") {
53
53
  const { AzureOpenAiEmbeddingClient } = await import("@sap-ai-sdk/foundation-models");
54
- const { FoundationModelsEmbeddingModelStrategy } = await import("./foundation-models-embedding-model-strategy-OEKTLGZN.js");
54
+ const { FoundationModelsEmbeddingModelStrategy } = await import("./foundation-models-embedding-model-strategy-3AL3KDCE.js");
55
55
  return new FoundationModelsEmbeddingModelStrategy(AzureOpenAiEmbeddingClient);
56
56
  }
57
57
  const { OrchestrationEmbeddingClient: OrchestrationEmbeddingClient2 } = await import("@sap-ai-sdk/orchestration");
58
- const { OrchestrationEmbeddingModelStrategy } = await import("./orchestration-embedding-model-strategy-QRHQIEEK.js");
58
+ const { OrchestrationEmbeddingModelStrategy } = await import("./orchestration-embedding-model-strategy-VCSK76HX.js");
59
59
  return new OrchestrationEmbeddingModelStrategy(OrchestrationEmbeddingClient2);
60
60
  }
61
61
  async function createLanguageModelStrategy(api) {
62
62
  if (api === "foundation-models") {
63
63
  const { AzureOpenAiChatClient } = await import("@sap-ai-sdk/foundation-models");
64
- const { FoundationModelsLanguageModelStrategy } = await import("./foundation-models-language-model-strategy-ZCRPVWAV.js");
64
+ const { FoundationModelsLanguageModelStrategy } = await import("./foundation-models-language-model-strategy-X6RMOTAL.js");
65
65
  return new FoundationModelsLanguageModelStrategy(AzureOpenAiChatClient);
66
66
  }
67
67
  const { OrchestrationClient: OrchestrationClient2 } = await import("@sap-ai-sdk/orchestration");
68
- const { OrchestrationLanguageModelStrategy } = await import("./orchestration-language-model-strategy-NEW76M3M.js");
68
+ const { OrchestrationLanguageModelStrategy } = await import("./orchestration-language-model-strategy-YFINEDMS.js");
69
69
  return new OrchestrationLanguageModelStrategy(OrchestrationClient2);
70
70
  }
71
71
 
@@ -0,0 +1,60 @@
1
+ import {createRequire as __createRequire} from 'module';var require=__createRequire(import.meta.url);
2
+ import {
3
+ BaseEmbeddingModelStrategy
4
+ } from "./chunk-YWOWXJGS.js";
5
+ import {
6
+ hasKeys,
7
+ normalizeEmbedding
8
+ } from "./chunk-X3RVS75R.js";
9
+ import {
10
+ deepMerge
11
+ } from "./chunk-U5TGXMXL.js";
12
+
13
+ // src/orchestration-embedding-model-strategy.ts
14
+ var OrchestrationEmbeddingModelStrategy = class extends BaseEmbeddingModelStrategy {
15
+ ClientClass;
16
+ constructor(ClientClass) {
17
+ super();
18
+ this.ClientClass = ClientClass;
19
+ }
20
+ createClient(config, settings, embeddingOptions) {
21
+ const mergedParams = deepMerge(
22
+ settings.modelParams ?? {},
23
+ embeddingOptions?.modelParams ?? {}
24
+ );
25
+ const embeddingConfig = {
26
+ model: {
27
+ name: config.modelId,
28
+ ...hasKeys(mergedParams) ? { params: mergedParams } : {},
29
+ ...settings.modelVersion ? { version: settings.modelVersion } : {}
30
+ }
31
+ };
32
+ const moduleConfig = {
33
+ embeddings: embeddingConfig,
34
+ ...settings.masking && hasKeys(settings.masking) ? { masking: settings.masking } : {}
35
+ };
36
+ return new this.ClientClass(moduleConfig, config.deploymentConfig, config.destination);
37
+ }
38
+ async executeCall(client, values, embeddingType, abortSignal) {
39
+ return client.embed(
40
+ { input: values, type: embeddingType },
41
+ abortSignal ? { signal: abortSignal } : void 0
42
+ );
43
+ }
44
+ extractEmbeddings(response) {
45
+ const embeddingData = response.getEmbeddings();
46
+ const sortedEmbeddings = [...embeddingData].sort((a, b) => a.index - b.index);
47
+ return sortedEmbeddings.map((data) => normalizeEmbedding(data.embedding));
48
+ }
49
+ extractTokenCount(response) {
50
+ const tokenUsage = response.getTokenUsage();
51
+ return tokenUsage.total_tokens;
52
+ }
53
+ getUrl() {
54
+ return "sap-ai:orchestration/embeddings";
55
+ }
56
+ };
57
+ export {
58
+ OrchestrationEmbeddingModelStrategy
59
+ };
60
+ //# sourceMappingURL=orchestration-embedding-model-strategy-VCSK76HX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/orchestration-embedding-model-strategy.ts"],"sourcesContent":["/** Orchestration embedding model strategy using `@sap-ai-sdk/orchestration`. */\nimport type { EmbeddingModelV3Embedding } from \"@ai-sdk/provider\";\nimport type {\n EmbeddingModelConfig,\n EmbeddingModuleConfig,\n OrchestrationEmbeddingClient,\n OrchestrationEmbeddingResponse,\n} from \"@sap-ai-sdk/orchestration\";\n\nimport type { SAPAIEmbeddingSettings } from \"./sap-ai-settings.js\";\nimport type { EmbeddingModelStrategyConfig } from \"./sap-ai-strategy.js\";\n\nimport { BaseEmbeddingModelStrategy } from \"./base-embedding-model-strategy.js\";\nimport { deepMerge } from \"./deep-merge.js\";\nimport { type EmbeddingProviderOptions, hasKeys, normalizeEmbedding } from \"./strategy-utils.js\";\n\n/** @internal */\ntype OrchestrationEmbeddingClientClass = typeof OrchestrationEmbeddingClient;\n\n/**\n * Embedding model strategy for the Orchestration API.\n *\n * Provides support for:\n * - Data masking\n * - Model parameters configuration\n * @internal\n */\nexport class OrchestrationEmbeddingModelStrategy extends BaseEmbeddingModelStrategy<\n OrchestrationEmbeddingClient,\n OrchestrationEmbeddingResponse\n> {\n private readonly ClientClass: OrchestrationEmbeddingClientClass;\n\n constructor(ClientClass: OrchestrationEmbeddingClientClass) {\n super();\n this.ClientClass = ClientClass;\n }\n\n protected createClient(\n config: EmbeddingModelStrategyConfig,\n settings: SAPAIEmbeddingSettings,\n embeddingOptions: EmbeddingProviderOptions | undefined,\n ): OrchestrationEmbeddingClient {\n const mergedParams = deepMerge(\n (settings.modelParams as Record<string, unknown> | undefined) ?? {},\n embeddingOptions?.modelParams ?? {},\n );\n\n const embeddingConfig: EmbeddingModelConfig = {\n model: {\n name: config.modelId,\n ...(hasKeys(mergedParams) ? { params: mergedParams } : {}),\n ...(settings.modelVersion ? { version: settings.modelVersion } : {}),\n },\n };\n\n const moduleConfig: EmbeddingModuleConfig = {\n embeddings: embeddingConfig,\n ...(settings.masking && hasKeys(settings.masking as object)\n ? { masking: settings.masking }\n : {}),\n };\n\n return new this.ClientClass(moduleConfig, config.deploymentConfig, config.destination);\n }\n\n protected async executeCall(\n client: OrchestrationEmbeddingClient,\n values: string[],\n embeddingType: \"document\" | \"query\" | \"text\" | undefined,\n abortSignal?: AbortSignal,\n ): Promise<OrchestrationEmbeddingResponse> {\n return client.embed(\n { input: values, type: embeddingType },\n abortSignal ? { signal: abortSignal } : undefined,\n );\n }\n\n protected extractEmbeddings(\n response: OrchestrationEmbeddingResponse,\n ): EmbeddingModelV3Embedding[] {\n const embeddingData = response.getEmbeddings();\n const sortedEmbeddings = [...embeddingData].sort((a, b) => a.index - b.index);\n return sortedEmbeddings.map((data) => normalizeEmbedding(data.embedding));\n }\n\n protected extractTokenCount(response: OrchestrationEmbeddingResponse): number {\n const tokenUsage = response.getTokenUsage();\n return tokenUsage.total_tokens;\n }\n\n protected getUrl(): string {\n return \"sap-ai:orchestration/embeddings\";\n }\n}\n"],"mappings":";;;;;;;;;;;;;AA2BO,IAAM,sCAAN,cAAkD,2BAGvD;AAAA,EACiB;AAAA,EAEjB,YAAY,aAAgD;AAC1D,UAAM;AACN,SAAK,cAAc;AAAA,EACrB;AAAA,EAEU,aACR,QACA,UACA,kBAC8B;AAC9B,UAAM,eAAe;AAAA,MAClB,SAAS,eAAuD,CAAC;AAAA,MAClE,kBAAkB,eAAe,CAAC;AAAA,IACpC;AAEA,UAAM,kBAAwC;AAAA,MAC5C,OAAO;AAAA,QACL,MAAM,OAAO;AAAA,QACb,GAAI,QAAQ,YAAY,IAAI,EAAE,QAAQ,aAAa,IAAI,CAAC;AAAA,QACxD,GAAI,SAAS,eAAe,EAAE,SAAS,SAAS,aAAa,IAAI,CAAC;AAAA,MACpE;AAAA,IACF;AAEA,UAAM,eAAsC;AAAA,MAC1C,YAAY;AAAA,MACZ,GAAI,SAAS,WAAW,QAAQ,SAAS,OAAiB,IACtD,EAAE,SAAS,SAAS,QAAQ,IAC5B,CAAC;AAAA,IACP;AAEA,WAAO,IAAI,KAAK,YAAY,cAAc,OAAO,kBAAkB,OAAO,WAAW;AAAA,EACvF;AAAA,EAEA,MAAgB,YACd,QACA,QACA,eACA,aACyC;AACzC,WAAO,OAAO;AAAA,MACZ,EAAE,OAAO,QAAQ,MAAM,cAAc;AAAA,MACrC,cAAc,EAAE,QAAQ,YAAY,IAAI;AAAA,IAC1C;AAAA,EACF;AAAA,EAEU,kBACR,UAC6B;AAC7B,UAAM,gBAAgB,SAAS,cAAc;AAC7C,UAAM,mBAAmB,CAAC,GAAG,aAAa,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAC5E,WAAO,iBAAiB,IAAI,CAAC,SAAS,mBAAmB,KAAK,SAAS,CAAC;AAAA,EAC1E;AAAA,EAEU,kBAAkB,UAAkD;AAC5E,UAAM,aAAa,SAAS,cAAc;AAC1C,WAAO,WAAW;AAAA,EACpB;AAAA,EAEU,SAAiB;AACzB,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -1,7 +1,7 @@
1
1
  import {createRequire as __createRequire} from 'module';var require=__createRequire(import.meta.url);
2
2
  import {
3
3
  BaseLanguageModelStrategy
4
- } from "./chunk-CXZSTU4M.js";
4
+ } from "./chunk-ZTTUNOQ4.js";
5
5
  import {
6
6
  convertToSAPMessages
7
7
  } from "./chunk-SD6CRCHX.js";
@@ -11,13 +11,13 @@ import {
11
11
  convertToolsToSAPFormat,
12
12
  hasKeys,
13
13
  mapToolChoice
14
- } from "./chunk-3JJ7OXMW.js";
14
+ } from "./chunk-X3RVS75R.js";
15
15
  import {
16
16
  deepMerge,
17
17
  getProviderName,
18
18
  orchestrationConfigRefSchema,
19
19
  sapAILanguageModelProviderOptions
20
- } from "./chunk-JV2ULRVE.js";
20
+ } from "./chunk-U5TGXMXL.js";
21
21
 
22
22
  // src/orchestration-language-model-strategy.ts
23
23
  import { parseProviderOptions } from "@ai-sdk/provider-utils";
@@ -488,4 +488,4 @@ var OrchestrationLanguageModelStrategy = class extends BaseLanguageModelStrategy
488
488
  export {
489
489
  OrchestrationLanguageModelStrategy
490
490
  };
491
- //# sourceMappingURL=orchestration-language-model-strategy-NEW76M3M.js.map
491
+ //# sourceMappingURL=orchestration-language-model-strategy-YFINEDMS.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jerome-benoit/sap-ai-provider",
3
- "version": "4.4.15",
3
+ "version": "4.4.16",
4
4
  "type": "module",
5
5
  "description": "SAP AI Provider for Vercel AI SDK (powered by @sap-ai-sdk/orchestration and @sap-ai-sdk/foundation-models)",
6
6
  "keywords": [
@@ -84,12 +84,12 @@
84
84
  },
85
85
  "devDependencies": {
86
86
  "@edge-runtime/vm": "^5.0.0",
87
- "@eslint/js": "^9.39.2",
88
- "@types/node": "^25.2.3",
87
+ "@eslint/js": "^10.0.1",
88
+ "@types/node": "^25.3.0",
89
89
  "@vitest/coverage-v8": "^4.0.18",
90
90
  "dotenv": "^17.3.1",
91
- "eslint": "^9.39.2",
92
- "eslint-plugin-jsdoc": "^62.6.0",
91
+ "eslint": "^10.0.1",
92
+ "eslint-plugin-jsdoc": "^62.7.0",
93
93
  "eslint-plugin-perfectionist": "^5.6.0",
94
94
  "globals": "^17.3.0",
95
95
  "markdown-link-check": "^3.14.2",
@@ -1,69 +0,0 @@
1
- import {createRequire as __createRequire} from 'module';var require=__createRequire(import.meta.url);
2
- import {
3
- buildEmbeddingResult,
4
- buildModelDeployment,
5
- hasKeys,
6
- normalizeEmbedding,
7
- prepareEmbeddingCall
8
- } from "./chunk-3JJ7OXMW.js";
9
- import {
10
- VERSION,
11
- convertToAISDKError,
12
- deepMerge
13
- } from "./chunk-JV2ULRVE.js";
14
-
15
- // src/foundation-models-embedding-model-strategy.ts
16
- var FoundationModelsEmbeddingModelStrategy = class {
17
- ClientClass;
18
- constructor(ClientClass) {
19
- this.ClientClass = ClientClass;
20
- }
21
- async doEmbed(config, settings, options, maxEmbeddingsPerCall) {
22
- const { abortSignal, values } = options;
23
- const { embeddingOptions, providerName } = await prepareEmbeddingCall(
24
- { maxEmbeddingsPerCall, modelId: config.modelId, provider: config.provider },
25
- options
26
- );
27
- try {
28
- const client = this.createClient(config, settings.modelVersion);
29
- const request = this.buildRequest(values, settings, embeddingOptions);
30
- const response = await client.run(request, abortSignal ? { signal: abortSignal } : void 0);
31
- const embeddingData = response.getEmbeddings();
32
- const tokenUsage = response._data.usage;
33
- const embeddings = embeddingData.map(
34
- (embedding) => normalizeEmbedding(embedding)
35
- );
36
- return buildEmbeddingResult({
37
- embeddings,
38
- modelId: config.modelId,
39
- providerName,
40
- totalTokens: tokenUsage.total_tokens,
41
- version: VERSION
42
- });
43
- } catch (error) {
44
- throw convertToAISDKError(error, {
45
- operation: "doEmbed",
46
- requestBody: { values: values.length },
47
- url: "sap-ai:foundation-models/embeddings"
48
- });
49
- }
50
- }
51
- buildRequest(values, settings, embeddingOptions) {
52
- const mergedParams = deepMerge(
53
- settings.modelParams,
54
- embeddingOptions?.modelParams
55
- );
56
- return {
57
- input: values,
58
- ...hasKeys(mergedParams) ? mergedParams : {}
59
- };
60
- }
61
- createClient(config, modelVersion) {
62
- const modelDeployment = buildModelDeployment(config, modelVersion);
63
- return new this.ClientClass(modelDeployment, config.destination);
64
- }
65
- };
66
- export {
67
- FoundationModelsEmbeddingModelStrategy
68
- };
69
- //# sourceMappingURL=foundation-models-embedding-model-strategy-OEKTLGZN.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/foundation-models-embedding-model-strategy.ts"],"sourcesContent":["/** Foundation Models embedding model strategy using `@sap-ai-sdk/foundation-models`. */\nimport type {\n EmbeddingModelV3CallOptions,\n EmbeddingModelV3Embedding,\n EmbeddingModelV3Result,\n} from \"@ai-sdk/provider\";\nimport type {\n AzureOpenAiEmbeddingClient,\n AzureOpenAiEmbeddingParameters,\n} from \"@sap-ai-sdk/foundation-models\";\n\nimport type { SAPAIEmbeddingSettings } from \"./sap-ai-settings.js\";\nimport type { EmbeddingModelAPIStrategy, EmbeddingModelStrategyConfig } from \"./sap-ai-strategy.js\";\n\nimport { deepMerge } from \"./deep-merge.js\";\nimport { convertToAISDKError } from \"./sap-ai-error.js\";\nimport {\n buildEmbeddingResult,\n buildModelDeployment,\n hasKeys,\n normalizeEmbedding,\n prepareEmbeddingCall,\n} from \"./strategy-utils.js\";\nimport { VERSION } from \"./version.js\";\n\n/**\n * @internal\n */\ntype AzureOpenAiEmbeddingClientClass = typeof AzureOpenAiEmbeddingClient;\n\n/**\n * @internal\n */\nexport class FoundationModelsEmbeddingModelStrategy implements EmbeddingModelAPIStrategy {\n private readonly ClientClass: AzureOpenAiEmbeddingClientClass;\n\n constructor(ClientClass: AzureOpenAiEmbeddingClientClass) {\n this.ClientClass = ClientClass;\n }\n\n async doEmbed(\n config: EmbeddingModelStrategyConfig,\n settings: SAPAIEmbeddingSettings,\n options: EmbeddingModelV3CallOptions,\n maxEmbeddingsPerCall: number,\n ): Promise<EmbeddingModelV3Result> {\n const { abortSignal, values } = options;\n\n const { embeddingOptions, providerName } = await prepareEmbeddingCall(\n { maxEmbeddingsPerCall, modelId: config.modelId, provider: config.provider },\n options,\n );\n\n try {\n const client = this.createClient(config, settings.modelVersion);\n const request = this.buildRequest(values, settings, embeddingOptions);\n const response = await client.run(request, abortSignal ? { signal: abortSignal } : undefined);\n\n const embeddingData = response.getEmbeddings();\n const tokenUsage = response._data.usage;\n const embeddings: EmbeddingModelV3Embedding[] = embeddingData.map((embedding) =>\n normalizeEmbedding(embedding),\n );\n\n return buildEmbeddingResult({\n embeddings,\n modelId: config.modelId,\n providerName,\n totalTokens: tokenUsage.total_tokens,\n version: VERSION,\n });\n } catch (error) {\n throw convertToAISDKError(error, {\n operation: \"doEmbed\",\n requestBody: { values: values.length },\n url: \"sap-ai:foundation-models/embeddings\",\n });\n }\n }\n\n private buildRequest(\n values: string[],\n settings: SAPAIEmbeddingSettings,\n embeddingOptions: undefined | { modelParams?: Record<string, unknown> },\n ): AzureOpenAiEmbeddingParameters {\n const mergedParams = deepMerge(\n settings.modelParams as Record<string, unknown> | undefined,\n embeddingOptions?.modelParams,\n );\n\n return {\n input: values,\n ...(hasKeys(mergedParams) ? mergedParams : {}),\n } as AzureOpenAiEmbeddingParameters;\n }\n\n private createClient(\n config: EmbeddingModelStrategyConfig,\n modelVersion?: string,\n ): InstanceType<AzureOpenAiEmbeddingClientClass> {\n const modelDeployment = buildModelDeployment(config, modelVersion);\n return new this.ClientClass(modelDeployment, config.destination);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAiCO,IAAM,yCAAN,MAAkF;AAAA,EACtE;AAAA,EAEjB,YAAY,aAA8C;AACxD,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,MAAM,QACJ,QACA,UACA,SACA,sBACiC;AACjC,UAAM,EAAE,aAAa,OAAO,IAAI;AAEhC,UAAM,EAAE,kBAAkB,aAAa,IAAI,MAAM;AAAA,MAC/C,EAAE,sBAAsB,SAAS,OAAO,SAAS,UAAU,OAAO,SAAS;AAAA,MAC3E;AAAA,IACF;AAEA,QAAI;AACF,YAAM,SAAS,KAAK,aAAa,QAAQ,SAAS,YAAY;AAC9D,YAAM,UAAU,KAAK,aAAa,QAAQ,UAAU,gBAAgB;AACpE,YAAM,WAAW,MAAM,OAAO,IAAI,SAAS,cAAc,EAAE,QAAQ,YAAY,IAAI,MAAS;AAE5F,YAAM,gBAAgB,SAAS,cAAc;AAC7C,YAAM,aAAa,SAAS,MAAM;AAClC,YAAM,aAA0C,cAAc;AAAA,QAAI,CAAC,cACjE,mBAAmB,SAAS;AAAA,MAC9B;AAEA,aAAO,qBAAqB;AAAA,QAC1B;AAAA,QACA,SAAS,OAAO;AAAA,QAChB;AAAA,QACA,aAAa,WAAW;AAAA,QACxB,SAAS;AAAA,MACX,CAAC;AAAA,IACH,SAAS,OAAO;AACd,YAAM,oBAAoB,OAAO;AAAA,QAC/B,WAAW;AAAA,QACX,aAAa,EAAE,QAAQ,OAAO,OAAO;AAAA,QACrC,KAAK;AAAA,MACP,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEQ,aACN,QACA,UACA,kBACgC;AAChC,UAAM,eAAe;AAAA,MACnB,SAAS;AAAA,MACT,kBAAkB;AAAA,IACpB;AAEA,WAAO;AAAA,MACL,OAAO;AAAA,MACP,GAAI,QAAQ,YAAY,IAAI,eAAe,CAAC;AAAA,IAC9C;AAAA,EACF;AAAA,EAEQ,aACN,QACA,cAC+C;AAC/C,UAAM,kBAAkB,qBAAqB,QAAQ,YAAY;AACjE,WAAO,IAAI,KAAK,YAAY,iBAAiB,OAAO,WAAW;AAAA,EACjE;AACF;","names":[]}
@@ -1,79 +0,0 @@
1
- import {createRequire as __createRequire} from 'module';var require=__createRequire(import.meta.url);
2
- import {
3
- buildEmbeddingResult,
4
- hasKeys,
5
- normalizeEmbedding,
6
- prepareEmbeddingCall
7
- } from "./chunk-3JJ7OXMW.js";
8
- import {
9
- VERSION,
10
- convertToAISDKError,
11
- deepMerge
12
- } from "./chunk-JV2ULRVE.js";
13
-
14
- // src/orchestration-embedding-model-strategy.ts
15
- var OrchestrationEmbeddingModelStrategy = class {
16
- ClientClass;
17
- constructor(ClientClass) {
18
- this.ClientClass = ClientClass;
19
- }
20
- async doEmbed(config, settings, options, maxEmbeddingsPerCall) {
21
- const { abortSignal, values } = options;
22
- const { embeddingOptions, providerName } = await prepareEmbeddingCall(
23
- { maxEmbeddingsPerCall, modelId: config.modelId, provider: config.provider },
24
- options
25
- );
26
- const embeddingType = embeddingOptions?.type ?? settings.type ?? "text";
27
- try {
28
- const client = this.createClient(
29
- config,
30
- settings.modelParams,
31
- embeddingOptions?.modelParams,
32
- settings.modelVersion,
33
- settings.masking
34
- );
35
- const response = await client.embed(
36
- { input: values, type: embeddingType },
37
- abortSignal ? { signal: abortSignal } : void 0
38
- );
39
- const embeddingData = response.getEmbeddings();
40
- const tokenUsage = response.getTokenUsage();
41
- const sortedEmbeddings = [...embeddingData].sort((a, b) => a.index - b.index);
42
- const embeddings = sortedEmbeddings.map(
43
- (data) => normalizeEmbedding(data.embedding)
44
- );
45
- return buildEmbeddingResult({
46
- embeddings,
47
- modelId: config.modelId,
48
- providerName,
49
- totalTokens: tokenUsage.total_tokens,
50
- version: VERSION
51
- });
52
- } catch (error) {
53
- throw convertToAISDKError(error, {
54
- operation: "doEmbed",
55
- requestBody: { values: values.length },
56
- url: "sap-ai:orchestration/embeddings"
57
- });
58
- }
59
- }
60
- createClient(config, settingsModelParams, perCallModelParams, modelVersion, masking) {
61
- const mergedParams = deepMerge(settingsModelParams ?? {}, perCallModelParams ?? {});
62
- const embeddingConfig = {
63
- model: {
64
- name: config.modelId,
65
- ...hasKeys(mergedParams) ? { params: mergedParams } : {},
66
- ...modelVersion ? { version: modelVersion } : {}
67
- }
68
- };
69
- const moduleConfig = {
70
- embeddings: embeddingConfig,
71
- ...masking && hasKeys(masking) ? { masking } : {}
72
- };
73
- return new this.ClientClass(moduleConfig, config.deploymentConfig, config.destination);
74
- }
75
- };
76
- export {
77
- OrchestrationEmbeddingModelStrategy
78
- };
79
- //# sourceMappingURL=orchestration-embedding-model-strategy-QRHQIEEK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/orchestration-embedding-model-strategy.ts"],"sourcesContent":["/** Orchestration embedding model strategy using `@sap-ai-sdk/orchestration`. */\nimport type {\n EmbeddingModelV3CallOptions,\n EmbeddingModelV3Embedding,\n EmbeddingModelV3Result,\n} from \"@ai-sdk/provider\";\nimport type {\n EmbeddingModelConfig,\n EmbeddingModuleConfig,\n MaskingModule,\n OrchestrationEmbeddingClient,\n} from \"@sap-ai-sdk/orchestration\";\n\nimport type { SAPAIEmbeddingSettings } from \"./sap-ai-settings.js\";\nimport type { EmbeddingModelAPIStrategy, EmbeddingModelStrategyConfig } from \"./sap-ai-strategy.js\";\n\nimport { deepMerge } from \"./deep-merge.js\";\nimport { convertToAISDKError } from \"./sap-ai-error.js\";\nimport {\n buildEmbeddingResult,\n hasKeys,\n normalizeEmbedding,\n prepareEmbeddingCall,\n} from \"./strategy-utils.js\";\nimport { VERSION } from \"./version.js\";\n\n/**\n * @internal\n */\ntype OrchestrationEmbeddingClientClass = typeof OrchestrationEmbeddingClient;\n\n/**\n * @internal\n */\nexport class OrchestrationEmbeddingModelStrategy implements EmbeddingModelAPIStrategy {\n private readonly ClientClass: OrchestrationEmbeddingClientClass;\n\n constructor(ClientClass: OrchestrationEmbeddingClientClass) {\n this.ClientClass = ClientClass;\n }\n\n async doEmbed(\n config: EmbeddingModelStrategyConfig,\n settings: SAPAIEmbeddingSettings,\n options: EmbeddingModelV3CallOptions,\n maxEmbeddingsPerCall: number,\n ): Promise<EmbeddingModelV3Result> {\n const { abortSignal, values } = options;\n\n const { embeddingOptions, providerName } = await prepareEmbeddingCall(\n { maxEmbeddingsPerCall, modelId: config.modelId, provider: config.provider },\n options,\n );\n\n const embeddingType = embeddingOptions?.type ?? settings.type ?? \"text\";\n\n try {\n const client = this.createClient(\n config,\n settings.modelParams as Record<string, unknown> | undefined,\n embeddingOptions?.modelParams,\n settings.modelVersion,\n settings.masking,\n );\n\n const response = await client.embed(\n { input: values, type: embeddingType },\n abortSignal ? { signal: abortSignal } : undefined,\n );\n\n const embeddingData = response.getEmbeddings();\n const tokenUsage = response.getTokenUsage();\n const sortedEmbeddings = [...embeddingData].sort((a, b) => a.index - b.index);\n\n const embeddings: EmbeddingModelV3Embedding[] = sortedEmbeddings.map((data) =>\n normalizeEmbedding(data.embedding),\n );\n\n return buildEmbeddingResult({\n embeddings,\n modelId: config.modelId,\n providerName,\n totalTokens: tokenUsage.total_tokens,\n version: VERSION,\n });\n } catch (error) {\n throw convertToAISDKError(error, {\n operation: \"doEmbed\",\n requestBody: { values: values.length },\n url: \"sap-ai:orchestration/embeddings\",\n });\n }\n }\n\n private createClient(\n config: EmbeddingModelStrategyConfig,\n settingsModelParams?: Record<string, unknown>,\n perCallModelParams?: Record<string, unknown>,\n modelVersion?: string,\n masking?: MaskingModule,\n ): OrchestrationEmbeddingClient {\n const mergedParams = deepMerge(settingsModelParams ?? {}, perCallModelParams ?? {});\n\n const embeddingConfig: EmbeddingModelConfig = {\n model: {\n name: config.modelId,\n ...(hasKeys(mergedParams) ? { params: mergedParams } : {}),\n ...(modelVersion ? { version: modelVersion } : {}),\n },\n };\n\n const moduleConfig: EmbeddingModuleConfig = {\n embeddings: embeddingConfig,\n ...(masking && hasKeys(masking as object) ? { masking } : {}),\n };\n\n return new this.ClientClass(moduleConfig, config.deploymentConfig, config.destination);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAkCO,IAAM,sCAAN,MAA+E;AAAA,EACnE;AAAA,EAEjB,YAAY,aAAgD;AAC1D,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,MAAM,QACJ,QACA,UACA,SACA,sBACiC;AACjC,UAAM,EAAE,aAAa,OAAO,IAAI;AAEhC,UAAM,EAAE,kBAAkB,aAAa,IAAI,MAAM;AAAA,MAC/C,EAAE,sBAAsB,SAAS,OAAO,SAAS,UAAU,OAAO,SAAS;AAAA,MAC3E;AAAA,IACF;AAEA,UAAM,gBAAgB,kBAAkB,QAAQ,SAAS,QAAQ;AAEjE,QAAI;AACF,YAAM,SAAS,KAAK;AAAA,QAClB;AAAA,QACA,SAAS;AAAA,QACT,kBAAkB;AAAA,QAClB,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAEA,YAAM,WAAW,MAAM,OAAO;AAAA,QAC5B,EAAE,OAAO,QAAQ,MAAM,cAAc;AAAA,QACrC,cAAc,EAAE,QAAQ,YAAY,IAAI;AAAA,MAC1C;AAEA,YAAM,gBAAgB,SAAS,cAAc;AAC7C,YAAM,aAAa,SAAS,cAAc;AAC1C,YAAM,mBAAmB,CAAC,GAAG,aAAa,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAE5E,YAAM,aAA0C,iBAAiB;AAAA,QAAI,CAAC,SACpE,mBAAmB,KAAK,SAAS;AAAA,MACnC;AAEA,aAAO,qBAAqB;AAAA,QAC1B;AAAA,QACA,SAAS,OAAO;AAAA,QAChB;AAAA,QACA,aAAa,WAAW;AAAA,QACxB,SAAS;AAAA,MACX,CAAC;AAAA,IACH,SAAS,OAAO;AACd,YAAM,oBAAoB,OAAO;AAAA,QAC/B,WAAW;AAAA,QACX,aAAa,EAAE,QAAQ,OAAO,OAAO;AAAA,QACrC,KAAK;AAAA,MACP,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEQ,aACN,QACA,qBACA,oBACA,cACA,SAC8B;AAC9B,UAAM,eAAe,UAAU,uBAAuB,CAAC,GAAG,sBAAsB,CAAC,CAAC;AAElF,UAAM,kBAAwC;AAAA,MAC5C,OAAO;AAAA,QACL,MAAM,OAAO;AAAA,QACb,GAAI,QAAQ,YAAY,IAAI,EAAE,QAAQ,aAAa,IAAI,CAAC;AAAA,QACxD,GAAI,eAAe,EAAE,SAAS,aAAa,IAAI,CAAC;AAAA,MAClD;AAAA,IACF;AAEA,UAAM,eAAsC;AAAA,MAC1C,YAAY;AAAA,MACZ,GAAI,WAAW,QAAQ,OAAiB,IAAI,EAAE,QAAQ,IAAI,CAAC;AAAA,IAC7D;AAEA,WAAO,IAAI,KAAK,YAAY,cAAc,OAAO,kBAAkB,OAAO,WAAW;AAAA,EACvF;AACF;","names":[]}