@langchain/google-common 2.1.18 → 2.1.19

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 (108) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/auth.cjs +1 -2
  3. package/dist/auth.cjs.map +1 -1
  4. package/dist/auth.d.cts.map +1 -1
  5. package/dist/auth.d.ts.map +1 -1
  6. package/dist/auth.js +1 -2
  7. package/dist/auth.js.map +1 -1
  8. package/dist/chat_models.cjs +24 -27
  9. package/dist/chat_models.cjs.map +1 -1
  10. package/dist/chat_models.d.cts.map +1 -1
  11. package/dist/chat_models.d.ts.map +1 -1
  12. package/dist/chat_models.js +7 -9
  13. package/dist/chat_models.js.map +1 -1
  14. package/dist/connection.cjs +16 -26
  15. package/dist/connection.cjs.map +1 -1
  16. package/dist/connection.d.cts.map +1 -1
  17. package/dist/connection.d.ts.map +1 -1
  18. package/dist/connection.js +13 -22
  19. package/dist/connection.js.map +1 -1
  20. package/dist/embeddings.cjs +12 -22
  21. package/dist/embeddings.cjs.map +1 -1
  22. package/dist/embeddings.d.cts +0 -1
  23. package/dist/embeddings.d.cts.map +1 -1
  24. package/dist/embeddings.d.ts +0 -1
  25. package/dist/embeddings.d.ts.map +1 -1
  26. package/dist/embeddings.js +7 -16
  27. package/dist/embeddings.js.map +1 -1
  28. package/dist/experimental/media.cjs +41 -70
  29. package/dist/experimental/media.cjs.map +1 -1
  30. package/dist/experimental/media.d.cts.map +1 -1
  31. package/dist/experimental/media.d.ts.map +1 -1
  32. package/dist/experimental/media.js +36 -65
  33. package/dist/experimental/media.js.map +1 -1
  34. package/dist/experimental/utils/media_core.cjs +22 -39
  35. package/dist/experimental/utils/media_core.cjs.map +1 -1
  36. package/dist/experimental/utils/media_core.d.cts.map +1 -1
  37. package/dist/experimental/utils/media_core.d.ts.map +1 -1
  38. package/dist/experimental/utils/media_core.js +16 -33
  39. package/dist/experimental/utils/media_core.js.map +1 -1
  40. package/dist/index.cjs +1 -0
  41. package/dist/llms.cjs +14 -19
  42. package/dist/llms.cjs.map +1 -1
  43. package/dist/llms.d.cts.map +1 -1
  44. package/dist/llms.d.ts.map +1 -1
  45. package/dist/llms.js +4 -8
  46. package/dist/llms.js.map +1 -1
  47. package/dist/output_parsers.cjs +12 -29
  48. package/dist/output_parsers.cjs.map +1 -1
  49. package/dist/output_parsers.d.cts.map +1 -1
  50. package/dist/output_parsers.d.ts.map +1 -1
  51. package/dist/output_parsers.js +10 -26
  52. package/dist/output_parsers.js.map +1 -1
  53. package/dist/profiles.cjs +100 -17
  54. package/dist/profiles.cjs.map +1 -1
  55. package/dist/profiles.js +100 -17
  56. package/dist/profiles.js.map +1 -1
  57. package/dist/types-anthropic.d.cts.map +1 -1
  58. package/dist/types-anthropic.d.ts.map +1 -1
  59. package/dist/types.cjs +1 -0
  60. package/dist/types.cjs.map +1 -1
  61. package/dist/types.d.cts +0 -1
  62. package/dist/types.d.cts.map +1 -1
  63. package/dist/types.d.ts +0 -1
  64. package/dist/types.d.ts.map +1 -1
  65. package/dist/types.js.map +1 -1
  66. package/dist/utils/anthropic.cjs +73 -113
  67. package/dist/utils/anthropic.cjs.map +1 -1
  68. package/dist/utils/anthropic.js +63 -102
  69. package/dist/utils/anthropic.js.map +1 -1
  70. package/dist/utils/common.cjs +10 -13
  71. package/dist/utils/common.cjs.map +1 -1
  72. package/dist/utils/common.d.cts.map +1 -1
  73. package/dist/utils/common.d.ts.map +1 -1
  74. package/dist/utils/common.js +6 -8
  75. package/dist/utils/common.js.map +1 -1
  76. package/dist/utils/failed_handler.cjs +1 -2
  77. package/dist/utils/failed_handler.cjs.map +1 -1
  78. package/dist/utils/failed_handler.d.cts.map +1 -1
  79. package/dist/utils/failed_handler.d.ts.map +1 -1
  80. package/dist/utils/failed_handler.js +1 -2
  81. package/dist/utils/failed_handler.js.map +1 -1
  82. package/dist/utils/gemini.cjs +83 -135
  83. package/dist/utils/gemini.cjs.map +1 -1
  84. package/dist/utils/gemini.d.cts.map +1 -1
  85. package/dist/utils/gemini.d.ts.map +1 -1
  86. package/dist/utils/gemini.js +58 -109
  87. package/dist/utils/gemini.js.map +1 -1
  88. package/dist/utils/index.cjs +1 -0
  89. package/dist/utils/palm.d.cts.map +1 -1
  90. package/dist/utils/palm.d.ts.map +1 -1
  91. package/dist/utils/safety.cjs.map +1 -1
  92. package/dist/utils/safety.d.cts.map +1 -1
  93. package/dist/utils/safety.d.ts.map +1 -1
  94. package/dist/utils/safety.js.map +1 -1
  95. package/dist/utils/stream.cjs +5 -9
  96. package/dist/utils/stream.cjs.map +1 -1
  97. package/dist/utils/stream.d.cts.map +1 -1
  98. package/dist/utils/stream.d.ts.map +1 -1
  99. package/dist/utils/stream.js +5 -9
  100. package/dist/utils/stream.js.map +1 -1
  101. package/dist/utils/zod_to_gemini_parameters.cjs +4 -7
  102. package/dist/utils/zod_to_gemini_parameters.cjs.map +1 -1
  103. package/dist/utils/zod_to_gemini_parameters.d.cts.map +1 -1
  104. package/dist/utils/zod_to_gemini_parameters.d.ts.map +1 -1
  105. package/dist/utils/zod_to_gemini_parameters.js +2 -4
  106. package/dist/utils/zod_to_gemini_parameters.js.map +1 -1
  107. package/package.json +3 -3
  108. package/dist/_virtual/rolldown_runtime.cjs +0 -25
