fix: start fresh cron sessions each run

This commit is contained in:
Peter Steinberger
2026-01-16 21:27:44 +00:00
parent e9d6869290
commit 16768a9998
6 changed files with 65 additions and 13 deletions

View File

@@ -48,6 +48,12 @@ async function writeSessionStore(home: string) {
return storePath;
}
async function readSessionEntry(storePath: string, key: string) {
const raw = await fs.readFile(storePath, "utf-8");
const store = JSON.parse(raw) as Record<string, { sessionId?: string }>;
return store[key];
}
function makeCfg(
home: string,
storePath: string,
@@ -466,4 +472,51 @@ describe("runCronIsolatedAgentTurn", () => {
expect(deps.sendMessageWhatsApp).not.toHaveBeenCalled();
});
});
it("starts a fresh session id for each cron run", async () => {
await withTempHome(async (home) => {
const storePath = await writeSessionStore(home);
const deps: CliDeps = {
sendMessageWhatsApp: vi.fn(),
sendMessageTelegram: vi.fn(),
sendMessageDiscord: vi.fn(),
sendMessageSignal: vi.fn(),
sendMessageIMessage: vi.fn(),
};
vi.mocked(runEmbeddedPiAgent).mockResolvedValue({
payloads: [{ text: "ok" }],
meta: {
durationMs: 5,
agentMeta: { sessionId: "s", provider: "p", model: "m" },
},
});
const cfg = makeCfg(home, storePath);
const job = makeJob({ kind: "agentTurn", message: "ping", deliver: false });
await runCronIsolatedAgentTurn({
cfg,
deps,
job,
message: "ping",
sessionKey: "cron:job-1",
lane: "cron",
});
const first = await readSessionEntry(storePath, "agent:main:cron:job-1");
await runCronIsolatedAgentTurn({
cfg,
deps,
job,
message: "ping",
sessionKey: "cron:job-1",
lane: "cron",
});
const second = await readSessionEntry(storePath, "agent:main:cron:job-1");
expect(first?.sessionId).toBeDefined();
expect(second?.sessionId).toBeDefined();
expect(second?.sessionId).not.toBe(first?.sessionId);
});
});
});