@jerome-benoit/sap-ai-provider-v2 4.4.18 → 4.5.0

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 (28) hide show
  1. package/README.md +16 -9
  2. package/dist/{chunk-4CAVT2YC.js → chunk-3VLXFYCM.js} +153 -140
  3. package/dist/chunk-3VLXFYCM.js.map +1 -0
  4. package/dist/{chunk-3M6NFVCS.js → chunk-NRLDO6VY.js} +8 -4
  5. package/dist/chunk-NRLDO6VY.js.map +1 -0
  6. package/dist/{chunk-BBWFNLML.js → chunk-SC6SVJGO.js} +3 -3
  7. package/dist/{chunk-O6ASHXPO.js → chunk-T2KXS7WW.js} +445 -321
  8. package/dist/{chunk-O6ASHXPO.js.map → chunk-T2KXS7WW.js.map} +1 -1
  9. package/dist/{foundation-models-embedding-model-strategy-XJV5REFR.js → foundation-models-embedding-model-strategy-FO5RWBZ2.js} +4 -4
  10. package/dist/{foundation-models-language-model-strategy-X6VNJZFG.js → foundation-models-language-model-strategy-COZPNAJ3.js} +11 -6
  11. package/dist/foundation-models-language-model-strategy-COZPNAJ3.js.map +1 -0
  12. package/dist/index.cjs +619 -461
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.d.cts +19 -2
  15. package/dist/index.d.ts +19 -2
  16. package/dist/index.js +5 -5
  17. package/dist/index.js.map +1 -1
  18. package/dist/{orchestration-embedding-model-strategy-3GIX5HAR.js → orchestration-embedding-model-strategy-GEONA32Q.js} +4 -4
  19. package/dist/{orchestration-language-model-strategy-GYBTFP2F.js → orchestration-language-model-strategy-PZBP7G5O.js} +18 -5
  20. package/dist/orchestration-language-model-strategy-PZBP7G5O.js.map +1 -0
  21. package/package.json +15 -15
  22. package/dist/chunk-3M6NFVCS.js.map +0 -1
  23. package/dist/chunk-4CAVT2YC.js.map +0 -1
  24. package/dist/foundation-models-language-model-strategy-X6VNJZFG.js.map +0 -1
  25. package/dist/orchestration-language-model-strategy-GYBTFP2F.js.map +0 -1
  26. /package/dist/{chunk-BBWFNLML.js.map → chunk-SC6SVJGO.js.map} +0 -0
  27. /package/dist/{foundation-models-embedding-model-strategy-XJV5REFR.js.map → foundation-models-embedding-model-strategy-FO5RWBZ2.js.map} +0 -0
  28. /package/dist/{orchestration-embedding-model-strategy-3GIX5HAR.js.map → orchestration-embedding-model-strategy-GEONA32Q.js.map} +0 -0
@@ -1,15 +1,15 @@
1
1
  import {createRequire as __createRequire} from 'module';var require=__createRequire(import.meta.url);
2
2
  import {
3
3
  BaseEmbeddingModelStrategy
4
- } from "./chunk-BBWFNLML.js";
4
+ } from "./chunk-SC6SVJGO.js";
5
5
  import {
6
6
  buildModelDeployment,
7
7
  hasKeys,
8
8
  normalizeEmbedding
9
- } from "./chunk-4CAVT2YC.js";
9
+ } from "./chunk-3VLXFYCM.js";
10
10
  import {
11
11
  deepMerge
12
- } from "./chunk-O6ASHXPO.js";
12
+ } from "./chunk-T2KXS7WW.js";
13
13
 
14
14
  // src/foundation-models-embedding-model-strategy.ts
15
15
  var FoundationModelsEmbeddingModelStrategy = class extends BaseEmbeddingModelStrategy {
@@ -56,4 +56,4 @@ var FoundationModelsEmbeddingModelStrategy = class extends BaseEmbeddingModelStr
56
56
  export {
57
57
  FoundationModelsEmbeddingModelStrategy
58
58
  };
59
- //# sourceMappingURL=foundation-models-embedding-model-strategy-XJV5REFR.js.map
59
+ //# sourceMappingURL=foundation-models-embedding-model-strategy-FO5RWBZ2.js.map
@@ -1,14 +1,16 @@
1
1
  import {createRequire as __createRequire} from 'module';var require=__createRequire(import.meta.url);
2
2
  import {
3
3
  BaseLanguageModelStrategy
4
- } from "./chunk-3M6NFVCS.js";
4
+ } from "./chunk-NRLDO6VY.js";
5
5
  import "./chunk-SD6CRCHX.js";
