Files
openclaw/extensions/byteplus/live.test.ts
T

61 lines
1.9 KiB
TypeScript
Raw Normal View History

2026-02-21 15:42:36 +01:00
import { completeSimple, type Model } from "@mariozechner/pi-ai";
import { describe, expect, it } from "vitest";
import {
createSingleUserPromptMessage,
extractNonEmptyAssistantText,
isLiveTestEnabled,
} from "../../src/agents/live-test-helpers.js";
import { BYTEPLUS_CODING_BASE_URL, BYTEPLUS_DEFAULT_COST } from "./models.js";
2026-02-21 15:42:36 +01:00
const BYTEPLUS_KEY = process.env.BYTEPLUS_API_KEY ?? "";
const BYTEPLUS_CODING_MODEL = process.env.BYTEPLUS_CODING_MODEL?.trim() || "ark-code-latest";
const LIVE = isLiveTestEnabled(["BYTEPLUS_LIVE_TEST"]);
2026-02-21 15:42:36 +01:00
const describeLive = LIVE && BYTEPLUS_KEY ? describe : describe.skip;
2026-03-23 10:15:17 +00:00
function isBytePlusSubscriptionError(message: string): boolean {
const lower = message.toLowerCase();
return (
lower.includes("coding plan subscription") ||
lower.includes("subscription has expired") ||
(lower.includes("subscription") && lower.includes("renewal"))
);
}
2026-02-21 15:42:36 +01:00
describeLive("byteplus coding plan live", () => {
it("returns assistant text", async () => {
const model: Model<"openai-completions"> = {
id: BYTEPLUS_CODING_MODEL,
name: `BytePlus Coding ${BYTEPLUS_CODING_MODEL}`,
api: "openai-completions",
provider: "byteplus-plan",
baseUrl: BYTEPLUS_CODING_BASE_URL,
reasoning: false,
input: ["text"],
cost: BYTEPLUS_DEFAULT_COST,
contextWindow: 256000,
maxTokens: 4096,
};
const res = await completeSimple(
model,
{
messages: createSingleUserPromptMessage(),
2026-02-21 15:42:36 +01:00
},
{ apiKey: BYTEPLUS_KEY, maxTokens: 64 },
);
2026-03-23 10:15:17 +00:00
if (res.stopReason === "error") {
const message = res.errorMessage ?? "";
if (isBytePlusSubscriptionError(message)) {
expect(message.toLowerCase()).toContain("subscription");
return;
}
throw new Error(message || "byteplus returned error with no message");
}
const text = extractNonEmptyAssistantText(res.content);
2026-02-21 15:42:36 +01:00
expect(text.length).toBeGreaterThan(0);
}, 30000);
});