@jerome-benoit/sap-ai-provider-v2 4.6.0 → 4.6.2

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 (33) hide show
  1. package/dist/{chunk-WYDTQDMJ.js → chunk-7HX5A5XW.js} +4 -4
  2. package/dist/chunk-7HX5A5XW.js.map +1 -0
  3. package/dist/{chunk-DQXZH6CW.js → chunk-IIBSUXGT.js} +3 -2
  4. package/dist/chunk-IIBSUXGT.js.map +1 -0
  5. package/dist/{chunk-BV5Y6RMC.js → chunk-M6USM33F.js} +11 -4
  6. package/dist/chunk-M6USM33F.js.map +1 -0
  7. package/dist/{chunk-DBAIFR3B.js → chunk-TE3CYVU3.js} +64 -64
  8. package/dist/{chunk-DBAIFR3B.js.map → chunk-TE3CYVU3.js.map} +1 -1
  9. package/dist/{chunk-KS5QNMYZ.js → chunk-WO5UACI5.js} +23 -21
  10. package/dist/chunk-WO5UACI5.js.map +1 -0
  11. package/dist/{foundation-models-embedding-model-strategy-XLD3PGCK.js → foundation-models-embedding-model-strategy-A6CA7NXP.js} +5 -10
  12. package/dist/foundation-models-embedding-model-strategy-A6CA7NXP.js.map +1 -0
  13. package/dist/{foundation-models-language-model-strategy-SNBZBWX4.js → foundation-models-language-model-strategy-DZMPSOJK.js} +6 -6
  14. package/dist/foundation-models-language-model-strategy-DZMPSOJK.js.map +1 -0
  15. package/dist/index.cjs +197 -218
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts +1 -1
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.js +102 -125
  20. package/dist/index.js.map +1 -1
  21. package/dist/{orchestration-embedding-model-strategy-6BKD5NW7.js → orchestration-embedding-model-strategy-M3POCUFM.js} +5 -10
  22. package/dist/orchestration-embedding-model-strategy-M3POCUFM.js.map +1 -0
  23. package/dist/{orchestration-language-model-strategy-OYSEPGQG.js → orchestration-language-model-strategy-Q3LPRWX5.js} +5 -5
  24. package/dist/orchestration-language-model-strategy-Q3LPRWX5.js.map +1 -0
  25. package/package.json +2 -2
  26. package/dist/chunk-BV5Y6RMC.js.map +0 -1
  27. package/dist/chunk-DQXZH6CW.js.map +0 -1
  28. package/dist/chunk-KS5QNMYZ.js.map +0 -1
  29. package/dist/chunk-WYDTQDMJ.js.map +0 -1
  30. package/dist/foundation-models-embedding-model-strategy-XLD3PGCK.js.map +0 -1
  31. package/dist/foundation-models-language-model-strategy-SNBZBWX4.js.map +0 -1
  32. package/dist/orchestration-embedding-model-strategy-6BKD5NW7.js.map +0 -1
  33. package/dist/orchestration-language-model-strategy-OYSEPGQG.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -145,7 +145,8 @@ function convertToSAPMessages(prompt, options = {}) {
145
145
  } else {
146
146
  contentParts.push({
147
147
  file: {
148
- file_data: fileDataUrl
148
+ file_data: fileDataUrl,
149
+ ...part.filename ? { filename: part.filename } : {}
149
150
  },
150
151
  type: "file"
151
152
  });
@@ -330,6 +331,73 @@ var init_sap_ai_provider_options = __esm({
330
331
  }
331
332
  });
332
333
 
