Sfoglia il codice sorgente

test(core): provider-to-pi-ai adapter + no-piProvider schema assertion

- 新增 provider-to-pi-ai.test.ts:覆盖 zhipu/openrouter/githubCopilot 显式映射 +
  anthropic-messages 类 provider 统一到 anthropic + 其余默认 openai
- providers-schema.test.ts 补 'R3 endpoint 无 piProvider 字段' 断言防回归

R3-1。
fanghanjun 6 mesi fa
parent
commit
873ebc7327

+ 54 - 0
packages/core/src/__tests__/provider-to-pi-ai.test.ts

@@ -0,0 +1,54 @@
+import { describe, it, expect } from "vitest";
+import { resolvePiAiProvider } from "../llm/providers/provider-to-pi-ai.js";
+import { getEndpoint } from "../llm/providers/index.js";
+
+describe("resolvePiAiProvider (R3)", () => {
+  it("zhipu 显式映射到 zai(pi-ai 识别不到 open.bigmodel.cn)", () => {
+    const ep = getEndpoint("zhipu");
+    expect(ep).toBeDefined();
+    expect(resolvePiAiProvider(ep!)).toBe("zai");
+  });
+
+  it("openrouter 显式映射到 openrouter", () => {
+    const ep = getEndpoint("openrouter");
+    expect(ep).toBeDefined();
+    expect(resolvePiAiProvider(ep!)).toBe("openrouter");
+  });
+
+  it("githubCopilot 显式映射到 githubCopilot", () => {
+    const ep = getEndpoint("githubCopilot");
+    expect(ep).toBeDefined();
+    expect(resolvePiAiProvider(ep!)).toBe("githubCopilot");
+  });
+
+  it("anthropic-messages 协议统一映射到 anthropic(anthropic / minimax / bailian / xxxCodingPlan)", () => {
+    for (const id of [
+      "anthropic",
+      "minimax",
+      "bailian",
+      "kimiCodingPlan",
+      "minimaxCodingPlan",
+      "bailianCodingPlan",
+      "glmCodingPlan",
+      "volcengineCodingPlan",
+      "opencodeCodingPlan",
+    ]) {
+      const ep = getEndpoint(id);
+      expect(ep, `${id}`).toBeDefined();
+      expect(resolvePiAiProvider(ep!), `${id}`).toBe("anthropic");
+    }
+  });
+
+  it("其余 OpenAI 兼容默认映射到 openai(pi-ai 再按 baseUrl 嗅探 deepseek/xai/ollama 等)", () => {
+    for (const id of ["deepseek", "qwen", "moonshot", "siliconcloud", "ppio", "mistral", "xai", "ollama", "google"]) {
+      const ep = getEndpoint(id);
+      expect(ep, `${id}`).toBeDefined();
+      expect(resolvePiAiProvider(ep!), `${id}`).toBe("openai");
+    }
+  });
+
+  it("openai-responses 默认映射到 openai(OpenAI 官方)", () => {
+    const ep = getEndpoint("openai");
+    expect(resolvePiAiProvider(ep!)).toBe("openai");
+  });
+});

+ 6 - 0
packages/core/src/__tests__/providers-schema.test.ts

@@ -127,4 +127,10 @@ describe("providers structural integrity", () => {
       expect(getEndpoint(id)?.api).toBe("anthropic-messages");
     }
   });
+
+  it("R3:endpoint 不再出现 piProvider 字段(已移到 provider-to-pi-ai adapter)", () => {
+    for (const ep of getAllEndpoints()) {
+      expect((ep as any).piProvider, `endpoint=${ep.id}`).toBeUndefined();
+    }
+  });
 });