69 lines
2.1 KiB
TypeScript
69 lines
2.1 KiB
TypeScript
// @vitest-environment node
|
|
import { describe, expect, it } from "vitest";
|
|
import { AGENT_DEFAULT_MAX_CONCURRENT_RUNS } from "@paperclipai/shared";
|
|
import { buildNewAgentRuntimeConfig } from "./new-agent-runtime-config";
|
|
|
|
describe("buildNewAgentRuntimeConfig", () => {
|
|
it("defaults new agents to no timer heartbeat", () => {
|
|
expect(buildNewAgentRuntimeConfig()).toEqual({
|
|
heartbeat: {
|
|
enabled: false,
|
|
intervalSec: 300,
|
|
wakeOnDemand: true,
|
|
skipTimerWhenNoActionableWork: true,
|
|
cooldownSec: 10,
|
|
maxConcurrentRuns: AGENT_DEFAULT_MAX_CONCURRENT_RUNS,
|
|
},
|
|
});
|
|
});
|
|
|
|
it("preserves explicit heartbeat settings", () => {
|
|
expect(
|
|
buildNewAgentRuntimeConfig({
|
|
heartbeatEnabled: true,
|
|
intervalSec: 3600,
|
|
}),
|
|
).toEqual({
|
|
heartbeat: {
|
|
enabled: true,
|
|
intervalSec: 3600,
|
|
wakeOnDemand: true,
|
|
skipTimerWhenNoActionableWork: true,
|
|
cooldownSec: 10,
|
|
maxConcurrentRuns: AGENT_DEFAULT_MAX_CONCURRENT_RUNS,
|
|
},
|
|
});
|
|
});
|
|
|
|
it("stores cheap model under modelProfiles.cheap, not primary adapterConfig", () => {
|
|
const config = buildNewAgentRuntimeConfig({
|
|
heartbeatEnabled: true,
|
|
intervalSec: 600,
|
|
cheapModel: "claude-sonnet-4-6",
|
|
cheapModelEnabled: true,
|
|
});
|
|
|
|
expect(config.modelProfiles).toEqual({
|
|
cheap: {
|
|
enabled: true,
|
|
adapterConfig: { model: "claude-sonnet-4-6" },
|
|
},
|
|
});
|
|
// primary heartbeat config still present
|
|
expect(config.heartbeat).toMatchObject({ enabled: true, intervalSec: 600 });
|
|
});
|
|
|
|
it("omits modelProfiles when no cheap model is configured", () => {
|
|
const config = buildNewAgentRuntimeConfig({ heartbeatEnabled: false });
|
|
expect(config.modelProfiles).toBeUndefined();
|
|
});
|
|
|
|
it("omits modelProfiles when cheap model is set but explicitly disabled", () => {
|
|
const config = buildNewAgentRuntimeConfig({
|
|
cheapModel: "claude-sonnet-4-6",
|
|
cheapModelEnabled: false,
|
|
});
|
|
expect(config.modelProfiles).toBeUndefined();
|
|
});
|
|
});
|