334
+ // src/deep-merge.ts
335
+ function deepMerge(...sources) {
336
+ let result = {};
337
+ for (const source of sources) {
338
+ if (source == null) continue;
339
+ result = mergeTwo(result, source, /* @__PURE__ */ new Set(), 0);
340
+ }
341
+ return result;
342
+ }
343
+ function cloneDeep(obj, ancestors, depth) {
344
+ if (depth > MAX_DEPTH) {
345
+ throw new Error("Maximum merge depth exceeded");
346
+ }
347
+ if (ancestors.has(obj)) {
348
+ throw new Error("Circular reference detected during deep merge");
349
+ }
350
+ ancestors.add(obj);
351
+ const result = {};
352
+ for (const key of Object.keys(obj)) {
353
+ if (!isSafeKey(key)) continue;
354
+ const value = obj[key];
355
+ result[key] = isPlainObject(value) ? cloneDeep(value, ancestors, depth + 1) : value;
356
+ }
357
+ ancestors.delete(obj);
358
+ return result;
359
+ }
360
+ function isPlainObject(value) {
361
+ if (value === null || typeof value !== "object") return false;
362
+ const proto = Object.getPrototypeOf(value);
363
+ return proto === Object.prototype || proto === null;
364
+ }
365
+ function isSafeKey(key) {
366
+ return !DANGEROUS_KEYS.has(key);
367
+ }
368
+ function mergeTwo(target, source, ancestors, depth) {
369
+ if (depth > MAX_DEPTH) {
370
+ throw new Error("Maximum merge depth exceeded");
371
+ }
372
+ if (ancestors.has(source)) {
373
+ throw new Error("Circular reference detected during deep merge");
374
+ }
375
+ ancestors.add(source);
376
+ for (const key of Object.keys(source)) {
377
+ if (!isSafeKey(key)) continue;
378
+ const sourceValue = source[key];
379
+ const targetValue = target[key];
380
+ if (isPlainObject(sourceValue) && isPlainObject(targetValue)) {
381
+ const cloned = cloneDeep(targetValue, /* @__PURE__ */ new Set(), depth + 1);
382
+ target[key] = mergeTwo(cloned, sourceValue, ancestors, depth + 1);
383
+ } else if (isPlainObject(sourceValue)) {
384
+ target[key] = cloneDeep(sourceValue, /* @__PURE__ */ new Set(), depth + 1);
385
+ } else {
386
+ target[key] = sourceValue;
387
+ }
388
+ }
389
+ ancestors.delete(source);
390
+ return target;
391
+ }
392
+ var DANGEROUS_KEYS, MAX_DEPTH;
393
+ var init_deep_merge = __esm({
394
+ "src/deep-merge.ts"() {
395
+ "use strict";
396
+ DANGEROUS_KEYS = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
397
+ MAX_DEPTH = 100;
398
+ }
399
+ });
400
+
333
401
  // node_modules/@sap-cloud-sdk/util/dist/array.js
334
402
  var require_array = __commonJS({
335
403
  "node_modules/@sap-cloud-sdk/util/dist/array.js"(exports2) {
@@ -30693,73 +30761,6 @@ The model's response was blocked by content safety filters. Try a different prom
30693
30761
  }
30694
30762
  });
30695
30763
 
