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: "", }); });