openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
35 lines (34 loc) • 1.57 kB
JavaScript
import { N as sanitizeGoogleThinkingPayload, u as createPayloadPatchStreamWrapper } from "./provider-stream-shared-DakgNCd0.js";
import { a as buildProviderReplayFamilyHooks } from "./provider-model-shared-fX-Ywqb3.js";
import { r as buildProviderToolCompatFamilyHooks } from "./provider-tools-D4EQoyQM.js";
import { r as stripGoogleProviderPrefix } from "./model-id-CAmKILzd.js";
import { i as resolveGoogleThinkingProfile } from "./provider-policy-BjaZN4xs.js";
import "./thinking-api-BLlQ_vt2.js";
//#region extensions/google/provider-hooks.ts
function classifyGoogleFailoverCode(code) {
switch (code?.trim().toUpperCase()) {
case "UNAVAILABLE": return "overloaded";
case "DEADLINE_EXCEEDED": return "timeout";
case "INTERNAL": return "server_error";
default: return;
}
}
function wrapGoogleThinkingStream(ctx) {
return createPayloadPatchStreamWrapper(ctx.streamFn, ({ payload, model }) => {
if (model.api !== "google-generative-ai" && model.api !== "google-vertex") return;
sanitizeGoogleThinkingPayload({
payload,
modelId: stripGoogleProviderPrefix(model.id).replace(/^models\//u, ""),
thinkingLevel: ctx.thinkingLevel
});
});
}
const GOOGLE_GEMINI_PROVIDER_HOOKS = {
...buildProviderReplayFamilyHooks({ family: "google-gemini" }),
...buildProviderToolCompatFamilyHooks("gemini"),
resolveThinkingProfile: (context) => resolveGoogleThinkingProfile(context),
wrapStreamFn: wrapGoogleThinkingStream,
classifyFailoverReason: ({ code }) => classifyGoogleFailoverCode(code)
};
//#endregion
export { GOOGLE_GEMINI_PROVIDER_HOOKS as t };