30696
- // src/deep-merge.ts
30697
- function deepMerge(...sources) {
30698
- let result = {};
30699
- for (const source of sources) {
30700
- if (source == null) continue;
30701
- result = mergeTwo(result, source, /* @__PURE__ */ new Set(), 0);
30702
- }
30703
- return result;
30704
- }
30705
- function cloneDeep(obj, ancestors, depth) {
30706
- if (depth > MAX_DEPTH) {
30707
- throw new Error("Maximum merge depth exceeded");
30708
- }
30709
- if (ancestors.has(obj)) {
30710
- throw new Error("Circular reference detected during deep merge");
30711
- }
30712
- ancestors.add(obj);
30713
- const result = {};
30714
- for (const key of Object.keys(obj)) {
30715
- if (!isSafeKey(key)) continue;
30716
- const value = obj[key];
30717
- result[key] = isPlainObject(value) ? cloneDeep(value, ancestors, depth + 1) : value;
30718
- }
30719
- ancestors.delete(obj);
30720
- return result;
30721
- }
30722
- function isPlainObject(value) {
30723
- if (value === null || typeof value !== "object") return false;
30724
- const proto = Object.getPrototypeOf(value);
30725
- return proto === Object.prototype || proto === null;
30726
- }
30727
- function isSafeKey(key) {
30728
- return !DANGEROUS_KEYS.has(key);
30729
- }
30730
- function mergeTwo(target, source, ancestors, depth) {
30731
- if (depth > MAX_DEPTH) {
30732
- throw new Error("Maximum merge depth exceeded");
30733
- }
30734
- if (ancestors.has(source)) {
30735
- throw new Error("Circular reference detected during deep merge");
30736
- }
30737
- ancestors.add(source);
30738
- for (const key of Object.keys(source)) {
30739
- if (!isSafeKey(key)) continue;
30740
- const sourceValue = source[key];
30741
- const targetValue = target[key];
30742
- if (isPlainObject(sourceValue) && isPlainObject(targetValue)) {
30743
- const cloned = cloneDeep(targetValue, /* @__PURE__ */ new Set(), depth + 1);
30744
- target[key] = mergeTwo(cloned, sourceValue, ancestors, depth + 1);
30745
- } else if (isPlainObject(sourceValue)) {
30746
- target[key] = cloneDeep(sourceValue, /* @__PURE__ */ new Set(), depth + 1);
30747
- } else {
30748
- target[key] = sourceValue;
30749
- }
30750
- }
30751
- ancestors.delete(source);
30752
- return target;
30753
- }
30754
- var DANGEROUS_KEYS, MAX_DEPTH;
30755
- var init_deep_merge = __esm({
30756
- "src/deep-merge.ts"() {
30757
- "use strict";
30758
- DANGEROUS_KEYS = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
30759
- MAX_DEPTH = 100;
30760
- }
30761
- });
30762
-
30763
30764
  // src/strategy-utils.ts
30764
30765
  function applyParameterOverrides(modelParams, options, sapModelParams, settingsModelParams, mappings) {
30765
30766
  for (const mapping of mappings) {
@@ -30836,19 +30837,7 @@ function buildGenerateResult(config) {
30836
30837
  modelId,
30837
30838
  timestamp: /* @__PURE__ */ new Date()
30838
30839
  },
30839
- usage: {
30840
- inputTokens: {
30841
- cacheRead: tokenUsage?.prompt_tokens_details?.cached_tokens,
30842
- cacheWrite: void 0,
30843
- noCache: tokenUsage?.prompt_tokens_details?.cached_tokens != null ? (tokenUsage.prompt_tokens ?? 0) - tokenUsage.prompt_tokens_details.cached_tokens : tokenUsage?.prompt_tokens,
30844
- total: tokenUsage?.prompt_tokens
30845
- },
30846
- outputTokens: {
30847
- reasoning: tokenUsage?.completion_tokens_details?.reasoning_tokens,
30848
- text: tokenUsage?.completion_tokens_details?.reasoning_tokens != null ? (tokenUsage.completion_tokens ?? 0) - tokenUsage.completion_tokens_details.reasoning_tokens : tokenUsage?.completion_tokens,
30849
- total: tokenUsage?.completion_tokens
30850
- }
30851
- },
30840
+ usage: mapTokenUsage(tokenUsage),
30852
30841
  warnings
30853
30842
  };
30854
30843
  }
@@ -31078,12 +31067,9 @@ function createStreamTransformer(config) {
31078
31067
  }
31079
31068
  const finalUsage = streamResponseGetTokenUsage();
31080
31069
  if (finalUsage) {
31081
- streamState.usage.inputTokens.total = finalUsage.prompt_tokens;
31082
- streamState.usage.inputTokens.cacheRead = finalUsage.prompt_tokens_details?.cached_tokens;
31083
- streamState.usage.inputTokens.noCache = finalUsage.prompt_tokens_details?.cached_tokens != null ? (finalUsage.prompt_tokens ?? 0) - finalUsage.prompt_tokens_details.cached_tokens : finalUsage.prompt_tokens;
31084
- streamState.usage.outputTokens.total = finalUsage.completion_tokens;
31085
- streamState.usage.outputTokens.reasoning = finalUsage.completion_tokens_details?.reasoning_tokens;
31086
- streamState.usage.outputTokens.text = finalUsage.completion_tokens_details?.reasoning_tokens != null ? (finalUsage.completion_tokens ?? 0) - finalUsage.completion_tokens_details.reasoning_tokens : finalUsage.completion_tokens;
31070
+ const mapped = mapTokenUsage(finalUsage);
31071
+ streamState.usage.inputTokens = mapped.inputTokens;
31072
+ streamState.usage.outputTokens = mapped.outputTokens;
31087
31073
  }
