@gguf/claw
Version:
Multi-channel AI gateway with extensible messaging integrations
235 lines (228 loc) • 6.74 kB
JavaScript
import { X as escapeRegExp, rt as resolveConfigDir } from "./entry.js";
import { B as resolveAllowlistModelKey, Ht as DEFAULT_PROVIDER } from "./auth-profiles-DFa1zzNy.js";
import { n as fetchWithTimeout } from "./fetch-timeout-L2NTusph.js";
import { St as ZAI_GLOBAL_BASE_URL, bt as ZAI_CODING_CN_BASE_URL, xt as ZAI_CODING_GLOBAL_BASE_URL, yt as ZAI_CN_BASE_URL } from "./auth-token-B5F1NkdJ.js";
import path from "node:path";
import fs from "node:fs";
//#region src/commands/model-allowlist.ts
function ensureModelAllowlistEntry(params) {
const rawModelRef = params.modelRef.trim();
if (!rawModelRef) return params.cfg;
const models = { ...params.cfg.agents?.defaults?.models };
const keySet = new Set([rawModelRef]);
const canonicalKey = resolveAllowlistModelKey(rawModelRef, params.defaultProvider ?? DEFAULT_PROVIDER);
if (canonicalKey) keySet.add(canonicalKey);
for (const key of keySet) models[key] = { ...models[key] };
return {
...params.cfg,
agents: {
...params.cfg.agents,
defaults: {
...params.cfg.agents?.defaults,
models
}
}
};
}
//#endregion
//#region src/commands/model-default.ts
function resolvePrimaryModel(model) {
if (typeof model === "string") return model;
if (model && typeof model === "object" && typeof model.primary === "string") return model.primary;
}
function applyAgentDefaultPrimaryModel(params) {
const current = resolvePrimaryModel(params.cfg.agents?.defaults?.model)?.trim();
if ((current && params.legacyModels?.has(current) ? params.model : current) === params.model) return {
next: params.cfg,
changed: false
};
return {
next: {
...params.cfg,
agents: {
...params.cfg.agents,
defaults: {
...params.cfg.agents?.defaults,
model: params.cfg.agents?.defaults?.model && typeof params.cfg.agents.defaults.model === "object" ? {
...params.cfg.agents.defaults.model,
primary: params.model
} : { primary: params.model }
}
}
},
changed: true
};
}
//#endregion
//#region src/commands/google-gemini-model-default.ts
const GOOGLE_GEMINI_DEFAULT_MODEL = "google/gemini-3-pro-preview";
function applyGoogleGeminiModelDefault(cfg) {
return applyAgentDefaultPrimaryModel({
cfg,
model: GOOGLE_GEMINI_DEFAULT_MODEL
});
}
//#endregion
//#region src/commands/zai-endpoint-detect.ts
async function probeZaiChatCompletions(params) {
try {
const res = await fetchWithTimeout(`${params.baseUrl}/chat/completions`, {
method: "POST",
headers: {
authorization: `Bearer ${params.apiKey}`,
"content-type": "application/json"
},
body: JSON.stringify({
model: params.modelId,
stream: false,
max_tokens: 1,
messages: [{
role: "user",
content: "ping"
}]
})
}, params.timeoutMs, params.fetchFn);
if (res.ok) return { ok: true };
let errorCode;
let errorMessage;
try {
const json = await res.json();
const code = json?.error?.code;
const msg = json?.error?.message ?? json?.msg ?? json?.message;
if (typeof code === "string") errorCode = code;
else if (typeof code === "number") errorCode = String(code);
if (typeof msg === "string") errorMessage = msg;
} catch {}
return {
ok: false,
status: res.status,
errorCode,
errorMessage
};
} catch {
return { ok: false };
}
}
async function detectZaiEndpoint(params) {
if (process.env.VITEST && !params.fetchFn) return null;
const timeoutMs = params.timeoutMs ?? 5e3;
const glm5 = [{
endpoint: "global",
baseUrl: ZAI_GLOBAL_BASE_URL
}, {
endpoint: "cn",
baseUrl: ZAI_CN_BASE_URL
}];
for (const candidate of glm5) if ((await probeZaiChatCompletions({
baseUrl: candidate.baseUrl,
apiKey: params.apiKey,
modelId: "glm-5",
timeoutMs,
fetchFn: params.fetchFn
})).ok) return {
endpoint: candidate.endpoint,
baseUrl: candidate.baseUrl,
modelId: "glm-5",
note: `Verified GLM-5 on ${candidate.endpoint} endpoint.`
};
const coding = [{
endpoint: "coding-global",
baseUrl: ZAI_CODING_GLOBAL_BASE_URL
}, {
endpoint: "coding-cn",
baseUrl: ZAI_CODING_CN_BASE_URL
}];
for (const candidate of coding) if ((await probeZaiChatCompletions({
baseUrl: candidate.baseUrl,
apiKey: params.apiKey,
modelId: "glm-4.7",
timeoutMs,
fetchFn: params.fetchFn
})).ok) return {
endpoint: candidate.endpoint,
baseUrl: candidate.baseUrl,
modelId: "glm-4.7",
note: "Coding Plan endpoint detected; GLM-5 is not available there. Defaulting to GLM-4.7."
};
return null;
}
//#endregion
//#region src/infra/env-file.ts
function upsertSharedEnvVar(params) {
const dir = resolveConfigDir(params.env ?? process.env);
const filepath = path.join(dir, ".env");
const key = params.key.trim();
const value = params.value;
let raw = "";
if (fs.existsSync(filepath)) raw = fs.readFileSync(filepath, "utf8");
const lines = raw.length ? raw.split(/\r?\n/) : [];
const matcher = new RegExp(`^(\\s*(?:export\\s+)?)${escapeRegExp(key)}\\s*=`);
let updated = false;
let replaced = false;
const nextLines = lines.map((line) => {
const match = line.match(matcher);
if (!match) return line;
replaced = true;
const next = `${match[1] ?? ""}${key}=${value}`;
if (next !== line) updated = true;
return next;
});
if (!replaced) {
nextLines.push(`${key}=${value}`);
updated = true;
}
if (!fs.existsSync(dir)) fs.mkdirSync(dir, {
recursive: true,
mode: 448
});
const output = `${nextLines.join("\n")}\n`;
fs.writeFileSync(filepath, output, "utf8");
fs.chmodSync(filepath, 384);
return {
path: filepath,
updated,
created: !raw
};
}
//#endregion
//#region src/commands/openai-model-default.ts
const OPENAI_DEFAULT_MODEL = "openai/gpt-5.1-codex";
function applyOpenAIProviderConfig(cfg) {
const next = ensureModelAllowlistEntry({
cfg,
modelRef: OPENAI_DEFAULT_MODEL
});
const models = { ...next.agents?.defaults?.models };
models[OPENAI_DEFAULT_MODEL] = {
...models[OPENAI_DEFAULT_MODEL],
alias: models[OPENAI_DEFAULT_MODEL]?.alias ?? "GPT"
};
return {
...next,
agents: {
...next.agents,
defaults: {
...next.agents?.defaults,
models
}
}
};
}
function applyOpenAIConfig(cfg) {
const next = applyOpenAIProviderConfig(cfg);
return {
...next,
agents: {
...next.agents,
defaults: {
...next.agents?.defaults,
model: next.agents?.defaults?.model && typeof next.agents.defaults.model === "object" ? {
...next.agents.defaults.model,
primary: OPENAI_DEFAULT_MODEL
} : { primary: OPENAI_DEFAULT_MODEL }
}
}
};
}
//#endregion
export { detectZaiEndpoint as a, ensureModelAllowlistEntry as c, upsertSharedEnvVar as i, applyOpenAIConfig as n, GOOGLE_GEMINI_DEFAULT_MODEL as o, applyOpenAIProviderConfig as r, applyGoogleGeminiModelDefault as s, OPENAI_DEFAULT_MODEL as t };