refactor: consolidate typing lifecycle and queue policy

This commit is contained in:
Peter Steinberger
2026-02-25 02:15:54 +00:00
parent 24d7612ddf
commit d42ef2ac62
19 changed files with 410 additions and 301 deletions

View File

@@ -0,0 +1,48 @@
import { describe, expect, it } from "vitest";
import { resolveActiveRunQueueAction } from "./queue-policy.js";
describe("resolveActiveRunQueueAction", () => {
it("runs immediately when there is no active run", () => {
expect(
resolveActiveRunQueueAction({
isActive: false,
isHeartbeat: false,
shouldFollowup: true,
queueMode: "collect",
}),
).toBe("run-now");
});
it("drops heartbeat runs while another run is active", () => {
expect(
resolveActiveRunQueueAction({
isActive: true,
isHeartbeat: true,
shouldFollowup: true,
queueMode: "collect",
}),
).toBe("drop");
});
it("enqueues followups for non-heartbeat active runs", () => {
expect(
resolveActiveRunQueueAction({
isActive: true,
isHeartbeat: false,
shouldFollowup: true,
queueMode: "collect",
}),
).toBe("enqueue-followup");
});
it("enqueues steer mode runs while active", () => {
expect(
resolveActiveRunQueueAction({
isActive: true,
isHeartbeat: false,
shouldFollowup: false,
queueMode: "steer",
}),
).toBe("enqueue-followup");
});
});