31088
31074
  const streamCitations = streamResponseGetCitations?.();
31089
31075
  if (streamCitations?.length) {
@@ -31343,6 +31329,23 @@ function mapFinishReason(reason) {
31343
31329
  return { raw, unified: "other" };
31344
31330
  }
31345
31331
  }
31332
+ function mapTokenUsage(tokenUsage) {
31333
+ const cachedTokens = tokenUsage?.prompt_tokens_details?.cached_tokens;
31334
+ const reasoningTokens = tokenUsage?.completion_tokens_details?.reasoning_tokens;
31335
+ return {
31336
+ inputTokens: {
31337
+ cacheRead: cachedTokens,
31338
+ cacheWrite: void 0,
31339
+ noCache: cachedTokens != null ? (tokenUsage?.prompt_tokens ?? 0) - cachedTokens : tokenUsage?.prompt_tokens,
31340
+ total: tokenUsage?.prompt_tokens
31341
+ },
31342
+ outputTokens: {
31343
+ reasoning: reasoningTokens,
31344
+ text: reasoningTokens != null ? (tokenUsage?.completion_tokens ?? 0) - reasoningTokens : tokenUsage?.completion_tokens,
31345
+ total: tokenUsage?.completion_tokens
31346
+ }
31347
+ };
31348
+ }
31346
31349
  function mapToolChoice(toolChoice) {
31347
31350
  if (!toolChoice) {
31348
31351
  return void 0;
@@ -31433,7 +31436,7 @@ var VERSION;
31433
31436
  var init_version = __esm({
31434
31437
  "src/version.ts"() {
31435
31438
  "use strict";
31436
- VERSION = true ? "4.6.0" : "0.0.0-test";
31439
+ VERSION = true ? "4.6.2" : "0.0.0-test";
31437
31440
  }
31438
31441
  });
31439
31442
 
@@ -31442,6 +31445,7 @@ var BaseEmbeddingModelStrategy;
31442
31445
  var init_base_embedding_model_strategy = __esm({
31443
31446
  "src/base-embedding-model-strategy.ts"() {
31444
31447
  "use strict";
31448
+ init_deep_merge();
31445
31449
  init_sap_ai_error();
31446
31450
  init_strategy_utils();
31447
31451
  init_version();
@@ -31482,6 +31486,12 @@ var init_base_embedding_model_strategy = __esm({
31482
31486
  });
31483
31487
  }
31484
31488
  }
31489
+ mergeModelParams(settings, embeddingOptions) {
31490
+ return deepMerge(
31491
+ settings.modelParams ?? {},
31492
+ embeddingOptions?.modelParams ?? {}
31493
+ );
31494
+ }
31485
31495
  };
31486
31496
  }
31487
31497
  });
