openskynet / src /omega /execution-controller.test.ts
Darochin's picture
Mirror OpenSkyNet workspace snapshot from Git HEAD
fc93158 verified
import fs from "node:fs/promises";
import os from "node:os";
import path from "node:path";
import { afterEach, describe, expect, it, vi } from "vitest";
import {
deriveOmegaExecutiveActionStopReason,
deriveOmegaHeartbeatCorrectiveControl,
syncOmegaExecutionControllerState,
shouldDispatchOmegaHeartbeatPrompt,
} from "./execution-controller.js";
import { syncOmegaExecutiveObserverState } from "./executive-state.js";
import { recordOmegaSessionOutcome } from "./session-context.js";
import * as worldModel from "./world-model.js";
const tempDirs: string[] = [];
async function createWorkspaceRoot() {
const root = await fs.mkdtemp(path.join(os.tmpdir(), "openskynet-omega-controller-"));
tempDirs.push(root);
return root;
}
afterEach(async () => {
vi.restoreAllMocks();
await Promise.all(
tempDirs.splice(0, tempDirs.length).map((dir) => fs.rm(dir, { recursive: true, force: true })),
);
});
describe("omega execution controller", () => {
it("suppresses heartbeat prompt when autonomy is idle and dispatch is deferred", () => {
expect(
shouldDispatchOmegaHeartbeatPrompt({
dispatchPlan: {
shouldDispatchLlmTurn: false,
selectedAction: "idle",
queueKind: "none",
expectedUtility: 0,
utilityBreakdown: {
uncertaintyReduction: 0,
} as any,
budgetUsage: {
observedTurns: 0,
observedWallTimeMs: 0,
budgetPressure: 0,
estimatedLlmCalls: 0,
} as any,
estimatedDispatchCostMs: 0,
queueDepths: { goals: 0, anomalies: 0, maintenance: 0 },
scheduledItems: [],
nextWakeDelayMs: 1000,
deferReason: "no_action",
rationale: [],
},
wakeAction: { kind: "heartbeat_ok", reason: "no_verified_tension" },
shouldRunAutonomy: false,
}),
).toBe(false);
});
it("allows heartbeat prompt when the executive plan explicitly selected work", () => {
expect(
shouldDispatchOmegaHeartbeatPrompt({
dispatchPlan: {
shouldDispatchLlmTurn: true,
selectedAction: "maintain",
queueKind: "maintenance",
expectedUtility: 0.6,
utilityBreakdown: {
uncertaintyReduction: 0.2,
} as any,
budgetUsage: {
observedTurns: 1,
observedWallTimeMs: 1000,
budgetPressure: 0.2,
estimatedLlmCalls: 1,
} as any,
estimatedDispatchCostMs: 1500,
queueDepths: { goals: 0, anomalies: 0, maintenance: 1 },
scheduledItems: [],
nextWakeDelayMs: 1000,
rationale: [],
},
wakeAction: { kind: "heartbeat_ok", reason: "no_verified_tension" },
shouldRunAutonomy: false,
}),
).toBe(true);
});
it("promotes stalled review work into reframe control", () => {
expect(
deriveOmegaHeartbeatCorrectiveControl({
wakeAction: {
kind: "review_active_goal",
reason: "verified_failure_requires_followup",
goalTask: "patch file",
},
operationalSummary: {
recentTurnCount: 3,
recentStalledTurns: 2,
recentResolvedTurns: 0,
latestTurnHealth: "stalled",
freshness: "fresh",
averageCausalImpact: 0.1,
latestCausalImpact: 0,
},
}),
).toMatchObject({
kind: "reframe_stalled_goal",
});
});
it("maps successful structured executive actions to structured idle stop", () => {
expect(
deriveOmegaExecutiveActionStopReason({
resultKind: "resumed_interrupted_goal",
status: "ok",
}),
).toBe("structured_idle");
});
it("reuses the persisted executive world snapshot when no task-specific context is requested", async () => {
const workspaceRoot = await createWorkspaceRoot();
await recordOmegaSessionOutcome({
workspaceRoot,
sessionKey: "agent:test:main",
task: "repair src/app.ts",
validation: {
expectsJson: false,
expectedKeys: [],
expectedPaths: ["src/app.ts"],
},
outcome: {
status: "ok",
observedChangedFiles: ["src/app.ts"],
writeOk: true,
},
});
const executiveState = await syncOmegaExecutiveObserverState({
workspaceRoot,
sessionKey: "agent:test:main",
});
const snapshotSpy = vi.spyOn(worldModel, "loadOmegaWorldModelSnapshot");
const state = await syncOmegaExecutionControllerState({
workspaceRoot,
sessionKey: "agent:test:main",
skipExecutiveSync: true,
includeWorldSnapshot: true,
});
expect(snapshotSpy).not.toHaveBeenCalled();
expect(state.worldSnapshot).toEqual(executiveState.sourceWorldSnapshot);
});
it("reloads the world snapshot when validation needs task-specific context", async () => {
const workspaceRoot = await createWorkspaceRoot();
await recordOmegaSessionOutcome({
workspaceRoot,
sessionKey: "agent:test:main",
task: "repair src/app.ts",
validation: {
expectsJson: false,
expectedKeys: [],
expectedPaths: ["src/app.ts"],
},
outcome: {
status: "ok",
observedChangedFiles: ["src/app.ts"],
writeOk: true,
},
});
await syncOmegaExecutiveObserverState({
workspaceRoot,
sessionKey: "agent:test:main",
});
const snapshotSpy = vi.spyOn(worldModel, "loadOmegaWorldModelSnapshot");
const state = await syncOmegaExecutionControllerState({
workspaceRoot,
sessionKey: "agent:test:main",
skipExecutiveSync: true,
includeWorldSnapshot: true,
task: "validate src/app.ts",
expectedPaths: ["src/app.ts"],
});
expect(snapshotSpy).toHaveBeenCalledTimes(1);
expect(state.worldSnapshot?.sessionKey).toBe("agent:test:main");
});
});