feat(FN-4257): run durable heartbeat task sessions in worktree

Fusion-Task-Id: FN-4257
Fusion-Task-Lineage: db48d51e-9e7d-471d-b26b-2a8763fb41d1
This commit is contained in:
Fusion
2026-05-13 00:24:06 -07:00
committed by gsxdsm
parent 19ff7c09f9
commit bf6a679ff1
9 changed files with 470 additions and 274 deletions

View File

@@ -204,10 +204,14 @@ vi.mock("node:child_process", () => {
return { execSync: execSyncFn, exec: execFn, execFile: execFileFn, spawn: spawnFn };
});
vi.mock("node:fs", () => ({
existsSync: vi.fn().mockReturnValue(true),
readdirSync: vi.fn().mockReturnValue([]),
}));
vi.mock("node:fs", async (importOriginal) => {
const actual = await importOriginal<typeof import("node:fs")>();
return {
...actual,
existsSync: vi.fn().mockReturnValue(true),
readdirSync: vi.fn().mockReturnValue([]),
};
});
vi.mock("node:fs/promises", () => ({
readFile: vi.fn().mockResolvedValue("# Task prompt content"),
}));
@@ -592,7 +596,7 @@ describe("In-progress task resume after restart", () => {
const executor = new TaskExecutor(store, "/tmp/test");
await executor.resumeOrphaned();
await waitForAsyncExpectation(() => {
expect(mockedCreateFnAgent).toHaveBeenCalledTimes(1);
expect(mockedCreateFnAgent).toHaveBeenCalled();
});
// Must NOT mark the step done — the reset invalidated the prior approval.
@@ -621,7 +625,7 @@ describe("In-progress task resume after restart", () => {
const executor = new TaskExecutor(store, "/tmp/test");
await executor.resumeOrphaned();
await waitForAsyncExpectation(() => {
expect(mockedCreateFnAgent).toHaveBeenCalledTimes(1);
expect(mockedCreateFnAgent).toHaveBeenCalled();
});
const updateStepDoneCalls = store.updateStep.mock.calls.filter(