test/debate-model-selection.test.js
Rama main · réplica de lectura del repositorio original.
var test = require("node:test");
var assert = require("node:assert/strict");
var debateModels = require("../lib/debate-model-selection");
function context() {
var mates = {
moderator: { id: "moderator", vendor: "claude", model: "sonnet" },
panel: { id: "panel", vendor: "codex", model: "gpt-5.6" },
};
return {
getMate: function (mateCtx, mateId) { return mates[mateId] || null; },
getVendorModelCatalog: function (ws, vendor) {
if (vendor === "claude") return Promise.resolve({ defaultModel: "sonnet", models: [{ value: "sonnet", displayName: "Sonnet" }, { value: "opus", displayName: "Opus" }] });
return Promise.resolve({ defaultModel: "gpt-5.6", models: [{ value: "gpt-5.6", displayName: "GPT-5.6" }, { value: "gpt-5.6-mini", displayName: "GPT-5.6 mini" }] });
},
};
}
test("debate model choices include moderator and panel defaults without changing Mate settings", async function () {
var selections = await debateModels.loadSelections(context(), {}, {}, "moderator", [{ mateId: "panel" }]);
assert.deepEqual(selections.map(function (item) { return [item.mateId, item.role, item.vendor, item.selectedModel]; }), [
["moderator", "moderator", "claude", "sonnet"],
["panel", "panelist", "codex", "gpt-5.6"],
]);
assert.deepEqual(selections[0].models, [{ value: "sonnet", label: "Sonnet" }, { value: "opus", label: "Opus" }]);
});
test("debate model approval revalidates exact participants and live catalogs", async function () {
var valid = await debateModels.validateSelections(context(), {}, {}, "moderator", [{ mateId: "panel" }], [
{ mateId: "moderator", model: "opus" },
{ mateId: "panel", model: "gpt-5.6-mini" },
]);
assert.deepEqual(valid.selections, [
{ mateId: "moderator", vendor: "claude", model: "opus" },
{ mateId: "panel", vendor: "codex", model: "gpt-5.6-mini" },
]);
var stale = await debateModels.validateSelections(context(), {}, {}, "moderator", [{ mateId: "panel" }], [{ mateId: "panel", model: "removed" }]);
assert.match(stale.error, /no longer available/i);
var foreign = await debateModels.validateSelections(context(), {}, {}, "moderator", [{ mateId: "panel" }], [{ mateId: "other", model: "opus" }]);
assert.match(foreign.error, /does not belong/i);
var malformed = await debateModels.validateSelections(context(), {}, {}, "moderator", [{ mateId: "panel" }], "opus");
assert.match(malformed.error, /invalid/i);
});