fix(qoder): allow qmodel_latest model key

- Add qmodel_latest to QODER_MODEL_MAP
- Expose qmodel_latest in static Qoder provider catalog (qd)
- Generalize executor comment so model set does not go stale
- Add unit coverage for the new model key + catalog

Closes #1638

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
therunnas
2026-06-06 10:44:37 +07:00
committed by decolua
co-authored by Cursor
parent e6c09aad15
commit 61d546627e
4 changed files with 20 additions and 3 deletions
+16 -1
View File
@@ -15,7 +15,12 @@ import crypto from "crypto";
import { qoderEncodeBody } from "../../src/lib/qoder/encoding.js";
import { buildCosyHeaders } from "../../src/lib/qoder/cosy.js";
import { QoderService } from "../../src/lib/oauth/services/qoder.js";
import { QODER_CHAT_URL_ENCODED, QODER_MODEL_LIST_URL } from "../../src/lib/qoder/constants.js";
import {
QODER_CHAT_URL_ENCODED,
QODER_MODEL_LIST_URL,
QODER_MODEL_MAP,
} from "../../src/lib/qoder/constants.js";
import { PROVIDER_MODELS } from "../../open-sse/config/providerModels.js";
import { __test__ as qoderExecutorInternals } from "../../open-sse/executors/qoder.js";
// Convenience aliases — tests were originally written against module-level
@@ -25,6 +30,16 @@ const generatePkcePair = () => new QoderService().generatePkcePair();
const initiateDeviceFlow = () => new QoderService().initiateDeviceFlow();
const parseExpiry = QoderService.parseExpiry;
describe("QODER_MODEL_MAP", () => {
it("allows Qoder's latest model key", () => {
expect(QODER_MODEL_MAP.qmodel_latest).toBe("qmodel_latest");
});
it("exposes Qoder's latest model in the static provider catalog", () => {
expect(PROVIDER_MODELS.qd.some((model) => model.id === "qmodel_latest")).toBe(true);
});
});
describe("qoderEncodeBody", () => {
it("preserves base64 length (input length divisible by 3)", () => {
const input = Buffer.from("abcdef", "utf8"); // 6 bytes → 8 base64 chars