From 7d5f8ee9eaa4c184affc863e3331ab6d1a27c5df Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Fri, 10 Jul 2026 22:25:50 -0700 Subject: [PATCH] test(engine): add describeModel to heartbeat pi.js mocks (heartbeat-executor + heartbeat-skills) --- packages/engine/src/__tests__/heartbeat-executor.test.ts | 6 ++++++ packages/engine/src/__tests__/heartbeat-skills.test.ts | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/packages/engine/src/__tests__/heartbeat-executor.test.ts b/packages/engine/src/__tests__/heartbeat-executor.test.ts index fefdff86d3..9b2dc2f6d5 100644 --- a/packages/engine/src/__tests__/heartbeat-executor.test.ts +++ b/packages/engine/src/__tests__/heartbeat-executor.test.ts @@ -25,6 +25,12 @@ vi.mock("../logger.js", async () => { }); vi.mock("../pi.js", () => ({ createFnAgent: vi.fn(), + // FNXC:EngineTestDrift 2026-07-11-22:23: + // DefaultPiRuntime.describeModel (runtime-resolution.ts) now reaches the real + // pi.js describeModel export on the heartbeat path. The hand-written pi.js + // mock must surface it or vitest throws "No describeModel export is defined", + // which cascades into createFnAgent failing and every heartbeat ending 'failed'. + describeModel: vi.fn().mockReturnValue("mock-provider/mock-model"), promptWithFallback: vi.fn(async (session: any, prompt: string) => { await session.prompt(prompt); }), diff --git a/packages/engine/src/__tests__/heartbeat-skills.test.ts b/packages/engine/src/__tests__/heartbeat-skills.test.ts index 7745c27293..4144a5f9a3 100644 --- a/packages/engine/src/__tests__/heartbeat-skills.test.ts +++ b/packages/engine/src/__tests__/heartbeat-skills.test.ts @@ -14,6 +14,11 @@ vi.mock("../logger.js", async () => { }); vi.mock("../pi.js", () => ({ createFnAgent: vi.fn(), + // FNXC:EngineTestDrift 2026-07-11-22:23: + // DefaultPiRuntime.describeModel now reaches pi.js describeModel on the + // heartbeat path; the mock must surface it or createFnAgent throws and the + // whole heartbeat cascades to 'failed'. + describeModel: vi.fn().mockReturnValue("mock-provider/mock-model"), promptWithFallback: vi.fn(async (session: any, prompt: string) => { await session.prompt(prompt); }),