6
6
  import {
7
7
  buildModelDeployment,
8
8
  convertResponseFormat,
9
9
  convertToolsToSAPFormat
10
- } from "./chunk-4CAVT2YC.js";
11
- import "./chunk-O6ASHXPO.js";
10
+ } from "./chunk-3VLXFYCM.js";
11
+ import {
12
+ normalizeHeaders
13
+ } from "./chunk-T2KXS7WW.js";
12
14
 
13
15
  // src/foundation-models-language-model-strategy.ts
14
16
  var FOUNDATION_MODELS_PARAM_MAPPINGS = [
@@ -57,13 +59,16 @@ var FoundationModelsLanguageModelStrategy = class extends BaseLanguageModelStrat
57
59
  }
58
60
  async executeApiCall(client, request, abortSignal) {
59
61
  const response = await client.run(request, abortSignal ? { signal: abortSignal } : void 0);
62
+ const headers = normalizeHeaders(response.rawResponse.headers);
63
+ const completionId = response._data?.id ?? headers?.["x-request-id"];
60
64
  return {
61
65
  getContent: () => response.getContent(),
62
66
  getFinishReason: () => response.getFinishReason(),
63
67
  getTokenUsage: () => response.getTokenUsage(),
64
68
  getToolCalls: () => response.getToolCalls(),
65
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
66
- rawResponse: { headers: response.rawResponse.headers }
69
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- SAP SDK types headers as any
70
+ rawResponse: { headers: response.rawResponse.headers },
71
+ responseId: completionId
67
72
  };
68
73
  }
