Files
boss/tests/master-agent-evolution-engine.test.ts

74 lines
2.8 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
import os from "node:os";
import path from "node:path";
import { mkdir, mkdtemp, rm } from "node:fs/promises";
let runtimeRoot = "";
let readState: (typeof import("../src/lib/boss-data"))["readState"];
let recordMasterAgentEvolutionSignal: (typeof import("../src/lib/master-agent-evolution"))["recordMasterAgentEvolutionSignal"];
let listMasterAgentEvolutionProposals: (typeof import("../src/lib/master-agent-evolution"))["listMasterAgentEvolutionProposals"];
let setMasterAgentEvolutionMode: (typeof import("../src/lib/master-agent-evolution"))["setMasterAgentEvolutionMode"];
async function setup() {
if (runtimeRoot) {
return;
}
runtimeRoot = await mkdtemp(path.join(os.tmpdir(), "boss-master-agent-evolution-engine-"));
process.env.BOSS_RUNTIME_ROOT = runtimeRoot;
process.env.BOSS_STATE_FILE = path.join(runtimeRoot, "boss-state.json");
const [data, evolution] = await Promise.all([
import("../src/lib/boss-data.ts"),
import("../src/lib/master-agent-evolution.ts"),
]);
readState = data.readState;
recordMasterAgentEvolutionSignal = evolution.recordMasterAgentEvolutionSignal;
listMasterAgentEvolutionProposals = evolution.listMasterAgentEvolutionProposals;
setMasterAgentEvolutionMode = evolution.setMasterAgentEvolutionMode;
}
test.after(async () => {
if (runtimeRoot) {
await rm(runtimeRoot, { recursive: true, force: true });
}
});
test.beforeEach(async () => {
await setup();
await rm(runtimeRoot, { recursive: true, force: true });
await mkdir(runtimeRoot, { recursive: true });
});
test("recording repeated deterministic questions creates a pending fast_path_rule proposal in controlled mode", async () => {
const result = await recordMasterAgentEvolutionSignal({
kind: "repeated_question",
projectId: "master-agent",
account: "17600003315",
requestText: "当前主节点在线吗",
});
assert.equal(result.signal.kind, "repeated_question");
assert.equal(result.proposal?.proposalType, "fast_path_rule");
assert.equal(result.proposal?.status, "pending_review");
const proposals = await listMasterAgentEvolutionProposals();
assert.equal(proposals[0]?.proposalType, "fast_path_rule");
assert.equal(proposals[0]?.status, "pending_review");
});
test("autonomous mode auto applies low risk fast path proposals as evolution rules", async () => {
await setMasterAgentEvolutionMode("autonomous");
const result = await recordMasterAgentEvolutionSignal({
kind: "repeated_question",
projectId: "master-agent",
account: "17600003315",
requestText: "当前主节点在线吗",
});
assert.equal(result.proposal?.status, "auto_applied");
const state = await readState();
assert.equal(state.masterAgentEvolutionRules.length, 1);
assert.equal(state.masterAgentEvolutionRules[0]?.ruleType, "fast_path_rule");
});