@gullabs/google 0.12.0 → 0.13.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.
- package/LICENSE +84 -73
- package/README.md +38 -6
- package/dist/index.cjs +826 -331
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +41 -41
- package/dist/index.d.ts +41 -41
- package/dist/index.js +825 -331
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -151,11 +151,22 @@ function isGoogleTransportError(rawErr) {
|
|
|
151
151
|
}
|
|
152
152
|
return false;
|
|
153
153
|
}
|
|
154
|
+
function isGoogleModelNotFound(rawErr) {
|
|
155
|
+
if (!(rawErr instanceof Error)) return false;
|
|
156
|
+
if (rawErr.status !== 404) return false;
|
|
157
|
+
try {
|
|
158
|
+
const parsed = JSON.parse(rawErr.message);
|
|
159
|
+
return parsed.error?.code === 404 && parsed.error.status === "NOT_FOUND";
|
|
160
|
+
} catch {
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
154
164
|
function classifyGoogleError(rawErr, extra) {
|
|
155
165
|
const base = classifyError(rawErr);
|
|
156
166
|
const reclassifyAsTransport = base.kind === "unknown" && isGoogleTransportError(rawErr);
|
|
167
|
+
const reclassifyAsBadRequest = base.kind === "unknown" && isGoogleModelNotFound(rawErr);
|
|
157
168
|
return new LlmError(base.message, {
|
|
158
|
-
kind: reclassifyAsTransport ? "server" : base.kind,
|
|
169
|
+
kind: reclassifyAsTransport ? "server" : reclassifyAsBadRequest ? "bad_request" : base.kind,
|
|
159
170
|
retryable: reclassifyAsTransport ? true : base.retryable,
|
|
160
171
|
...base.httpStatus !== void 0 ? { httpStatus: base.httpStatus } : {},
|
|
161
172
|
...base.retryAfterMs !== void 0 ? { retryAfterMs: base.retryAfterMs } : {},
|
|
@@ -193,19 +204,6 @@ var RESERVED_GOOGLE_PROVIDER_OPTION_KEYS = /* @__PURE__ */ new Set([
|
|
|
193
204
|
"topP",
|
|
194
205
|
"_responseJsonSchema"
|
|
195
206
|
]);
|
|
196
|
-
var GOOGLE_SEARCH_SUPPORTED_MODELS = /* @__PURE__ */ new Set([
|
|
197
|
-
"gemini-2.5-flash",
|
|
198
|
-
"gemini-2.5-flash-lite",
|
|
199
|
-
"gemini-2.5-pro",
|
|
200
|
-
"gemini-3-flash-preview",
|
|
201
|
-
"gemini-3.1-flash-lite",
|
|
202
|
-
"gemini-3.1-pro-preview",
|
|
203
|
-
"gemini-3.5-flash"
|
|
204
|
-
]);
|
|
205
|
-
var STRUCTURED_OUTPUT_GOOGLE_SEARCH_ALLOWLIST = /* @__PURE__ */ new Set([
|
|
206
|
-
"gemini-3.1-pro-preview",
|
|
207
|
-
"gemini-3.5-flash"
|
|
208
|
-
]);
|
|
209
207
|
function isPlainRecord(value) {
|
|
210
208
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
211
209
|
}
|
|
@@ -273,7 +271,13 @@ function parseGoogleSafetySetting(setting, index, model) {
|
|
|
273
271
|
threshold: setting["threshold"]
|
|
274
272
|
};
|
|
275
273
|
}
|
|
276
|
-
function mapGoogleProviderOptions(
|
|
274
|
+
function mapGoogleProviderOptions({
|
|
275
|
+
googleOpts,
|
|
276
|
+
model,
|
|
277
|
+
structuredOutputRequested,
|
|
278
|
+
descriptorGrounding,
|
|
279
|
+
structuredOutputWithTools
|
|
280
|
+
}) {
|
|
277
281
|
if (googleOpts === void 0) {
|
|
278
282
|
return {};
|
|
279
283
|
}
|
|
@@ -364,15 +368,14 @@ function mapGoogleProviderOptions(googleOpts, model, structuredOutputRequested,
|
|
|
364
368
|
);
|
|
365
369
|
}
|
|
366
370
|
const tools = googleOpts["tools"].map((tool) => parseGoogleTool(tool, model));
|
|
367
|
-
|
|
368
|
-
if (!groundingSupported) {
|
|
371
|
+
if (descriptorGrounding !== true) {
|
|
369
372
|
throw badGoogleProviderOptions(
|
|
370
373
|
`providerOptions.google.tools is not supported for model "${model}".`
|
|
371
374
|
);
|
|
372
375
|
}
|
|
373
|
-
if (structuredOutputRequested &&
|
|
376
|
+
if (structuredOutputRequested && structuredOutputWithTools !== true) {
|
|
374
377
|
throw badGoogleProviderOptions(
|
|
375
|
-
`Structured output with googleSearch is supported
|
|
378
|
+
`Structured output with googleSearch is not supported for model "${model}".`
|
|
376
379
|
);
|
|
377
380
|
}
|
|
378
381
|
mapped.tools = tools;
|
|
@@ -526,6 +529,19 @@ function geminiAdapter(opts) {
|
|
|
526
529
|
}
|
|
527
530
|
const warnings = [];
|
|
528
531
|
const model = req.model;
|
|
532
|
+
const descriptor = req.modelDescriptor;
|
|
533
|
+
if (descriptor?.model !== model || descriptor.provider !== "google") {
|
|
534
|
+
throw new LlmError(`No matching Google model descriptor for "${model}".`, {
|
|
535
|
+
kind: "bad_request",
|
|
536
|
+
retryable: false
|
|
537
|
+
});
|
|
538
|
+
}
|
|
539
|
+
if (req.transientProviderState !== void 0) {
|
|
540
|
+
throw new LlmError(`Model "${model}" does not admit transientProviderState.`, {
|
|
541
|
+
kind: "bad_request",
|
|
542
|
+
retryable: false
|
|
543
|
+
});
|
|
544
|
+
}
|
|
529
545
|
const contents = mapMessagesToGeminiContents(req.messages);
|
|
530
546
|
const genConfig = req.config;
|
|
531
547
|
const config = {};
|
|
@@ -548,9 +564,9 @@ function geminiAdapter(opts) {
|
|
|
548
564
|
config.stopSequences = genConfig.stopSequences;
|
|
549
565
|
}
|
|
550
566
|
const explicit = genConfig.serviceTier;
|
|
551
|
-
const supported =
|
|
567
|
+
const supported = descriptor.capabilities?.serviceTiers;
|
|
552
568
|
if (explicit !== void 0) {
|
|
553
|
-
if (
|
|
569
|
+
if (supported === void 0 || !supported.includes(explicit)) {
|
|
554
570
|
throw new LlmError(
|
|
555
571
|
`serviceTier "${explicit}" is not supported for model "${model}".`,
|
|
556
572
|
{ kind: "bad_request", retryable: false }
|
|
@@ -560,7 +576,13 @@ function geminiAdapter(opts) {
|
|
|
560
576
|
}
|
|
561
577
|
const reasoning = genConfig.reasoning;
|
|
562
578
|
if (reasoning !== void 0) {
|
|
563
|
-
const reasoningApi =
|
|
579
|
+
const reasoningApi = descriptor.capabilities?.reasoningApi;
|
|
580
|
+
if (reasoning.effort === "max") {
|
|
581
|
+
throw new LlmError(
|
|
582
|
+
`reasoning.effort "max" is not supported for model "${model}".`,
|
|
583
|
+
{ kind: "bad_request", retryable: false }
|
|
584
|
+
);
|
|
585
|
+
}
|
|
564
586
|
if (reasoning.effort !== void 0 && reasoning.budgetTokens !== void 0) {
|
|
565
587
|
throw new LlmError(
|
|
566
588
|
`Provide either reasoning.effort or reasoning.budgetTokens, not both, for model "${model}".`,
|
|
@@ -568,6 +590,12 @@ function geminiAdapter(opts) {
|
|
|
568
590
|
);
|
|
569
591
|
}
|
|
570
592
|
if (reasoningApi === "budget") {
|
|
593
|
+
if (reasoning.effort === "none" && descriptor.capabilities?.admittedReasoningEfforts?.includes("none") !== true) {
|
|
594
|
+
throw new LlmError(
|
|
595
|
+
`reasoning.effort "none" is not supported for model "${model}".`,
|
|
596
|
+
{ kind: "bad_request", retryable: false }
|
|
597
|
+
);
|
|
598
|
+
}
|
|
571
599
|
if (reasoning.effort === "xhigh") {
|
|
572
600
|
throw new LlmError(
|
|
573
601
|
`reasoning.effort "xhigh" is not supported for model "${model}".`,
|
|
@@ -586,10 +614,18 @@ function geminiAdapter(opts) {
|
|
|
586
614
|
{ kind: "bad_request", retryable: false }
|
|
587
615
|
);
|
|
588
616
|
}
|
|
617
|
+
const admitted = descriptor.capabilities?.admittedReasoningEfforts;
|
|
618
|
+
const admitsNone = admitted?.includes("none") === true;
|
|
589
619
|
let thinkingLevel;
|
|
590
620
|
if (reasoning.effort !== void 0) {
|
|
591
621
|
switch (reasoning.effort) {
|
|
592
622
|
case "none":
|
|
623
|
+
if (!admitsNone) {
|
|
624
|
+
throw new LlmError(
|
|
625
|
+
`reasoning.effort "none" is not supported for model "${model}"; thinkingLevel MINIMAL is not emitted.`,
|
|
626
|
+
{ kind: "bad_request", retryable: false }
|
|
627
|
+
);
|
|
628
|
+
}
|
|
593
629
|
thinkingLevel = "MINIMAL";
|
|
594
630
|
break;
|
|
595
631
|
case "low":
|
|
@@ -603,7 +639,7 @@ function geminiAdapter(opts) {
|
|
|
603
639
|
break;
|
|
604
640
|
case "xhigh":
|
|
605
641
|
throw new LlmError(
|
|
606
|
-
`reasoning.effort "
|
|
642
|
+
`reasoning.effort "${reasoning.effort}" is not supported for model "${model}".`,
|
|
607
643
|
{ kind: "bad_request", retryable: false }
|
|
608
644
|
);
|
|
609
645
|
default:
|
|
@@ -623,18 +659,19 @@ function geminiAdapter(opts) {
|
|
|
623
659
|
}
|
|
624
660
|
const structuredOutputRequested = req.outputJsonSchema !== void 0;
|
|
625
661
|
if (structuredOutputRequested) {
|
|
626
|
-
const nativeStructuredOutput =
|
|
662
|
+
const nativeStructuredOutput = descriptor.capabilities?.nativeStructuredOutput !== false;
|
|
627
663
|
if (nativeStructuredOutput) {
|
|
628
664
|
config.responseMimeType = "application/json";
|
|
629
665
|
config.responseSchema = req.outputJsonSchema;
|
|
630
666
|
}
|
|
631
667
|
}
|
|
632
|
-
const googleProviderConfig = mapGoogleProviderOptions(
|
|
633
|
-
genConfig.providerOptions?.["google"],
|
|
668
|
+
const googleProviderConfig = mapGoogleProviderOptions({
|
|
669
|
+
googleOpts: genConfig.providerOptions?.["google"],
|
|
634
670
|
model,
|
|
635
671
|
structuredOutputRequested,
|
|
636
|
-
|
|
637
|
-
|
|
672
|
+
descriptorGrounding: descriptor.capabilities?.grounding,
|
|
673
|
+
structuredOutputWithTools: descriptor.capabilities?.structuredOutputWithTools
|
|
674
|
+
});
|
|
638
675
|
if (googleProviderConfig.cachedContent !== void 0) {
|
|
639
676
|
config.cachedContent = googleProviderConfig.cachedContent;
|
|
640
677
|
}
|
|
@@ -763,30 +800,46 @@ function geminiAdapter(opts) {
|
|
|
763
800
|
} finally {
|
|
764
801
|
clearTierTimeout();
|
|
765
802
|
}
|
|
803
|
+
const echoedTier = response.usageMetadata?.serviceTier;
|
|
804
|
+
if (typeof echoedTier === "string" && echoedTier.length > 0) {
|
|
805
|
+
if (config.serviceTier !== void 0 && echoedTier !== config.serviceTier) {
|
|
806
|
+
warnings.push({
|
|
807
|
+
type: "other",
|
|
808
|
+
message: `google: requested serviceTier "${config.serviceTier}" but provider served "${echoedTier}"; billing uses the served tier.`
|
|
809
|
+
});
|
|
810
|
+
}
|
|
811
|
+
servedServiceTier = echoedTier;
|
|
812
|
+
}
|
|
766
813
|
const hasBlockReason = response.promptFeedback?.blockReason !== void 0;
|
|
767
814
|
const hasCandidates = response.candidates !== void 0 && response.candidates.length > 0;
|
|
768
815
|
if (hasBlockReason || !hasCandidates) {
|
|
769
816
|
const reason = response.promptFeedback?.blockReason ?? "NO_CANDIDATES";
|
|
770
|
-
throw new LlmError(`Gemini response
|
|
771
|
-
kind: "content_filter",
|
|
772
|
-
retryable:
|
|
773
|
-
provider: "google"
|
|
817
|
+
throw new LlmError(`Gemini response has no usable candidate: ${reason}`, {
|
|
818
|
+
kind: hasBlockReason ? "content_filter" : "server",
|
|
819
|
+
retryable: !hasBlockReason,
|
|
820
|
+
provider: "google",
|
|
821
|
+
...response.usageMetadata !== void 0 ? { usage: mapUsage(response.usageMetadata) } : {},
|
|
822
|
+
...servedServiceTier !== void 0 ? { servedServiceTier } : {}
|
|
774
823
|
});
|
|
775
824
|
}
|
|
776
825
|
const candidates = response.candidates;
|
|
777
826
|
if (candidates === void 0 || candidates.length === 0) {
|
|
778
|
-
throw new LlmError("Gemini response
|
|
779
|
-
kind: "
|
|
780
|
-
retryable:
|
|
781
|
-
provider: "google"
|
|
827
|
+
throw new LlmError("Gemini response has no usable candidate: NO_CANDIDATES", {
|
|
828
|
+
kind: "server",
|
|
829
|
+
retryable: true,
|
|
830
|
+
provider: "google",
|
|
831
|
+
...response.usageMetadata !== void 0 ? { usage: mapUsage(response.usageMetadata) } : {},
|
|
832
|
+
...servedServiceTier !== void 0 ? { servedServiceTier } : {}
|
|
782
833
|
});
|
|
783
834
|
}
|
|
784
835
|
const candidate = candidates[0];
|
|
785
836
|
if (candidate === void 0) {
|
|
786
|
-
throw new LlmError("Gemini response
|
|
787
|
-
kind: "
|
|
788
|
-
retryable:
|
|
789
|
-
provider: "google"
|
|
837
|
+
throw new LlmError("Gemini response has no usable candidate: NO_CANDIDATES", {
|
|
838
|
+
kind: "server",
|
|
839
|
+
retryable: true,
|
|
840
|
+
provider: "google",
|
|
841
|
+
...response.usageMetadata !== void 0 ? { usage: mapUsage(response.usageMetadata) } : {},
|
|
842
|
+
...servedServiceTier !== void 0 ? { servedServiceTier } : {}
|
|
790
843
|
});
|
|
791
844
|
}
|
|
792
845
|
const parts = candidate.content?.parts ?? [];
|
|
@@ -917,89 +970,121 @@ function geminiAdapter(opts) {
|
|
|
917
970
|
}
|
|
918
971
|
|
|
919
972
|
// src/pricing.ts
|
|
920
|
-
var pricingVersion = "gemini-2026-
|
|
921
|
-
var
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
});
|
|
973
|
+
var pricingVersion = "gemini-2026-09-25";
|
|
974
|
+
var GEMINI_PRICED_TIERS = ["standard", "flex", "batch"];
|
|
975
|
+
function tiers(standard, flex, batch) {
|
|
976
|
+
return Object.freeze({ standard, flex, batch });
|
|
977
|
+
}
|
|
926
978
|
var GEMINI_PRICING = Object.freeze({
|
|
927
|
-
//
|
|
928
|
-
"gemini-2.5-pro":
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
inputPerM: 25e5,
|
|
934
|
-
|
|
935
|
-
|
|
979
|
+
// Gemini 2.5 Pro. Flex/batch cached equals standard on both context bands.
|
|
980
|
+
"gemini-2.5-pro": tiers(
|
|
981
|
+
{
|
|
982
|
+
inputPerM: 125e4,
|
|
983
|
+
cachedPerM: 125e3,
|
|
984
|
+
outputPerM: 1e7,
|
|
985
|
+
gt200k: { inputPerM: 25e5, cachedPerM: 25e4, outputPerM: 15e6 }
|
|
986
|
+
},
|
|
987
|
+
{
|
|
988
|
+
inputPerM: 625e3,
|
|
989
|
+
cachedPerM: 125e3,
|
|
990
|
+
outputPerM: 5e6,
|
|
991
|
+
gt200k: { inputPerM: 125e4, cachedPerM: 25e4, outputPerM: 75e5 }
|
|
992
|
+
},
|
|
993
|
+
{
|
|
994
|
+
inputPerM: 625e3,
|
|
995
|
+
cachedPerM: 125e3,
|
|
996
|
+
outputPerM: 5e6,
|
|
997
|
+
gt200k: { inputPerM: 125e4, cachedPerM: 25e4, outputPerM: 75e5 }
|
|
936
998
|
}
|
|
937
|
-
|
|
938
|
-
//
|
|
939
|
-
"gemini-2.5-flash":
|
|
940
|
-
inputPerM: 3e5,
|
|
941
|
-
cachedPerM: 3e4,
|
|
942
|
-
outputPerM:
|
|
943
|
-
|
|
944
|
-
//
|
|
945
|
-
"gemini-2.5-flash-lite":
|
|
946
|
-
inputPerM: 1e5,
|
|
947
|
-
cachedPerM: 1e4,
|
|
948
|
-
outputPerM:
|
|
949
|
-
|
|
950
|
-
//
|
|
951
|
-
"gemini-3.
|
|
952
|
-
inputPerM: 15e5,
|
|
953
|
-
cachedPerM:
|
|
954
|
-
outputPerM:
|
|
955
|
-
|
|
956
|
-
//
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
cachedPerM:
|
|
960
|
-
outputPerM:
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
"gemini-3.
|
|
964
|
-
inputPerM:
|
|
965
|
-
cachedPerM:
|
|
966
|
-
outputPerM:
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
999
|
+
),
|
|
1000
|
+
// Gemini 2.5 Flash. Flex/batch cached stays $0.03.
|
|
1001
|
+
"gemini-2.5-flash": tiers(
|
|
1002
|
+
{ inputPerM: 3e5, cachedPerM: 3e4, outputPerM: 25e5 },
|
|
1003
|
+
{ inputPerM: 15e4, cachedPerM: 3e4, outputPerM: 125e4 },
|
|
1004
|
+
{ inputPerM: 15e4, cachedPerM: 3e4, outputPerM: 125e4 }
|
|
1005
|
+
),
|
|
1006
|
+
// Gemini 2.5 Flash-Lite. Flex/batch cached stays $0.01.
|
|
1007
|
+
"gemini-2.5-flash-lite": tiers(
|
|
1008
|
+
{ inputPerM: 1e5, cachedPerM: 1e4, outputPerM: 4e5 },
|
|
1009
|
+
{ inputPerM: 5e4, cachedPerM: 1e4, outputPerM: 2e5 },
|
|
1010
|
+
{ inputPerM: 5e4, cachedPerM: 1e4, outputPerM: 2e5 }
|
|
1011
|
+
),
|
|
1012
|
+
// Gemini 3.1 Flash-Lite. Flex/batch cached is the published $0.0125.
|
|
1013
|
+
"gemini-3.1-flash-lite": tiers(
|
|
1014
|
+
{ inputPerM: 25e4, cachedPerM: 25e3, outputPerM: 15e5 },
|
|
1015
|
+
{ inputPerM: 125e3, cachedPerM: 12500, outputPerM: 75e4 },
|
|
1016
|
+
{ inputPerM: 125e3, cachedPerM: 12500, outputPerM: 75e4 }
|
|
1017
|
+
),
|
|
1018
|
+
// Gemini 3.8 / 3.7 / 3.6 Flash intro rates (2026-09-25). Flex/batch cached
|
|
1019
|
+
// is half of the intro cached rate. Re-snapshot on 2027-01-01.
|
|
1020
|
+
"gemini-3.8-flash": tiers(
|
|
1021
|
+
{ inputPerM: 75e4, cachedPerM: 75e3, outputPerM: 375e4 },
|
|
1022
|
+
{ inputPerM: 375e3, cachedPerM: 37500, outputPerM: 1875e3 },
|
|
1023
|
+
{ inputPerM: 375e3, cachedPerM: 37500, outputPerM: 1875e3 }
|
|
1024
|
+
),
|
|
1025
|
+
"gemini-3.7-flash": tiers(
|
|
1026
|
+
{ inputPerM: 75e4, cachedPerM: 75e3, outputPerM: 375e4 },
|
|
1027
|
+
{ inputPerM: 375e3, cachedPerM: 37500, outputPerM: 1875e3 },
|
|
1028
|
+
{ inputPerM: 375e3, cachedPerM: 37500, outputPerM: 1875e3 }
|
|
1029
|
+
),
|
|
1030
|
+
"gemini-3.6-flash": tiers(
|
|
1031
|
+
{ inputPerM: 75e4, cachedPerM: 75e3, outputPerM: 375e4 },
|
|
1032
|
+
{ inputPerM: 375e3, cachedPerM: 37500, outputPerM: 1875e3 },
|
|
1033
|
+
{ inputPerM: 375e3, cachedPerM: 37500, outputPerM: 1875e3 }
|
|
1034
|
+
),
|
|
1035
|
+
// Gemini 3.5 Flash-Lite. Flex/batch cached is the published $0.02, not half of $0.03.
|
|
1036
|
+
"gemini-3.5-flash-lite": tiers(
|
|
1037
|
+
{ inputPerM: 3e5, cachedPerM: 3e4, outputPerM: 25e5 },
|
|
1038
|
+
{ inputPerM: 15e4, cachedPerM: 2e4, outputPerM: 125e4 },
|
|
1039
|
+
{ inputPerM: 15e4, cachedPerM: 2e4, outputPerM: 125e4 }
|
|
1040
|
+
),
|
|
1041
|
+
// Gemini 3.1 Pro Preview. Flex/batch cached equals standard on both bands.
|
|
1042
|
+
"gemini-3.1-pro-preview": tiers(
|
|
1043
|
+
{
|
|
1044
|
+
inputPerM: 2e6,
|
|
1045
|
+
cachedPerM: 2e5,
|
|
1046
|
+
outputPerM: 12e6,
|
|
1047
|
+
gt200k: { inputPerM: 4e6, cachedPerM: 4e5, outputPerM: 18e6 }
|
|
1048
|
+
},
|
|
1049
|
+
{
|
|
1050
|
+
inputPerM: 1e6,
|
|
1051
|
+
cachedPerM: 2e5,
|
|
1052
|
+
outputPerM: 6e6,
|
|
1053
|
+
gt200k: { inputPerM: 2e6, cachedPerM: 4e5, outputPerM: 9e6 }
|
|
1054
|
+
},
|
|
1055
|
+
{
|
|
1056
|
+
inputPerM: 1e6,
|
|
1057
|
+
cachedPerM: 2e5,
|
|
1058
|
+
outputPerM: 6e6,
|
|
1059
|
+
gt200k: { inputPerM: 2e6, cachedPerM: 4e5, outputPerM: 9e6 }
|
|
971
1060
|
}
|
|
972
|
-
|
|
973
|
-
// ── Gemini 3 Flash (preview) ── input $0.50, output $3.00, cached $0.05 (90% discount)
|
|
974
|
-
"gemini-3-flash-preview": {
|
|
975
|
-
inputPerM: 5e5,
|
|
976
|
-
cachedPerM: 5e4,
|
|
977
|
-
outputPerM: 3e6
|
|
978
|
-
}
|
|
1061
|
+
)
|
|
979
1062
|
});
|
|
1063
|
+
function isPricedGeminiTier(tier) {
|
|
1064
|
+
return GEMINI_PRICED_TIERS.includes(tier);
|
|
1065
|
+
}
|
|
1066
|
+
function lookupGeminiTierRates(model, tier) {
|
|
1067
|
+
const entry = Object.hasOwn(GEMINI_PRICING, model) ? GEMINI_PRICING[model] : void 0;
|
|
1068
|
+
if (entry === void 0) return void 0;
|
|
1069
|
+
if (tier !== void 0 && !isPricedGeminiTier(tier)) return void 0;
|
|
1070
|
+
return entry;
|
|
1071
|
+
}
|
|
1072
|
+
function resolveGeminiRates(model, tier) {
|
|
1073
|
+
const entry = lookupGeminiTierRates(model, tier);
|
|
1074
|
+
if (entry === void 0) return void 0;
|
|
1075
|
+
const key = tier ?? "standard";
|
|
1076
|
+
return entry[key];
|
|
1077
|
+
}
|
|
980
1078
|
|
|
981
1079
|
// src/cost.ts
|
|
982
|
-
function lookupRates(model) {
|
|
983
|
-
const exact = GEMINI_PRICING[model];
|
|
984
|
-
if (exact !== void 0) return exact;
|
|
985
|
-
let bestKey = "";
|
|
986
|
-
let bestRates;
|
|
987
|
-
for (const key of Object.keys(GEMINI_PRICING)) {
|
|
988
|
-
if (model.startsWith(key) && key.length > bestKey.length) {
|
|
989
|
-
bestKey = key;
|
|
990
|
-
bestRates = GEMINI_PRICING[key];
|
|
991
|
-
}
|
|
992
|
-
}
|
|
993
|
-
return bestRates;
|
|
994
|
-
}
|
|
995
1080
|
function geminiPricingSource() {
|
|
996
1081
|
return {
|
|
997
1082
|
version: pricingVersion,
|
|
998
1083
|
price(model, usage, tier) {
|
|
999
|
-
return computeCost(model, usage, tier,
|
|
1084
|
+
return computeCost(model, usage, tier, resolveGeminiRates, pricingVersion);
|
|
1000
1085
|
},
|
|
1001
1086
|
hasModel(model) {
|
|
1002
|
-
return
|
|
1087
|
+
return resolveGeminiRates(model, void 0) !== void 0;
|
|
1003
1088
|
},
|
|
1004
1089
|
listModels() {
|
|
1005
1090
|
return Object.keys(GEMINI_PRICING);
|
|
@@ -1702,25 +1787,25 @@ var Gemini25FlashLiteConfigSchema = z.union([
|
|
|
1702
1787
|
description: "Strict generateContent config for model gemini-2.5-flash-lite. Budget reasoning, tunable sampling, flex/standard tiers, structured output, grounding, priced.",
|
|
1703
1788
|
examples: [{ serviceTier: "flex", temperature: 0.7, reasoning: { budgetTokens: 0 } }]
|
|
1704
1789
|
});
|
|
1705
|
-
var
|
|
1790
|
+
var Gemini31FlashLiteConfigSchema = z.union([
|
|
1706
1791
|
z.strictObject({
|
|
1707
1792
|
maxOutputTokens: z.number().int().positive().optional().meta({
|
|
1708
1793
|
title: "Max Output Tokens",
|
|
1709
|
-
description: "Maximum output token cap for gemini-3.
|
|
1794
|
+
description: "Maximum output token cap for gemini-3.1-flash-lite."
|
|
1710
1795
|
}),
|
|
1711
1796
|
stopSequences: z.array(z.string()).max(5).optional().meta({
|
|
1712
1797
|
title: "Stop Sequences",
|
|
1713
|
-
description: "Up to five stop sequences for gemini-3.
|
|
1798
|
+
description: "Up to five stop sequences for gemini-3.1-flash-lite."
|
|
1714
1799
|
}),
|
|
1715
1800
|
serviceTier: z.literal("flex").meta({
|
|
1716
1801
|
title: "Service Tier",
|
|
1717
|
-
description: "Explicit flex tier for gemini-3.
|
|
1802
|
+
description: "Explicit flex tier for gemini-3.1-flash-lite."
|
|
1718
1803
|
}),
|
|
1719
1804
|
reasoning: z.union([
|
|
1720
1805
|
z.strictObject({
|
|
1721
1806
|
effort: z.enum(["none", "low", "medium", "high"]).meta({
|
|
1722
1807
|
title: "Reasoning Effort",
|
|
1723
|
-
description: "Reasoning effort for gemini-3.
|
|
1808
|
+
description: "Reasoning effort for gemini-3.1-flash-lite; none maps to minimal thinking."
|
|
1724
1809
|
}),
|
|
1725
1810
|
includeThoughts: z.boolean().optional().meta({
|
|
1726
1811
|
title: "Include Thoughts",
|
|
@@ -1735,7 +1820,7 @@ var Gemini35FlashConfigSchema = z.union([
|
|
|
1735
1820
|
})
|
|
1736
1821
|
]).optional().meta({
|
|
1737
1822
|
title: "Reasoning",
|
|
1738
|
-
description: "Gemini 3.
|
|
1823
|
+
description: "Gemini 3.1 Flash-Lite thinkingLevel configuration."
|
|
1739
1824
|
}),
|
|
1740
1825
|
timeoutMs: z.number().int().positive().optional().meta({
|
|
1741
1826
|
title: "Timeout",
|
|
@@ -1771,7 +1856,7 @@ var Gemini35FlashConfigSchema = z.union([
|
|
|
1771
1856
|
})
|
|
1772
1857
|
).min(1).optional().meta({
|
|
1773
1858
|
title: "Tools",
|
|
1774
|
-
description: "Allowlisted Google tools for gemini-3.
|
|
1859
|
+
description: "Allowlisted Google tools for gemini-3.1-flash-lite."
|
|
1775
1860
|
}),
|
|
1776
1861
|
httpOptions: z.strictObject({
|
|
1777
1862
|
timeout: z.number().int().positive().optional().meta({
|
|
@@ -1788,31 +1873,31 @@ var Gemini35FlashConfigSchema = z.union([
|
|
|
1788
1873
|
})
|
|
1789
1874
|
}).optional().meta({
|
|
1790
1875
|
title: "Google Provider Options",
|
|
1791
|
-
description: "Allowlisted Google provider options for gemini-3.
|
|
1876
|
+
description: "Allowlisted Google provider options for gemini-3.1-flash-lite."
|
|
1792
1877
|
})
|
|
1793
1878
|
}).optional().meta({
|
|
1794
1879
|
title: "Provider Options",
|
|
1795
|
-
description: "Provider-specific options accepted for gemini-3.
|
|
1880
|
+
description: "Provider-specific options accepted for gemini-3.1-flash-lite."
|
|
1796
1881
|
})
|
|
1797
1882
|
}),
|
|
1798
1883
|
z.strictObject({
|
|
1799
1884
|
maxOutputTokens: z.number().int().positive().optional().meta({
|
|
1800
1885
|
title: "Max Output Tokens",
|
|
1801
|
-
description: "Maximum output token cap for gemini-3.
|
|
1886
|
+
description: "Maximum output token cap for gemini-3.1-flash-lite."
|
|
1802
1887
|
}),
|
|
1803
1888
|
stopSequences: z.array(z.string()).max(5).optional().meta({
|
|
1804
1889
|
title: "Stop Sequences",
|
|
1805
|
-
description: "Up to five stop sequences for gemini-3.
|
|
1890
|
+
description: "Up to five stop sequences for gemini-3.1-flash-lite."
|
|
1806
1891
|
}),
|
|
1807
1892
|
serviceTier: z.literal("standard").optional().meta({
|
|
1808
1893
|
title: "Service Tier",
|
|
1809
|
-
description: "Standard tier or omitted tier for gemini-3.
|
|
1894
|
+
description: "Standard tier or omitted tier for gemini-3.1-flash-lite."
|
|
1810
1895
|
}),
|
|
1811
1896
|
reasoning: z.union([
|
|
1812
1897
|
z.strictObject({
|
|
1813
1898
|
effort: z.enum(["none", "low", "medium", "high"]).meta({
|
|
1814
1899
|
title: "Reasoning Effort",
|
|
1815
|
-
description: "Reasoning effort for gemini-3.
|
|
1900
|
+
description: "Reasoning effort for gemini-3.1-flash-lite; none maps to minimal thinking."
|
|
1816
1901
|
}),
|
|
1817
1902
|
includeThoughts: z.boolean().optional().meta({
|
|
1818
1903
|
title: "Include Thoughts",
|
|
@@ -1827,7 +1912,7 @@ var Gemini35FlashConfigSchema = z.union([
|
|
|
1827
1912
|
})
|
|
1828
1913
|
]).optional().meta({
|
|
1829
1914
|
title: "Reasoning",
|
|
1830
|
-
description: "Gemini 3.
|
|
1915
|
+
description: "Gemini 3.1 Flash-Lite thinkingLevel configuration."
|
|
1831
1916
|
}),
|
|
1832
1917
|
timeoutMs: z.number().int().positive().optional().meta({
|
|
1833
1918
|
title: "Timeout",
|
|
@@ -1863,7 +1948,7 @@ var Gemini35FlashConfigSchema = z.union([
|
|
|
1863
1948
|
})
|
|
1864
1949
|
).min(1).optional().meta({
|
|
1865
1950
|
title: "Tools",
|
|
1866
|
-
description: "Allowlisted Google tools for gemini-3.
|
|
1951
|
+
description: "Allowlisted Google tools for gemini-3.1-flash-lite."
|
|
1867
1952
|
}),
|
|
1868
1953
|
httpOptions: z.strictObject({
|
|
1869
1954
|
timeout: z.number().int().positive().optional().meta({
|
|
@@ -1876,37 +1961,37 @@ var Gemini35FlashConfigSchema = z.union([
|
|
|
1876
1961
|
})
|
|
1877
1962
|
}).optional().meta({
|
|
1878
1963
|
title: "Google Provider Options",
|
|
1879
|
-
description: "Allowlisted Google provider options for gemini-3.
|
|
1964
|
+
description: "Allowlisted Google provider options for gemini-3.1-flash-lite."
|
|
1880
1965
|
})
|
|
1881
1966
|
}).optional().meta({
|
|
1882
1967
|
title: "Provider Options",
|
|
1883
|
-
description: "Provider-specific options accepted for gemini-3.
|
|
1968
|
+
description: "Provider-specific options accepted for gemini-3.1-flash-lite."
|
|
1884
1969
|
})
|
|
1885
1970
|
})
|
|
1886
1971
|
]).meta({
|
|
1887
|
-
title: "
|
|
1888
|
-
description: "Strict generateContent config for model gemini-3.
|
|
1889
|
-
examples: [{ serviceTier: "flex", reasoning: { effort: "
|
|
1972
|
+
title: "Gemini31FlashLiteConfig",
|
|
1973
|
+
description: "Strict generateContent config for model gemini-3.1-flash-lite. Level reasoning, fixed sampling, flex/standard tiers, structured output, grounding, priced.",
|
|
1974
|
+
examples: [{ serviceTier: "flex", reasoning: { effort: "medium" } }]
|
|
1890
1975
|
});
|
|
1891
|
-
var
|
|
1976
|
+
var Gemini31ProPreviewConfigSchema = z.union([
|
|
1892
1977
|
z.strictObject({
|
|
1893
1978
|
maxOutputTokens: z.number().int().positive().optional().meta({
|
|
1894
1979
|
title: "Max Output Tokens",
|
|
1895
|
-
description: "Maximum output token cap for gemini-3.1-
|
|
1980
|
+
description: "Maximum output token cap for gemini-3.1-pro-preview."
|
|
1896
1981
|
}),
|
|
1897
1982
|
stopSequences: z.array(z.string()).max(5).optional().meta({
|
|
1898
1983
|
title: "Stop Sequences",
|
|
1899
|
-
description: "Up to five stop sequences for gemini-3.1-
|
|
1984
|
+
description: "Up to five stop sequences for gemini-3.1-pro-preview."
|
|
1900
1985
|
}),
|
|
1901
1986
|
serviceTier: z.literal("flex").meta({
|
|
1902
1987
|
title: "Service Tier",
|
|
1903
|
-
description: "Explicit flex tier for gemini-3.1-
|
|
1988
|
+
description: "Explicit flex tier for gemini-3.1-pro-preview."
|
|
1904
1989
|
}),
|
|
1905
1990
|
reasoning: z.union([
|
|
1906
1991
|
z.strictObject({
|
|
1907
|
-
effort: z.enum(["
|
|
1992
|
+
effort: z.enum(["low", "medium", "high"]).meta({
|
|
1908
1993
|
title: "Reasoning Effort",
|
|
1909
|
-
description: "Reasoning effort for gemini-3.1-
|
|
1994
|
+
description: "Reasoning effort for gemini-3.1-pro-preview. Thinking off is not supported."
|
|
1910
1995
|
}),
|
|
1911
1996
|
includeThoughts: z.boolean().optional().meta({
|
|
1912
1997
|
title: "Include Thoughts",
|
|
@@ -1921,7 +2006,7 @@ var Gemini31FlashLiteConfigSchema = z.union([
|
|
|
1921
2006
|
})
|
|
1922
2007
|
]).optional().meta({
|
|
1923
2008
|
title: "Reasoning",
|
|
1924
|
-
description: "Gemini 3.1
|
|
2009
|
+
description: "Gemini 3.1 Pro Preview thinkingLevel configuration."
|
|
1925
2010
|
}),
|
|
1926
2011
|
timeoutMs: z.number().int().positive().optional().meta({
|
|
1927
2012
|
title: "Timeout",
|
|
@@ -1957,7 +2042,7 @@ var Gemini31FlashLiteConfigSchema = z.union([
|
|
|
1957
2042
|
})
|
|
1958
2043
|
).min(1).optional().meta({
|
|
1959
2044
|
title: "Tools",
|
|
1960
|
-
description: "Allowlisted Google tools for gemini-3.1-
|
|
2045
|
+
description: "Allowlisted Google tools for gemini-3.1-pro-preview."
|
|
1961
2046
|
}),
|
|
1962
2047
|
httpOptions: z.strictObject({
|
|
1963
2048
|
timeout: z.number().int().positive().optional().meta({
|
|
@@ -1974,31 +2059,31 @@ var Gemini31FlashLiteConfigSchema = z.union([
|
|
|
1974
2059
|
})
|
|
1975
2060
|
}).optional().meta({
|
|
1976
2061
|
title: "Google Provider Options",
|
|
1977
|
-
description: "Allowlisted Google provider options for gemini-3.1-
|
|
2062
|
+
description: "Allowlisted Google provider options for gemini-3.1-pro-preview."
|
|
1978
2063
|
})
|
|
1979
2064
|
}).optional().meta({
|
|
1980
2065
|
title: "Provider Options",
|
|
1981
|
-
description: "Provider-specific options accepted for gemini-3.1-
|
|
2066
|
+
description: "Provider-specific options accepted for gemini-3.1-pro-preview."
|
|
1982
2067
|
})
|
|
1983
2068
|
}),
|
|
1984
2069
|
z.strictObject({
|
|
1985
2070
|
maxOutputTokens: z.number().int().positive().optional().meta({
|
|
1986
2071
|
title: "Max Output Tokens",
|
|
1987
|
-
description: "Maximum output token cap for gemini-3.1-
|
|
2072
|
+
description: "Maximum output token cap for gemini-3.1-pro-preview."
|
|
1988
2073
|
}),
|
|
1989
2074
|
stopSequences: z.array(z.string()).max(5).optional().meta({
|
|
1990
2075
|
title: "Stop Sequences",
|
|
1991
|
-
description: "Up to five stop sequences for gemini-3.1-
|
|
2076
|
+
description: "Up to five stop sequences for gemini-3.1-pro-preview."
|
|
1992
2077
|
}),
|
|
1993
2078
|
serviceTier: z.literal("standard").optional().meta({
|
|
1994
2079
|
title: "Service Tier",
|
|
1995
|
-
description: "Standard tier or omitted tier for gemini-3.1-
|
|
2080
|
+
description: "Standard tier or omitted tier for gemini-3.1-pro-preview."
|
|
1996
2081
|
}),
|
|
1997
2082
|
reasoning: z.union([
|
|
1998
2083
|
z.strictObject({
|
|
1999
|
-
effort: z.enum(["
|
|
2084
|
+
effort: z.enum(["low", "medium", "high"]).meta({
|
|
2000
2085
|
title: "Reasoning Effort",
|
|
2001
|
-
description: "Reasoning effort for gemini-3.1-
|
|
2086
|
+
description: "Reasoning effort for gemini-3.1-pro-preview. Thinking off is not supported."
|
|
2002
2087
|
}),
|
|
2003
2088
|
includeThoughts: z.boolean().optional().meta({
|
|
2004
2089
|
title: "Include Thoughts",
|
|
@@ -2013,7 +2098,7 @@ var Gemini31FlashLiteConfigSchema = z.union([
|
|
|
2013
2098
|
})
|
|
2014
2099
|
]).optional().meta({
|
|
2015
2100
|
title: "Reasoning",
|
|
2016
|
-
description: "Gemini 3.1
|
|
2101
|
+
description: "Gemini 3.1 Pro Preview thinkingLevel configuration."
|
|
2017
2102
|
}),
|
|
2018
2103
|
timeoutMs: z.number().int().positive().optional().meta({
|
|
2019
2104
|
title: "Timeout",
|
|
@@ -2049,7 +2134,7 @@ var Gemini31FlashLiteConfigSchema = z.union([
|
|
|
2049
2134
|
})
|
|
2050
2135
|
).min(1).optional().meta({
|
|
2051
2136
|
title: "Tools",
|
|
2052
|
-
description: "Allowlisted Google tools for gemini-3.1-
|
|
2137
|
+
description: "Allowlisted Google tools for gemini-3.1-pro-preview."
|
|
2053
2138
|
}),
|
|
2054
2139
|
httpOptions: z.strictObject({
|
|
2055
2140
|
timeout: z.number().int().positive().optional().meta({
|
|
@@ -2062,37 +2147,37 @@ var Gemini31FlashLiteConfigSchema = z.union([
|
|
|
2062
2147
|
})
|
|
2063
2148
|
}).optional().meta({
|
|
2064
2149
|
title: "Google Provider Options",
|
|
2065
|
-
description: "Allowlisted Google provider options for gemini-3.1-
|
|
2150
|
+
description: "Allowlisted Google provider options for gemini-3.1-pro-preview."
|
|
2066
2151
|
})
|
|
2067
2152
|
}).optional().meta({
|
|
2068
2153
|
title: "Provider Options",
|
|
2069
|
-
description: "Provider-specific options accepted for gemini-3.1-
|
|
2154
|
+
description: "Provider-specific options accepted for gemini-3.1-pro-preview."
|
|
2070
2155
|
})
|
|
2071
2156
|
})
|
|
2072
2157
|
]).meta({
|
|
2073
|
-
title: "
|
|
2074
|
-
description: "Strict generateContent config for model gemini-3.1-
|
|
2075
|
-
examples: [{ serviceTier: "flex", reasoning: { effort: "
|
|
2158
|
+
title: "Gemini31ProPreviewConfig",
|
|
2159
|
+
description: "Strict generateContent config for model gemini-3.1-pro-preview. Level reasoning, fixed sampling, flex/standard tiers, structured output, grounding, priced.",
|
|
2160
|
+
examples: [{ serviceTier: "flex", reasoning: { effort: "high" } }]
|
|
2076
2161
|
});
|
|
2077
|
-
var
|
|
2162
|
+
var Gemini35FlashLiteConfigSchema = z.union([
|
|
2078
2163
|
z.strictObject({
|
|
2079
2164
|
maxOutputTokens: z.number().int().positive().optional().meta({
|
|
2080
2165
|
title: "Max Output Tokens",
|
|
2081
|
-
description: "Maximum output token cap for gemini-3.
|
|
2166
|
+
description: "Maximum output token cap for gemini-3.5-flash-lite."
|
|
2082
2167
|
}),
|
|
2083
2168
|
stopSequences: z.array(z.string()).max(5).optional().meta({
|
|
2084
2169
|
title: "Stop Sequences",
|
|
2085
|
-
description: "Up to five stop sequences for gemini-3.
|
|
2170
|
+
description: "Up to five stop sequences for gemini-3.5-flash-lite."
|
|
2086
2171
|
}),
|
|
2087
2172
|
serviceTier: z.literal("flex").meta({
|
|
2088
2173
|
title: "Service Tier",
|
|
2089
|
-
description: "Explicit flex tier for gemini-3.
|
|
2174
|
+
description: "Explicit flex tier for gemini-3.5-flash-lite."
|
|
2090
2175
|
}),
|
|
2091
2176
|
reasoning: z.union([
|
|
2092
2177
|
z.strictObject({
|
|
2093
|
-
effort: z.enum(["low", "medium", "high"]).meta({
|
|
2178
|
+
effort: z.enum(["none", "low", "medium", "high"]).meta({
|
|
2094
2179
|
title: "Reasoning Effort",
|
|
2095
|
-
description: "Reasoning effort for gemini-3.
|
|
2180
|
+
description: "Reasoning effort for gemini-3.5-flash-lite; none maps to minimal thinking."
|
|
2096
2181
|
}),
|
|
2097
2182
|
includeThoughts: z.boolean().optional().meta({
|
|
2098
2183
|
title: "Include Thoughts",
|
|
@@ -2107,7 +2192,7 @@ var Gemini31ProPreviewConfigSchema = z.union([
|
|
|
2107
2192
|
})
|
|
2108
2193
|
]).optional().meta({
|
|
2109
2194
|
title: "Reasoning",
|
|
2110
|
-
description: "Gemini 3.
|
|
2195
|
+
description: "Gemini 3.5 Flash-Lite thinkingLevel configuration."
|
|
2111
2196
|
}),
|
|
2112
2197
|
timeoutMs: z.number().int().positive().optional().meta({
|
|
2113
2198
|
title: "Timeout",
|
|
@@ -2143,7 +2228,7 @@ var Gemini31ProPreviewConfigSchema = z.union([
|
|
|
2143
2228
|
})
|
|
2144
2229
|
).min(1).optional().meta({
|
|
2145
2230
|
title: "Tools",
|
|
2146
|
-
description: "Allowlisted Google tools for gemini-3.
|
|
2231
|
+
description: "Allowlisted Google tools for gemini-3.5-flash-lite."
|
|
2147
2232
|
}),
|
|
2148
2233
|
httpOptions: z.strictObject({
|
|
2149
2234
|
timeout: z.number().int().positive().optional().meta({
|
|
@@ -2160,31 +2245,31 @@ var Gemini31ProPreviewConfigSchema = z.union([
|
|
|
2160
2245
|
})
|
|
2161
2246
|
}).optional().meta({
|
|
2162
2247
|
title: "Google Provider Options",
|
|
2163
|
-
description: "Allowlisted Google provider options for gemini-3.
|
|
2248
|
+
description: "Allowlisted Google provider options for gemini-3.5-flash-lite."
|
|
2164
2249
|
})
|
|
2165
2250
|
}).optional().meta({
|
|
2166
2251
|
title: "Provider Options",
|
|
2167
|
-
description: "Provider-specific options accepted for gemini-3.
|
|
2252
|
+
description: "Provider-specific options accepted for gemini-3.5-flash-lite."
|
|
2168
2253
|
})
|
|
2169
2254
|
}),
|
|
2170
2255
|
z.strictObject({
|
|
2171
2256
|
maxOutputTokens: z.number().int().positive().optional().meta({
|
|
2172
2257
|
title: "Max Output Tokens",
|
|
2173
|
-
description: "Maximum output token cap for gemini-3.
|
|
2258
|
+
description: "Maximum output token cap for gemini-3.5-flash-lite."
|
|
2174
2259
|
}),
|
|
2175
2260
|
stopSequences: z.array(z.string()).max(5).optional().meta({
|
|
2176
2261
|
title: "Stop Sequences",
|
|
2177
|
-
description: "Up to five stop sequences for gemini-3.
|
|
2262
|
+
description: "Up to five stop sequences for gemini-3.5-flash-lite."
|
|
2178
2263
|
}),
|
|
2179
2264
|
serviceTier: z.literal("standard").optional().meta({
|
|
2180
2265
|
title: "Service Tier",
|
|
2181
|
-
description: "Standard tier or omitted tier for gemini-3.
|
|
2266
|
+
description: "Standard tier or omitted tier for gemini-3.5-flash-lite."
|
|
2182
2267
|
}),
|
|
2183
2268
|
reasoning: z.union([
|
|
2184
2269
|
z.strictObject({
|
|
2185
|
-
effort: z.enum(["low", "medium", "high"]).meta({
|
|
2270
|
+
effort: z.enum(["none", "low", "medium", "high"]).meta({
|
|
2186
2271
|
title: "Reasoning Effort",
|
|
2187
|
-
description: "Reasoning effort for gemini-3.
|
|
2272
|
+
description: "Reasoning effort for gemini-3.5-flash-lite; none maps to minimal thinking."
|
|
2188
2273
|
}),
|
|
2189
2274
|
includeThoughts: z.boolean().optional().meta({
|
|
2190
2275
|
title: "Include Thoughts",
|
|
@@ -2199,7 +2284,7 @@ var Gemini31ProPreviewConfigSchema = z.union([
|
|
|
2199
2284
|
})
|
|
2200
2285
|
]).optional().meta({
|
|
2201
2286
|
title: "Reasoning",
|
|
2202
|
-
description: "Gemini 3.
|
|
2287
|
+
description: "Gemini 3.5 Flash-Lite thinkingLevel configuration."
|
|
2203
2288
|
}),
|
|
2204
2289
|
timeoutMs: z.number().int().positive().optional().meta({
|
|
2205
2290
|
title: "Timeout",
|
|
@@ -2235,7 +2320,7 @@ var Gemini31ProPreviewConfigSchema = z.union([
|
|
|
2235
2320
|
})
|
|
2236
2321
|
).min(1).optional().meta({
|
|
2237
2322
|
title: "Tools",
|
|
2238
|
-
description: "Allowlisted Google tools for gemini-3.
|
|
2323
|
+
description: "Allowlisted Google tools for gemini-3.5-flash-lite."
|
|
2239
2324
|
}),
|
|
2240
2325
|
httpOptions: z.strictObject({
|
|
2241
2326
|
timeout: z.number().int().positive().optional().meta({
|
|
@@ -2248,37 +2333,37 @@ var Gemini31ProPreviewConfigSchema = z.union([
|
|
|
2248
2333
|
})
|
|
2249
2334
|
}).optional().meta({
|
|
2250
2335
|
title: "Google Provider Options",
|
|
2251
|
-
description: "Allowlisted Google provider options for gemini-3.
|
|
2336
|
+
description: "Allowlisted Google provider options for gemini-3.5-flash-lite."
|
|
2252
2337
|
})
|
|
2253
2338
|
}).optional().meta({
|
|
2254
2339
|
title: "Provider Options",
|
|
2255
|
-
description: "Provider-specific options accepted for gemini-3.
|
|
2340
|
+
description: "Provider-specific options accepted for gemini-3.5-flash-lite."
|
|
2256
2341
|
})
|
|
2257
2342
|
})
|
|
2258
2343
|
]).meta({
|
|
2259
|
-
title: "
|
|
2260
|
-
description: "Strict generateContent config for model gemini-3.
|
|
2261
|
-
examples: [{ serviceTier: "flex", reasoning: { effort: "
|
|
2344
|
+
title: "Gemini35FlashLiteConfig",
|
|
2345
|
+
description: "Strict generateContent config for model gemini-3.5-flash-lite. Level reasoning, fixed sampling, flex/standard tiers, structured output, grounding, priced.",
|
|
2346
|
+
examples: [{ serviceTier: "flex", reasoning: { effort: "medium" } }]
|
|
2262
2347
|
});
|
|
2263
|
-
var
|
|
2348
|
+
var Gemini36FlashConfigSchema = z.union([
|
|
2264
2349
|
z.strictObject({
|
|
2265
2350
|
maxOutputTokens: z.number().int().positive().optional().meta({
|
|
2266
2351
|
title: "Max Output Tokens",
|
|
2267
|
-
description: "Maximum output token cap for gemini-3-flash
|
|
2352
|
+
description: "Maximum output token cap for gemini-3.6-flash."
|
|
2268
2353
|
}),
|
|
2269
2354
|
stopSequences: z.array(z.string()).max(5).optional().meta({
|
|
2270
2355
|
title: "Stop Sequences",
|
|
2271
|
-
description: "Up to five stop sequences for gemini-3-flash
|
|
2356
|
+
description: "Up to five stop sequences for gemini-3.6-flash."
|
|
2272
2357
|
}),
|
|
2273
2358
|
serviceTier: z.literal("flex").meta({
|
|
2274
2359
|
title: "Service Tier",
|
|
2275
|
-
description: "Explicit flex tier for gemini-3-flash
|
|
2360
|
+
description: "Explicit flex tier for gemini-3.6-flash."
|
|
2276
2361
|
}),
|
|
2277
2362
|
reasoning: z.union([
|
|
2278
2363
|
z.strictObject({
|
|
2279
2364
|
effort: z.enum(["none", "low", "medium", "high"]).meta({
|
|
2280
2365
|
title: "Reasoning Effort",
|
|
2281
|
-
description: "Reasoning effort for gemini-3-flash
|
|
2366
|
+
description: "Reasoning effort for gemini-3.6-flash; none maps to minimal thinking."
|
|
2282
2367
|
}),
|
|
2283
2368
|
includeThoughts: z.boolean().optional().meta({
|
|
2284
2369
|
title: "Include Thoughts",
|
|
@@ -2293,7 +2378,7 @@ var Gemini3FlashPreviewConfigSchema = z.union([
|
|
|
2293
2378
|
})
|
|
2294
2379
|
]).optional().meta({
|
|
2295
2380
|
title: "Reasoning",
|
|
2296
|
-
description: "Gemini 3 Flash
|
|
2381
|
+
description: "Gemini 3.6 Flash thinkingLevel configuration."
|
|
2297
2382
|
}),
|
|
2298
2383
|
timeoutMs: z.number().int().positive().optional().meta({
|
|
2299
2384
|
title: "Timeout",
|
|
@@ -2329,7 +2414,7 @@ var Gemini3FlashPreviewConfigSchema = z.union([
|
|
|
2329
2414
|
})
|
|
2330
2415
|
).min(1).optional().meta({
|
|
2331
2416
|
title: "Tools",
|
|
2332
|
-
description: "Allowlisted Google tools for gemini-3-flash
|
|
2417
|
+
description: "Allowlisted Google tools for gemini-3.6-flash."
|
|
2333
2418
|
}),
|
|
2334
2419
|
httpOptions: z.strictObject({
|
|
2335
2420
|
timeout: z.number().int().positive().optional().meta({
|
|
@@ -2346,31 +2431,31 @@ var Gemini3FlashPreviewConfigSchema = z.union([
|
|
|
2346
2431
|
})
|
|
2347
2432
|
}).optional().meta({
|
|
2348
2433
|
title: "Google Provider Options",
|
|
2349
|
-
description: "Allowlisted Google provider options for gemini-3-flash
|
|
2434
|
+
description: "Allowlisted Google provider options for gemini-3.6-flash."
|
|
2350
2435
|
})
|
|
2351
2436
|
}).optional().meta({
|
|
2352
2437
|
title: "Provider Options",
|
|
2353
|
-
description: "Provider-specific options accepted for gemini-3-flash
|
|
2438
|
+
description: "Provider-specific options accepted for gemini-3.6-flash."
|
|
2354
2439
|
})
|
|
2355
2440
|
}),
|
|
2356
2441
|
z.strictObject({
|
|
2357
2442
|
maxOutputTokens: z.number().int().positive().optional().meta({
|
|
2358
2443
|
title: "Max Output Tokens",
|
|
2359
|
-
description: "Maximum output token cap for gemini-3-flash
|
|
2444
|
+
description: "Maximum output token cap for gemini-3.6-flash."
|
|
2360
2445
|
}),
|
|
2361
2446
|
stopSequences: z.array(z.string()).max(5).optional().meta({
|
|
2362
2447
|
title: "Stop Sequences",
|
|
2363
|
-
description: "Up to five stop sequences for gemini-3-flash
|
|
2448
|
+
description: "Up to five stop sequences for gemini-3.6-flash."
|
|
2364
2449
|
}),
|
|
2365
2450
|
serviceTier: z.literal("standard").optional().meta({
|
|
2366
2451
|
title: "Service Tier",
|
|
2367
|
-
description: "Standard tier or omitted tier for gemini-3-flash
|
|
2452
|
+
description: "Standard tier or omitted tier for gemini-3.6-flash."
|
|
2368
2453
|
}),
|
|
2369
2454
|
reasoning: z.union([
|
|
2370
2455
|
z.strictObject({
|
|
2371
2456
|
effort: z.enum(["none", "low", "medium", "high"]).meta({
|
|
2372
2457
|
title: "Reasoning Effort",
|
|
2373
|
-
description: "Reasoning effort for gemini-3-flash
|
|
2458
|
+
description: "Reasoning effort for gemini-3.6-flash; none maps to minimal thinking."
|
|
2374
2459
|
}),
|
|
2375
2460
|
includeThoughts: z.boolean().optional().meta({
|
|
2376
2461
|
title: "Include Thoughts",
|
|
@@ -2385,7 +2470,7 @@ var Gemini3FlashPreviewConfigSchema = z.union([
|
|
|
2385
2470
|
})
|
|
2386
2471
|
]).optional().meta({
|
|
2387
2472
|
title: "Reasoning",
|
|
2388
|
-
description: "Gemini 3 Flash
|
|
2473
|
+
description: "Gemini 3.6 Flash thinkingLevel configuration."
|
|
2389
2474
|
}),
|
|
2390
2475
|
timeoutMs: z.number().int().positive().optional().meta({
|
|
2391
2476
|
title: "Timeout",
|
|
@@ -2421,7 +2506,7 @@ var Gemini3FlashPreviewConfigSchema = z.union([
|
|
|
2421
2506
|
})
|
|
2422
2507
|
).min(1).optional().meta({
|
|
2423
2508
|
title: "Tools",
|
|
2424
|
-
description: "Allowlisted Google tools for gemini-3-flash
|
|
2509
|
+
description: "Allowlisted Google tools for gemini-3.6-flash."
|
|
2425
2510
|
}),
|
|
2426
2511
|
httpOptions: z.strictObject({
|
|
2427
2512
|
timeout: z.number().int().positive().optional().meta({
|
|
@@ -2434,115 +2519,487 @@ var Gemini3FlashPreviewConfigSchema = z.union([
|
|
|
2434
2519
|
})
|
|
2435
2520
|
}).optional().meta({
|
|
2436
2521
|
title: "Google Provider Options",
|
|
2437
|
-
description: "Allowlisted Google provider options for gemini-3-flash
|
|
2522
|
+
description: "Allowlisted Google provider options for gemini-3.6-flash."
|
|
2438
2523
|
})
|
|
2439
2524
|
}).optional().meta({
|
|
2440
2525
|
title: "Provider Options",
|
|
2441
|
-
description: "Provider-specific options accepted for gemini-3-flash
|
|
2526
|
+
description: "Provider-specific options accepted for gemini-3.6-flash."
|
|
2442
2527
|
})
|
|
2443
2528
|
})
|
|
2444
2529
|
]).meta({
|
|
2445
|
-
title: "
|
|
2446
|
-
description: "Strict generateContent config for model gemini-3-flash
|
|
2530
|
+
title: "Gemini36FlashConfig",
|
|
2531
|
+
description: "Strict generateContent config for model gemini-3.6-flash. Level reasoning, fixed sampling, flex/standard tiers, structured output, grounding, priced.",
|
|
2447
2532
|
examples: [{ serviceTier: "flex", reasoning: { effort: "medium" } }]
|
|
2448
2533
|
});
|
|
2449
|
-
var
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
}),
|
|
2455
|
-
topP: z.number().min(0).max(1).optional().meta({
|
|
2456
|
-
title: "Top P",
|
|
2457
|
-
description: "Nucleus sampling probability for gemma-4-31b-it."
|
|
2458
|
-
}),
|
|
2459
|
-
topK: z.number().int().positive().optional().meta({
|
|
2460
|
-
title: "Top K",
|
|
2461
|
-
description: "Top-k sampling limit for gemma-4-31b-it."
|
|
2462
|
-
}),
|
|
2463
|
-
maxOutputTokens: z.number().int().positive().optional().meta({
|
|
2464
|
-
title: "Max Output Tokens",
|
|
2465
|
-
description: "Maximum output token cap for gemma-4-31b-it."
|
|
2466
|
-
}),
|
|
2467
|
-
stopSequences: z.array(z.string()).max(5).optional().meta({
|
|
2468
|
-
title: "Stop Sequences",
|
|
2469
|
-
description: "Up to five stop sequences for gemma-4-31b-it."
|
|
2470
|
-
}),
|
|
2471
|
-
reasoning: z.union([
|
|
2472
|
-
z.strictObject({
|
|
2473
|
-
effort: z.enum(["none", "high"]).meta({
|
|
2474
|
-
title: "Reasoning Effort",
|
|
2475
|
-
description: "Reasoning effort for gemma-4-31b-it."
|
|
2476
|
-
}),
|
|
2477
|
-
includeThoughts: z.boolean().optional().meta({
|
|
2478
|
-
title: "Include Thoughts",
|
|
2479
|
-
description: "Return provider thought summaries when supported."
|
|
2480
|
-
})
|
|
2534
|
+
var Gemini37FlashConfigSchema = z.union([
|
|
2535
|
+
z.strictObject({
|
|
2536
|
+
maxOutputTokens: z.number().int().positive().optional().meta({
|
|
2537
|
+
title: "Max Output Tokens",
|
|
2538
|
+
description: "Maximum output token cap for gemini-3.7-flash."
|
|
2481
2539
|
}),
|
|
2482
|
-
z.
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
|
|
2492
|
-
|
|
2493
|
-
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
title: "Cached Content",
|
|
2500
|
-
description: "Google cached content resource name."
|
|
2501
|
-
}),
|
|
2502
|
-
safetySettings: z.array(
|
|
2503
|
-
z.strictObject({
|
|
2504
|
-
category: z.string().min(1).meta({
|
|
2505
|
-
title: "Safety Category",
|
|
2506
|
-
description: "Google safety category identifier."
|
|
2507
|
-
}),
|
|
2508
|
-
threshold: z.string().min(1).meta({
|
|
2509
|
-
title: "Safety Threshold",
|
|
2510
|
-
description: "Google safety threshold identifier."
|
|
2511
|
-
})
|
|
2512
|
-
})
|
|
2513
|
-
).optional().meta({
|
|
2514
|
-
title: "Safety Settings",
|
|
2515
|
-
description: "Allowlisted Google safety settings."
|
|
2516
|
-
}),
|
|
2517
|
-
tools: z.array(
|
|
2518
|
-
z.strictObject({
|
|
2519
|
-
googleSearch: z.strictObject({}).meta({
|
|
2520
|
-
title: "Google Search",
|
|
2521
|
-
description: "Google Search grounding tool."
|
|
2522
|
-
})
|
|
2540
|
+
stopSequences: z.array(z.string()).max(5).optional().meta({
|
|
2541
|
+
title: "Stop Sequences",
|
|
2542
|
+
description: "Up to five stop sequences for gemini-3.7-flash."
|
|
2543
|
+
}),
|
|
2544
|
+
serviceTier: z.literal("flex").meta({
|
|
2545
|
+
title: "Service Tier",
|
|
2546
|
+
description: "Explicit flex tier for gemini-3.7-flash."
|
|
2547
|
+
}),
|
|
2548
|
+
reasoning: z.union([
|
|
2549
|
+
z.strictObject({
|
|
2550
|
+
effort: z.enum(["low", "medium", "high"]).meta({
|
|
2551
|
+
title: "Reasoning Effort",
|
|
2552
|
+
description: "Reasoning effort for gemini-3.7-flash. none is not admitted; thinkingLevel MINIMAL is never emitted."
|
|
2553
|
+
}),
|
|
2554
|
+
includeThoughts: z.boolean().optional().meta({
|
|
2555
|
+
title: "Include Thoughts",
|
|
2556
|
+
description: "Return provider thought summaries when supported."
|
|
2523
2557
|
})
|
|
2524
|
-
).min(1).optional().meta({
|
|
2525
|
-
title: "Tools",
|
|
2526
|
-
description: "Allowlisted Google tools for gemma-4-31b-it."
|
|
2527
2558
|
}),
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
title: "
|
|
2531
|
-
description: "
|
|
2559
|
+
z.strictObject({
|
|
2560
|
+
includeThoughts: z.boolean().meta({
|
|
2561
|
+
title: "Include Thoughts",
|
|
2562
|
+
description: "Return provider thought summaries when supported."
|
|
2532
2563
|
})
|
|
2533
|
-
}).optional().meta({
|
|
2534
|
-
title: "HTTP Options",
|
|
2535
|
-
description: "Allowlisted Google transport options."
|
|
2536
2564
|
})
|
|
2537
|
-
|
|
2538
|
-
title: "
|
|
2539
|
-
description: "
|
|
2540
|
-
})
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2565
|
+
]).optional().meta({
|
|
2566
|
+
title: "Reasoning",
|
|
2567
|
+
description: "Gemini 3.7 Flash thinkingLevel configuration."
|
|
2568
|
+
}),
|
|
2569
|
+
timeoutMs: z.number().int().positive().optional().meta({
|
|
2570
|
+
title: "Timeout",
|
|
2571
|
+
description: "Logical request timeout in milliseconds."
|
|
2572
|
+
}),
|
|
2573
|
+
providerOptions: z.strictObject({
|
|
2574
|
+
google: z.strictObject({
|
|
2575
|
+
cachedContent: z.string().min(1).optional().meta({
|
|
2576
|
+
title: "Cached Content",
|
|
2577
|
+
description: "Google cached content resource name."
|
|
2578
|
+
}),
|
|
2579
|
+
safetySettings: z.array(
|
|
2580
|
+
z.strictObject({
|
|
2581
|
+
category: z.string().min(1).meta({
|
|
2582
|
+
title: "Safety Category",
|
|
2583
|
+
description: "Google safety category identifier."
|
|
2584
|
+
}),
|
|
2585
|
+
threshold: z.string().min(1).meta({
|
|
2586
|
+
title: "Safety Threshold",
|
|
2587
|
+
description: "Google safety threshold identifier."
|
|
2588
|
+
})
|
|
2589
|
+
})
|
|
2590
|
+
).optional().meta({
|
|
2591
|
+
title: "Safety Settings",
|
|
2592
|
+
description: "Allowlisted Google safety settings."
|
|
2593
|
+
}),
|
|
2594
|
+
tools: z.array(
|
|
2595
|
+
z.strictObject({
|
|
2596
|
+
googleSearch: z.strictObject({}).meta({
|
|
2597
|
+
title: "Google Search",
|
|
2598
|
+
description: "Google Search grounding tool."
|
|
2599
|
+
})
|
|
2600
|
+
})
|
|
2601
|
+
).min(1).optional().meta({
|
|
2602
|
+
title: "Tools",
|
|
2603
|
+
description: "Allowlisted Google tools for gemini-3.7-flash."
|
|
2604
|
+
}),
|
|
2605
|
+
httpOptions: z.strictObject({
|
|
2606
|
+
timeout: z.number().int().positive().optional().meta({
|
|
2607
|
+
title: "HTTP Timeout",
|
|
2608
|
+
description: "Per-request Google transport timeout in milliseconds."
|
|
2609
|
+
})
|
|
2610
|
+
}).optional().meta({
|
|
2611
|
+
title: "HTTP Options",
|
|
2612
|
+
description: "Allowlisted Google transport options."
|
|
2613
|
+
}),
|
|
2614
|
+
flexFallback: z.boolean().optional().meta({
|
|
2615
|
+
title: "Flex Fallback",
|
|
2616
|
+
description: "Allow provider fallback from flex when flex was explicitly selected."
|
|
2617
|
+
})
|
|
2618
|
+
}).optional().meta({
|
|
2619
|
+
title: "Google Provider Options",
|
|
2620
|
+
description: "Allowlisted Google provider options for gemini-3.7-flash."
|
|
2621
|
+
})
|
|
2622
|
+
}).optional().meta({
|
|
2623
|
+
title: "Provider Options",
|
|
2624
|
+
description: "Provider-specific options accepted for gemini-3.7-flash."
|
|
2625
|
+
})
|
|
2626
|
+
}),
|
|
2627
|
+
z.strictObject({
|
|
2628
|
+
maxOutputTokens: z.number().int().positive().optional().meta({
|
|
2629
|
+
title: "Max Output Tokens",
|
|
2630
|
+
description: "Maximum output token cap for gemini-3.7-flash."
|
|
2631
|
+
}),
|
|
2632
|
+
stopSequences: z.array(z.string()).max(5).optional().meta({
|
|
2633
|
+
title: "Stop Sequences",
|
|
2634
|
+
description: "Up to five stop sequences for gemini-3.7-flash."
|
|
2635
|
+
}),
|
|
2636
|
+
serviceTier: z.literal("standard").optional().meta({
|
|
2637
|
+
title: "Service Tier",
|
|
2638
|
+
description: "Standard tier or omitted tier for gemini-3.7-flash."
|
|
2639
|
+
}),
|
|
2640
|
+
reasoning: z.union([
|
|
2641
|
+
z.strictObject({
|
|
2642
|
+
effort: z.enum(["low", "medium", "high"]).meta({
|
|
2643
|
+
title: "Reasoning Effort",
|
|
2644
|
+
description: "Reasoning effort for gemini-3.7-flash. none is not admitted; thinkingLevel MINIMAL is never emitted."
|
|
2645
|
+
}),
|
|
2646
|
+
includeThoughts: z.boolean().optional().meta({
|
|
2647
|
+
title: "Include Thoughts",
|
|
2648
|
+
description: "Return provider thought summaries when supported."
|
|
2649
|
+
})
|
|
2650
|
+
}),
|
|
2651
|
+
z.strictObject({
|
|
2652
|
+
includeThoughts: z.boolean().meta({
|
|
2653
|
+
title: "Include Thoughts",
|
|
2654
|
+
description: "Return provider thought summaries when supported."
|
|
2655
|
+
})
|
|
2656
|
+
})
|
|
2657
|
+
]).optional().meta({
|
|
2658
|
+
title: "Reasoning",
|
|
2659
|
+
description: "Gemini 3.7 Flash thinkingLevel configuration."
|
|
2660
|
+
}),
|
|
2661
|
+
timeoutMs: z.number().int().positive().optional().meta({
|
|
2662
|
+
title: "Timeout",
|
|
2663
|
+
description: "Logical request timeout in milliseconds."
|
|
2664
|
+
}),
|
|
2665
|
+
providerOptions: z.strictObject({
|
|
2666
|
+
google: z.strictObject({
|
|
2667
|
+
cachedContent: z.string().min(1).optional().meta({
|
|
2668
|
+
title: "Cached Content",
|
|
2669
|
+
description: "Google cached content resource name."
|
|
2670
|
+
}),
|
|
2671
|
+
safetySettings: z.array(
|
|
2672
|
+
z.strictObject({
|
|
2673
|
+
category: z.string().min(1).meta({
|
|
2674
|
+
title: "Safety Category",
|
|
2675
|
+
description: "Google safety category identifier."
|
|
2676
|
+
}),
|
|
2677
|
+
threshold: z.string().min(1).meta({
|
|
2678
|
+
title: "Safety Threshold",
|
|
2679
|
+
description: "Google safety threshold identifier."
|
|
2680
|
+
})
|
|
2681
|
+
})
|
|
2682
|
+
).optional().meta({
|
|
2683
|
+
title: "Safety Settings",
|
|
2684
|
+
description: "Allowlisted Google safety settings."
|
|
2685
|
+
}),
|
|
2686
|
+
tools: z.array(
|
|
2687
|
+
z.strictObject({
|
|
2688
|
+
googleSearch: z.strictObject({}).meta({
|
|
2689
|
+
title: "Google Search",
|
|
2690
|
+
description: "Google Search grounding tool."
|
|
2691
|
+
})
|
|
2692
|
+
})
|
|
2693
|
+
).min(1).optional().meta({
|
|
2694
|
+
title: "Tools",
|
|
2695
|
+
description: "Allowlisted Google tools for gemini-3.7-flash."
|
|
2696
|
+
}),
|
|
2697
|
+
httpOptions: z.strictObject({
|
|
2698
|
+
timeout: z.number().int().positive().optional().meta({
|
|
2699
|
+
title: "HTTP Timeout",
|
|
2700
|
+
description: "Per-request Google transport timeout in milliseconds."
|
|
2701
|
+
})
|
|
2702
|
+
}).optional().meta({
|
|
2703
|
+
title: "HTTP Options",
|
|
2704
|
+
description: "Allowlisted Google transport options."
|
|
2705
|
+
})
|
|
2706
|
+
}).optional().meta({
|
|
2707
|
+
title: "Google Provider Options",
|
|
2708
|
+
description: "Allowlisted Google provider options for gemini-3.7-flash."
|
|
2709
|
+
})
|
|
2710
|
+
}).optional().meta({
|
|
2711
|
+
title: "Provider Options",
|
|
2712
|
+
description: "Provider-specific options accepted for gemini-3.7-flash."
|
|
2713
|
+
})
|
|
2714
|
+
})
|
|
2715
|
+
]).meta({
|
|
2716
|
+
title: "Gemini37FlashConfig",
|
|
2717
|
+
description: "Strict generateContent config for model gemini-3.7-flash. Level reasoning, fixed sampling, flex/standard tiers, structured output, grounding, priced.",
|
|
2718
|
+
examples: [{ serviceTier: "flex", reasoning: { effort: "medium" } }]
|
|
2719
|
+
});
|
|
2720
|
+
var Gemini38FlashConfigSchema = z.union([
|
|
2721
|
+
z.strictObject({
|
|
2722
|
+
maxOutputTokens: z.number().int().positive().optional().meta({
|
|
2723
|
+
title: "Max Output Tokens",
|
|
2724
|
+
description: "Maximum output token cap for gemini-3.8-flash."
|
|
2725
|
+
}),
|
|
2726
|
+
stopSequences: z.array(z.string()).max(5).optional().meta({
|
|
2727
|
+
title: "Stop Sequences",
|
|
2728
|
+
description: "Up to five stop sequences for gemini-3.8-flash."
|
|
2729
|
+
}),
|
|
2730
|
+
serviceTier: z.literal("flex").meta({
|
|
2731
|
+
title: "Service Tier",
|
|
2732
|
+
description: "Explicit flex tier for gemini-3.8-flash."
|
|
2733
|
+
}),
|
|
2734
|
+
reasoning: z.union([
|
|
2735
|
+
z.strictObject({
|
|
2736
|
+
effort: z.enum(["low", "medium", "high"]).meta({
|
|
2737
|
+
title: "Reasoning Effort",
|
|
2738
|
+
description: "Reasoning effort for gemini-3.8-flash. none is not admitted; thinkingLevel MINIMAL is never emitted."
|
|
2739
|
+
}),
|
|
2740
|
+
includeThoughts: z.boolean().optional().meta({
|
|
2741
|
+
title: "Include Thoughts",
|
|
2742
|
+
description: "Return provider thought summaries when supported."
|
|
2743
|
+
})
|
|
2744
|
+
}),
|
|
2745
|
+
z.strictObject({
|
|
2746
|
+
includeThoughts: z.boolean().meta({
|
|
2747
|
+
title: "Include Thoughts",
|
|
2748
|
+
description: "Return provider thought summaries when supported."
|
|
2749
|
+
})
|
|
2750
|
+
})
|
|
2751
|
+
]).optional().meta({
|
|
2752
|
+
title: "Reasoning",
|
|
2753
|
+
description: "Gemini 3.8 Flash thinkingLevel configuration."
|
|
2754
|
+
}),
|
|
2755
|
+
timeoutMs: z.number().int().positive().optional().meta({
|
|
2756
|
+
title: "Timeout",
|
|
2757
|
+
description: "Logical request timeout in milliseconds."
|
|
2758
|
+
}),
|
|
2759
|
+
providerOptions: z.strictObject({
|
|
2760
|
+
google: z.strictObject({
|
|
2761
|
+
cachedContent: z.string().min(1).optional().meta({
|
|
2762
|
+
title: "Cached Content",
|
|
2763
|
+
description: "Google cached content resource name."
|
|
2764
|
+
}),
|
|
2765
|
+
safetySettings: z.array(
|
|
2766
|
+
z.strictObject({
|
|
2767
|
+
category: z.string().min(1).meta({
|
|
2768
|
+
title: "Safety Category",
|
|
2769
|
+
description: "Google safety category identifier."
|
|
2770
|
+
}),
|
|
2771
|
+
threshold: z.string().min(1).meta({
|
|
2772
|
+
title: "Safety Threshold",
|
|
2773
|
+
description: "Google safety threshold identifier."
|
|
2774
|
+
})
|
|
2775
|
+
})
|
|
2776
|
+
).optional().meta({
|
|
2777
|
+
title: "Safety Settings",
|
|
2778
|
+
description: "Allowlisted Google safety settings."
|
|
2779
|
+
}),
|
|
2780
|
+
tools: z.array(
|
|
2781
|
+
z.strictObject({
|
|
2782
|
+
googleSearch: z.strictObject({}).meta({
|
|
2783
|
+
title: "Google Search",
|
|
2784
|
+
description: "Google Search grounding tool."
|
|
2785
|
+
})
|
|
2786
|
+
})
|
|
2787
|
+
).min(1).optional().meta({
|
|
2788
|
+
title: "Tools",
|
|
2789
|
+
description: "Allowlisted Google tools for gemini-3.8-flash."
|
|
2790
|
+
}),
|
|
2791
|
+
httpOptions: z.strictObject({
|
|
2792
|
+
timeout: z.number().int().positive().optional().meta({
|
|
2793
|
+
title: "HTTP Timeout",
|
|
2794
|
+
description: "Per-request Google transport timeout in milliseconds."
|
|
2795
|
+
})
|
|
2796
|
+
}).optional().meta({
|
|
2797
|
+
title: "HTTP Options",
|
|
2798
|
+
description: "Allowlisted Google transport options."
|
|
2799
|
+
}),
|
|
2800
|
+
flexFallback: z.boolean().optional().meta({
|
|
2801
|
+
title: "Flex Fallback",
|
|
2802
|
+
description: "Allow provider fallback from flex when flex was explicitly selected."
|
|
2803
|
+
})
|
|
2804
|
+
}).optional().meta({
|
|
2805
|
+
title: "Google Provider Options",
|
|
2806
|
+
description: "Allowlisted Google provider options for gemini-3.8-flash."
|
|
2807
|
+
})
|
|
2808
|
+
}).optional().meta({
|
|
2809
|
+
title: "Provider Options",
|
|
2810
|
+
description: "Provider-specific options accepted for gemini-3.8-flash."
|
|
2811
|
+
})
|
|
2812
|
+
}),
|
|
2813
|
+
z.strictObject({
|
|
2814
|
+
maxOutputTokens: z.number().int().positive().optional().meta({
|
|
2815
|
+
title: "Max Output Tokens",
|
|
2816
|
+
description: "Maximum output token cap for gemini-3.8-flash."
|
|
2817
|
+
}),
|
|
2818
|
+
stopSequences: z.array(z.string()).max(5).optional().meta({
|
|
2819
|
+
title: "Stop Sequences",
|
|
2820
|
+
description: "Up to five stop sequences for gemini-3.8-flash."
|
|
2821
|
+
}),
|
|
2822
|
+
serviceTier: z.literal("standard").optional().meta({
|
|
2823
|
+
title: "Service Tier",
|
|
2824
|
+
description: "Standard tier or omitted tier for gemini-3.8-flash."
|
|
2825
|
+
}),
|
|
2826
|
+
reasoning: z.union([
|
|
2827
|
+
z.strictObject({
|
|
2828
|
+
effort: z.enum(["low", "medium", "high"]).meta({
|
|
2829
|
+
title: "Reasoning Effort",
|
|
2830
|
+
description: "Reasoning effort for gemini-3.8-flash. none is not admitted; thinkingLevel MINIMAL is never emitted."
|
|
2831
|
+
}),
|
|
2832
|
+
includeThoughts: z.boolean().optional().meta({
|
|
2833
|
+
title: "Include Thoughts",
|
|
2834
|
+
description: "Return provider thought summaries when supported."
|
|
2835
|
+
})
|
|
2836
|
+
}),
|
|
2837
|
+
z.strictObject({
|
|
2838
|
+
includeThoughts: z.boolean().meta({
|
|
2839
|
+
title: "Include Thoughts",
|
|
2840
|
+
description: "Return provider thought summaries when supported."
|
|
2841
|
+
})
|
|
2842
|
+
})
|
|
2843
|
+
]).optional().meta({
|
|
2844
|
+
title: "Reasoning",
|
|
2845
|
+
description: "Gemini 3.8 Flash thinkingLevel configuration."
|
|
2846
|
+
}),
|
|
2847
|
+
timeoutMs: z.number().int().positive().optional().meta({
|
|
2848
|
+
title: "Timeout",
|
|
2849
|
+
description: "Logical request timeout in milliseconds."
|
|
2850
|
+
}),
|
|
2851
|
+
providerOptions: z.strictObject({
|
|
2852
|
+
google: z.strictObject({
|
|
2853
|
+
cachedContent: z.string().min(1).optional().meta({
|
|
2854
|
+
title: "Cached Content",
|
|
2855
|
+
description: "Google cached content resource name."
|
|
2856
|
+
}),
|
|
2857
|
+
safetySettings: z.array(
|
|
2858
|
+
z.strictObject({
|
|
2859
|
+
category: z.string().min(1).meta({
|
|
2860
|
+
title: "Safety Category",
|
|
2861
|
+
description: "Google safety category identifier."
|
|
2862
|
+
}),
|
|
2863
|
+
threshold: z.string().min(1).meta({
|
|
2864
|
+
title: "Safety Threshold",
|
|
2865
|
+
description: "Google safety threshold identifier."
|
|
2866
|
+
})
|
|
2867
|
+
})
|
|
2868
|
+
).optional().meta({
|
|
2869
|
+
title: "Safety Settings",
|
|
2870
|
+
description: "Allowlisted Google safety settings."
|
|
2871
|
+
}),
|
|
2872
|
+
tools: z.array(
|
|
2873
|
+
z.strictObject({
|
|
2874
|
+
googleSearch: z.strictObject({}).meta({
|
|
2875
|
+
title: "Google Search",
|
|
2876
|
+
description: "Google Search grounding tool."
|
|
2877
|
+
})
|
|
2878
|
+
})
|
|
2879
|
+
).min(1).optional().meta({
|
|
2880
|
+
title: "Tools",
|
|
2881
|
+
description: "Allowlisted Google tools for gemini-3.8-flash."
|
|
2882
|
+
}),
|
|
2883
|
+
httpOptions: z.strictObject({
|
|
2884
|
+
timeout: z.number().int().positive().optional().meta({
|
|
2885
|
+
title: "HTTP Timeout",
|
|
2886
|
+
description: "Per-request Google transport timeout in milliseconds."
|
|
2887
|
+
})
|
|
2888
|
+
}).optional().meta({
|
|
2889
|
+
title: "HTTP Options",
|
|
2890
|
+
description: "Allowlisted Google transport options."
|
|
2891
|
+
})
|
|
2892
|
+
}).optional().meta({
|
|
2893
|
+
title: "Google Provider Options",
|
|
2894
|
+
description: "Allowlisted Google provider options for gemini-3.8-flash."
|
|
2895
|
+
})
|
|
2896
|
+
}).optional().meta({
|
|
2897
|
+
title: "Provider Options",
|
|
2898
|
+
description: "Provider-specific options accepted for gemini-3.8-flash."
|
|
2899
|
+
})
|
|
2900
|
+
})
|
|
2901
|
+
]).meta({
|
|
2902
|
+
title: "Gemini38FlashConfig",
|
|
2903
|
+
description: "Strict generateContent config for model gemini-3.8-flash. Level reasoning, fixed sampling, flex/standard tiers, structured output, grounding, priced.",
|
|
2904
|
+
examples: [{ serviceTier: "flex", reasoning: { effort: "medium" } }]
|
|
2905
|
+
});
|
|
2906
|
+
var Gemma431bItConfigSchema = z.strictObject({
|
|
2907
|
+
temperature: z.number().min(0).max(2).optional().meta({
|
|
2908
|
+
title: "Temperature",
|
|
2909
|
+
description: "Sampling temperature for gemma-4-31b-it.",
|
|
2910
|
+
examples: [0.7]
|
|
2911
|
+
}),
|
|
2912
|
+
topP: z.number().min(0).max(1).optional().meta({
|
|
2913
|
+
title: "Top P",
|
|
2914
|
+
description: "Nucleus sampling probability for gemma-4-31b-it."
|
|
2915
|
+
}),
|
|
2916
|
+
topK: z.number().int().positive().optional().meta({
|
|
2917
|
+
title: "Top K",
|
|
2918
|
+
description: "Top-k sampling limit for gemma-4-31b-it."
|
|
2919
|
+
}),
|
|
2920
|
+
maxOutputTokens: z.number().int().positive().optional().meta({
|
|
2921
|
+
title: "Max Output Tokens",
|
|
2922
|
+
description: "Maximum output token cap for gemma-4-31b-it."
|
|
2923
|
+
}),
|
|
2924
|
+
stopSequences: z.array(z.string()).max(5).optional().meta({
|
|
2925
|
+
title: "Stop Sequences",
|
|
2926
|
+
description: "Up to five stop sequences for gemma-4-31b-it."
|
|
2927
|
+
}),
|
|
2928
|
+
reasoning: z.union([
|
|
2929
|
+
z.strictObject({
|
|
2930
|
+
effort: z.enum(["none", "high"]).meta({
|
|
2931
|
+
title: "Reasoning Effort",
|
|
2932
|
+
description: "Reasoning effort for gemma-4-31b-it."
|
|
2933
|
+
}),
|
|
2934
|
+
includeThoughts: z.boolean().optional().meta({
|
|
2935
|
+
title: "Include Thoughts",
|
|
2936
|
+
description: "Return provider thought summaries when supported."
|
|
2937
|
+
})
|
|
2938
|
+
}),
|
|
2939
|
+
z.strictObject({
|
|
2940
|
+
includeThoughts: z.boolean().meta({
|
|
2941
|
+
title: "Include Thoughts",
|
|
2942
|
+
description: "Return provider thought summaries when supported."
|
|
2943
|
+
})
|
|
2944
|
+
})
|
|
2945
|
+
]).optional().meta({
|
|
2946
|
+
title: "Reasoning",
|
|
2947
|
+
description: "Gemma 4 31B IT thinkingLevel configuration."
|
|
2948
|
+
}),
|
|
2949
|
+
timeoutMs: z.number().int().positive().optional().meta({
|
|
2950
|
+
title: "Timeout",
|
|
2951
|
+
description: "Logical request timeout in milliseconds."
|
|
2952
|
+
}),
|
|
2953
|
+
providerOptions: z.strictObject({
|
|
2954
|
+
google: z.strictObject({
|
|
2955
|
+
cachedContent: z.string().min(1).optional().meta({
|
|
2956
|
+
title: "Cached Content",
|
|
2957
|
+
description: "Google cached content resource name."
|
|
2958
|
+
}),
|
|
2959
|
+
safetySettings: z.array(
|
|
2960
|
+
z.strictObject({
|
|
2961
|
+
category: z.string().min(1).meta({
|
|
2962
|
+
title: "Safety Category",
|
|
2963
|
+
description: "Google safety category identifier."
|
|
2964
|
+
}),
|
|
2965
|
+
threshold: z.string().min(1).meta({
|
|
2966
|
+
title: "Safety Threshold",
|
|
2967
|
+
description: "Google safety threshold identifier."
|
|
2968
|
+
})
|
|
2969
|
+
})
|
|
2970
|
+
).optional().meta({
|
|
2971
|
+
title: "Safety Settings",
|
|
2972
|
+
description: "Allowlisted Google safety settings."
|
|
2973
|
+
}),
|
|
2974
|
+
tools: z.array(
|
|
2975
|
+
z.strictObject({
|
|
2976
|
+
googleSearch: z.strictObject({}).meta({
|
|
2977
|
+
title: "Google Search",
|
|
2978
|
+
description: "Google Search grounding tool."
|
|
2979
|
+
})
|
|
2980
|
+
})
|
|
2981
|
+
).min(1).optional().meta({
|
|
2982
|
+
title: "Tools",
|
|
2983
|
+
description: "Allowlisted Google tools for gemma-4-31b-it."
|
|
2984
|
+
}),
|
|
2985
|
+
httpOptions: z.strictObject({
|
|
2986
|
+
timeout: z.number().int().positive().optional().meta({
|
|
2987
|
+
title: "HTTP Timeout",
|
|
2988
|
+
description: "Per-request Google transport timeout in milliseconds."
|
|
2989
|
+
})
|
|
2990
|
+
}).optional().meta({
|
|
2991
|
+
title: "HTTP Options",
|
|
2992
|
+
description: "Allowlisted Google transport options."
|
|
2993
|
+
})
|
|
2994
|
+
}).optional().meta({
|
|
2995
|
+
title: "Google Provider Options",
|
|
2996
|
+
description: "Allowlisted Google provider options for gemma-4-31b-it."
|
|
2997
|
+
})
|
|
2998
|
+
}).optional().meta({
|
|
2999
|
+
title: "Provider Options",
|
|
3000
|
+
description: "Provider-specific options accepted for gemma-4-31b-it."
|
|
3001
|
+
})
|
|
3002
|
+
}).meta({
|
|
2546
3003
|
title: "Gemma431bItConfig",
|
|
2547
3004
|
description: "Strict generateContent config for model gemma-4-31b-it. Level reasoning, tunable sampling, no service tier, structured output, grounding, intentionally unpriced.",
|
|
2548
3005
|
examples: [{ temperature: 0.7, reasoning: { effort: "high" } }]
|
|
@@ -2648,23 +3105,12 @@ var Gemma426bA4bItConfigSchema = z.strictObject({
|
|
|
2648
3105
|
description: "Strict generateContent config for model gemma-4-26b-a4b-it. Level reasoning, tunable sampling, no service tier, structured output, grounding, intentionally unpriced.",
|
|
2649
3106
|
examples: [{ temperature: 0.7, reasoning: { effort: "none" } }]
|
|
2650
3107
|
});
|
|
2651
|
-
var
|
|
2652
|
-
"low",
|
|
2653
|
-
"medium",
|
|
2654
|
-
"high"
|
|
2655
|
-
];
|
|
2656
|
-
var GEMINI_LEVEL_REASONING_EFFORTS = [
|
|
2657
|
-
"none",
|
|
2658
|
-
"low",
|
|
2659
|
-
"medium",
|
|
2660
|
-
"high"
|
|
2661
|
-
];
|
|
2662
|
-
var GEMINI_LEVEL_PRO_PREVIEW_REASONING_EFFORTS = [
|
|
3108
|
+
var GEMINI_STANDARD_REASONING_EFFORTS = [
|
|
2663
3109
|
"low",
|
|
2664
3110
|
"medium",
|
|
2665
3111
|
"high"
|
|
2666
3112
|
];
|
|
2667
|
-
var
|
|
3113
|
+
var GEMINI_LEVEL_WITH_NONE_REASONING_EFFORTS = [
|
|
2668
3114
|
"none",
|
|
2669
3115
|
"low",
|
|
2670
3116
|
"medium",
|
|
@@ -2685,7 +3131,7 @@ var geminiModelDescriptors = [
|
|
|
2685
3131
|
nativeStructuredOutput: true,
|
|
2686
3132
|
vision: true,
|
|
2687
3133
|
reasoningApi: "budget",
|
|
2688
|
-
admittedReasoningEfforts:
|
|
3134
|
+
admittedReasoningEfforts: GEMINI_STANDARD_REASONING_EFFORTS,
|
|
2689
3135
|
sampling: "tunable",
|
|
2690
3136
|
caching: { explicit: true, minTokens: 2048 },
|
|
2691
3137
|
grounding: true,
|
|
@@ -2706,7 +3152,7 @@ var geminiModelDescriptors = [
|
|
|
2706
3152
|
nativeStructuredOutput: true,
|
|
2707
3153
|
vision: true,
|
|
2708
3154
|
reasoningApi: "budget",
|
|
2709
|
-
admittedReasoningEfforts:
|
|
3155
|
+
admittedReasoningEfforts: GEMINI_LEVEL_WITH_NONE_REASONING_EFFORTS,
|
|
2710
3156
|
sampling: "tunable",
|
|
2711
3157
|
caching: { explicit: true, minTokens: 2048 },
|
|
2712
3158
|
grounding: true,
|
|
@@ -2727,7 +3173,7 @@ var geminiModelDescriptors = [
|
|
|
2727
3173
|
nativeStructuredOutput: true,
|
|
2728
3174
|
vision: true,
|
|
2729
3175
|
reasoningApi: "budget",
|
|
2730
|
-
admittedReasoningEfforts:
|
|
3176
|
+
admittedReasoningEfforts: GEMINI_LEVEL_WITH_NONE_REASONING_EFFORTS,
|
|
2731
3177
|
sampling: "tunable",
|
|
2732
3178
|
caching: { explicit: true, minTokens: 2048 },
|
|
2733
3179
|
grounding: true,
|
|
@@ -2739,88 +3185,136 @@ var geminiModelDescriptors = [
|
|
|
2739
3185
|
validateConfig: zodToStandardSchema(Gemini25FlashLiteConfigSchema)
|
|
2740
3186
|
},
|
|
2741
3187
|
{
|
|
2742
|
-
model: "gemini-3.
|
|
3188
|
+
model: "gemini-3.1-flash-lite",
|
|
2743
3189
|
provider: "google",
|
|
2744
|
-
pricingFamily: "gemini-3.
|
|
3190
|
+
pricingFamily: "gemini-3.1-flash-lite",
|
|
2745
3191
|
capabilities: {
|
|
2746
3192
|
reasoning: true,
|
|
2747
3193
|
structuredOutput: true,
|
|
2748
3194
|
nativeStructuredOutput: true,
|
|
2749
3195
|
vision: true,
|
|
2750
3196
|
reasoningApi: "level",
|
|
2751
|
-
admittedReasoningEfforts:
|
|
3197
|
+
admittedReasoningEfforts: GEMINI_LEVEL_WITH_NONE_REASONING_EFFORTS,
|
|
2752
3198
|
sampling: "fixed",
|
|
2753
|
-
caching: { explicit: true, minTokens:
|
|
3199
|
+
caching: { explicit: true, minTokens: 1024 },
|
|
2754
3200
|
grounding: true,
|
|
2755
3201
|
functionCalling: true,
|
|
3202
|
+
structuredOutputWithTools: true,
|
|
2756
3203
|
serviceTiers: ["flex", "standard"]
|
|
2757
3204
|
},
|
|
2758
|
-
configSchema:
|
|
2759
|
-
configJsonSchema: toConfigJsonSchema(
|
|
2760
|
-
validateConfig: zodToStandardSchema(
|
|
3205
|
+
configSchema: Gemini31FlashLiteConfigSchema,
|
|
3206
|
+
configJsonSchema: toConfigJsonSchema(Gemini31FlashLiteConfigSchema),
|
|
3207
|
+
validateConfig: zodToStandardSchema(Gemini31FlashLiteConfigSchema)
|
|
2761
3208
|
},
|
|
2762
3209
|
{
|
|
2763
|
-
model: "gemini-3.1-
|
|
3210
|
+
model: "gemini-3.1-pro-preview",
|
|
2764
3211
|
provider: "google",
|
|
2765
|
-
pricingFamily: "gemini-3.1-
|
|
3212
|
+
pricingFamily: "gemini-3.1-pro-preview",
|
|
2766
3213
|
capabilities: {
|
|
2767
3214
|
reasoning: true,
|
|
2768
3215
|
structuredOutput: true,
|
|
2769
3216
|
nativeStructuredOutput: true,
|
|
2770
3217
|
vision: true,
|
|
2771
3218
|
reasoningApi: "level",
|
|
2772
|
-
admittedReasoningEfforts:
|
|
3219
|
+
admittedReasoningEfforts: GEMINI_STANDARD_REASONING_EFFORTS,
|
|
2773
3220
|
sampling: "fixed",
|
|
2774
|
-
caching: { explicit: true, minTokens:
|
|
3221
|
+
caching: { explicit: true, minTokens: 1024 },
|
|
2775
3222
|
grounding: true,
|
|
2776
3223
|
functionCalling: true,
|
|
3224
|
+
structuredOutputWithTools: true,
|
|
2777
3225
|
serviceTiers: ["flex", "standard"]
|
|
2778
3226
|
},
|
|
2779
|
-
configSchema:
|
|
2780
|
-
configJsonSchema: toConfigJsonSchema(
|
|
2781
|
-
validateConfig: zodToStandardSchema(
|
|
3227
|
+
configSchema: Gemini31ProPreviewConfigSchema,
|
|
3228
|
+
configJsonSchema: toConfigJsonSchema(Gemini31ProPreviewConfigSchema),
|
|
3229
|
+
validateConfig: zodToStandardSchema(Gemini31ProPreviewConfigSchema)
|
|
2782
3230
|
},
|
|
2783
3231
|
{
|
|
2784
|
-
model: "gemini-3.
|
|
3232
|
+
model: "gemini-3.8-flash",
|
|
2785
3233
|
provider: "google",
|
|
2786
|
-
pricingFamily: "gemini-3.
|
|
3234
|
+
pricingFamily: "gemini-3.8-flash",
|
|
2787
3235
|
capabilities: {
|
|
2788
3236
|
reasoning: true,
|
|
2789
3237
|
structuredOutput: true,
|
|
2790
3238
|
nativeStructuredOutput: true,
|
|
2791
3239
|
vision: true,
|
|
2792
3240
|
reasoningApi: "level",
|
|
2793
|
-
admittedReasoningEfforts:
|
|
3241
|
+
admittedReasoningEfforts: GEMINI_STANDARD_REASONING_EFFORTS,
|
|
2794
3242
|
sampling: "fixed",
|
|
2795
|
-
caching: { explicit: true, minTokens:
|
|
3243
|
+
caching: { explicit: true, minTokens: 1024 },
|
|
2796
3244
|
grounding: true,
|
|
2797
3245
|
functionCalling: true,
|
|
3246
|
+
structuredOutputWithTools: true,
|
|
2798
3247
|
serviceTiers: ["flex", "standard"]
|
|
2799
3248
|
},
|
|
2800
|
-
configSchema:
|
|
2801
|
-
configJsonSchema: toConfigJsonSchema(
|
|
2802
|
-
validateConfig: zodToStandardSchema(
|
|
3249
|
+
configSchema: Gemini38FlashConfigSchema,
|
|
3250
|
+
configJsonSchema: toConfigJsonSchema(Gemini38FlashConfigSchema),
|
|
3251
|
+
validateConfig: zodToStandardSchema(Gemini38FlashConfigSchema)
|
|
2803
3252
|
},
|
|
2804
3253
|
{
|
|
2805
|
-
model: "gemini-3-flash
|
|
3254
|
+
model: "gemini-3.7-flash",
|
|
2806
3255
|
provider: "google",
|
|
2807
|
-
pricingFamily: "gemini-3-flash
|
|
3256
|
+
pricingFamily: "gemini-3.7-flash",
|
|
2808
3257
|
capabilities: {
|
|
2809
3258
|
reasoning: true,
|
|
2810
3259
|
structuredOutput: true,
|
|
2811
3260
|
nativeStructuredOutput: true,
|
|
2812
3261
|
vision: true,
|
|
2813
3262
|
reasoningApi: "level",
|
|
2814
|
-
admittedReasoningEfforts:
|
|
3263
|
+
admittedReasoningEfforts: GEMINI_STANDARD_REASONING_EFFORTS,
|
|
2815
3264
|
sampling: "fixed",
|
|
2816
|
-
caching: { explicit: true, minTokens:
|
|
3265
|
+
caching: { explicit: true, minTokens: 1024 },
|
|
3266
|
+
grounding: true,
|
|
3267
|
+
functionCalling: true,
|
|
3268
|
+
structuredOutputWithTools: true,
|
|
3269
|
+
serviceTiers: ["flex", "standard"]
|
|
3270
|
+
},
|
|
3271
|
+
configSchema: Gemini37FlashConfigSchema,
|
|
3272
|
+
configJsonSchema: toConfigJsonSchema(Gemini37FlashConfigSchema),
|
|
3273
|
+
validateConfig: zodToStandardSchema(Gemini37FlashConfigSchema)
|
|
3274
|
+
},
|
|
3275
|
+
{
|
|
3276
|
+
model: "gemini-3.6-flash",
|
|
3277
|
+
provider: "google",
|
|
3278
|
+
pricingFamily: "gemini-3.6-flash",
|
|
3279
|
+
capabilities: {
|
|
3280
|
+
reasoning: true,
|
|
3281
|
+
structuredOutput: true,
|
|
3282
|
+
nativeStructuredOutput: true,
|
|
3283
|
+
vision: true,
|
|
3284
|
+
reasoningApi: "level",
|
|
3285
|
+
admittedReasoningEfforts: GEMINI_LEVEL_WITH_NONE_REASONING_EFFORTS,
|
|
3286
|
+
sampling: "fixed",
|
|
3287
|
+
caching: { explicit: true, minTokens: 1024 },
|
|
3288
|
+
grounding: true,
|
|
3289
|
+
functionCalling: true,
|
|
3290
|
+
structuredOutputWithTools: true,
|
|
3291
|
+
serviceTiers: ["flex", "standard"]
|
|
3292
|
+
},
|
|
3293
|
+
configSchema: Gemini36FlashConfigSchema,
|
|
3294
|
+
configJsonSchema: toConfigJsonSchema(Gemini36FlashConfigSchema),
|
|
3295
|
+
validateConfig: zodToStandardSchema(Gemini36FlashConfigSchema)
|
|
3296
|
+
},
|
|
3297
|
+
{
|
|
3298
|
+
model: "gemini-3.5-flash-lite",
|
|
3299
|
+
provider: "google",
|
|
3300
|
+
pricingFamily: "gemini-3.5-flash-lite",
|
|
3301
|
+
capabilities: {
|
|
3302
|
+
reasoning: true,
|
|
3303
|
+
structuredOutput: true,
|
|
3304
|
+
nativeStructuredOutput: true,
|
|
3305
|
+
vision: true,
|
|
3306
|
+
reasoningApi: "level",
|
|
3307
|
+
admittedReasoningEfforts: GEMINI_LEVEL_WITH_NONE_REASONING_EFFORTS,
|
|
3308
|
+
sampling: "fixed",
|
|
3309
|
+
caching: { explicit: true, minTokens: 1024 },
|
|
2817
3310
|
grounding: true,
|
|
2818
3311
|
functionCalling: true,
|
|
3312
|
+
structuredOutputWithTools: true,
|
|
2819
3313
|
serviceTiers: ["flex", "standard"]
|
|
2820
3314
|
},
|
|
2821
|
-
configSchema:
|
|
2822
|
-
configJsonSchema: toConfigJsonSchema(
|
|
2823
|
-
validateConfig: zodToStandardSchema(
|
|
3315
|
+
configSchema: Gemini35FlashLiteConfigSchema,
|
|
3316
|
+
configJsonSchema: toConfigJsonSchema(Gemini35FlashLiteConfigSchema),
|
|
3317
|
+
validateConfig: zodToStandardSchema(Gemini35FlashLiteConfigSchema)
|
|
2824
3318
|
}
|
|
2825
3319
|
];
|
|
2826
3320
|
var gemmaModelDescriptors = [
|
|
@@ -3561,6 +4055,6 @@ function geminiContentToMessages(input) {
|
|
|
3561
4055
|
return { ...system !== void 0 ? { system } : {}, messages };
|
|
3562
4056
|
}
|
|
3563
4057
|
|
|
3564
|
-
export { FLEX_DEFAULT_TIMEOUT_MS, GEMINI_PRICING, GoogleCacheStore, GoogleFileStore, STANDARD_DEFAULT_TIMEOUT_MS,
|
|
4058
|
+
export { FLEX_DEFAULT_TIMEOUT_MS, GEMINI_PRICED_TIERS, GEMINI_PRICING, GoogleCacheStore, GoogleFileStore, STANDARD_DEFAULT_TIMEOUT_MS, TRANSPORT_TIMEOUT_BUFFER_MS, buildGoogleClient, defaultGeminiRegistry, geminiAdapter, geminiContentToMessages, geminiModelDescriptors, geminiPricingSource, gemmaModelDescriptors, googleProvider, isGeminiCapacityError, pricingVersion, requireApiKey, resolveGeminiRates };
|
|
3565
4059
|
//# sourceMappingURL=index.js.map
|
|
3566
4060
|
//# sourceMappingURL=index.js.map
|