Providers: disable developer role for DashScope-compatible endpoints (#24675)

* Agents: disable developer role for DashScope-compatible endpoints

* Agents: test DashScope developer-role compatibility

* Gateway: test allowlisted sessions.patch model selection

* Changelog: add DashScope role-compat fix note
This commit is contained in:
Vincent Koc
2026-02-23 19:51:16 -05:00
committed by GitHub
parent 83eae14ed6
commit 30c622554f
4 changed files with 69 additions and 1 deletions

View File

@@ -77,6 +77,32 @@ describe("normalizeModelCompat", () => {
).toBe(false);
});
it("forces supportsDeveloperRole off for DashScope provider ids", () => {
const model = {
...baseModel(),
provider: "dashscope",
baseUrl: "https://dashscope.aliyuncs.com/compatible-mode/v1",
};
delete (model as { compat?: unknown }).compat;
const normalized = normalizeModelCompat(model);
expect(
(normalized.compat as { supportsDeveloperRole?: boolean } | undefined)?.supportsDeveloperRole,
).toBe(false);
});
it("forces supportsDeveloperRole off for DashScope-compatible endpoints", () => {
const model = {
...baseModel(),
provider: "custom-qwen",
baseUrl: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
};
delete (model as { compat?: unknown }).compat;
const normalized = normalizeModelCompat(model);
expect(
(normalized.compat as { supportsDeveloperRole?: boolean } | undefined)?.supportsDeveloperRole,
).toBe(false);
});
it("leaves non-zai models untouched", () => {
const model = {
...baseModel(),

View File

@@ -4,6 +4,14 @@ function isOpenAiCompletionsModel(model: Model<Api>): model is Model<"openai-com
return model.api === "openai-completions";
}
function isDashScopeCompatibleEndpoint(baseUrl: string): boolean {
return (
baseUrl.includes("dashscope.aliyuncs.com") ||
baseUrl.includes("dashscope-intl.aliyuncs.com") ||
baseUrl.includes("dashscope-us.aliyuncs.com")
);
}
export function normalizeModelCompat(model: Model<Api>): Model<Api> {
const baseUrl = model.baseUrl ?? "";
const isZai = model.provider === "zai" || baseUrl.includes("api.z.ai");
@@ -11,7 +19,8 @@ export function normalizeModelCompat(model: Model<Api>): Model<Api> {
model.provider === "moonshot" ||
baseUrl.includes("moonshot.ai") ||
baseUrl.includes("moonshot.cn");
if ((!isZai && !isMoonshot) || !isOpenAiCompletionsModel(model)) {
const isDashScope = model.provider === "dashscope" || isDashScopeCompatibleEndpoint(baseUrl);
if ((!isZai && !isMoonshot && !isDashScope) || !isOpenAiCompletionsModel(model)) {
return model;
}