@@ -31496,7 +31506,6 @@ var init_foundation_models_embedding_model_strategy = __esm({
31496
31506
  "src/foundation-models-embedding-model-strategy.ts"() {
31497
31507
  "use strict";
31498
31508
  init_base_embedding_model_strategy();
31499
- init_deep_merge();
31500
31509
  init_strategy_utils();
31501
31510
  FoundationModelsEmbeddingModelStrategy = class extends BaseEmbeddingModelStrategy {
31502
31511
  ClientClass;
@@ -31505,10 +31514,7 @@ var init_foundation_models_embedding_model_strategy = __esm({
31505
31514
  this.ClientClass = ClientClass;
31506
31515
  }
31507
31516
  createClient(config, settings, embeddingOptions) {
31508
- const mergedParams = deepMerge(
31509
- settings.modelParams ?? {},
31510
- embeddingOptions?.modelParams ?? {}
31511
- );
31517
+ const mergedParams = this.mergeModelParams(settings, embeddingOptions);
31512
31518
  return {
31513
31519
  client: new this.ClientClass(
31514
31520
  buildModelDeployment(config, settings.modelVersion),
@@ -31552,7 +31558,6 @@ var init_orchestration_embedding_model_strategy = __esm({
31552
31558
  "src/orchestration-embedding-model-strategy.ts"() {
31553
31559
  "use strict";
31554
31560
  init_base_embedding_model_strategy();
31555
- init_deep_merge();
31556
31561
  init_strategy_utils();
31557
31562
  OrchestrationEmbeddingModelStrategy = class extends BaseEmbeddingModelStrategy {
31558
31563
  ClientClass;
@@ -31561,10 +31566,7 @@ var init_orchestration_embedding_model_strategy = __esm({
31561
31566
  this.ClientClass = ClientClass;
31562
31567
  }
31563
31568
  createClient(config, settings, embeddingOptions) {
31564
- const mergedParams = deepMerge(
31565
- settings.modelParams ?? {},
31566
- embeddingOptions?.modelParams ?? {}
31567
- );
31569
+ const mergedParams = this.mergeModelParams(settings, embeddingOptions);
31568
31570
  const embeddingConfig = {
31569
31571
  model: {
31570
31572
  name: config.modelId,
@@ -31803,7 +31805,7 @@ var init_foundation_models_language_model_strategy = __esm({
31803
31805
  super();
31804
31806
  this.ClientClass = ClientClass;
31805
31807
  }
31806
- buildRequest(config, settings, options, commonParts) {
31808
+ buildRequest(_config, settings, options, commonParts) {
31807
31809
  const warnings = [];
31808
31810
  const toolsResult = convertToolsToSAPFormat(
31809
31811
  options.tools
@@ -32419,44 +32421,34 @@ function convertStreamPartToV2(internalPart) {
32419
32421
  type: "file"
32420
32422
  };
32421
32423
  case "finish":
32422
- return {
32423
- finishReason: convertFinishReasonToV2(internalPart.finishReason),
32424
- type: "finish",
32425
- usage: convertUsageToV2(internalPart.usage),
32426
- ...internalPart.providerMetadata !== void 0 && {
32427
- providerMetadata: convertProviderMetadataToV2(internalPart.providerMetadata)
32428
- }
32429
- };
32424
+ return withProviderMetadata(
32425
+ {
32426
+ finishReason: convertFinishReasonToV2(internalPart.finishReason),
32427
+ type: "finish",
32428
+ usage: convertUsageToV2(internalPart.usage)
32429
+ },
32430
+ internalPart.providerMetadata
32431
+ );
32430
32432
  case "raw":
32431
32433
  return {
32432
32434
  rawValue: internalPart.rawValue,
32433
32435
  type: "raw"
32434
32436
  };
32435
32437
  case "reasoning-delta":
32436
- return {
32437
- delta: internalPart.delta,
32438
- id: internalPart.id,
32439
- type: "reasoning-delta",
32440
- ...internalPart.providerMetadata !== void 0 && {
32441
- providerMetadata: convertProviderMetadataToV2(internalPart.providerMetadata)
32442
- }
32443
- };
32438
+ return withProviderMetadata(
32439
+ { delta: internalPart.delta, id: internalPart.id, type: "reasoning-delta" },
32440
+ internalPart.providerMetadata
32441
+ );
32444
32442
  case "reasoning-end":
32445
- return {
32446
- id: internalPart.id,
32447
- type: "reasoning-end",
32448
- ...internalPart.providerMetadata !== void 0 && {
32449
- providerMetadata: convertProviderMetadataToV2(internalPart.providerMetadata)
32450
- }
32451
- };
32443
+ return withProviderMetadata(
32444
+ { id: internalPart.id, type: "reasoning-end" },
32445
+ internalPart.providerMetadata
32446
+ );
32452
32447
  case "reasoning-start":
32453
- return {
32454
- id: internalPart.id,
32455
- type: "reasoning-start",
32456
- ...internalPart.providerMetadata !== void 0 && {
32457
- providerMetadata: convertProviderMetadataToV2(internalPart.providerMetadata)
32458
- }
32459
- };
32448
+ return withProviderMetadata(
32449
+ { id: internalPart.id, type: "reasoning-start" },
32450
+ internalPart.providerMetadata
32451
+ );
32460
32452
  case "response-metadata":
32461
32453
  return {
32462
32454
  id: internalPart.id,
@@ -32466,114 +32458,97 @@ function convertStreamPartToV2(internalPart) {
32466
32458
  };
32467
32459
  case "source":
32468
32460
  if (internalPart.sourceType === "url") {
32469
- return {
32461
+ return withProviderMetadata(
32462
+ {
32463
+ id: internalPart.id,
32464
+ sourceType: "url",
32465
+ title: internalPart.title,
32466
+ type: "source",
32467
+ url: internalPart.url
32468
+ },
32469
+ internalPart.providerMetadata
32470
+ );
32471
+ }
32472
+ return withProviderMetadata(
32473
+ {
32474
+ filename: internalPart.filename,
32470
32475
  id: internalPart.id,
32471
- sourceType: "url",
32476
+ mediaType: internalPart.mediaType,
32477
+ sourceType: "document",
32472
32478
  title: internalPart.title,
32473
- type: "source",
32474
- url: internalPart.url,
32475
- ...internalPart.providerMetadata !== void 0 && {
32476
- providerMetadata: convertProviderMetadataToV2(internalPart.providerMetadata)
32477
- }
32478
- };
32479
- }
32480
- return {
32481
- filename: internalPart.filename,
32482
- id: internalPart.id,
32483
- mediaType: internalPart.mediaType,
32484
- sourceType: "document",
32485
- title: internalPart.title,
32486
- type: "source",
32487
- ...internalPart.providerMetadata !== void 0 && {
32488
- providerMetadata: convertProviderMetadataToV2(internalPart.providerMetadata)
32489
- }
32490
- };
32479
+ type: "source"
32480
+ },
32481
+ internalPart.providerMetadata
32482
+ );
32491
32483
  case "stream-start":
32492
32484
  return {
32493
32485
  type: "stream-start",
32494
32486
  warnings: convertWarningsToV2(internalPart.warnings)
32495
32487
  };
32496
32488
  case "text-delta":
32497
- return {
32498
- delta: internalPart.delta,
32499
- id: internalPart.id,
32500
- type: "text-delta",
32501
- ...internalPart.providerMetadata !== void 0 && {
32502
- providerMetadata: convertProviderMetadataToV2(internalPart.providerMetadata)
32503
- }
32504
- };
32489
+ return withProviderMetadata(
32490
+ { delta: internalPart.delta, id: internalPart.id, type: "text-delta" },
32491
+ internalPart.providerMetadata
32492
+ );
32505
32493
  case "text-end":
32506
- return {
32507
- id: internalPart.id,
32508
- type: "text-end",
32509
- ...internalPart.providerMetadata !== void 0 && {
32510
- providerMetadata: convertProviderMetadataToV2(internalPart.providerMetadata)
32511
- }
32512
- };
32494
+ return withProviderMetadata(
32495
+ { id: internalPart.id, type: "text-end" },
32496
+ internalPart.providerMetadata
32497
+ );
32513
32498
  case "text-start":
32514
- return {
32515
- id: internalPart.id,
32516
- type: "text-start",
32517
- ...internalPart.providerMetadata !== void 0 && {
32518
- providerMetadata: convertProviderMetadataToV2(internalPart.providerMetadata)
32519
- }
32520
- };
32499
+ return withProviderMetadata(
32500
+ { id: internalPart.id, type: "text-start" },
32501
+ internalPart.providerMetadata
32502
+ );
32521
32503
  case "tool-approval-request":
32522
32504
  return null;
32523
32505
  case "tool-call":
32524
- return {
32525
- input: internalPart.input,
32526
- toolCallId: internalPart.toolCallId,
32527
- toolName: internalPart.toolName,
32528
- type: "tool-call",
32529
- ...internalPart.providerExecuted !== void 0 && {
32530
- providerExecuted: internalPart.providerExecuted
32506
+ return withProviderMetadata(
32507
+ {
32508
+ input: internalPart.input,
32509
+ toolCallId: internalPart.toolCallId,
32510
+ toolName: internalPart.toolName,
32511
+ type: "tool-call",
32512
+ ...internalPart.providerExecuted !== void 0 && {
32513
+ providerExecuted: internalPart.providerExecuted
32514
+ }
32531
32515
  },
32532
- ...internalPart.providerMetadata !== void 0 && {
32533
- providerMetadata: convertProviderMetadataToV2(internalPart.providerMetadata)
32534
- }
32535
- };
32516
+ internalPart.providerMetadata
32517
+ );
32536
32518
  case "tool-input-delta":
32537
- return {
32538
- delta: internalPart.delta,
32539
- id: internalPart.id,
32540
- type: "tool-input-delta",
32541
- ...internalPart.providerMetadata !== void 0 && {
32542
- providerMetadata: convertProviderMetadataToV2(internalPart.providerMetadata)
32543
- }
32544
- };
32519
+ return withProviderMetadata(
32520
+ { delta: internalPart.delta, id: internalPart.id, type: "tool-input-delta" },
32521
+ internalPart.providerMetadata
32522
+ );
32545
32523
  case "tool-input-end":
32546
- return {
32547
- id: internalPart.id,
32548
- type: "tool-input-end",
32549
- ...internalPart.providerMetadata !== void 0 && {
32550
- providerMetadata: convertProviderMetadataToV2(internalPart.providerMetadata)
32551
- }
32552
- };
32524
+ return withProviderMetadata(
32525
+ { id: internalPart.id, type: "tool-input-end" },
32526
+ internalPart.providerMetadata
32527
+ );
32553
32528
  case "tool-input-start":
32554
- return {
32555
- id: internalPart.id,
32556
- toolName: internalPart.toolName,
32557
- type: "tool-input-start",
32558
- ...internalPart.providerExecuted !== void 0 && {
32559
- providerExecuted: internalPart.providerExecuted
32529
+ return withProviderMetadata(
32530
+ {
32531
+ id: internalPart.id,
32532
+ toolName: internalPart.toolName,
32533
+ type: "tool-input-start",
32534
+ ...internalPart.providerExecuted !== void 0 && {
32535
+ providerExecuted: internalPart.providerExecuted
32536
+ }
32560
32537
  },
32561
- ...internalPart.providerMetadata !== void 0 && {
32562
- providerMetadata: convertProviderMetadataToV2(internalPart.providerMetadata)
32563
- }
32564
- };
32538
+ internalPart.providerMetadata
32539
+ );
32565
32540
  case "tool-result":
32566
- return {
32567
- result: internalPart.result,
32568
- toolCallId: internalPart.toolCallId,
32569
- toolName: internalPart.toolName,
32570
- type: "tool-result",
32571
- ...internalPart.isError !== void 0 && { isError: internalPart.isError },
32572
- ...internalPart.dynamic !== void 0 && { providerExecuted: internalPart.dynamic },
32573
- ...internalPart.providerMetadata !== void 0 && {
32574
- providerMetadata: convertProviderMetadataToV2(internalPart.providerMetadata)
32575
- }
32576
- };
32541
+ return withProviderMetadata(
32542
+ {
32543
+ result: internalPart.result,
32544
+ toolCallId: internalPart.toolCallId,
32545
+ toolName: internalPart.toolName,
32546
+ type: "tool-result",
32547
+ ...internalPart.isError !== void 0 && { isError: internalPart.isError },
32548
+ ...internalPart.dynamic !== void 0 && { providerExecuted: internalPart.dynamic }
32549
+ },
32550
+ internalPart.providerMetadata
32551
+ );
32577
32552
  }
32578
32553
  }
32579
32554
  function convertUsageToV2(internalUsage) {
@@ -32618,6 +32593,10 @@ function createV2StreamFromInternal(internalStream) {
32618
32593
  })
32619
32594
  );
32620
32595
  }
32596
+ function withProviderMetadata(obj, metadata) {
32597
+ if (metadata === void 0) return obj;
32598
+ return { ...obj, providerMetadata: convertProviderMetadataToV2(metadata) };
32599
+ }
32621
32600
 
32622
32601
  // src/sap-ai-embedding-model.ts
32623
32602
  var import_provider_utils5 = require("@ai-sdk/provider-utils");