74 lines
2.3 KiB
JavaScript
74 lines
2.3 KiB
JavaScript
const test = require("node:test");
|
|
const assert = require("node:assert/strict");
|
|
const Module = require("node:module");
|
|
|
|
function loadTeam() {
|
|
const originalLoad = Module._load;
|
|
Module._load = function load(request, parent, isMain) {
|
|
if (request === "electron") {
|
|
return {
|
|
app: { getPath: () => "/tmp/codex-market-team-test" },
|
|
safeStorage: { isEncryptionAvailable: () => false },
|
|
};
|
|
}
|
|
return originalLoad.call(this, request, parent, isMain);
|
|
};
|
|
try {
|
|
delete require.cache[require.resolve("../electron/lib/team")];
|
|
delete require.cache[require.resolve("../electron/lib/router")];
|
|
return require("../electron/lib/team");
|
|
} finally {
|
|
Module._load = originalLoad;
|
|
}
|
|
}
|
|
|
|
test("team package keeps generation and runtime models separate", () => {
|
|
const team = loadTeam();
|
|
const files = team.packFiles({
|
|
project_name: "model-routing",
|
|
employees: [{
|
|
id: "worker",
|
|
name: "执行 Agent",
|
|
duty: "实现与测试",
|
|
model: "deepseek-v4-flash",
|
|
responsibilities: [],
|
|
constraints: [],
|
|
owner_paths: [],
|
|
review_paths: [],
|
|
allowed_paths: ["**"],
|
|
collaborators: [],
|
|
}],
|
|
orchestrator: {
|
|
id: "orchestrator",
|
|
name: "总控 Agent",
|
|
duty: "调度与验收",
|
|
model: "gpt-5.6-luna",
|
|
responsibilities: [],
|
|
constraints: [],
|
|
owner_paths: [],
|
|
review_paths: ["**"],
|
|
allowed_paths: [],
|
|
workflow: [],
|
|
},
|
|
model_routing: {
|
|
generation_model: "gpt-5.4-mini",
|
|
orchestrator_model: "gpt-5.6-luna",
|
|
worker_model: "deepseek-v4-flash",
|
|
},
|
|
}, "codex");
|
|
|
|
const orchestrator = files.find((file) => file.path === "agents/_orchestrator.toml").content;
|
|
const worker = files.find((file) => file.path === "agents/worker.toml").content;
|
|
const manifest = JSON.parse(files.find((file) => file.path === "agent-manifest.json").content);
|
|
assert.match(orchestrator, /model = "gpt-5\.6-luna"/);
|
|
assert.match(worker, /model = "deepseek-v4-flash"/);
|
|
assert.match(worker, /TD_MODEL_ROUTE model="deepseek-v4-flash" role="worker" agent="worker"/);
|
|
assert.doesNotMatch(orchestrator, /gpt-5\.4-mini/);
|
|
assert.deepEqual(manifest.model_routing, {
|
|
generation: "gpt-5.4-mini",
|
|
orchestrator: "gpt-5.6-luna",
|
|
workers: ["deepseek-v4-flash"],
|
|
capability_policy: "",
|
|
});
|
|
});
|