Split Face turn and support model lanes

This commit is contained in:
Meta Vens 2026-05-21 23:59:35 +01:00
commit 58624a6bb6
11 changed files with 42 additions and 20 deletions

View file

@ -23,7 +23,8 @@ const repoFaceRetrievalToolAllowlist = [
async function main() {
const options = parseArgs(process.argv.slice(2));
const model = options.model ?? process.env.REPO_FACE_HEARTBEAT_CODEX_MODEL ?? "gpt-5.4-mini";
const faceModel = options["face-model"] ?? process.env.REPO_FACE_TURN_CODEX_MODEL ?? "gpt-5.4";
const interpreterModel = options["interpreter-model"] ?? options.model ?? process.env.REPO_FACE_HEARTBEAT_CODEX_MODEL ?? "gpt-5.3-codex-spark";
const reasoningEffort = options["reasoning-effort"] ?? process.env.REPO_FACE_HEARTBEAT_CODEX_REASONING_EFFORT ?? "low";
const mcpMode = options.mcp === "mock" ? "mock" : "real-readonly";
const outPath = resolve(repoRoot, options.out ?? defaultOut);
@ -50,7 +51,7 @@ async function main() {
process.stderr.write(`[dry-run] face turn ${identity}\n`);
const childRun = await runCodex(facePrompt, {
model,
model: faceModel,
reasoningEffort,
scenarioId: `${identity}_swarm_dry_run_child`,
logPath: childLogPath,
@ -69,7 +70,7 @@ async function main() {
faceOutput: childText,
});
const interpreterRun = await runCodex(interpreterPrompt, {
model,
model: interpreterModel,
reasoningEffort,
scenarioId: `${identity}_swarm_dry_run_interpreter`,
mcpMode: "none",
@ -102,7 +103,8 @@ async function main() {
const report = {
generatedAt: new Date().toISOString(),
model,
faceModel,
interpreterModel,
reasoningEffort,
mcpMode,
passed: runs.every((run) => run.assessment.failures.length === 0),

View file

@ -56,7 +56,7 @@ function readPrompt(name) {
async function main() {
const options = parseArgs(process.argv.slice(2));
const model = options.model ?? process.env.REPO_FACE_HEARTBEAT_CODEX_MODEL ?? "gpt-5.4-mini";
const model = options.model ?? process.env.REPO_FACE_HEARTBEAT_CODEX_MODEL ?? "gpt-5.4";
const reasoningEffort = options["reasoning-effort"] ?? process.env.REPO_FACE_HEARTBEAT_CODEX_REASONING_EFFORT ?? "low";
const outPath = resolve(repoRoot, options.out ?? defaultOut);
const selected = options.scenario

View file

@ -16,8 +16,9 @@ const defaultOut = resolve(repoRoot, ".voidbot", "status", "repo-face-interprete
async function main() {
const options = parseArgs(process.argv.slice(2));
const modelCandidates = modelCandidatesFromOptions(options);
const model = modelCandidates.join(",");
const faceModel = options["face-model"] ?? process.env.REPO_FACE_TURN_CODEX_MODEL ?? "gpt-5.4";
const interpreterModelCandidates = modelCandidatesFromOptions(options);
const interpreterModel = interpreterModelCandidates.join(",");
const reasoningEffort = options["reasoning-effort"] ?? process.env.REPO_FACE_HEARTBEAT_CODEX_REASONING_EFFORT ?? "low";
const facePromptPath = resolve(repoRoot, options["face-prompt"] ?? defaultFacePrompt);
const outPath = resolve(repoRoot, options.out ?? defaultOut);
@ -26,7 +27,7 @@ async function main() {
await rm(childLogPath, { force: true }).catch(() => undefined);
const childRun = await runCodexWithModelFallback(facePrompt, {
models: modelCandidates,
models: [faceModel],
reasoningEffort,
scenarioId: "nibu_interpreter_loop_child",
logPath: childLogPath,
@ -42,7 +43,7 @@ async function main() {
faceOutput: childText,
});
const interpreterRun = await runCodexWithModelFallback(interpreterPrompt, {
models: modelCandidates,
models: interpreterModelCandidates,
reasoningEffort,
scenarioId: "nibu_interpreter_loop_parent",
logPath: undefined,
@ -56,7 +57,8 @@ async function main() {
];
const report = {
generatedAt: new Date().toISOString(),
model,
faceModel,
interpreterModel,
reasoningEffort,
facePromptPath,
passed: failures.length === 0,
@ -83,7 +85,8 @@ async function main() {
await writeFile(outPath, `${JSON.stringify(report, null, 2)}\n`, "utf8");
process.stdout.write(`${JSON.stringify({
outPath,
model,
faceModel,
interpreterModel,
reasoningEffort,
passed: report.passed,
failures,
@ -276,7 +279,7 @@ function modelCandidatesFromOptions(options) {
explicit ??
process.env.REPO_FACE_HEARTBEAT_CODEX_MODELS ??
process.env.REPO_FACE_HEARTBEAT_CODEX_MODEL ??
"gpt-5.4-mini";
"gpt-5.3-codex-spark,gpt-5.4-mini";
return raw
.split(",")
.map((entry) => entry.trim())