Centralized append-only context auto-mode resolution so SDK sessions, interactive sessions, and the status display use the same provider checks. Auto mode now enables for Xiaomi/SGLang hosts and explicit stored-request compat signals while preserving DeepSeek behavior. Added focused regression coverage for Xiaomi Token Plan SGLang HiCache endpoints and explicit on/off behavior. Fixes #1851
38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
/** Provider metadata needed to resolve append-only context mode. */
|
|
export interface AppendOnlyContextModel {
|
|
provider: string;
|
|
baseUrl: string;
|
|
compat?: object;
|
|
}
|
|
|
|
function isXiaomiHost(baseUrl: string): boolean {
|
|
try {
|
|
const host = new URL(baseUrl).hostname;
|
|
return host === "xiaomimimo.com" || host.endsWith(".xiaomimimo.com");
|
|
} catch {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
function shouldAutoEnableAppendOnlyContext(model: AppendOnlyContextModel | null | undefined): boolean {
|
|
if (!model) return false;
|
|
if (model.provider === "deepseek") return true;
|
|
if (isXiaomiHost(model.baseUrl)) return true;
|
|
return !!model.compat && "supportsStore" in model.compat && model.compat.supportsStore === true;
|
|
}
|
|
|
|
/** Resolves whether append-only context should be active for a model and setting. */
|
|
export function shouldEnableAppendOnlyContext(
|
|
setting: "auto" | "on" | "off" | undefined,
|
|
model: AppendOnlyContextModel | null | undefined,
|
|
): boolean {
|
|
switch (setting ?? "auto") {
|
|
case "on":
|
|
return true;
|
|
case "off":
|
|
return false;
|
|
default:
|
|
return shouldAutoEnableAppendOnlyContext(model);
|
|
}
|
|
}
|