69
74
  async executeStreamCall(client, request, abortSignal, _settings) {
@@ -84,4 +89,4 @@ var FoundationModelsLanguageModelStrategy = class extends BaseLanguageModelStrat
84
89
  export {
85
90
  FoundationModelsLanguageModelStrategy
86
91
  };
87
- //# sourceMappingURL=foundation-models-language-model-strategy-X6VNJZFG.js.map
92
+ //# sourceMappingURL=foundation-models-language-model-strategy-COZPNAJ3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/foundation-models-language-model-strategy.ts"],"sourcesContent":["/** Foundation Models language model strategy using `@sap-ai-sdk/foundation-models`. */\nimport type { LanguageModelV3CallOptions, SharedV3Warning } from \"@ai-sdk/provider\";\nimport type {\n AzureOpenAiChatClient,\n AzureOpenAiChatCompletionParameters,\n AzureOpenAiChatCompletionTool,\n} from \"@sap-ai-sdk/foundation-models\";\nimport type { ChatMessage } from \"@sap-ai-sdk/orchestration\";\n\nimport type { FoundationModelsModelSettings } from \"./sap-ai-settings.js\";\nimport type { LanguageModelStrategyConfig } from \"./sap-ai-strategy.js\";\n\nimport {\n BaseLanguageModelStrategy,\n type CommonBuildResult,\n type StreamCallResponse,\n} from \"./base-language-model-strategy.js\";\nimport { normalizeHeaders } from \"./sap-ai-error.js\";\nimport {\n type AISDKTool,\n buildModelDeployment,\n convertResponseFormat,\n convertToolsToSAPFormat,\n type ParamMapping,\n type SAPToolChoice,\n type SDKResponse,\n type SDKStreamChunk,\n} from \"./strategy-utils.js\";\n\n/** @internal */\ntype FoundationModelsClient = InstanceType<typeof AzureOpenAiChatClient>;\n\n/**\n * Foundation Models API parameter mappings.\n * @internal\n */\nconst FOUNDATION_MODELS_PARAM_MAPPINGS: readonly ParamMapping[] = [\n ...BaseLanguageModelStrategy.COMMON_PARAM_MAPPINGS,\n { camelCaseKey: \"logprobs\", outputKey: \"logprobs\" },\n { camelCaseKey: \"topLogprobs\", outputKey: \"top_logprobs\" },\n { camelCaseKey: \"logitBias\", outputKey: \"logit_bias\" },\n { camelCaseKey: \"user\", outputKey: \"user\" },\n { camelCaseKey: \"n\", outputKey: \"n\" },\n] as const;\n\n/**\n * Language model strategy for the Foundation Models API.\n *\n * Provides direct access to Azure OpenAI models with parameters like:\n * - logprobs\n * - seed\n * - dataSources (On Your Data)\n * @internal\n */\nexport class FoundationModelsLanguageModelStrategy extends BaseLanguageModelStrategy<\n FoundationModelsClient,\n AzureOpenAiChatCompletionParameters,\n FoundationModelsModelSettings\n> {\n private readonly ClientClass: typeof AzureOpenAiChatClient;\n\n constructor(ClientClass: typeof AzureOpenAiChatClient) {\n super();\n this.ClientClass = ClientClass;\n }\n\n protected buildRequest(\n config: LanguageModelStrategyConfig,\n settings: FoundationModelsModelSettings,\n options: LanguageModelV3CallOptions,\n commonParts: CommonBuildResult<ChatMessage[], SAPToolChoice | undefined>,\n ): {\n readonly request: AzureOpenAiChatCompletionParameters;\n readonly warnings: SharedV3Warning[];\n } {\n const warnings: SharedV3Warning[] = [];\n\n const toolsResult = convertToolsToSAPFormat<AzureOpenAiChatCompletionTool>(\n options.tools as AISDKTool[] | undefined,\n );\n warnings.push(...toolsResult.warnings);\n\n const { responseFormat, warning: responseFormatWarning } = convertResponseFormat(\n options.responseFormat,\n settings.responseFormat,\n );\n if (responseFormatWarning) {\n warnings.push(responseFormatWarning);\n }\n\n const { toolChoice } = commonParts;\n\n const request: AzureOpenAiChatCompletionParameters = {\n messages: commonParts.messages as AzureOpenAiChatCompletionParameters[\"messages\"],\n ...commonParts.modelParams,\n ...(toolsResult.tools?.length ? { tools: toolsResult.tools } : {}),\n ...(toolChoice ? { tool_choice: toolChoice } : {}),\n ...(responseFormat ? { response_format: responseFormat } : {}),\n ...(settings.dataSources?.length\n ? {\n data_sources:\n settings.dataSources as AzureOpenAiChatCompletionParameters[\"data_sources\"],\n }\n : {}),\n };\n\n return { request, warnings };\n }\n\n protected createClient(\n config: LanguageModelStrategyConfig,\n settings: FoundationModelsModelSettings,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _commonParts: CommonBuildResult<ChatMessage[], SAPToolChoice | undefined>,\n ): FoundationModelsClient {\n const modelDeployment = buildModelDeployment(config, settings.modelVersion);\n return new this.ClientClass(modelDeployment, config.destination);\n }\n\n protected async executeApiCall(\n client: FoundationModelsClient,\n request: AzureOpenAiChatCompletionParameters,\n abortSignal: AbortSignal | undefined,\n ): Promise<SDKResponse> {\n const response = await client.run(request, abortSignal ? { signal: abortSignal } : undefined);\n\n const headers = normalizeHeaders(response.rawResponse.headers);\n\n // Extract completion ID from SDK internal data (chatcmpl-xxx style).\n // Falls back to the x-request-id header if not available.\n const completionId =\n (response as { _data?: { id?: string } })._data?.id ?? headers?.[\"x-request-id\"];\n\n return {\n getContent: () => response.getContent(),\n getFinishReason: () => response.getFinishReason(),\n getTokenUsage: () => response.getTokenUsage(),\n getToolCalls: () => response.getToolCalls(),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- SAP SDK types headers as any\n rawResponse: { headers: response.rawResponse.headers },\n responseId: completionId,\n };\n }\n\n protected async executeStreamCall(\n client: FoundationModelsClient,\n request: AzureOpenAiChatCompletionParameters,\n abortSignal: AbortSignal | undefined,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _settings: FoundationModelsModelSettings,\n ): Promise<StreamCallResponse> {\n const streamResponse = await client.stream(request, abortSignal);\n\n // AzureOpenAiChatCompletionStreamResponse exposes neither rawResponse nor _data.\n // Response headers and completion ID are unavailable — base strategy falls back to UUID.\n return {\n getFinishReason: () => streamResponse.getFinishReason(),\n getTokenUsage: () => streamResponse.getTokenUsage(),\n stream: streamResponse.stream as AsyncIterable<SDKStreamChunk>,\n };\n }\n\n protected getParamMappings(): readonly ParamMapping[] {\n return FOUNDATION_MODELS_PARAM_MAPPINGS;\n }\n\n protected getUrl(): string {\n return \"sap-ai:foundation-models\";\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAoCA,IAAM,mCAA4D;AAAA,EAChE,GAAG,0BAA0B;AAAA,EAC7B,EAAE,cAAc,YAAY,WAAW,WAAW;AAAA,EAClD,EAAE,cAAc,eAAe,WAAW,eAAe;AAAA,EACzD,EAAE,cAAc,aAAa,WAAW,aAAa;AAAA,EACrD,EAAE,cAAc,QAAQ,WAAW,OAAO;AAAA,EAC1C,EAAE,cAAc,KAAK,WAAW,IAAI;AACtC;AAWO,IAAM,wCAAN,cAAoD,0BAIzD;AAAA,EACiB;AAAA,EAEjB,YAAY,aAA2C;AACrD,UAAM;AACN,SAAK,cAAc;AAAA,EACrB;AAAA,EAEU,aACR,QACA,UACA,SACA,aAIA;AACA,UAAM,WAA8B,CAAC;AAErC,UAAM,cAAc;AAAA,MAClB,QAAQ;AAAA,IACV;AACA,aAAS,KAAK,GAAG,YAAY,QAAQ;AAErC,UAAM,EAAE,gBAAgB,SAAS,sBAAsB,IAAI;AAAA,MACzD,QAAQ;AAAA,MACR,SAAS;AAAA,IACX;AACA,QAAI,uBAAuB;AACzB,eAAS,KAAK,qBAAqB;AAAA,IACrC;AAEA,UAAM,EAAE,WAAW,IAAI;AAEvB,UAAM,UAA+C;AAAA,MACnD,UAAU,YAAY;AAAA,MACtB,GAAG,YAAY;AAAA,MACf,GAAI,YAAY,OAAO,SAAS,EAAE,OAAO,YAAY,MAAM,IAAI,CAAC;AAAA,MAChE,GAAI,aAAa,EAAE,aAAa,WAAW,IAAI,CAAC;AAAA,MAChD,GAAI,iBAAiB,EAAE,iBAAiB,eAAe,IAAI,CAAC;AAAA,MAC5D,GAAI,SAAS,aAAa,SACtB;AAAA,QACE,cACE,SAAS;AAAA,MACb,IACA,CAAC;AAAA,IACP;AAEA,WAAO,EAAE,SAAS,SAAS;AAAA,EAC7B;AAAA,EAEU,aACR,QACA,UAEA,cACwB;AACxB,UAAM,kBAAkB,qBAAqB,QAAQ,SAAS,YAAY;AAC1E,WAAO,IAAI,KAAK,YAAY,iBAAiB,OAAO,WAAW;AAAA,EACjE;AAAA,EAEA,MAAgB,eACd,QACA,SACA,aACsB;AACtB,UAAM,WAAW,MAAM,OAAO,IAAI,SAAS,cAAc,EAAE,QAAQ,YAAY,IAAI,MAAS;AAE5F,UAAM,UAAU,iBAAiB,SAAS,YAAY,OAAO;AAI7D,UAAM,eACH,SAAyC,OAAO,MAAM,UAAU,cAAc;AAEjF,WAAO;AAAA,MACL,YAAY,MAAM,SAAS,WAAW;AAAA,MACtC,iBAAiB,MAAM,SAAS,gBAAgB;AAAA,MAChD,eAAe,MAAM,SAAS,cAAc;AAAA,MAC5C,cAAc,MAAM,SAAS,aAAa;AAAA;AAAA,MAE1C,aAAa,EAAE,SAAS,SAAS,YAAY,QAAQ;AAAA,MACrD,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EAEA,MAAgB,kBACd,QACA,SACA,aAEA,WAC6B;AAC7B,UAAM,iBAAiB,MAAM,OAAO,OAAO,SAAS,WAAW;AAI/D,WAAO;AAAA,MACL,iBAAiB,MAAM,eAAe,gBAAgB;AAAA,MACtD,eAAe,MAAM,eAAe,cAAc;AAAA,MAClD,QAAQ,eAAe;AAAA,IACzB;AAAA,EACF;AAAA,EAEU,mBAA4C;AACpD,WAAO;AAAA,EACT;AAAA,EAEU,SAAiB;AACzB,WAAO;AAAA,EACT;AACF;","names":[]}