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

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