@@ -18,14 +18,12 @@ var DefaultGeminiSafetyHandler = class {
18
18
  this.errorFinish = settings?.errorFinish ?? this.errorFinish;
19
19
  }
20
20
  handleDataPromptFeedback(response, data) {
21
- const promptFeedback = data?.promptFeedback;
22
- const blockReason = promptFeedback?.blockReason;
21
+ const blockReason = (data?.promptFeedback)?.blockReason;
23
22
  if (blockReason) throw new GoogleAISafetyError(response, `Prompt blocked: ${blockReason}`);
24
23
  return data;
25
24
  }
26
25
  handleDataFinishReason(response, data) {
27
- const firstCandidate = data?.candidates?.[0];
28
- const finishReason = firstCandidate?.finishReason;
26
+ const finishReason = (data?.candidates?.[0])?.finishReason;
29
27
  if (this.errorFinish.includes(finishReason)) throw new GoogleAISafetyError(response, `Finish reason: ${finishReason}`);
30
28
  return data;
31
29
  }
@@ -111,29 +109,25 @@ function inferMimeTypeFromUrl(url) {
111
109
  tif: "image/tiff"
112
110
  };
113
111
  try {
114
- const pathname = new URL(url).pathname;
115
- const extension = pathname.split(".").pop()?.toLowerCase().split(/[?#]/)[0];
112
+ const extension = new URL(url).pathname.split(".").pop()?.toLowerCase().split(/[?#]/)[0];
116
113
  return extension ? mimeTypeMap[extension] : void 0;
117
114
  } catch {
118
115
  const match = url.match(/\.([a-zA-Z0-9]+)(?:[?#]|$)/);
119
- if (match) {
120
- const extension = match[1].toLowerCase();
121
- return mimeTypeMap[extension];
122
- }
123
- return void 0;
116
+ if (match) return mimeTypeMap[match[1].toLowerCase()];
117
+ return;
124
118
  }
125
119
  }
126
120
  function normalizeSpeechConfig(config) {
127
- function isSpeechConfig(config$1) {
128
- return typeof config$1 === "object" && (Object.hasOwn(config$1, "voiceConfig") || Object.hasOwn(config$1, "multiSpeakerVoiceConfig"));
121
+ function isSpeechConfig(config) {
122
+ return typeof config === "object" && (Object.hasOwn(config, "voiceConfig") || Object.hasOwn(config, "multiSpeakerVoiceConfig"));
129
123
  }
130
- function hasLanguage(config$1) {
131
- return typeof config$1 === "object" && Object.hasOwn(config$1, "languageCode");
124
+ function hasLanguage(config) {
125
+ return typeof config === "object" && Object.hasOwn(config, "languageCode");
132
126
  }
133
- function hasVoice(config$1) {
134
- return Object.hasOwn(config$1, "voice");
127
+ function hasVoice(config) {
128
+ return Object.hasOwn(config, "voice");
135
129
  }
136
- if (typeof config === "undefined") return void 0;
130
+ if (typeof config === "undefined") return;
137
131
  if (isSpeechConfig(config)) return config;
138
132
  let languageCode;
139
133
  let voice;
@@ -146,14 +140,10 @@ function normalizeSpeechConfig(config) {
146
140
  }
147
141
  let ret;
148
142
  if (typeof voice === "string") ret = { voiceConfig: { prebuiltVoiceConfig: { voiceName: voice } } };
149
- else {
150
- const voices = Array.isArray(voice) ? voice : [voice];
151
- const speakerVoiceConfigs = voices.map((v) => ({
152
- speaker: v.speaker,
153
- voiceConfig: { prebuiltVoiceConfig: { voiceName: v.name } }
154
- }));
155
- ret = { multiSpeakerVoiceConfig: { speakerVoiceConfigs } };
156
- }
143
+ else ret = { multiSpeakerVoiceConfig: { speakerVoiceConfigs: (Array.isArray(voice) ? voice : [voice]).map((v) => ({
144
+ speaker: v.speaker,
145
+ voiceConfig: { prebuiltVoiceConfig: { voiceName: v.name } }
146
+ })) } };
157
147
  if (languageCode) ret.languageCode = languageCode;
158
148
  return ret;
159
149
  }
@@ -167,13 +157,10 @@ function getGeminiAPI(config) {
167
157
  if (!url) throw new Error("Missing Image URL");
168
158
  const mimeTypeAndData = extractMimeType(url);
169
159
  if (mimeTypeAndData) return { inlineData: mimeTypeAndData };
170
- else {
171
- const mimeType = inferMimeTypeFromUrl(url) || "image/png";
172
- return { fileData: {
173
- mimeType,
174
- fileUri: url
175
- } };
176
- }
160
+ else return { fileData: {
161
+ mimeType: inferMimeTypeFromUrl(url) || "image/png",
162
+ fileUri: url
163
+ } };
177
164
  }
178
165
  function messageContentImageUrl(content) {
179
166
  const ret = messageContentImageUrlData(content);
@@ -311,16 +298,13 @@ function getGeminiAPI(config) {
311
298
  return Promise.all(contents);
312
299
  }
313
300
  async function messageContentToParts(content) {
314
- const messageContent = typeof content === "string" ? [{
301
+ return (await messageContentComplexToParts(typeof content === "string" ? [{
315
302
  type: "text",
316
303
  text: content
317
- }] : content;
318
- const allParts = await messageContentComplexToParts(messageContent);
319
- const parts = allParts.reduce((acc, val) => {
304
+ }] : content)).reduce((acc, val) => {
320
305
  if (val) return [...acc, val];
321
306
  else return acc;
322
307
  }, []);
323
- return parts;
324
308
  }
325
309
  function messageToolCallsToParts(toolCalls) {
326
310
  if (!toolCalls || toolCalls.length === 0) return [];
@@ -370,12 +354,11 @@ function getGeminiAPI(config) {
370
354
  }, "");
371
355
  const responseName = (isAIMessage(prevMessage) && !!prevMessage.tool_calls?.length ? prevMessage.tool_calls[0].name : prevMessage.name) ?? message.tool_call_id;
372
356
  try {
373
- const content = JSON.parse(contentStr);
374
357
  return [{
375
358
  role: "function",
376
359
  parts: [{ functionResponse: {
377
360
  name: responseName,
378
- response: { content }
361
+ response: { content: JSON.parse(contentStr) }
379
362
  } }]
380
363
  }];
381
364
  } catch (_) {
@@ -426,8 +409,7 @@ function getGeminiAPI(config) {
426
409
  };
427
410
  }
428
411
  function inlineDataPartToMessageContent(part) {
429
- const mimeType = part?.inlineData?.mimeType ?? "";
430
- if (mimeType.startsWith("image")) return inlineDataPartToMessageContentImage(part);
412
+ if ((part?.inlineData?.mimeType ?? "").startsWith("image")) return inlineDataPartToMessageContentImage(part);
431
413
  else return inlineDataPartToMessageContentMedia(part);
432
414
  }
433
415
  function fileDataPartToMessageContent(part) {
@@ -493,31 +475,22 @@ function getGeminiAPI(config) {
493
475
  else return response.data;
494
476
  }
495
477
  function responseToParts(response) {
496
- const responseData = responseToGenerateContentResponseData(response);
497
- const parts = responseData?.candidates?.[0]?.content?.parts ?? [];
498
- return parts;
478
+ return responseToGenerateContentResponseData(response)?.candidates?.[0]?.content?.parts ?? [];
499
479
  }
500
480
  function partToText(part) {
501
481
  return "text" in part ? part.text : "";
502
482
  }
503
483
  function responseToString(response) {
504
- const parts = responseToParts(response);
505
- const ret = parts.reduce((acc, part) => {
506
- const val = partToText(part);
507
- return acc + val;
484
+ return responseToParts(response).reduce((acc, part) => {
485
+ return acc + partToText(part);
508
486
  }, "");
509
- return ret;
510
487
  }
511
488
  function safeResponseTo(response, responseTo) {
512
489
  const safetyHandler = config?.safetyHandler ?? new DefaultGeminiSafetyHandler();
513
490
  try {
514
- const safeResponse = safetyHandler.handle(response);
515
- return responseTo(safeResponse);
491
+ return responseTo(safetyHandler.handle(response));
516
492
  } catch (xx) {
517
- if (xx instanceof GoogleAISafetyError) {
518
- const ret = responseTo(xx.response);
519
- xx.reply = ret;
520
- }
493
+ if (xx instanceof GoogleAISafetyError) xx.reply = responseTo(xx.response);
521
494
  throw xx;
522
495
  }
523
496
  }
@@ -528,11 +501,10 @@ function getGeminiAPI(config) {
528
501
  const token = result?.token;
529
502
  const logprob = result?.logProbability;
530
503
  const encoder = new TextEncoder();
531
- const bytes = Array.from(encoder.encode(token));
532
504
  return {
533
505
  token,
534
506
  logprob,
535
- bytes
507
+ bytes: Array.from(encoder.encode(token))
536
508
  };
537
509
  }
538
510
  function candidateToLogprobs(candidate) {
@@ -553,25 +525,21 @@ function getGeminiAPI(config) {
553
525
  const retrieval = candidate?.urlRetrievalMetadata?.urlRetrievalContexts ?? [];
554
526
  const context = candidate?.urlContextMetadata?.urlMetadata ?? [];
555
527
  const all = [...retrieval, ...context];
556
- if (all.length === 0) return void 0;
528
+ if (all.length === 0) return;
557
529
  else return { urlMetadata: all };
558
530
  }
559
531
  function addModalityCounts(modalityTokenCounts, details) {
560
532
  modalityTokenCounts?.forEach((modalityTokenCount) => {
561
533
  const { modality, tokenCount } = modalityTokenCount;
562
534
  const modalityLc = modality.toLowerCase();
563
- const currentCount = details[modalityLc] ?? 0;
564
- details[modalityLc] = currentCount + tokenCount;
535
+ details[modalityLc] = (details[modalityLc] ?? 0) + tokenCount;
565
536
  });
566
537
  }
567
538
  function responseToUsageMetadata(response) {
568
539
  if ("usageMetadata" in response.data) {
569
- const data = response?.data;
570
- const usageMetadata = data?.usageMetadata;
540
+ const usageMetadata = (response?.data)?.usageMetadata;
571
541
  const input_tokens = usageMetadata.promptTokenCount ?? 0;
572
- const candidatesTokenCount = usageMetadata.candidatesTokenCount ?? 0;
573
- const thoughtsTokenCount = usageMetadata.thoughtsTokenCount ?? 0;
574
- const output_tokens = candidatesTokenCount + thoughtsTokenCount;
542
+ const output_tokens = (usageMetadata.candidatesTokenCount ?? 0) + (usageMetadata.thoughtsTokenCount ?? 0);
575
543
  const total_tokens = usageMetadata.totalTokenCount ?? input_tokens + output_tokens;
576
544
  const input_token_details = {};
577
545
  addModalityCounts(usageMetadata.promptTokensDetails, input_token_details);
@@ -579,16 +547,14 @@ function getGeminiAPI(config) {
579
547
  const output_token_details = {};
580
548
  addModalityCounts(usageMetadata?.candidatesTokensDetails, output_token_details);
581
549
  if (typeof usageMetadata?.thoughtsTokenCount === "number") output_token_details.reasoning = usageMetadata.thoughtsTokenCount;
582
- const ret = {
550
+ return {
583
551
  input_tokens,
584
552
  output_tokens,
585
553
  total_tokens,
586
554
  input_token_details,
587
555
  output_token_details
588
556
  };
589
- return ret;
590
557
  }
591
- return void 0;
592
558
  }
593
559
  function responseToGenerationInfo(response) {
594
560
  const data = Array.isArray(response.data) && response.data[0] ? response.data[0] : response.data && response.data.candidates ? response.data : void 0;
@@ -648,20 +614,17 @@ function getGeminiAPI(config) {
648
614
  }
649
615
  function partToChatGeneration(part) {
650
616
  const message = partToMessageChunk(part);
651
- const text = partToText(part);
652
- const generationInfo = {};
653
617
  return new ChatGenerationChunk({
654
- text,
618
+ text: partToText(part),
655
619
  message,
656
- generationInfo
620
+ generationInfo: {}
657
621
  });
658
622
  }
659
623
  function groundingSupportByPart(groundingSupports) {
660
624
  const ret = [];
661
625
  if (!groundingSupports || groundingSupports.length === 0) return [];
662
626
  groundingSupports?.forEach((groundingSupport) => {
663
- const segment = groundingSupport?.segment;
664
- const partIndex = segment?.partIndex ?? 0;
627
+ const partIndex = (groundingSupport?.segment)?.partIndex ?? 0;
665
628
  if (ret[partIndex]) ret[partIndex].push(groundingSupport);
666
629
  else ret[partIndex] = [groundingSupport];
667
630
  });
@@ -674,7 +637,7 @@ function getGeminiAPI(config) {
674
637
  const groundingMetadata = candidate?.groundingMetadata;
675
638
  const citationMetadata = candidate?.citationMetadata;
676
639
  const groundingParts = groundingSupportByPart(groundingMetadata?.groundingSupports);
677
- const ret = parts.map((part, index) => {
640
+ return parts.map((part, index) => {
678
641
  const gen = partToChatGeneration(part);
679
642
  if (!gen.generationInfo) gen.generationInfo = {};
680
643
  if (groundingMetadata) {
@@ -685,11 +648,9 @@ function getGeminiAPI(config) {
685
648
  if (citationMetadata) gen.generationInfo.citationMetadata = citationMetadata;
686
649
  return gen;
687
650
  });
688
- return ret;
689
651
  }
690
652
  function combineContent(gen, forceComplex = false) {
691
- const allString = gen.every((item) => typeof item.message.content === "string");
692
- if (allString && !forceComplex) return gen.map((item) => item.message.content).join("");
653
+ if (gen.every((item) => typeof item.message.content === "string") && !forceComplex) return gen.map((item) => item.message.content).join("");
693
654
  else {
694
655
  const ret = [];
695
656
  gen.forEach((item) => {
@@ -718,10 +679,8 @@ function getGeminiAPI(config) {
718
679
  function combineAdditionalKwargs(gen) {
719
680
  const ret = {};
720
681
  gen.forEach((item) => {
721
- const message = item?.message;
722
- const kwargs = message?.additional_kwargs ?? {};
723
- const keys = Object.keys(kwargs);
724
- keys.forEach((key) => {
682
+ const kwargs = (item?.message)?.additional_kwargs ?? {};
683
+ Object.keys(kwargs).forEach((key) => {
725
684
  const value = kwargs[key];
726
685
  if (Object.hasOwn(ret, key) && Array.isArray(ret[key]) && Array.isArray(value)) ret[key].push(...value);
727
686
  else ret[key] = value;
@@ -736,17 +695,15 @@ function getGeminiAPI(config) {
736
695
  const combinedToolCalls = combineToolCalls(gen.content);
737
696
  const kwargs = combineAdditionalKwargs(gen.content);
738
697
  const lastContent = gen.content[gen.content.length - 1];
739
- const usage_metadata = responseToUsageMetadata(response);
740
- const message = new AIMessageChunk({
741
- content: combinedContent,
742
- additional_kwargs: kwargs,
743
- response_metadata: { model_provider: "google-vertexai" },
744
- usage_metadata,
745
- tool_calls: combinedToolCalls.tool_calls,
746
- invalid_tool_calls: combinedToolCalls.invalid_tool_calls
747
- });
748
698
  return [new ChatGenerationChunk({
749
- message,
699
+ message: new AIMessageChunk({
700
+ content: combinedContent,
701
+ additional_kwargs: kwargs,
702
+ response_metadata: { model_provider: "google-vertexai" },
703
+ usage_metadata: responseToUsageMetadata(response),
704
+ tool_calls: combinedToolCalls.tool_calls,
705
+ invalid_tool_calls: combinedToolCalls.invalid_tool_calls
706
+ }),
750
707
  text: combinedText,
751
708
  generationInfo: lastContent.generationInfo
752
709
  })];
@@ -785,8 +742,7 @@ function getGeminiAPI(config) {
785
742
  return ret;
786
743
  }
787
744
  function responseToBaseMessageFields(response) {
788
- const parts = responseToParts(response);
789
- return partsToBaseMessageChunkFields(parts);
745
+ return partsToBaseMessageChunkFields(responseToParts(response));
790
746
  }
791
747
  function partsToSignatures(parts) {
792
748
  return parts.map((part) => part?.thoughtSignature ?? "");
@@ -832,16 +788,14 @@ function getGeminiAPI(config) {
832
788
  return fields;
833
789
  }
834
790
  function responseToBaseMessage(response) {
835
- const fields = responseToBaseMessageFields(response);
836
- return new AIMessage(fields);
791
+ return new AIMessage(responseToBaseMessageFields(response));
837
792
  }
838
793
  function safeResponseToBaseMessage(response) {
839
794
  return safeResponseTo(response, responseToBaseMessage);
840
795
  }
841
796
  function responseToChatResult(response) {
842
- const generations = responseToChatGenerations(response);
843
797
  return {
844
- generations,
798
+ generations: responseToChatGenerations(response),
845
799
  llmOutput: responseToGenerationInfo(response)
846
800
  };
847
801
  }
@@ -857,17 +811,14 @@ function getGeminiAPI(config) {
857
811
  }
858
812
  }
859
813
  async function formatMessageContents(input, _parameters) {
860
- const parts = await messageContentToParts(input);
861
- const contents = [{
814
+ return [{
862
815
  role: "user",
863
- parts
816
+ parts: await messageContentToParts(input)
864
817
  }];
865
- return contents;
866
818
  }
867
819
  async function formatBaseMessageContents(input, _parameters) {
868
820
  const inputPromises = input.map((msg, i) => baseMessageToContent(msg, input[i - 1]));
869
- const inputs = await Promise.all(inputPromises);
870
- return inputs.reduce((acc, cur) => {
821
+ return (await Promise.all(inputPromises)).reduce((acc, cur) => {
871
822
  if (cur.every((content) => content.role === "system")) return acc;
872
823
  if (cur[0]?.role === "function" && acc.length > 0 && acc[acc.length - 1].role === "function") acc[acc.length - 1].parts = [...acc[acc.length - 1].parts, ...cur[0].parts];
873
824
  else acc.push(...cur);
@@ -936,8 +887,7 @@ function getGeminiAPI(config) {
936
887
  }
937
888
  async function formatSystemInstruction(input) {
938
889
  if (!config?.useSystemInstruction) return {};
939
- const it = inputType(input);
940
- switch (it) {
890
+ switch (inputType(input)) {
941
891
  case "BaseMessageArray": return formatBaseMessageSystemInstruction(input);
942
892
  default: return {};
943
893
  }
@@ -952,7 +902,6 @@ function getGeminiAPI(config) {
952
902
  }
953
903
  function searchToolName(tool) {
954
904
  for (const name of GeminiSearchToolAttributes) if (name in tool) return name;
955
- return void 0;
956
905
  }
957
906
  function cleanGeminiTool(tool) {
958
907
  const orig = searchToolName(tool);
@@ -974,7 +923,7 @@ function getGeminiAPI(config) {
974
923
  return result;
975
924
  }
976
925
  function formatToolConfig(parameters) {
977
- if (!parameters.tool_choice || typeof parameters.tool_choice !== "string") return void 0;
926
+ if (!parameters.tool_choice || typeof parameters.tool_choice !== "string") return;
978
927
  if ([
979
928
  "auto",
980
929
  "any",