forked from bai/curriculum-project-hub
66 lines
2.3 KiB
TypeScript
66 lines
2.3 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { createEnvRuntimeSettings } from "../../src/settings/runtime.js";
|
|
|
|
describe("runtime settings", () => {
|
|
it("reads the model registry from the current env at call time", async () => {
|
|
const env: Record<string, string | undefined> = {
|
|
ANTHROPIC_DEFAULT_SONNET_MODEL: "anthropic/claude-sonnet-5",
|
|
};
|
|
const settings = createEnvRuntimeSettings(env);
|
|
|
|
expect((await settings.modelRegistry()).resolve(undefined, "draft")).toBe("anthropic/claude-sonnet-5");
|
|
|
|
env["ANTHROPIC_DEFAULT_SONNET_MODEL"] = "z-ai/glm-4.7";
|
|
|
|
expect((await settings.modelRegistry()).resolve(undefined, "draft")).toBe("z-ai/glm-4.7");
|
|
});
|
|
|
|
it("returns provider SDK env without requiring global process env mutation", async () => {
|
|
const settings = createEnvRuntimeSettings({
|
|
ANTHROPIC_BASE_URL: "https://example.test/api",
|
|
ANTHROPIC_AUTH_TOKEN: "openrouter-token",
|
|
ANTHROPIC_API_KEY: "explicit-api-key",
|
|
});
|
|
|
|
await expect(settings.provider("openrouter")).resolves.toMatchObject({
|
|
id: "openrouter",
|
|
baseUrl: "https://example.test/api",
|
|
authToken: "openrouter-token",
|
|
anthropicApiKey: "explicit-api-key",
|
|
sdkEnv: {
|
|
ANTHROPIC_BASE_URL: "https://example.test/api",
|
|
ANTHROPIC_AUTH_TOKEN: "openrouter-token",
|
|
ANTHROPIC_API_KEY: "explicit-api-key",
|
|
},
|
|
});
|
|
});
|
|
|
|
it("defaults Anthropic API key to empty for OpenRouter's Anthropic skin", async () => {
|
|
const settings = createEnvRuntimeSettings({
|
|
ANTHROPIC_AUTH_TOKEN: "openrouter-token",
|
|
});
|
|
|
|
await expect(settings.provider("openrouter")).resolves.toMatchObject({
|
|
baseUrl: "https://openrouter.ai/api",
|
|
anthropicApiKey: "",
|
|
sdkEnv: {
|
|
ANTHROPIC_API_KEY: "",
|
|
},
|
|
});
|
|
});
|
|
|
|
it("requires an auth token for the OpenRouter provider", async () => {
|
|
const settings = createEnvRuntimeSettings({});
|
|
|
|
await expect(settings.provider("openrouter")).rejects.toThrow("missing required runtime setting: ANTHROPIC_AUTH_TOKEN");
|
|
});
|
|
|
|
it("honors HUB_AGENT_MAX_TURNS as a runtime run policy", async () => {
|
|
const settings = createEnvRuntimeSettings({
|
|
HUB_AGENT_MAX_TURNS: "9",
|
|
});
|
|
|
|
await expect(settings.runPolicy({ projectId: "p", roleId: "draft" })).resolves.toEqual({ maxTurns: 9 });
|
|
});
|
|
});
|